{
  "contractName": "Kernel",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "KERNEL_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_ADDR_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "KERNEL_APP",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "apps",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "getApp",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_baseAcl",
          "type": "address"
        },
        {
          "name": "_permissionsCreator",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CORE_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_name",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        }
      ],
      "name": "newAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_MANAGER_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_name",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        }
      ],
      "name": "newPinnedAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ACL_APP",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_namespace",
          "type": "bytes32"
        },
        {
          "name": "_name",
          "type": "bytes32"
        },
        {
          "name": "_app",
          "type": "address"
        }
      ],
      "name": "setApp",
      "outputs": [
        {
          "name": "id",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ACL_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        }
      ],
      "name": "newAppProxyPinned",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_BASES_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "acl",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "newAppProxy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        }
      ],
      "name": "newAppProxy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_who",
          "type": "address"
        },
        {
          "name": "_where",
          "type": "address"
        },
        {
          "name": "_what",
          "type": "bytes32"
        },
        {
          "name": "_how",
          "type": "bytes"
        }
      ],
      "name": "hasPermission",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "newAppProxyPinned",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "proxy",
          "type": "address"
        }
      ],
      "name": "NewAppProxy",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "namespace",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "name",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "app",
          "type": "address"
        }
      ],
      "name": "SetApp",
      "type": "event"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b61322c8061001e6000396000f3006060604052600436106200014b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631113ed0d1462000150578063178e607914620001845780632501269914620001b857806338bb6def14620001ec57806342c71f1d1462000256578063485cc95514620002c0578063756f6049146200031b57806380afdea8146200034f57806380cd5ac314620003835780638b3dd749146200040c5780638ea8dc9d1462000438578063958fde82146200046c578063a3b4b07f14620004f5578063ae5b25401462000529578063cbcc65eb146200059b578063d162f8b014620005cf578063d4aae0c4146200069b578063db8a61d414620006f3578063de2873591462000727578063e156a8f3146200077f578063ede658b01462000808578063fdef910614620008d4578063ff289fc51462000997575b600080fd5b34156200015c57600080fd5b6200016662000a20565b60405180826000191660001916815260200191505060405180910390f35b34156200019057600080fd5b6200019a62000a59565b60405180826000191660001916815260200191505060405180910390f35b3415620001c457600080fd5b620001ce62000a92565b60405180826000191660001916815260200191505060405180910390f35b3415620001f857600080fd5b6200021460048080356000191690602001909190505062000b2d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200026257600080fd5b6200027e60048080356000191690602001909190505062000b60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620002cc57600080fd5b62000319600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062000ba4565b005b34156200032757600080fd5b6200033162000da9565b60405180826000191660001916815260200191505060405180910390f35b34156200035b57600080fd5b6200036562000de2565b60405180826000191660001916815260200191505060405180910390f35b34156200038f57600080fd5b620003ca60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062000de8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200041857600080fd5b6200042262000eef565b6040518082815260200191505060405180910390f35b34156200044457600080fd5b6200044e62000ef9565b60405180826000191660001916815260200191505060405180910390f35b34156200047857600080fd5b620004b360048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062000f32565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200050157600080fd5b6200050b62001039565b60405180826000191660001916815260200191505060405180910390f35b34156200053557600080fd5b6200057d6004808035600019169060200190919080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050620010d4565b60405180826000191660001916815260200191505060405180910390f35b3415620005a757600080fd5b620005b162001222565b60405180826000191660001916815260200191505060405180910390f35b3415620005db57600080fd5b62000659600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506200125b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620006a757600080fd5b620006b1620013a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620006ff57600080fd5b62000709620013cc565b60405180826000191660001916815260200191505060405180910390f35b34156200073357600080fd5b6200073d62001405565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200078b57600080fd5b620007c6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050620014ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200081457600080fd5b62000892600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050620014e9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620008e057600080fd5b6200097d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505062001634565b604051808215151515815260200191505060405180910390f35b3415620009a357600080fd5b620009de600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050620017bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60405180807f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060045414151562000bb757600080fd5b62000bc1620017f8565b62000c023060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020620014ae565b905062000c7b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020856200181c565b5062000cf360405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020836200181c565b508073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151562000d8f57600080fd5b6102c65a03f1151562000da157600080fd5b505050505050565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60025481565b600060405180807f4150505f4d414e414745525f524f4c45000000000000000000000000000000008152506010019050604051809103902062000e6160405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208562001920565b62000e6b62001b83565b60006020835102905082915080825262000e883330868562001634565b151562000e9457600080fd5b62000ed660405180807f626173650000000000000000000000000000000000000000000000000000000081525060040190506040518091039020888862001946565b5062000ee33088620014ae565b94505050505092915050565b6000600454905090565b60405180807f4150505f4d414e414745525f524f4c45000000000000000000000000000000008152506010019050604051809103902081565b600060405180807f4150505f4d414e414745525f524f4c45000000000000000000000000000000008152506010019050604051809103902062000fab60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208562001920565b62000fb562001b83565b60006020835102905082915080825262000fd23330868562001634565b151562000fde57600080fd5b6200102060405180807f626173650000000000000000000000000000000000000000000000000000000081525060040190506040518091039020888862001946565b506200102d3088620017bd565b94505050505092915050565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b600060405180807f4150505f4d414e414745525f524f4c45000000000000000000000000000000008152506010019050604051809103902062001118858562001920565b6200112262001b83565b6000602083510290508291508082526200113f3330868562001634565b15156200114b57600080fd5b6000806200115b8a8a8a6200181c565b9650620011ff60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902062000b60565b9150813b90506000811115156200121557600080fd5b5050505050509392505050565b60405180807f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152506010019050604051809103902081565b6000808484846200126b62001b97565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620012ea578082015181840152602081019050620012cd565b50505050905090810190601f168015620013185780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f08015156200133657600080fd5b90507fe28f1412cafe58e22073759128eddcccfd9c1e3326665df874bdaf26077231a981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1809150509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b6000620014a960405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902062000b60565b905090565b6000620014e183836000604051805910620014c65750595b9080825280601f01601f1916602001820160405250620014e9565b905092915050565b600080848484620014f962001ba8565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620015785780820151818401526020810190506200155b565b50505050905090810190601f168015620015a65780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801515620015c457600080fd5b90507fe28f1412cafe58e22073759128eddcccfd9c1e3326665df874bdaf26077231a981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1809150509392505050565b60006200164062001405565b73ffffffffffffffffffffffffffffffffffffffff1663fdef9106868686866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620017475780820151818401526020810190506200172a565b50505050905090810190601f168015620017755780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156200179757600080fd5b6102c65a03f11515620017a957600080fd5b505050604051805190509050949350505050565b6000620017f083836000604051805910620017d55750595b9080825280601f01601f19166020018201604052506200125b565b905092915050565b60006004541415156200180a57600080fd5b6200181462001b0a565b600481905550565b600083836040518083600019166000191681526020018260001916600019168152602001925050506040518091039020905081600080836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060001916836000191685600019167fe944a7cdbc6cbd4bfe4713501567365bd379a9df5fd376422712b066d6e6b52285604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a49392505050565b6200192a62001bb9565b6200193e8360019004836001900462001b12565b905092915050565b600080848460405180836000191660001916815260200182600019166000191681526020019250505060405180910390209150600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151562001b0257620019bb8262000b60565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151562001a35578273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151562001a2f57600080fd5b62001b01565b82600080846000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160001916846000191686600019167fe944a7cdbc6cbd4bfe4713501567365bd379a9df5fd376422712b066d6e6b52286604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a45b5b509392505050565b600043905090565b62001b1c62001bb9565b600260405180591062001b2c5750595b908082528060200260200182016040525090508281600081518110151562001b5057fe5b90602001906020020181815250508181600181518110151562001b6f57fe5b906020019060200201818152505092915050565b602060405190810160405280600081525090565b604051610b2a8062001bce83390190565b604051610b0980620026f883390190565b60206040519081016040528060008152509056006060604052341561000f57600080fd5b604051610b2a380380610b2a833981016040528080519060200190919080519060200190919080518201919050508282826000836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600181600019169055506100ab60015461023b64010000000002610655176401000000009004565b9050600082511115610173576100d38161036164010000000002610642176401000000009004565b15156100de57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b83811015610123578082015181840152602081019050610108565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561017257600080fd5b5b5050505061019560015461023b64010000000002610655176401000000009004565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561023357600080fd5b505050610374565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561033f57600080fd5b6102c65a03f1151561035057600080fd5b505050604051805190509050919050565b600080823b905060008111915050919050565b6107a7806103836000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631113ed0d146100f5578063178e6079146101265780632501269914610157578063756f60491461018857806380afdea8146101b9578063a3b4b07f146101ea578063cbcc65eb1461021b578063d4aae0c41461024c578063daa3a163146102a1578063db8a61d4146102ce578063ea879634146102ff575b6100f36100ba610354565b6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061037e565b005b341561010057600080fd5b6101086103bc565b60405180826000191660001916815260200191505060405180910390f35b341561013157600080fd5b6101396103f5565b60405180826000191660001916815260200191505060405180910390f35b341561016257600080fd5b61016a61042e565b60405180826000191660001916815260200191505060405180910390f35b341561019357600080fd5b61019b6104c9565b60405180826000191660001916815260200191505060405180910390f35b34156101c457600080fd5b6101cc610502565b60405180826000191660001916815260200191505060405180910390f35b34156101f557600080fd5b6101fd610508565b60405180826000191660001916815260200191505060405180910390f35b341561022657600080fd5b61022e6105a3565b60405180826000191660001916815260200191505060405180910390f35b341561025757600080fd5b61025f6105dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102ac57600080fd5b6102b4610601565b604051808215151515815260200191505060405180910390f35b34156102d957600080fd5b6102e1610609565b60405180826000191660001916815260200191505060405180910390f35b341561030a57600080fd5b610312610354565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61038782610642565b151561039257600080fd5b600080825160208401856127105a03f43d604051816000823e82600081146103b8578282f35b8282fd5b60405180807f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60015481565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152506010019050604051809103902081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080905090565b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b600080823b905060008111915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561075957600080fd5b6102c65a03f1151561076a57600080fd5b5050506040518051905090509190505600a165627a7a72305820b5d81f69b6750f0b2f8ca76fd9719ae3361420197c677ba94a2d64728dc49c4100296060604052341561000f57600080fd5b604051610b09380380610b09833981016040528080519060200190919080519060200190919080518201919050508282826000836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600181600019169055506100ab60015461017f640100000000026106dd176401000000009004565b9050600082511115610173576100d3816102a564010000000002610803176401000000009004565b15156100de57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b83811015610123578082015181840152602081019050610108565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561017257600080fd5b5b505050505050506102b8565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561028357600080fd5b6102c65a03f1151561029457600080fd5b505050604051805190509050919050565b600080823b905060008111915050919050565b610842806102c76000396000f3006060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631113ed0d1461012c578063178e60791461015d578063250126991461018e5780633bc7ebac146101bf578063756f60491461021457806380afdea814610245578063a3b4b07f14610276578063cbcc65eb146102a7578063d4aae0c4146102d8578063daa3a1631461032d578063db8a61d41461035a578063ea8796341461038b575b60006100c46103e0565b905060008173ffffffffffffffffffffffffffffffffffffffff16141515156100ec57600080fd5b610129816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506103f2565b50005b341561013757600080fd5b61013f610430565b60405180826000191660001916815260200191505060405180910390f35b341561016857600080fd5b610170610469565b60405180826000191660001916815260200191505060405180910390f35b341561019957600080fd5b6101a16104a2565b60405180826000191660001916815260200191505060405180910390f35b34156101ca57600080fd5b6101d261053d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561021f57600080fd5b610227610563565b60405180826000191660001916815260200191505060405180910390f35b341561025057600080fd5b61025861059c565b60405180826000191660001916815260200191505060405180910390f35b341561028157600080fd5b6102896105a2565b60405180826000191660001916815260200191505060405180910390f35b34156102b257600080fd5b6102ba61063d565b60405180826000191660001916815260200191505060405180910390f35b34156102e357600080fd5b6102eb610676565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561033857600080fd5b61034061069b565b604051808215151515815260200191505060405180910390f35b341561036557600080fd5b61036d6106a4565b60405180826000191660001916815260200191505060405180910390f35b341561039657600080fd5b61039e6103e0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006103ed6001546106dd565b905090565b6103fb82610803565b151561040657600080fd5b600080825160208401856127105a03f43d604051816000823e826000811461042c578282f35b8282fd5b60405180807f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60015481565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152506010019050604051809103902081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001905090565b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156107e157600080fd5b6102c65a03f115156107f257600080fd5b505050604051805190509050919050565b600080823b9050600081119150509190505600a165627a7a72305820ef3c6c95f97152c15964434ad01baaa1da415b559a1268635b7357c955f04b680029a165627a7a72305820a139fa44a7791764f380c7e8d36b9e16429a5c23aad0aa0254289e02d449ef470029",
  "deployedBytecode": "0x6060604052600436106200014b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631113ed0d1462000150578063178e607914620001845780632501269914620001b857806338bb6def14620001ec57806342c71f1d1462000256578063485cc95514620002c0578063756f6049146200031b57806380afdea8146200034f57806380cd5ac314620003835780638b3dd749146200040c5780638ea8dc9d1462000438578063958fde82146200046c578063a3b4b07f14620004f5578063ae5b25401462000529578063cbcc65eb146200059b578063d162f8b014620005cf578063d4aae0c4146200069b578063db8a61d414620006f3578063de2873591462000727578063e156a8f3146200077f578063ede658b01462000808578063fdef910614620008d4578063ff289fc51462000997575b600080fd5b34156200015c57600080fd5b6200016662000a20565b60405180826000191660001916815260200191505060405180910390f35b34156200019057600080fd5b6200019a62000a59565b60405180826000191660001916815260200191505060405180910390f35b3415620001c457600080fd5b620001ce62000a92565b60405180826000191660001916815260200191505060405180910390f35b3415620001f857600080fd5b6200021460048080356000191690602001909190505062000b2d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200026257600080fd5b6200027e60048080356000191690602001909190505062000b60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620002cc57600080fd5b62000319600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062000ba4565b005b34156200032757600080fd5b6200033162000da9565b60405180826000191660001916815260200191505060405180910390f35b34156200035b57600080fd5b6200036562000de2565b60405180826000191660001916815260200191505060405180910390f35b34156200038f57600080fd5b620003ca60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062000de8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200041857600080fd5b6200042262000eef565b6040518082815260200191505060405180910390f35b34156200044457600080fd5b6200044e62000ef9565b60405180826000191660001916815260200191505060405180910390f35b34156200047857600080fd5b620004b360048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062000f32565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200050157600080fd5b6200050b62001039565b60405180826000191660001916815260200191505060405180910390f35b34156200053557600080fd5b6200057d6004808035600019169060200190919080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050620010d4565b60405180826000191660001916815260200191505060405180910390f35b3415620005a757600080fd5b620005b162001222565b60405180826000191660001916815260200191505060405180910390f35b3415620005db57600080fd5b62000659600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506200125b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620006a757600080fd5b620006b1620013a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620006ff57600080fd5b62000709620013cc565b60405180826000191660001916815260200191505060405180910390f35b34156200073357600080fd5b6200073d62001405565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200078b57600080fd5b620007c6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050620014ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200081457600080fd5b62000892600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050620014e9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620008e057600080fd5b6200097d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505062001634565b604051808215151515815260200191505060405180910390f35b3415620009a357600080fd5b620009de600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050620017bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60405180807f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060045414151562000bb757600080fd5b62000bc1620017f8565b62000c023060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020620014ae565b905062000c7b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020856200181c565b5062000cf360405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020836200181c565b508073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151562000d8f57600080fd5b6102c65a03f1151562000da157600080fd5b505050505050565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60025481565b600060405180807f4150505f4d414e414745525f524f4c45000000000000000000000000000000008152506010019050604051809103902062000e6160405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208562001920565b62000e6b62001b83565b60006020835102905082915080825262000e883330868562001634565b151562000e9457600080fd5b62000ed660405180807f626173650000000000000000000000000000000000000000000000000000000081525060040190506040518091039020888862001946565b5062000ee33088620014ae565b94505050505092915050565b6000600454905090565b60405180807f4150505f4d414e414745525f524f4c45000000000000000000000000000000008152506010019050604051809103902081565b600060405180807f4150505f4d414e414745525f524f4c45000000000000000000000000000000008152506010019050604051809103902062000fab60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208562001920565b62000fb562001b83565b60006020835102905082915080825262000fd23330868562001634565b151562000fde57600080fd5b6200102060405180807f626173650000000000000000000000000000000000000000000000000000000081525060040190506040518091039020888862001946565b506200102d3088620017bd565b94505050505092915050565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b600060405180807f4150505f4d414e414745525f524f4c45000000000000000000000000000000008152506010019050604051809103902062001118858562001920565b6200112262001b83565b6000602083510290508291508082526200113f3330868562001634565b15156200114b57600080fd5b6000806200115b8a8a8a6200181c565b9650620011ff60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902062000b60565b9150813b90506000811115156200121557600080fd5b5050505050509392505050565b60405180807f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152506010019050604051809103902081565b6000808484846200126b62001b97565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620012ea578082015181840152602081019050620012cd565b50505050905090810190601f168015620013185780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f08015156200133657600080fd5b90507fe28f1412cafe58e22073759128eddcccfd9c1e3326665df874bdaf26077231a981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1809150509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b6000620014a960405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902062000b60565b905090565b6000620014e183836000604051805910620014c65750595b9080825280601f01601f1916602001820160405250620014e9565b905092915050565b600080848484620014f962001ba8565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620015785780820151818401526020810190506200155b565b50505050905090810190601f168015620015a65780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801515620015c457600080fd5b90507fe28f1412cafe58e22073759128eddcccfd9c1e3326665df874bdaf26077231a981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1809150509392505050565b60006200164062001405565b73ffffffffffffffffffffffffffffffffffffffff1663fdef9106868686866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620017475780820151818401526020810190506200172a565b50505050905090810190601f168015620017755780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156200179757600080fd5b6102c65a03f11515620017a957600080fd5b505050604051805190509050949350505050565b6000620017f083836000604051805910620017d55750595b9080825280601f01601f19166020018201604052506200125b565b905092915050565b60006004541415156200180a57600080fd5b6200181462001b0a565b600481905550565b600083836040518083600019166000191681526020018260001916600019168152602001925050506040518091039020905081600080836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060001916836000191685600019167fe944a7cdbc6cbd4bfe4713501567365bd379a9df5fd376422712b066d6e6b52285604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a49392505050565b6200192a62001bb9565b6200193e8360019004836001900462001b12565b905092915050565b600080848460405180836000191660001916815260200182600019166000191681526020019250505060405180910390209150600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151562001b0257620019bb8262000b60565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151562001a35578273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151562001a2f57600080fd5b62001b01565b82600080846000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160001916846000191686600019167fe944a7cdbc6cbd4bfe4713501567365bd379a9df5fd376422712b066d6e6b52286604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a45b5b509392505050565b600043905090565b62001b1c62001bb9565b600260405180591062001b2c5750595b908082528060200260200182016040525090508281600081518110151562001b5057fe5b90602001906020020181815250508181600181518110151562001b6f57fe5b906020019060200201818152505092915050565b602060405190810160405280600081525090565b604051610b2a8062001bce83390190565b604051610b0980620026f883390190565b60206040519081016040528060008152509056006060604052341561000f57600080fd5b604051610b2a380380610b2a833981016040528080519060200190919080519060200190919080518201919050508282826000836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600181600019169055506100ab60015461023b64010000000002610655176401000000009004565b9050600082511115610173576100d38161036164010000000002610642176401000000009004565b15156100de57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b83811015610123578082015181840152602081019050610108565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561017257600080fd5b5b5050505061019560015461023b64010000000002610655176401000000009004565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561023357600080fd5b505050610374565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561033f57600080fd5b6102c65a03f1151561035057600080fd5b505050604051805190509050919050565b600080823b905060008111915050919050565b6107a7806103836000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631113ed0d146100f5578063178e6079146101265780632501269914610157578063756f60491461018857806380afdea8146101b9578063a3b4b07f146101ea578063cbcc65eb1461021b578063d4aae0c41461024c578063daa3a163146102a1578063db8a61d4146102ce578063ea879634146102ff575b6100f36100ba610354565b6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061037e565b005b341561010057600080fd5b6101086103bc565b60405180826000191660001916815260200191505060405180910390f35b341561013157600080fd5b6101396103f5565b60405180826000191660001916815260200191505060405180910390f35b341561016257600080fd5b61016a61042e565b60405180826000191660001916815260200191505060405180910390f35b341561019357600080fd5b61019b6104c9565b60405180826000191660001916815260200191505060405180910390f35b34156101c457600080fd5b6101cc610502565b60405180826000191660001916815260200191505060405180910390f35b34156101f557600080fd5b6101fd610508565b60405180826000191660001916815260200191505060405180910390f35b341561022657600080fd5b61022e6105a3565b60405180826000191660001916815260200191505060405180910390f35b341561025757600080fd5b61025f6105dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102ac57600080fd5b6102b4610601565b604051808215151515815260200191505060405180910390f35b34156102d957600080fd5b6102e1610609565b60405180826000191660001916815260200191505060405180910390f35b341561030a57600080fd5b610312610354565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61038782610642565b151561039257600080fd5b600080825160208401856127105a03f43d604051816000823e82600081146103b8578282f35b8282fd5b60405180807f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60015481565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152506010019050604051809103902081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080905090565b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b600080823b905060008111915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561075957600080fd5b6102c65a03f1151561076a57600080fd5b5050506040518051905090509190505600a165627a7a72305820b5d81f69b6750f0b2f8ca76fd9719ae3361420197c677ba94a2d64728dc49c4100296060604052341561000f57600080fd5b604051610b09380380610b09833981016040528080519060200190919080519060200190919080518201919050508282826000836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600181600019169055506100ab60015461017f640100000000026106dd176401000000009004565b9050600082511115610173576100d3816102a564010000000002610803176401000000009004565b15156100de57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b83811015610123578082015181840152602081019050610108565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561017257600080fd5b5b505050505050506102b8565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561028357600080fd5b6102c65a03f1151561029457600080fd5b505050604051805190509050919050565b600080823b905060008111915050919050565b610842806102c76000396000f3006060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631113ed0d1461012c578063178e60791461015d578063250126991461018e5780633bc7ebac146101bf578063756f60491461021457806380afdea814610245578063a3b4b07f14610276578063cbcc65eb146102a7578063d4aae0c4146102d8578063daa3a1631461032d578063db8a61d41461035a578063ea8796341461038b575b60006100c46103e0565b905060008173ffffffffffffffffffffffffffffffffffffffff16141515156100ec57600080fd5b610129816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506103f2565b50005b341561013757600080fd5b61013f610430565b60405180826000191660001916815260200191505060405180910390f35b341561016857600080fd5b610170610469565b60405180826000191660001916815260200191505060405180910390f35b341561019957600080fd5b6101a16104a2565b60405180826000191660001916815260200191505060405180910390f35b34156101ca57600080fd5b6101d261053d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561021f57600080fd5b610227610563565b60405180826000191660001916815260200191505060405180910390f35b341561025057600080fd5b61025861059c565b60405180826000191660001916815260200191505060405180910390f35b341561028157600080fd5b6102896105a2565b60405180826000191660001916815260200191505060405180910390f35b34156102b257600080fd5b6102ba61063d565b60405180826000191660001916815260200191505060405180910390f35b34156102e357600080fd5b6102eb610676565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561033857600080fd5b61034061069b565b604051808215151515815260200191505060405180910390f35b341561036557600080fd5b61036d6106a4565b60405180826000191660001916815260200191505060405180910390f35b341561039657600080fd5b61039e6103e0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006103ed6001546106dd565b905090565b6103fb82610803565b151561040657600080fd5b600080825160208401856127105a03f43d604051816000823e826000811461042c578282f35b8282fd5b60405180807f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60015481565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152506010019050604051809103902081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001905090565b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156107e157600080fd5b6102c65a03f115156107f257600080fd5b505050604051805190509050919050565b600080823b9050600081119150509190505600a165627a7a72305820ef3c6c95f97152c15964434ad01baaa1da415b559a1268635b7357c955f04b680029a165627a7a72305820a139fa44a7791764f380c7e8d36b9e16429a5c23aad0aa0254289e02d449ef470029",
  "sourceMap": "228:4695:42:-;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "228:4695:42:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;258:72:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;190:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;336:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;621:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2850:92:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;800:331;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57:58:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;113:20:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:261:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:107:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;324:72:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1969:273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;492:75:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2483:212:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;420:66:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;796:272:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;86:21:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;121:63:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3022:87:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;176:157:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3477:177:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:164:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;258:72:44;298:32;;;;;;;;;;;;;;;;;;;258:72;:::o;190:61::-;235:16;;;;;;;;;;;;;;;;;;;190:61;:::o;336:77::-;98:17;;;;;;;;;;;;;;;;;;;298:32;;;;;;;;;;;;;;;;;;;373:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;336:77;:::o;621:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;2850:92:42:-;2900:7;2926:4;:9;2931:3;2926:9;;;;;;;;;;;;;;;;;;;;;;;;;;;2919:16;;2850:92;;;:::o;800:331::-;917:8;163:1:25;140:19;;:24;132:33;;;;;;;;893:13:42;:11;:13::i;:::-;933:29;945:4;457:29:44;;;;;;;;;;;;;;;;;;;933:11:42;:29::i;:::-;917:46;;974:50;167:17:44;;;;;;;;;;;;;;;;;;;457:29;;;;;;;;;;;;;;;;;;;1015:8:42;974:7;:50::i;:::-;;1034:44;235:16:44;;;;;;;;;;;;;;;;;;;457:29;;;;;;;;;;;;;;;;;;;1074:3:42;1034:7;:44::i;:::-;;1089:3;:14;;;1104:19;1089:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;800:331;;;:::o;57:58:44:-;98:17;;;;;;;;;;;;;;;;;;;57:58;:::o;113:20:19:-;;;;:::o;1416:261:42:-;1545:18;367:29;;;;;;;;;;;;;;;;;;;1496:31;167:17:44;;;;;;;;;;;;;;;;;;;1521:5:42;1496:3;:31::i;:::-;4382:16;;:::i;:::-;4408:18;4445:2;4429:6;:13;:18;4408:39;;4487:6;4480:13;;4536:10;4531:3;4524:6;4623:52;4637:10;4657:4;4664:5;4671:3;4623:13;:52::i;:::-;4615:61;;;;;;;;1575:50;167:17:44;;;;;;;;;;;;;;;;;;;1609:5:42;1616:8;1575:12;:50::i;:::-;;1646:24;1658:4;1664:5;1646:11;:24::i;:::-;1635:35;;1416:261;;;;;;;;:::o;269:107:25:-;324:7;350:19;;343:26;;269:107;:::o;324:72:42:-;367:29;;;;;;;;;;;;;;;;;;;324:72;:::o;1969:273::-;2104:18;367:29;;;;;;;;;;;;;;;;;;;2055:31;167:17:44;;;;;;;;;;;;;;;;;;;2080:5:42;2055:3;:31::i;:::-;4382:16;;:::i;:::-;4408:18;4445:2;4429:6;:13;:18;4408:39;;4487:6;4480:13;;4536:10;4531:3;4524:6;4623:52;4637:10;4657:4;4664:5;4671:3;4623:13;:52::i;:::-;4615:61;;;;;;;;2134:50;167:17:44;;;;;;;;;;;;;;;;;;;2168:5:42;2175:8;2134:12;:50::i;:::-;;2205:30;2223:4;2229:5;2205:17;:30::i;:::-;2194:41;;1969:273;;;;;;;;:::o;492:75:44:-;235:16;;;;;;;;;;;;;;;;;;;457:29;;;;;;;;;;;;;;;;;;;526:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;492:75;:::o;2483:212:42:-;2627:10;367:29;;;;;;;;;;;;;;;;;;;2571:22;2575:10;2587:5;2571:3;:22::i;:::-;4382:16;;:::i;:::-;4408:18;4445:2;4429:6;:13;:18;4408:39;;4487:6;4480:13;;4536:10;4531:3;4524:6;4623:52;4637:10;4657:4;4664:5;4671:3;4623:13;:52::i;:::-;4615:61;;;;;;;;4781:14;4826:12;2656:32;2664:10;2676:5;2683:4;2656:7;:32::i;:::-;2649:39;;4798:18;98:17:44;;;;;;;;;;;;;;;;;;;298:32;;;;;;;;;;;;;;;;;;;373:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4798:6:42;:18::i;:::-;4781:35;;4879:6;4867:11;4859:27;;4912:1;4905:4;:8;4897:17;;;;;;;;4686:1;;2483:212;;;;;;;;;:::o;420:66:44:-;457:29;;;;;;;;;;;;;;;;;;;420:66;:::o;796:272:37:-;898:14;924:20;966:7;975:6;983:18;947:55;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;924:78:37;;1012:27;1032:5;1012:27;;;;;;;;;;;;;;;;;;;;;;1056:5;1049:12;;796:272;;;;;;:::o;86:21:19:-;;;;;;;;;;;;;:::o;121:63:44:-;167:17;;;;;;;;;;;;;;;;;;;121:63;:::o;3022:87:42:-;3058:4;3086:15;235:16:44;;;;;;;;;;;;;;;;;;;457:29;;;;;;;;;;;;;;;;;;;526:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3086:6:42;:15::i;:::-;3074:28;;3022:87;:::o;176:157:37:-;246:19;284:42;296:7;305:6;323:1;313:12;;;;;;;;;;;;;;;;;;;;;;;;;;;284:11;:42::i;:::-;277:49;;176:157;;;;:::o;339:281::-;435:19;466:25;518:7;527:6;535:18;494:60;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;466:88:37;;564:27;584:5;564:27;;;;;;;;;;;;;;;;;;;;;;608:5;601:12;;339:281;;;;;;:::o;3477:177:42:-;3578:4;3601:5;:3;:5::i;:::-;:19;;;3621:4;3627:6;3635:5;3642:4;3601:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3594:53:42;;3477:177;;;;;;:::o;626:164:37:-;702:14;735:48;753:7;762:6;780:1;770:12;;;;;;;;;;;;;;;;;;;;;;;;;;;735:17;:48::i;:::-;728:55;;626:164;;;;:::o;487:96:25:-;163:1;140:19;;:24;132:33;;;;;;;;560:16;:14;:16::i;:::-;538:19;:38;;;;487:96::o;3660:216:42:-;3744:10;3781;3793:5;3771:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3766:33;;3820:4;3809;:8;3814:2;3809:8;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;3860:2;3834:35;;;3853:5;3834:35;;;3841:10;3834:35;;;;3864:4;3834:35;;;;;;;;;;;;;;;;;;;;;;3660:216;;;;;:::o;222:126:12:-;282:11;;:::i;:::-;312:29;324:2;316:11;;;337:2;329:11;;;312:3;:29::i;:::-;305:36;;222:126;;;;:::o;3882:430:42:-;3971:10;4075:11;4008:10;4020:5;3998:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3993:33;;4057:1;4041:18;;:4;:18;;;;4037:269;;;4089:10;4096:2;4089:6;:10::i;:::-;4075:24;;4132:1;4117:17;;:3;:17;;;;4113:183;;;4169:4;4162:11;;:3;:11;;;4154:20;;;;;;;;4113:183;;;4224:4;4213;:8;4218:2;4213:8;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;4272:2;4246:35;;;4265:5;4246:35;;;4253:10;4246:35;;;;4276:4;4246:35;;;;;;;;;;;;;;;;;;;;;;4113:183;4037:269;3882:430;;;;;;:::o;767:94:25:-;816:7;842:12;835:19;;767:94;:::o;1481:148:12:-;1541:11;;:::i;:::-;1582:1;1568:16;;;;;;;;;;;;;;;;;;;;;;;;1564:20;;1601:2;1594:1;1596;1594:4;;;;;;;;;;;;;;;;;:9;;;;;1620:2;1613:1;1615;1613:4;;;;;;;;;;;;;;;;;:9;;;;;1481:148;;;;:::o;228:4695:42:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.18;\n\nimport \"./IKernel.sol\";\nimport \"./KernelStorage.sol\";\nimport \"../acl/ACLSyntaxSugar.sol\";\nimport \"../apps/IAppProxy.sol\";\nimport \"../common/Initializable.sol\";\nimport \"../factory/AppProxyFactory.sol\";\n\n\ncontract Kernel is IKernel, KernelStorage, Initializable, AppProxyFactory, ACLSyntaxSugar {\n    bytes32 constant public APP_MANAGER_ROLE = keccak256(\"APP_MANAGER_ROLE\");\n\n    /**\n    * @dev Initialize can only be called once. It saves the block number in which it was initialized.\n    * @notice Initializes a kernel instance along with its ACL and sets `_permissionsCreator` as the entity that can create other permissions\n    * @param _baseAcl Address of base ACL app\n    * @param _permissionsCreator Entity that will be given permission over createPermission\n    */\n    function initialize(address _baseAcl, address _permissionsCreator) onlyInit public {\n        initialized();\n\n        IACL acl = IACL(newAppProxy(this, ACL_APP_ID));\n\n        _setApp(APP_BASES_NAMESPACE, ACL_APP_ID, _baseAcl);\n        _setApp(APP_ADDR_NAMESPACE, ACL_APP_ID, acl);\n\n        acl.initialize(_permissionsCreator);\n    }\n\n    /**\n    * @dev Create a new instance of an app linked to this kernel and set its base\n    *      implementation if it was not already set\n    * @param _name Name of the app\n    * @param _appBase Address of the app's base implementation\n    * @return AppProxy instance\n    */\n    function newAppInstance(bytes32 _name, address _appBase) auth(APP_MANAGER_ROLE, arr(APP_BASES_NAMESPACE, _name)) public returns (IAppProxy appProxy) {\n        _setAppIfNew(APP_BASES_NAMESPACE, _name, _appBase);\n        appProxy = newAppProxy(this, _name);\n    }\n\n    /**\n    * @dev Create a new pinned instance of an app linked to this kernel and set\n    *      its base implementation if it was not already set\n    * @param _name Name of the app\n    * @param _appBase Address of the app's base implementation\n    * @return AppProxy instance\n    */\n    function newPinnedAppInstance(bytes32 _name, address _appBase) auth(APP_MANAGER_ROLE, arr(APP_BASES_NAMESPACE, _name)) public returns (IAppProxy appProxy) {\n        _setAppIfNew(APP_BASES_NAMESPACE, _name, _appBase);\n        appProxy = newAppProxyPinned(this, _name);\n    }\n\n    /**\n    * @dev Set the resolving address of an app instance or base implementation\n    * @param _namespace App namespace to use\n    * @param _name Name of the app\n    * @param _app Address of the app\n    * @return ID of app\n    */\n    function setApp(bytes32 _namespace, bytes32 _name, address _app) auth(APP_MANAGER_ROLE, arr(_namespace, _name)) kernelIntegrity public returns (bytes32 id) {\n        return _setApp(_namespace, _name, _app);\n    }\n\n    /**\n    * @dev Get the address of an app instance or base implementation\n    * @param _id App identifier\n    * @return Address of the app\n    */\n    function getApp(bytes32 _id) public view returns (address) {\n        return apps[_id];\n    }\n\n    /**\n    * @dev Get the installed ACL app\n    * @return ACL app\n    */\n    function acl() public view returns (IACL) {\n        return IACL(getApp(ACL_APP));\n    }\n\n    /**\n    * @dev Function called by apps to check ACL on kernel or to check permission status\n    * @param _who Sender of the original call\n    * @param _where Address of the app\n    * @param _what Identifier for a group of actions in app\n    * @param _how Extra data for ACL auth\n    * @return boolean indicating whether the ACL allows the role or not\n    */\n    function hasPermission(address _who, address _where, bytes32 _what, bytes _how) public view returns (bool) {\n        return acl().hasPermission(_who, _where, _what, _how);\n    }\n\n    function _setApp(bytes32 _namespace, bytes32 _name, address _app) internal returns (bytes32 id) {\n        id = keccak256(_namespace, _name);\n        apps[id] = _app;\n        SetApp(_namespace, _name, id, _app);\n    }\n\n    function _setAppIfNew(bytes32 _namespace, bytes32 _name, address _app) internal returns (bytes32 id) {\n        id = keccak256(_namespace, _name);\n\n        if (_app != address(0)) {\n            address app = getApp(id);\n            if (app != address(0)) {\n                require(app == _app);\n            } else {\n                apps[id] = _app;\n                SetApp(_namespace, _name, id, _app);\n            }\n        }\n    }\n\n    modifier auth(bytes32 _role, uint256[] memory params) {\n        bytes memory how;\n        uint256 byteLength = params.length * 32;\n        assembly {\n            how := params // forced casting\n            mstore(how, byteLength)\n        }\n        // Params is invalid from this point fwd\n        require(hasPermission(msg.sender, address(this), _role, how));\n        _;\n    }\n\n    modifier kernelIntegrity {\n        _; // After execution check integrity\n        address kernel = getApp(KERNEL_APP);\n        uint256 size;\n        assembly { size := extcodesize(kernel) }\n        require(size > 0);\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/kernel/Kernel.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
      "exportedSymbols": {
        "Kernel": [
          9891
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.4",
            ".18"
          ]
        },
        "id": 9552,
        "name": "PragmaDirective",
        "src": "0:23:42"
      },
      {
        "attributes": {
          "SourceUnit": 9551,
          "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
          "file": "./IKernel.sol",
          "scope": 9892,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 9553,
        "name": "ImportDirective",
        "src": "25:23:42"
      },
      {
        "attributes": {
          "SourceUnit": 9975,
          "absolutePath": "@aragon/os/contracts/kernel/KernelStorage.sol",
          "file": "./KernelStorage.sol",
          "scope": 9892,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 9554,
        "name": "ImportDirective",
        "src": "49:29:42"
      },
      {
        "attributes": {
          "SourceUnit": 5981,
          "absolutePath": "@aragon/os/contracts/acl/ACLSyntaxSugar.sol",
          "file": "../acl/ACLSyntaxSugar.sol",
          "scope": 9892,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 9555,
        "name": "ImportDirective",
        "src": "79:35:42"
      },
      {
        "attributes": {
          "SourceUnit": 6982,
          "absolutePath": "@aragon/os/contracts/apps/IAppProxy.sol",
          "file": "../apps/IAppProxy.sol",
          "scope": 9892,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 9556,
        "name": "ImportDirective",
        "src": "115:31:42"
      },
      {
        "attributes": {
          "SourceUnit": 7262,
          "absolutePath": "@aragon/os/contracts/common/Initializable.sol",
          "file": "../common/Initializable.sol",
          "scope": 9892,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 9557,
        "name": "ImportDirective",
        "src": "147:37:42"
      },
      {
        "attributes": {
          "SourceUnit": 9081,
          "absolutePath": "@aragon/os/contracts/factory/AppProxyFactory.sol",
          "file": "../factory/AppProxyFactory.sol",
          "scope": 9892,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 9558,
        "name": "ImportDirective",
        "src": "185:40:42"
      },
      {
        "attributes": {
          "contractDependencies": [
            5905,
            6870,
            7261,
            9080,
            9550,
            9967,
            9974
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            9891,
            5905,
            9080,
            7261,
            6870,
            9974,
            9967,
            9550
          ],
          "name": "Kernel",
          "scope": 9892
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "IKernel",
                  "referencedDeclaration": 9550,
                  "type": "contract IKernel"
                },
                "id": 9559,
                "name": "UserDefinedTypeName",
                "src": "247:7:42"
              }
            ],
            "id": 9560,
            "name": "InheritanceSpecifier",
            "src": "247:7:42"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "KernelStorage",
                  "referencedDeclaration": 9974,
                  "type": "contract KernelStorage"
                },
                "id": 9561,
                "name": "UserDefinedTypeName",
                "src": "256:13:42"
              }
            ],
            "id": 9562,
            "name": "InheritanceSpecifier",
            "src": "256:13:42"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Initializable",
                  "referencedDeclaration": 7261,
                  "type": "contract Initializable"
                },
                "id": 9563,
                "name": "UserDefinedTypeName",
                "src": "271:13:42"
              }
            ],
            "id": 9564,
            "name": "InheritanceSpecifier",
            "src": "271:13:42"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AppProxyFactory",
                  "referencedDeclaration": 9080,
                  "type": "contract AppProxyFactory"
                },
                "id": 9565,
                "name": "UserDefinedTypeName",
                "src": "286:15:42"
              }
            ],
            "id": 9566,
            "name": "InheritanceSpecifier",
            "src": "286:15:42"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ACLSyntaxSugar",
                  "referencedDeclaration": 5905,
                  "type": "contract ACLSyntaxSugar"
                },
                "id": 9567,
                "name": "UserDefinedTypeName",
                "src": "303:14:42"
              }
            ],
            "id": 9568,
            "name": "InheritanceSpecifier",
            "src": "303:14:42"
          },
          {
            "attributes": {
              "constant": true,
              "name": "APP_MANAGER_ROLE",
              "scope": 9891,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 9569,
                "name": "ElementaryTypeName",
                "src": "324:7:42"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_b6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0",
                          "typeString": "literal_string \"APP_MANAGER_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 12584,
                      "type": "function () pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 9570,
                    "name": "Identifier",
                    "src": "367:9:42"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "4150505f4d414e414745525f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"APP_MANAGER_ROLE\"",
                      "value": "APP_MANAGER_ROLE"
                    },
                    "id": 9571,
                    "name": "Literal",
                    "src": "377:18:42"
                  }
                ],
                "id": 9572,
                "name": "FunctionCall",
                "src": "367:29:42"
              }
            ],
            "id": 9573,
            "name": "VariableDeclaration",
            "src": "324:72:42"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "initialize",
              "payable": false,
              "scope": 9891,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_baseAcl",
                      "scope": 9613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 9574,
                        "name": "ElementaryTypeName",
                        "src": "820:7:42"
                      }
                    ],
                    "id": 9575,
                    "name": "VariableDeclaration",
                    "src": "820:16:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_permissionsCreator",
                      "scope": 9613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 9576,
                        "name": "ElementaryTypeName",
                        "src": "838:7:42"
                      }
                    ],
                    "id": 9577,
                    "name": "VariableDeclaration",
                    "src": "838:27:42"
                  }
                ],
                "id": 9578,
                "name": "ParameterList",
                "src": "819:47:42"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9581,
                "name": "ParameterList",
                "src": "883:0:42"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 7232,
                      "type": "modifier ()",
                      "value": "onlyInit"
                    },
                    "id": 9579,
                    "name": "Identifier",
                    "src": "867:8:42"
                  }
                ],
                "id": 9580,
                "name": "ModifierInvocation",
                "src": "867:8:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7251,
                              "type": "function ()",
                              "value": "initialized"
                            },
                            "id": 9582,
                            "name": "Identifier",
                            "src": "893:11:42"
                          }
                        ],
                        "id": 9583,
                        "name": "FunctionCall",
                        "src": "893:13:42"
                      }
                    ],
                    "id": 9584,
                    "name": "ExpressionStatement",
                    "src": "893:13:42"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        9586
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "acl",
                          "scope": 9613,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IACL",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IACL",
                              "referencedDeclaration": 6001,
                              "type": "contract IACL"
                            },
                            "id": 9585,
                            "name": "UserDefinedTypeName",
                            "src": "917:4:42"
                          }
                        ],
                        "id": 9586,
                        "name": "VariableDeclaration",
                        "src": "917:8:42"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract IACL",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_AppProxyUpgradeable_$6852",
                                  "typeString": "contract AppProxyUpgradeable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6001,
                              "type": "type(contract IACL)",
                              "value": "IACL"
                            },
                            "id": 9587,
                            "name": "Identifier",
                            "src": "928:4:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract AppProxyUpgradeable",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Kernel_$9891",
                                      "typeString": "contract Kernel"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    9002,
                                    9031
                                  ],
                                  "referencedDeclaration": 9002,
                                  "type": "function (contract IKernel,bytes32) returns (contract AppProxyUpgradeable)",
                                  "value": "newAppProxy"
                                },
                                "id": 9588,
                                "name": "Identifier",
                                "src": "933:11:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12659,
                                  "type": "contract Kernel",
                                  "value": "this"
                                },
                                "id": 9589,
                                "name": "Identifier",
                                "src": "945:4:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9960,
                                  "type": "bytes32",
                                  "value": "ACL_APP_ID"
                                },
                                "id": 9590,
                                "name": "Identifier",
                                "src": "951:10:42"
                              }
                            ],
                            "id": 9591,
                            "name": "FunctionCall",
                            "src": "933:29:42"
                          }
                        ],
                        "id": 9592,
                        "name": "FunctionCall",
                        "src": "928:35:42"
                      }
                    ],
                    "id": 9593,
                    "name": "VariableDeclarationStatement",
                    "src": "917:46:42"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9779,
                              "type": "function (bytes32,bytes32,address) returns (bytes32)",
                              "value": "_setApp"
                            },
                            "id": 9594,
                            "name": "Identifier",
                            "src": "974:7:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9939,
                              "type": "bytes32",
                              "value": "APP_BASES_NAMESPACE"
                            },
                            "id": 9595,
                            "name": "Identifier",
                            "src": "982:19:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9960,
                              "type": "bytes32",
                              "value": "ACL_APP_ID"
                            },
                            "id": 9596,
                            "name": "Identifier",
                            "src": "1003:10:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9575,
                              "type": "address",
                              "value": "_baseAcl"
                            },
                            "id": 9597,
                            "name": "Identifier",
                            "src": "1015:8:42"
                          }
                        ],
                        "id": 9598,
                        "name": "FunctionCall",
                        "src": "974:50:42"
                      }
                    ],
                    "id": 9599,
                    "name": "ExpressionStatement",
                    "src": "974:50:42"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_contract$_IACL_$6001",
                                  "typeString": "contract IACL"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9779,
                              "type": "function (bytes32,bytes32,address) returns (bytes32)",
                              "value": "_setApp"
                            },
                            "id": 9600,
                            "name": "Identifier",
                            "src": "1034:7:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9944,
                              "type": "bytes32",
                              "value": "APP_ADDR_NAMESPACE"
                            },
                            "id": 9601,
                            "name": "Identifier",
                            "src": "1042:18:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9960,
                              "type": "bytes32",
                              "value": "ACL_APP_ID"
                            },
                            "id": 9602,
                            "name": "Identifier",
                            "src": "1062:10:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9586,
                              "type": "contract IACL",
                              "value": "acl"
                            },
                            "id": 9603,
                            "name": "Identifier",
                            "src": "1074:3:42"
                          }
                        ],
                        "id": 9604,
                        "name": "FunctionCall",
                        "src": "1034:44:42"
                      }
                    ],
                    "id": 9605,
                    "name": "ExpressionStatement",
                    "src": "1034:44:42"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "initialize",
                              "referencedDeclaration": 5987,
                              "type": "function (address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9586,
                                  "type": "contract IACL",
                                  "value": "acl"
                                },
                                "id": 9606,
                                "name": "Identifier",
                                "src": "1089:3:42"
                              }
                            ],
                            "id": 9608,
                            "name": "MemberAccess",
                            "src": "1089:14:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9577,
                              "type": "address",
                              "value": "_permissionsCreator"
                            },
                            "id": 9609,
                            "name": "Identifier",
                            "src": "1104:19:42"
                          }
                        ],
                        "id": 9610,
                        "name": "FunctionCall",
                        "src": "1089:35:42"
                      }
                    ],
                    "id": 9611,
                    "name": "ExpressionStatement",
                    "src": "1089:35:42"
                  }
                ],
                "id": 9612,
                "name": "Block",
                "src": "883:248:42"
              }
            ],
            "id": 9613,
            "name": "FunctionDefinition",
            "src": "800:331:42"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "newAppInstance",
              "payable": false,
              "scope": 9891,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 9643,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9614,
                        "name": "ElementaryTypeName",
                        "src": "1440:7:42"
                      }
                    ],
                    "id": 9615,
                    "name": "VariableDeclaration",
                    "src": "1440:13:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_appBase",
                      "scope": 9643,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 9616,
                        "name": "ElementaryTypeName",
                        "src": "1455:7:42"
                      }
                    ],
                    "id": 9617,
                    "name": "VariableDeclaration",
                    "src": "1455:16:42"
                  }
                ],
                "id": 9618,
                "name": "ParameterList",
                "src": "1439:33:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "appProxy",
                      "scope": 9643,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IAppProxy",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "IAppProxy",
                          "referencedDeclaration": 6981,
                          "type": "contract IAppProxy"
                        },
                        "id": 9626,
                        "name": "UserDefinedTypeName",
                        "src": "1545:9:42"
                      }
                    ],
                    "id": 9627,
                    "name": "VariableDeclaration",
                    "src": "1545:18:42"
                  }
                ],
                "id": 9628,
                "name": "ParameterList",
                "src": "1544:20:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 9870,
                      "type": "modifier (bytes32,uint256[] memory)",
                      "value": "auth"
                    },
                    "id": 9619,
                    "name": "Identifier",
                    "src": "1473:4:42"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 9573,
                      "type": "bytes32",
                      "value": "APP_MANAGER_ROLE"
                    },
                    "id": 9620,
                    "name": "Identifier",
                    "src": "1478:16:42"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "type": "uint256[] memory",
                      "type_conversion": false
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "overloadedDeclarations": [
                            5519,
                            5534,
                            5554,
                            5569,
                            5589,
                            5610,
                            5630,
                            5659,
                            5684,
                            5709,
                            5732,
                            5763,
                            5802,
                            5849,
                            5904
                          ],
                          "referencedDeclaration": 5554,
                          "type": "function (bytes32,bytes32) pure returns (uint256[] memory)",
                          "value": "arr"
                        },
                        "id": 9621,
                        "name": "Identifier",
                        "src": "1496:3:42"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 9939,
                          "type": "bytes32",
                          "value": "APP_BASES_NAMESPACE"
                        },
                        "id": 9622,
                        "name": "Identifier",
                        "src": "1500:19:42"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 9615,
                          "type": "bytes32",
                          "value": "_name"
                        },
                        "id": 9623,
                        "name": "Identifier",
                        "src": "1521:5:42"
                      }
                    ],
                    "id": 9624,
                    "name": "FunctionCall",
                    "src": "1496:31:42"
                  }
                ],
                "id": 9625,
                "name": "ModifierInvocation",
                "src": "1473:55:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9838,
                              "type": "function (bytes32,bytes32,address) returns (bytes32)",
                              "value": "_setAppIfNew"
                            },
                            "id": 9629,
                            "name": "Identifier",
                            "src": "1575:12:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9939,
                              "type": "bytes32",
                              "value": "APP_BASES_NAMESPACE"
                            },
                            "id": 9630,
                            "name": "Identifier",
                            "src": "1588:19:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9615,
                              "type": "bytes32",
                              "value": "_name"
                            },
                            "id": 9631,
                            "name": "Identifier",
                            "src": "1609:5:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9617,
                              "type": "address",
                              "value": "_appBase"
                            },
                            "id": 9632,
                            "name": "Identifier",
                            "src": "1616:8:42"
                          }
                        ],
                        "id": 9633,
                        "name": "FunctionCall",
                        "src": "1575:50:42"
                      }
                    ],
                    "id": 9634,
                    "name": "ExpressionStatement",
                    "src": "1575:50:42"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract IAppProxy"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9627,
                              "type": "contract IAppProxy",
                              "value": "appProxy"
                            },
                            "id": 9635,
                            "name": "Identifier",
                            "src": "1635:8:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract AppProxyUpgradeable",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Kernel_$9891",
                                      "typeString": "contract Kernel"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    9002,
                                    9031
                                  ],
                                  "referencedDeclaration": 9002,
                                  "type": "function (contract IKernel,bytes32) returns (contract AppProxyUpgradeable)",
                                  "value": "newAppProxy"
                                },
                                "id": 9636,
                                "name": "Identifier",
                                "src": "1646:11:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12659,
                                  "type": "contract Kernel",
                                  "value": "this"
                                },
                                "id": 9637,
                                "name": "Identifier",
                                "src": "1658:4:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9615,
                                  "type": "bytes32",
                                  "value": "_name"
                                },
                                "id": 9638,
                                "name": "Identifier",
                                "src": "1664:5:42"
                              }
                            ],
                            "id": 9639,
                            "name": "FunctionCall",
                            "src": "1646:24:42"
                          }
                        ],
                        "id": 9640,
                        "name": "Assignment",
                        "src": "1635:35:42"
                      }
                    ],
                    "id": 9641,
                    "name": "ExpressionStatement",
                    "src": "1635:35:42"
                  }
                ],
                "id": 9642,
                "name": "Block",
                "src": "1565:112:42"
              }
            ],
            "id": 9643,
            "name": "FunctionDefinition",
            "src": "1416:261:42"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "newPinnedAppInstance",
              "payable": false,
              "scope": 9891,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 9673,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9644,
                        "name": "ElementaryTypeName",
                        "src": "1999:7:42"
                      }
                    ],
                    "id": 9645,
                    "name": "VariableDeclaration",
                    "src": "1999:13:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_appBase",
                      "scope": 9673,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 9646,
                        "name": "ElementaryTypeName",
                        "src": "2014:7:42"
                      }
                    ],
                    "id": 9647,
                    "name": "VariableDeclaration",
                    "src": "2014:16:42"
                  }
                ],
                "id": 9648,
                "name": "ParameterList",
                "src": "1998:33:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "appProxy",
                      "scope": 9673,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IAppProxy",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "IAppProxy",
                          "referencedDeclaration": 6981,
                          "type": "contract IAppProxy"
                        },
                        "id": 9656,
                        "name": "UserDefinedTypeName",
                        "src": "2104:9:42"
                      }
                    ],
                    "id": 9657,
                    "name": "VariableDeclaration",
                    "src": "2104:18:42"
                  }
                ],
                "id": 9658,
                "name": "ParameterList",
                "src": "2103:20:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 9870,
                      "type": "modifier (bytes32,uint256[] memory)",
                      "value": "auth"
                    },
                    "id": 9649,
                    "name": "Identifier",
                    "src": "2032:4:42"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 9573,
                      "type": "bytes32",
                      "value": "APP_MANAGER_ROLE"
                    },
                    "id": 9650,
                    "name": "Identifier",
                    "src": "2037:16:42"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "type": "uint256[] memory",
                      "type_conversion": false
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "overloadedDeclarations": [
                            5519,
                            5534,
                            5554,
                            5569,
                            5589,
                            5610,
                            5630,
                            5659,
                            5684,
                            5709,
                            5732,
                            5763,
                            5802,
                            5849,
                            5904
                          ],
                          "referencedDeclaration": 5554,
                          "type": "function (bytes32,bytes32) pure returns (uint256[] memory)",
                          "value": "arr"
                        },
                        "id": 9651,
                        "name": "Identifier",
                        "src": "2055:3:42"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 9939,
                          "type": "bytes32",
                          "value": "APP_BASES_NAMESPACE"
                        },
                        "id": 9652,
                        "name": "Identifier",
                        "src": "2059:19:42"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 9645,
                          "type": "bytes32",
                          "value": "_name"
                        },
                        "id": 9653,
                        "name": "Identifier",
                        "src": "2080:5:42"
                      }
                    ],
                    "id": 9654,
                    "name": "FunctionCall",
                    "src": "2055:31:42"
                  }
                ],
                "id": 9655,
                "name": "ModifierInvocation",
                "src": "2032:55:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9838,
                              "type": "function (bytes32,bytes32,address) returns (bytes32)",
                              "value": "_setAppIfNew"
                            },
                            "id": 9659,
                            "name": "Identifier",
                            "src": "2134:12:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9939,
                              "type": "bytes32",
                              "value": "APP_BASES_NAMESPACE"
                            },
                            "id": 9660,
                            "name": "Identifier",
                            "src": "2147:19:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9645,
                              "type": "bytes32",
                              "value": "_name"
                            },
                            "id": 9661,
                            "name": "Identifier",
                            "src": "2168:5:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9647,
                              "type": "address",
                              "value": "_appBase"
                            },
                            "id": 9662,
                            "name": "Identifier",
                            "src": "2175:8:42"
                          }
                        ],
                        "id": 9663,
                        "name": "FunctionCall",
                        "src": "2134:50:42"
                      }
                    ],
                    "id": 9664,
                    "name": "ExpressionStatement",
                    "src": "2134:50:42"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract IAppProxy"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9657,
                              "type": "contract IAppProxy",
                              "value": "appProxy"
                            },
                            "id": 9665,
                            "name": "Identifier",
                            "src": "2194:8:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract AppProxyPinned",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Kernel_$9891",
                                      "typeString": "contract Kernel"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    9050,
                                    9079
                                  ],
                                  "referencedDeclaration": 9050,
                                  "type": "function (contract IKernel,bytes32) returns (contract AppProxyPinned)",
                                  "value": "newAppProxyPinned"
                                },
                                "id": 9666,
                                "name": "Identifier",
                                "src": "2205:17:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12659,
                                  "type": "contract Kernel",
                                  "value": "this"
                                },
                                "id": 9667,
                                "name": "Identifier",
                                "src": "2223:4:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9645,
                                  "type": "bytes32",
                                  "value": "_name"
                                },
                                "id": 9668,
                                "name": "Identifier",
                                "src": "2229:5:42"
                              }
                            ],
                            "id": 9669,
                            "name": "FunctionCall",
                            "src": "2205:30:42"
                          }
                        ],
                        "id": 9670,
                        "name": "Assignment",
                        "src": "2194:41:42"
                      }
                    ],
                    "id": 9671,
                    "name": "ExpressionStatement",
                    "src": "2194:41:42"
                  }
                ],
                "id": 9672,
                "name": "Block",
                "src": "2124:118:42"
              }
            ],
            "id": 9673,
            "name": "FunctionDefinition",
            "src": "1969:273:42"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "setApp",
              "payable": false,
              "scope": 9891,
              "stateMutability": "nonpayable",
              "superFunction": 9542,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_namespace",
                      "scope": 9700,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9674,
                        "name": "ElementaryTypeName",
                        "src": "2499:7:42"
                      }
                    ],
                    "id": 9675,
                    "name": "VariableDeclaration",
                    "src": "2499:18:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 9700,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9676,
                        "name": "ElementaryTypeName",
                        "src": "2519:7:42"
                      }
                    ],
                    "id": 9677,
                    "name": "VariableDeclaration",
                    "src": "2519:13:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_app",
                      "scope": 9700,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 9678,
                        "name": "ElementaryTypeName",
                        "src": "2534:7:42"
                      }
                    ],
                    "id": 9679,
                    "name": "VariableDeclaration",
                    "src": "2534:12:42"
                  }
                ],
                "id": 9680,
                "name": "ParameterList",
                "src": "2498:49:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "id",
                      "scope": 9700,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9690,
                        "name": "ElementaryTypeName",
                        "src": "2627:7:42"
                      }
                    ],
                    "id": 9691,
                    "name": "VariableDeclaration",
                    "src": "2627:10:42"
                  }
                ],
                "id": 9692,
                "name": "ParameterList",
                "src": "2626:12:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 9870,
                      "type": "modifier (bytes32,uint256[] memory)",
                      "value": "auth"
                    },
                    "id": 9681,
                    "name": "Identifier",
                    "src": "2548:4:42"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 9573,
                      "type": "bytes32",
                      "value": "APP_MANAGER_ROLE"
                    },
                    "id": 9682,
                    "name": "Identifier",
                    "src": "2553:16:42"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "type": "uint256[] memory",
                      "type_conversion": false
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "overloadedDeclarations": [
                            5519,
                            5534,
                            5554,
                            5569,
                            5589,
                            5610,
                            5630,
                            5659,
                            5684,
                            5709,
                            5732,
                            5763,
                            5802,
                            5849,
                            5904
                          ],
                          "referencedDeclaration": 5554,
                          "type": "function (bytes32,bytes32) pure returns (uint256[] memory)",
                          "value": "arr"
                        },
                        "id": 9683,
                        "name": "Identifier",
                        "src": "2571:3:42"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 9675,
                          "type": "bytes32",
                          "value": "_namespace"
                        },
                        "id": 9684,
                        "name": "Identifier",
                        "src": "2575:10:42"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 9677,
                          "type": "bytes32",
                          "value": "_name"
                        },
                        "id": 9685,
                        "name": "Identifier",
                        "src": "2587:5:42"
                      }
                    ],
                    "id": 9686,
                    "name": "FunctionCall",
                    "src": "2571:22:42"
                  }
                ],
                "id": 9687,
                "name": "ModifierInvocation",
                "src": "2548:46:42"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 9890,
                      "type": "modifier ()",
                      "value": "kernelIntegrity"
                    },
                    "id": 9688,
                    "name": "Identifier",
                    "src": "2595:15:42"
                  }
                ],
                "id": 9689,
                "name": "ModifierInvocation",
                "src": "2595:15:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9692
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9779,
                              "type": "function (bytes32,bytes32,address) returns (bytes32)",
                              "value": "_setApp"
                            },
                            "id": 9693,
                            "name": "Identifier",
                            "src": "2656:7:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9675,
                              "type": "bytes32",
                              "value": "_namespace"
                            },
                            "id": 9694,
                            "name": "Identifier",
                            "src": "2664:10:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9677,
                              "type": "bytes32",
                              "value": "_name"
                            },
                            "id": 9695,
                            "name": "Identifier",
                            "src": "2676:5:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9679,
                              "type": "address",
                              "value": "_app"
                            },
                            "id": 9696,
                            "name": "Identifier",
                            "src": "2683:4:42"
                          }
                        ],
                        "id": 9697,
                        "name": "FunctionCall",
                        "src": "2656:32:42"
                      }
                    ],
                    "id": 9698,
                    "name": "Return",
                    "src": "2649:39:42"
                  }
                ],
                "id": 9699,
                "name": "Block",
                "src": "2639:56:42"
              }
            ],
            "id": 9700,
            "name": "FunctionDefinition",
            "src": "2483:212:42"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getApp",
              "payable": false,
              "scope": 9891,
              "stateMutability": "view",
              "superFunction": 9549,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_id",
                      "scope": 9712,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9701,
                        "name": "ElementaryTypeName",
                        "src": "2866:7:42"
                      }
                    ],
                    "id": 9702,
                    "name": "VariableDeclaration",
                    "src": "2866:11:42"
                  }
                ],
                "id": 9703,
                "name": "ParameterList",
                "src": "2865:13:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9712,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 9704,
                        "name": "ElementaryTypeName",
                        "src": "2900:7:42"
                      }
                    ],
                    "id": 9705,
                    "name": "VariableDeclaration",
                    "src": "2900:7:42"
                  }
                ],
                "id": 9706,
                "name": "ParameterList",
                "src": "2899:9:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9706
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9973,
                              "type": "mapping(bytes32 => address)",
                              "value": "apps"
                            },
                            "id": 9707,
                            "name": "Identifier",
                            "src": "2926:4:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9702,
                              "type": "bytes32",
                              "value": "_id"
                            },
                            "id": 9708,
                            "name": "Identifier",
                            "src": "2931:3:42"
                          }
                        ],
                        "id": 9709,
                        "name": "IndexAccess",
                        "src": "2926:9:42"
                      }
                    ],
                    "id": 9710,
                    "name": "Return",
                    "src": "2919:16:42"
                  }
                ],
                "id": 9711,
                "name": "Block",
                "src": "2909:33:42"
              }
            ],
            "id": 9712,
            "name": "FunctionDefinition",
            "src": "2850:92:42"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "acl",
              "payable": false,
              "scope": 9891,
              "stateMutability": "view",
              "superFunction": 9518,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9713,
                "name": "ParameterList",
                "src": "3034:2:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9724,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IACL",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "IACL",
                          "referencedDeclaration": 6001,
                          "type": "contract IACL"
                        },
                        "id": 9714,
                        "name": "UserDefinedTypeName",
                        "src": "3058:4:42"
                      }
                    ],
                    "id": 9715,
                    "name": "VariableDeclaration",
                    "src": "3058:4:42"
                  }
                ],
                "id": 9716,
                "name": "ParameterList",
                "src": "3057:6:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9716
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract IACL",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6001,
                              "type": "type(contract IACL)",
                              "value": "IACL"
                            },
                            "id": 9717,
                            "name": "Identifier",
                            "src": "3081:4:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    9712
                                  ],
                                  "referencedDeclaration": 9712,
                                  "type": "function (bytes32) view returns (address)",
                                  "value": "getApp"
                                },
                                "id": 9718,
                                "name": "Identifier",
                                "src": "3086:6:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9966,
                                  "type": "bytes32",
                                  "value": "ACL_APP"
                                },
                                "id": 9719,
                                "name": "Identifier",
                                "src": "3093:7:42"
                              }
                            ],
                            "id": 9720,
                            "name": "FunctionCall",
                            "src": "3086:15:42"
                          }
                        ],
                        "id": 9721,
                        "name": "FunctionCall",
                        "src": "3081:21:42"
                      }
                    ],
                    "id": 9722,
                    "name": "Return",
                    "src": "3074:28:42"
                  }
                ],
                "id": 9723,
                "name": "Block",
                "src": "3064:45:42"
              }
            ],
            "id": 9724,
            "name": "FunctionDefinition",
            "src": "3022:87:42"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "hasPermission",
              "payable": false,
              "scope": 9891,
              "stateMutability": "view",
              "superFunction": 9531,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_who",
                      "scope": 9747,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 9725,
                        "name": "ElementaryTypeName",
                        "src": "3500:7:42"
                      }
                    ],
                    "id": 9726,
                    "name": "VariableDeclaration",
                    "src": "3500:12:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_where",
                      "scope": 9747,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 9727,
                        "name": "ElementaryTypeName",
                        "src": "3514:7:42"
                      }
                    ],
                    "id": 9728,
                    "name": "VariableDeclaration",
                    "src": "3514:14:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_what",
                      "scope": 9747,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9729,
                        "name": "ElementaryTypeName",
                        "src": "3530:7:42"
                      }
                    ],
                    "id": 9730,
                    "name": "VariableDeclaration",
                    "src": "3530:13:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_how",
                      "scope": 9747,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 9731,
                        "name": "ElementaryTypeName",
                        "src": "3545:5:42"
                      }
                    ],
                    "id": 9732,
                    "name": "VariableDeclaration",
                    "src": "3545:10:42"
                  }
                ],
                "id": 9733,
                "name": "ParameterList",
                "src": "3499:57:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9747,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 9734,
                        "name": "ElementaryTypeName",
                        "src": "3578:4:42"
                      }
                    ],
                    "id": 9735,
                    "name": "VariableDeclaration",
                    "src": "3578:4:42"
                  }
                ],
                "id": 9736,
                "name": "ParameterList",
                "src": "3577:6:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9736
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "hasPermission",
                              "referencedDeclaration": 6000,
                              "type": "function (address,address,bytes32,bytes memory) view external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract IACL",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        9724
                                      ],
                                      "referencedDeclaration": 9724,
                                      "type": "function () view returns (contract IACL)",
                                      "value": "acl"
                                    },
                                    "id": 9737,
                                    "name": "Identifier",
                                    "src": "3601:3:42"
                                  }
                                ],
                                "id": 9738,
                                "name": "FunctionCall",
                                "src": "3601:5:42"
                              }
                            ],
                            "id": 9739,
                            "name": "MemberAccess",
                            "src": "3601:19:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9726,
                              "type": "address",
                              "value": "_who"
                            },
                            "id": 9740,
                            "name": "Identifier",
                            "src": "3621:4:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9728,
                              "type": "address",
                              "value": "_where"
                            },
                            "id": 9741,
                            "name": "Identifier",
                            "src": "3627:6:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9730,
                              "type": "bytes32",
                              "value": "_what"
                            },
                            "id": 9742,
                            "name": "Identifier",
                            "src": "3635:5:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9732,
                              "type": "bytes memory",
                              "value": "_how"
                            },
                            "id": 9743,
                            "name": "Identifier",
                            "src": "3642:4:42"
                          }
                        ],
                        "id": 9744,
                        "name": "FunctionCall",
                        "src": "3601:46:42"
                      }
                    ],
                    "id": 9745,
                    "name": "Return",
                    "src": "3594:53:42"
                  }
                ],
                "id": 9746,
                "name": "Block",
                "src": "3584:70:42"
              }
            ],
            "id": 9747,
            "name": "FunctionDefinition",
            "src": "3477:177:42"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_setApp",
              "payable": false,
              "scope": 9891,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_namespace",
                      "scope": 9779,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9748,
                        "name": "ElementaryTypeName",
                        "src": "3677:7:42"
                      }
                    ],
                    "id": 9749,
                    "name": "VariableDeclaration",
                    "src": "3677:18:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 9779,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9750,
                        "name": "ElementaryTypeName",
                        "src": "3697:7:42"
                      }
                    ],
                    "id": 9751,
                    "name": "VariableDeclaration",
                    "src": "3697:13:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_app",
                      "scope": 9779,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 9752,
                        "name": "ElementaryTypeName",
                        "src": "3712:7:42"
                      }
                    ],
                    "id": 9753,
                    "name": "VariableDeclaration",
                    "src": "3712:12:42"
                  }
                ],
                "id": 9754,
                "name": "ParameterList",
                "src": "3676:49:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "id",
                      "scope": 9779,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9755,
                        "name": "ElementaryTypeName",
                        "src": "3744:7:42"
                      }
                    ],
                    "id": 9756,
                    "name": "VariableDeclaration",
                    "src": "3744:10:42"
                  }
                ],
                "id": 9757,
                "name": "ParameterList",
                "src": "3743:12:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9756,
                              "type": "bytes32",
                              "value": "id"
                            },
                            "id": 9758,
                            "name": "Identifier",
                            "src": "3766:2:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12584,
                                  "type": "function () pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 9759,
                                "name": "Identifier",
                                "src": "3771:9:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9749,
                                  "type": "bytes32",
                                  "value": "_namespace"
                                },
                                "id": 9760,
                                "name": "Identifier",
                                "src": "3781:10:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9751,
                                  "type": "bytes32",
                                  "value": "_name"
                                },
                                "id": 9761,
                                "name": "Identifier",
                                "src": "3793:5:42"
                              }
                            ],
                            "id": 9762,
                            "name": "FunctionCall",
                            "src": "3771:28:42"
                          }
                        ],
                        "id": 9763,
                        "name": "Assignment",
                        "src": "3766:33:42"
                      }
                    ],
                    "id": 9764,
                    "name": "ExpressionStatement",
                    "src": "3766:33:42"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9973,
                                  "type": "mapping(bytes32 => address)",
                                  "value": "apps"
                                },
                                "id": 9765,
                                "name": "Identifier",
                                "src": "3809:4:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9756,
                                  "type": "bytes32",
                                  "value": "id"
                                },
                                "id": 9766,
                                "name": "Identifier",
                                "src": "3814:2:42"
                              }
                            ],
                            "id": 9767,
                            "name": "IndexAccess",
                            "src": "3809:8:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9753,
                              "type": "address",
                              "value": "_app"
                            },
                            "id": 9768,
                            "name": "Identifier",
                            "src": "3820:4:42"
                          }
                        ],
                        "id": 9769,
                        "name": "Assignment",
                        "src": "3809:15:42"
                      }
                    ],
                    "id": 9770,
                    "name": "ExpressionStatement",
                    "src": "3809:15:42"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9513,
                              "type": "function (bytes32,bytes32,bytes32,address)",
                              "value": "SetApp"
                            },
                            "id": 9771,
                            "name": "Identifier",
                            "src": "3834:6:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9749,
                              "type": "bytes32",
                              "value": "_namespace"
                            },
                            "id": 9772,
                            "name": "Identifier",
                            "src": "3841:10:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9751,
                              "type": "bytes32",
                              "value": "_name"
                            },
                            "id": 9773,
                            "name": "Identifier",
                            "src": "3853:5:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9756,
                              "type": "bytes32",
                              "value": "id"
                            },
                            "id": 9774,
                            "name": "Identifier",
                            "src": "3860:2:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9753,
                              "type": "address",
                              "value": "_app"
                            },
                            "id": 9775,
                            "name": "Identifier",
                            "src": "3864:4:42"
                          }
                        ],
                        "id": 9776,
                        "name": "FunctionCall",
                        "src": "3834:35:42"
                      }
                    ],
                    "id": 9777,
                    "name": "ExpressionStatement",
                    "src": "3834:35:42"
                  }
                ],
                "id": 9778,
                "name": "Block",
                "src": "3756:120:42"
              }
            ],
            "id": 9779,
            "name": "FunctionDefinition",
            "src": "3660:216:42"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_setAppIfNew",
              "payable": false,
              "scope": 9891,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_namespace",
                      "scope": 9838,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9780,
                        "name": "ElementaryTypeName",
                        "src": "3904:7:42"
                      }
                    ],
                    "id": 9781,
                    "name": "VariableDeclaration",
                    "src": "3904:18:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 9838,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9782,
                        "name": "ElementaryTypeName",
                        "src": "3924:7:42"
                      }
                    ],
                    "id": 9783,
                    "name": "VariableDeclaration",
                    "src": "3924:13:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_app",
                      "scope": 9838,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 9784,
                        "name": "ElementaryTypeName",
                        "src": "3939:7:42"
                      }
                    ],
                    "id": 9785,
                    "name": "VariableDeclaration",
                    "src": "3939:12:42"
                  }
                ],
                "id": 9786,
                "name": "ParameterList",
                "src": "3903:49:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "id",
                      "scope": 9838,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9787,
                        "name": "ElementaryTypeName",
                        "src": "3971:7:42"
                      }
                    ],
                    "id": 9788,
                    "name": "VariableDeclaration",
                    "src": "3971:10:42"
                  }
                ],
                "id": 9789,
                "name": "ParameterList",
                "src": "3970:12:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9788,
                              "type": "bytes32",
                              "value": "id"
                            },
                            "id": 9790,
                            "name": "Identifier",
                            "src": "3993:2:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12584,
                                  "type": "function () pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 9791,
                                "name": "Identifier",
                                "src": "3998:9:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9781,
                                  "type": "bytes32",
                                  "value": "_namespace"
                                },
                                "id": 9792,
                                "name": "Identifier",
                                "src": "4008:10:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9783,
                                  "type": "bytes32",
                                  "value": "_name"
                                },
                                "id": 9793,
                                "name": "Identifier",
                                "src": "4020:5:42"
                              }
                            ],
                            "id": 9794,
                            "name": "FunctionCall",
                            "src": "3998:28:42"
                          }
                        ],
                        "id": 9795,
                        "name": "Assignment",
                        "src": "3993:33:42"
                      }
                    ],
                    "id": 9796,
                    "name": "ExpressionStatement",
                    "src": "3993:33:42"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9785,
                              "type": "address",
                              "value": "_app"
                            },
                            "id": 9797,
                            "name": "Identifier",
                            "src": "4041:4:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 9798,
                                "name": "ElementaryTypeNameExpression",
                                "src": "4049:7:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 9799,
                                "name": "Literal",
                                "src": "4057:1:42"
                              }
                            ],
                            "id": 9800,
                            "name": "FunctionCall",
                            "src": "4049:10:42"
                          }
                        ],
                        "id": 9801,
                        "name": "BinaryOperation",
                        "src": "4041:18:42"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                9803
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "app",
                                  "scope": 9838,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "address",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "type": "address"
                                    },
                                    "id": 9802,
                                    "name": "ElementaryTypeName",
                                    "src": "4075:7:42"
                                  }
                                ],
                                "id": 9803,
                                "name": "VariableDeclaration",
                                "src": "4075:11:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        9712
                                      ],
                                      "referencedDeclaration": 9712,
                                      "type": "function (bytes32) view returns (address)",
                                      "value": "getApp"
                                    },
                                    "id": 9804,
                                    "name": "Identifier",
                                    "src": "4089:6:42"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9788,
                                      "type": "bytes32",
                                      "value": "id"
                                    },
                                    "id": 9805,
                                    "name": "Identifier",
                                    "src": "4096:2:42"
                                  }
                                ],
                                "id": 9806,
                                "name": "FunctionCall",
                                "src": "4089:10:42"
                              }
                            ],
                            "id": 9807,
                            "name": "VariableDeclarationStatement",
                            "src": "4075:24:42"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9803,
                                      "type": "address",
                                      "value": "app"
                                    },
                                    "id": 9808,
                                    "name": "Identifier",
                                    "src": "4117:3:42"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "address",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)",
                                          "value": "address"
                                        },
                                        "id": 9809,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "4124:7:42"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 9810,
                                        "name": "Literal",
                                        "src": "4132:1:42"
                                      }
                                    ],
                                    "id": 9811,
                                    "name": "FunctionCall",
                                    "src": "4124:10:42"
                                  }
                                ],
                                "id": 9812,
                                "name": "BinaryOperation",
                                "src": "4117:17:42"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12593,
                                              "type": "function (bool) pure",
                                              "value": "require"
                                            },
                                            "id": 9813,
                                            "name": "Identifier",
                                            "src": "4154:7:42"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "==",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 9803,
                                                  "type": "address",
                                                  "value": "app"
                                                },
                                                "id": 9814,
                                                "name": "Identifier",
                                                "src": "4162:3:42"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 9785,
                                                  "type": "address",
                                                  "value": "_app"
                                                },
                                                "id": 9815,
                                                "name": "Identifier",
                                                "src": "4169:4:42"
                                              }
                                            ],
                                            "id": 9816,
                                            "name": "BinaryOperation",
                                            "src": "4162:11:42"
                                          }
                                        ],
                                        "id": 9817,
                                        "name": "FunctionCall",
                                        "src": "4154:20:42"
                                      }
                                    ],
                                    "id": 9818,
                                    "name": "ExpressionStatement",
                                    "src": "4154:20:42"
                                  }
                                ],
                                "id": 9819,
                                "name": "Block",
                                "src": "4136:53:42"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "address"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 9973,
                                                  "type": "mapping(bytes32 => address)",
                                                  "value": "apps"
                                                },
                                                "id": 9820,
                                                "name": "Identifier",
                                                "src": "4213:4:42"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 9788,
                                                  "type": "bytes32",
                                                  "value": "id"
                                                },
                                                "id": 9821,
                                                "name": "Identifier",
                                                "src": "4218:2:42"
                                              }
                                            ],
                                            "id": 9822,
                                            "name": "IndexAccess",
                                            "src": "4213:8:42"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 9785,
                                              "type": "address",
                                              "value": "_app"
                                            },
                                            "id": 9823,
                                            "name": "Identifier",
                                            "src": "4224:4:42"
                                          }
                                        ],
                                        "id": 9824,
                                        "name": "Assignment",
                                        "src": "4213:15:42"
                                      }
                                    ],
                                    "id": 9825,
                                    "name": "ExpressionStatement",
                                    "src": "4213:15:42"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 9513,
                                              "type": "function (bytes32,bytes32,bytes32,address)",
                                              "value": "SetApp"
                                            },
                                            "id": 9826,
                                            "name": "Identifier",
                                            "src": "4246:6:42"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 9781,
                                              "type": "bytes32",
                                              "value": "_namespace"
                                            },
                                            "id": 9827,
                                            "name": "Identifier",
                                            "src": "4253:10:42"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 9783,
                                              "type": "bytes32",
                                              "value": "_name"
                                            },
                                            "id": 9828,
                                            "name": "Identifier",
                                            "src": "4265:5:42"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 9788,
                                              "type": "bytes32",
                                              "value": "id"
                                            },
                                            "id": 9829,
                                            "name": "Identifier",
                                            "src": "4272:2:42"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 9785,
                                              "type": "address",
                                              "value": "_app"
                                            },
                                            "id": 9830,
                                            "name": "Identifier",
                                            "src": "4276:4:42"
                                          }
                                        ],
                                        "id": 9831,
                                        "name": "FunctionCall",
                                        "src": "4246:35:42"
                                      }
                                    ],
                                    "id": 9832,
                                    "name": "ExpressionStatement",
                                    "src": "4246:35:42"
                                  }
                                ],
                                "id": 9833,
                                "name": "Block",
                                "src": "4195:101:42"
                              }
                            ],
                            "id": 9834,
                            "name": "IfStatement",
                            "src": "4113:183:42"
                          }
                        ],
                        "id": 9835,
                        "name": "Block",
                        "src": "4061:245:42"
                      }
                    ],
                    "id": 9836,
                    "name": "IfStatement",
                    "src": "4037:269:42"
                  }
                ],
                "id": 9837,
                "name": "Block",
                "src": "3983:329:42"
              }
            ],
            "id": 9838,
            "name": "FunctionDefinition",
            "src": "3882:430:42"
          },
          {
            "attributes": {
              "name": "auth",
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_role",
                      "scope": 9870,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9839,
                        "name": "ElementaryTypeName",
                        "src": "4332:7:42"
                      }
                    ],
                    "id": 9840,
                    "name": "VariableDeclaration",
                    "src": "4332:13:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "params",
                      "scope": 9870,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "uint256[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 9841,
                            "name": "ElementaryTypeName",
                            "src": "4347:7:42"
                          }
                        ],
                        "id": 9842,
                        "name": "ArrayTypeName",
                        "src": "4347:9:42"
                      }
                    ],
                    "id": 9843,
                    "name": "VariableDeclaration",
                    "src": "4347:23:42"
                  }
                ],
                "id": 9844,
                "name": "ParameterList",
                "src": "4331:40:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "how",
                          "scope": 9870,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes storage pointer"
                            },
                            "id": 9845,
                            "name": "ElementaryTypeName",
                            "src": "4382:5:42"
                          }
                        ],
                        "id": 9846,
                        "name": "VariableDeclaration",
                        "src": "4382:16:42"
                      }
                    ],
                    "id": 9847,
                    "name": "VariableDeclarationStatement",
                    "src": "4382:16:42"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        9849
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "byteLength",
                          "scope": 9870,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 9848,
                            "name": "ElementaryTypeName",
                            "src": "4408:7:42"
                          }
                        ],
                        "id": 9849,
                        "name": "VariableDeclaration",
                        "src": "4408:18:42"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "*",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9843,
                                  "type": "uint256[] memory",
                                  "value": "params"
                                },
                                "id": 9850,
                                "name": "Identifier",
                                "src": "4429:6:42"
                              }
                            ],
                            "id": 9851,
                            "name": "MemberAccess",
                            "src": "4429:13:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3332",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 32",
                              "value": "32"
                            },
                            "id": 9852,
                            "name": "Literal",
                            "src": "4445:2:42"
                          }
                        ],
                        "id": 9853,
                        "name": "BinaryOperation",
                        "src": "4429:18:42"
                      }
                    ],
                    "id": 9854,
                    "name": "VariableDeclarationStatement",
                    "src": "4408:39:42"
                  },
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "params": {
                            "declaration": 9843,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4487:6:42",
                            "valueSize": 1
                          }
                        },
                        {
                          "how": {
                            "declaration": 9846,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4480:3:42",
                            "valueSize": 1
                          }
                        },
                        {
                          "how": {
                            "declaration": 9846,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4531:3:42",
                            "valueSize": 1
                          }
                        },
                        {
                          "byteLength": {
                            "declaration": 9849,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4536:10:42",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    how := params\n    mstore(how, byteLength)\n}"
                    },
                    "children": [],
                    "id": 9855,
                    "name": "InlineAssembly",
                    "src": "4457:165:42"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 9856,
                            "name": "Identifier",
                            "src": "4615:7:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    9747
                                  ],
                                  "referencedDeclaration": 9747,
                                  "type": "function (address,address,bytes32,bytes memory) view returns (bool)",
                                  "value": "hasPermission"
                                },
                                "id": 9857,
                                "name": "Identifier",
                                "src": "4623:13:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12590,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 9858,
                                    "name": "Identifier",
                                    "src": "4637:3:42"
                                  }
                                ],
                                "id": 9859,
                                "name": "MemberAccess",
                                "src": "4637:10:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_Kernel_$9891",
                                          "typeString": "contract Kernel"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 9860,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "4649:7:42"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12659,
                                      "type": "contract Kernel",
                                      "value": "this"
                                    },
                                    "id": 9861,
                                    "name": "Identifier",
                                    "src": "4657:4:42"
                                  }
                                ],
                                "id": 9862,
                                "name": "FunctionCall",
                                "src": "4649:13:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9840,
                                  "type": "bytes32",
                                  "value": "_role"
                                },
                                "id": 9863,
                                "name": "Identifier",
                                "src": "4664:5:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9846,
                                  "type": "bytes memory",
                                  "value": "how"
                                },
                                "id": 9864,
                                "name": "Identifier",
                                "src": "4671:3:42"
                              }
                            ],
                            "id": 9865,
                            "name": "FunctionCall",
                            "src": "4623:52:42"
                          }
                        ],
                        "id": 9866,
                        "name": "FunctionCall",
                        "src": "4615:61:42"
                      }
                    ],
                    "id": 9867,
                    "name": "ExpressionStatement",
                    "src": "4615:61:42"
                  },
                  {
                    "id": 9868,
                    "name": "PlaceholderStatement",
                    "src": "4686:1:42"
                  }
                ],
                "id": 9869,
                "name": "Block",
                "src": "4372:322:42"
              }
            ],
            "id": 9870,
            "name": "ModifierDefinition",
            "src": "4318:376:42"
          },
          {
            "attributes": {
              "name": "kernelIntegrity",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9871,
                "name": "ParameterList",
                "src": "4725:0:42"
              },
              {
                "children": [
                  {
                    "id": 9872,
                    "name": "PlaceholderStatement",
                    "src": "4735:1:42"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        9874
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "kernel",
                          "scope": 9890,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 9873,
                            "name": "ElementaryTypeName",
                            "src": "4781:7:42"
                          }
                        ],
                        "id": 9874,
                        "name": "VariableDeclaration",
                        "src": "4781:14:42"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "address",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                9712
                              ],
                              "referencedDeclaration": 9712,
                              "type": "function (bytes32) view returns (address)",
                              "value": "getApp"
                            },
                            "id": 9875,
                            "name": "Identifier",
                            "src": "4798:6:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9955,
                              "type": "bytes32",
                              "value": "KERNEL_APP"
                            },
                            "id": 9876,
                            "name": "Identifier",
                            "src": "4805:10:42"
                          }
                        ],
                        "id": 9877,
                        "name": "FunctionCall",
                        "src": "4798:18:42"
                      }
                    ],
                    "id": 9878,
                    "name": "VariableDeclarationStatement",
                    "src": "4781:35:42"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "size",
                          "scope": 9890,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 9879,
                            "name": "ElementaryTypeName",
                            "src": "4826:7:42"
                          }
                        ],
                        "id": 9880,
                        "name": "VariableDeclaration",
                        "src": "4826:12:42"
                      }
                    ],
                    "id": 9881,
                    "name": "VariableDeclarationStatement",
                    "src": "4826:12:42"
                  },
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "size": {
                            "declaration": 9880,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4859:4:42",
                            "valueSize": 1
                          }
                        },
                        {
                          "kernel": {
                            "declaration": 9874,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4879:6:42",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    size := extcodesize(kernel)\n}"
                    },
                    "children": [],
                    "id": 9882,
                    "name": "InlineAssembly",
                    "src": "4848:56:42"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 9883,
                            "name": "Identifier",
                            "src": "4897:7:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9880,
                                  "type": "uint256",
                                  "value": "size"
                                },
                                "id": 9884,
                                "name": "Identifier",
                                "src": "4905:4:42"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 9885,
                                "name": "Literal",
                                "src": "4912:1:42"
                              }
                            ],
                            "id": 9886,
                            "name": "BinaryOperation",
                            "src": "4905:8:42"
                          }
                        ],
                        "id": 9887,
                        "name": "FunctionCall",
                        "src": "4897:17:42"
                      }
                    ],
                    "id": 9888,
                    "name": "ExpressionStatement",
                    "src": "4897:17:42"
                  }
                ],
                "id": 9889,
                "name": "Block",
                "src": "4725:196:42"
              }
            ],
            "id": 9890,
            "name": "ModifierDefinition",
            "src": "4700:221:42"
          }
        ],
        "id": 9891,
        "name": "ContractDefinition",
        "src": "228:4695:42"
      }
    ],
    "id": 9892,
    "name": "SourceUnit",
    "src": "0:4924:42"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.096Z"
}