{
  "contractName": "Kernel",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "apps",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "recoveryVaultAppId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "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": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "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": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "newAppProxyPinned",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_shouldPetrify",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "proxy",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "isUpgradeable",
          "type": "bool"
        },
        {
          "indexed": false,
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "NewAppProxy",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RecoverToVault",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "namespace",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "app",
          "type": "address"
        }
      ],
      "name": "SetApp",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_baseAcl",
          "type": "address"
        },
        {
          "name": "_permissionsCreator",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        },
        {
          "name": "_setDefault",
          "type": "bool"
        }
      ],
      "name": "newAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        }
      ],
      "name": "newAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        }
      ],
      "name": "newPinnedAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_appBase",
          "type": "address"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        },
        {
          "name": "_setDefault",
          "type": "bool"
        }
      ],
      "name": "newPinnedAppInstance",
      "outputs": [
        {
          "name": "appProxy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_namespace",
          "type": "bytes32"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_app",
          "type": "address"
        }
      ],
      "name": "setApp",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_recoveryVaultAppId",
          "type": "bytes32"
        }
      ],
      "name": "setRecoveryVaultAppId",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CORE_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_BASES_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_ADDR_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "KERNEL_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DEFAULT_ACL_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_namespace",
          "type": "bytes32"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "getApp",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "acl",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"hasInitialized\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"KERNEL_APP_ID\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"APP_ADDR_NAMESPACE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRecoveryVault\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_appId\",\"type\":\"bytes32\"},{\"name\":\"_appBase\",\"type\":\"address\"},{\"name\":\"_initializePayload\",\"type\":\"bytes\"},{\"name\":\"_setDefault\",\"type\":\"bool\"}],\"name\":\"newAppInstance\",\"outputs\":[{\"name\":\"appProxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"},{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"apps\",\"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\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowRecoverability\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_appId\",\"type\":\"bytes32\"},{\"name\":\"_appBase\",\"type\":\"address\"}],\"name\":\"newAppInstance\",\"outputs\":[{\"name\":\"appProxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryVaultAppId\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getInitializationBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_recoveryVaultAppId\",\"type\":\"bytes32\"}],\"name\":\"setRecoveryVaultAppId\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"APP_MANAGER_ROLE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_appId\",\"type\":\"bytes32\"},{\"name\":\"_appBase\",\"type\":\"address\"}],\"name\":\"newPinnedAppInstance\",\"outputs\":[{\"name\":\"appProxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"transferToVault\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_namespace\",\"type\":\"bytes32\"},{\"name\":\"_appId\",\"type\":\"bytes32\"},{\"name\":\"_app\",\"type\":\"address\"}],\"name\":\"setApp\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_namespace\",\"type\":\"bytes32\"},{\"name\":\"_appId\",\"type\":\"bytes32\"}],\"name\":\"getApp\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_appId\",\"type\":\"bytes32\"},{\"name\":\"_appBase\",\"type\":\"address\"},{\"name\":\"_initializePayload\",\"type\":\"bytes\"},{\"name\":\"_setDefault\",\"type\":\"bool\"}],\"name\":\"newPinnedAppInstance\",\"outputs\":[{\"name\":\"appProxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":\"APP_BASES_NAMESPACE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"acl\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPetrified\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"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\":true,\"inputs\":[],\"name\":\"DEFAULT_ACL_APP_ID\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"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\"},{\"inputs\":[{\"name\":\"_shouldPetrify\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"isUpgradeable\",\"type\":\"bool\"},{\"indexed\":false,\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"NewAppProxy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RecoverToVault\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"namespace\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"app\",\"type\":\"address\"}],\"name\":\"SetApp\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"acl()\":{\"details\":\"Get the installed ACL app\",\"return\":\"ACL app\"},\"allowRecoverability(address)\":{\"details\":\"By default deriving from AragonApp makes it recoverable\",\"params\":{\"token\":\"Token address that would be recovered\"},\"return\":\"bool whether the app allows the recovery\"},\"getApp(bytes32,bytes32)\":{\"details\":\"Get the address of an app instance or base implementation\",\"params\":{\"_appId\":\"Identifier for app\",\"_namespace\":\"App namespace to use\"},\"return\":\"Address of the app\"},\"getInitializationBlock()\":{\"return\":\"Block number in which the contract was initialized\"},\"getRecoveryVault()\":{\"details\":\"Get the address of the recovery Vault instance (to recover funds)\",\"return\":\"Address of the Vault\"},\"hasInitialized()\":{\"return\":\"Whether the contract has been initialized by the time of the current block\"},\"hasPermission(address,address,bytes32,bytes)\":{\"details\":\"Function called by apps to check ACL on kernel or to check permission status\",\"params\":{\"_how\":\"Extra data for ACL auth\",\"_what\":\"Identifier for a group of actions in app\",\"_where\":\"Address of the app\",\"_who\":\"Sender of the original call\"},\"return\":\"Boolean indicating whether the ACL allows the role or not.        Always returns false if the kernel hasn't been initialized yet.\"},\"initialize(address,address)\":{\"details\":\"Initialize can only be called once. It saves the block number in which it was initialized.\",\"params\":{\"_baseAcl\":\"Address of base ACL app\",\"_permissionsCreator\":\"Entity that will be given permission over createPermission\"}},\"newAppInstance(bytes32,address)\":{\"details\":\"Create a new instance of an app linked to this kernel\",\"params\":{\"_appBase\":\"Address of the app's base implementation\",\"_appId\":\"Identifier for app\"},\"return\":\"AppProxy instance\"},\"newAppInstance(bytes32,address,bytes,bool)\":{\"details\":\"Create a new instance of an app linked to this kernel and set its base     implementation if it was not already set\",\"params\":{\"_appBase\":\"Address of the app's base implementation\",\"_appId\":\"Identifier for app\",\"_initializePayload\":\"Payload for call made by the proxy during its construction to initialize\",\"_setDefault\":\"Whether the app proxy app is the default one.       Useful when the Kernel needs to know of an instance of a particular app,       like Vault for escape hatch mechanism.\"},\"return\":\"AppProxy instance\"},\"newAppProxy(address,bytes32)\":{\"params\":{\"_appId\":\"Identifier for app\",\"_kernel\":\"App's Kernel reference\"},\"return\":\"AppProxyUpgradeable\"},\"newAppProxy(address,bytes32,bytes)\":{\"params\":{\"_appId\":\"Identifier for app\",\"_kernel\":\"App's Kernel reference\"},\"return\":\"AppProxyUpgradeable\"},\"newAppProxyPinned(address,bytes32)\":{\"params\":{\"_appId\":\"Identifier for app\",\"_kernel\":\"App's Kernel reference\"},\"return\":\"AppProxyPinned\"},\"newAppProxyPinned(address,bytes32,bytes)\":{\"params\":{\"_appId\":\"Identifier for app\",\"_initializePayload\":\"Proxy initialization payload\",\"_kernel\":\"App's Kernel reference\"},\"return\":\"AppProxyPinned\"},\"newPinnedAppInstance(bytes32,address)\":{\"details\":\"Create a new pinned instance of an app linked to this kernel\",\"params\":{\"_appBase\":\"Address of the app's base implementation\",\"_appId\":\"Identifier for app\"},\"return\":\"AppProxy instance\"},\"newPinnedAppInstance(bytes32,address,bytes,bool)\":{\"details\":\"Create a new pinned instance of an app linked to this kernel and set     its base implementation if it was not already set\",\"params\":{\"_appBase\":\"Address of the app's base implementation\",\"_appId\":\"Identifier for app\",\"_initializePayload\":\"Payload for call made by the proxy during its construction to initialize\",\"_setDefault\":\"Whether the app proxy app is the default one.       Useful when the Kernel needs to know of an instance of a particular app,       like Vault for escape hatch mechanism.\"},\"return\":\"AppProxy instance\"},\"setApp(bytes32,bytes32,address)\":{\"details\":\"Set the resolving address of an app instance or base implementation\",\"params\":{\"_app\":\"Address of the app instance or base implementation\",\"_appId\":\"Identifier for app\",\"_namespace\":\"App namespace to use\"},\"return\":\"ID of app\"},\"setRecoveryVaultAppId(bytes32)\":{\"details\":\"Set the default vault id for the escape hatch mechanism\",\"params\":{\"_recoveryVaultAppId\":\"Identifier of the recovery vault app\"}},\"transferToVault(address)\":{\"params\":{\"_token\":\"Token balance to be sent to recovery vault.\"}}}},\"userdoc\":{\"methods\":{\"initialize(address,address)\":{\"notice\":\"Initialize this kernel instance along with its ACL and set `_permissionsCreator` as the entity that can create other permissions\"},\"newAppInstance(bytes32,address)\":{\"notice\":\"Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`\"},\"newAppInstance(bytes32,address,bytes,bool)\":{\"notice\":\"Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\"},\"newAppProxy(address,bytes32)\":{\"notice\":\"Create a new upgradeable app instance on `_kernel` with identifier `_appId`\"},\"newAppProxy(address,bytes32,bytes)\":{\"notice\":\"Create a new upgradeable app instance on `_kernel` with identifier `_appId` and initialization payload `_initializePayload`\"},\"newAppProxyPinned(address,bytes32)\":{\"notice\":\"Create a new pinned app instance on `_kernel` with identifier `_appId`\"},\"newAppProxyPinned(address,bytes32,bytes)\":{\"notice\":\"Create a new pinned app instance on `_kernel` with identifier `_appId` and initialization payload `_initializePayload`\"},\"newPinnedAppInstance(bytes32,address)\":{\"notice\":\"Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`.\"},\"newPinnedAppInstance(bytes32,address,bytes,bool)\":{\"notice\":\"Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\"},\"setApp(bytes32,bytes32,address)\":{\"notice\":\"Set the resolving address of `_appId` in namespace `_namespace` to `_app`\"},\"transferToVault(address)\":{\"notice\":\"Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them.\"}}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/kernel/Kernel.sol\":\"Kernel\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/os/contracts/acl/ACLSyntaxSugar.sol\":{\"keccak256\":\"0x519915c14576b679b5ed5767d6b21b44a13aa7ae2fe7b33664ca364fafc33e00\",\"urls\":[\"bzzr://8d899afdbf161eaa5e6ce6a68d9ea420c3f98a00a71d70b293e8de8771e6aa62\"]},\"@aragon/os/contracts/acl/IACL.sol\":{\"keccak256\":\"0xe3492bc29d2482e65d2e39c96487b5388f6181f6bcdc6fe6329b8206b84c0cf1\",\"urls\":[\"bzzr://3af0b7e423c7ff4100a3b5868203ec169c866328f2d93d3b6a2111e916cdc411\"]},\"@aragon/os/contracts/apps/AppProxyBase.sol\":{\"keccak256\":\"0x6d591412d30dc3d5079f8c5cab04f83ad44be376a9e4143d4a3b2067cd7a4483\",\"urls\":[\"bzzr://fa928f595ac4de05bb78303e1e6ee186331d10602dbb8bc56c23c9761584a26b\"]},\"@aragon/os/contracts/apps/AppProxyPinned.sol\":{\"keccak256\":\"0xbe6285bcc237c696e297948be02cfad8d48812ba52d67f8947b52c0546da53b1\",\"urls\":[\"bzzr://217ba70dd30d05d654c4537fce1d353e7e751ba44fea487559f60aa69f9f255f\"]},\"@aragon/os/contracts/apps/AppProxyUpgradeable.sol\":{\"keccak256\":\"0xbcc626f70099c7e859b9c2bb8ca91e72b84f9e6783f91277e40737d51bd2c433\",\"urls\":[\"bzzr://b4467e610b0a9d79c703c4ff711a1acce11dea6d33b79298734ef8ecc1c71728\"]},\"@aragon/os/contracts/apps/AppStorage.sol\":{\"keccak256\":\"0xb1c8eb71d1bdfe1241cc1714b280b46bbfc5bcb1e8499d42c24d3f5f5e8130f1\",\"urls\":[\"bzzr://503beec9e0e19834cb685a1d037eb9caaa412e3709d90bf6e53f51d143d58029\"]},\"@aragon/os/contracts/common/ConversionHelpers.sol\":{\"keccak256\":\"0x9872383d458352f5c68fa5afd1fc84ab6b172cbee33359cfa57655b8eda92416\",\"urls\":[\"bzzr://4636d13fecb497561ff5a2c54bb936a0339308bffa4e71a988b8ce00dcc249f3\"]},\"@aragon/os/contracts/common/DelegateProxy.sol\":{\"keccak256\":\"0x381a4ab9b57abf496b337146a52d533aaf6a8247941fbc19735cbde0e891e85b\",\"urls\":[\"bzzr://f7457df0e3f0ec11cb66a6b90017299fbb4ea1129ec88739af56682032f95c02\"]},\"@aragon/os/contracts/common/DepositableDelegateProxy.sol\":{\"keccak256\":\"0x80a08f88ca7051a248c6fd91283fef4b01b241d1dc97e13499f1460093ff3068\",\"urls\":[\"bzzr://5b130a1a8a655a0c1cb184ed7857bd68ace262d4904d2ed3f94b660721074f11\"]},\"@aragon/os/contracts/common/DepositableStorage.sol\":{\"keccak256\":\"0x67e1884ba4c91de1c6fe1fc2c1c632c29ed3e7894a434c049be9f1ed80539237\",\"urls\":[\"bzzr://94f42ad7b57e419a62b9505affe5d4b17e8a139bfc5c26ec3c17ed6572589a1a\"]},\"@aragon/os/contracts/common/EtherTokenConstant.sol\":{\"keccak256\":\"0xb18d16ad5127519251d9759349bf0ce1e5cfc861a776c5297b91a625c84d0363\",\"urls\":[\"bzzr://42b57d455cdbf7a8ab1383eb977c55d1826870a488cfc0cbc906a3d0f9ad2328\"]},\"@aragon/os/contracts/common/IVaultRecoverable.sol\":{\"keccak256\":\"0xd7cb66ee5d01be69a6abab04583cc86755bf63c2f1fd03b519a876162f52b323\",\"urls\":[\"bzzr://acb75e2637639bbc83b95032a822a54a588889f203b188e97cd78292cc0ee7f5\"]},\"@aragon/os/contracts/common/Initializable.sol\":{\"keccak256\":\"0xc559fdbee1c0ee18b6f2f866c28ed6eb96859b2c88f75867ca11f25ebd00b090\",\"urls\":[\"bzzr://3d3bca8b35030fc12f94bb52a162be9520868b27ff2cb32f09179d67b6ffdf93\"]},\"@aragon/os/contracts/common/IsContract.sol\":{\"keccak256\":\"0xb76e263e3532883fe32dfe4b1447eb487a570e121c5cce01cee604dd9e44a075\",\"urls\":[\"bzzr://4a7dd7aafff496a2c6403a7e9f4e74562088b5a38e2f6e2670e38dab11b9cd8f\"]},\"@aragon/os/contracts/common/Petrifiable.sol\":{\"keccak256\":\"0xb69f9d6de8ff6f2a084aca2e0228c9008a8776482a70bcab16f46a693ec77be6\",\"urls\":[\"bzzr://ca1d7bb504b8d9d75c162f5edc8588ac86934b69f765f2010d603027dc534375\"]},\"@aragon/os/contracts/common/SafeERC20.sol\":{\"keccak256\":\"0xd251a1207e1faa4c41500bf927310bb739b1fbc0bf880f236f8e0a9236d6a03a\",\"urls\":[\"bzzr://b2d0f5981950b4e90eaee65c85050ac4f86a79f579f4ef38e6b281c0de980b2b\"]},\"@aragon/os/contracts/common/TimeHelpers.sol\":{\"keccak256\":\"0x95b785dc4319f6ce5255c9adf5e68a469a0f837f7b02e01b6bc974b4921d4024\",\"urls\":[\"bzzr://53f41920d95ed5cb7326de3062063c9296076809377fbadf2cbd26ab0c84ffd1\"]},\"@aragon/os/contracts/common/Uint256Helpers.sol\":{\"keccak256\":\"0x83033025a3f4402be3b7bcc9a23ce96ae4fadc7f251da8f139d73a13a3400b0c\",\"urls\":[\"bzzr://bd0e059eff36a66c3a28298ed5a2e1b058ce93057866ab36063e9f3095cef36f\"]},\"@aragon/os/contracts/common/UnstructuredStorage.sol\":{\"keccak256\":\"0xe0d627fc7a7716409389f34cfe49366ba7871309d3a73262ec9608ef73e47591\",\"urls\":[\"bzzr://9742204494402cdecc66b266f0e420fcfe2677ba710db7651c40f96a63940bef\"]},\"@aragon/os/contracts/common/VaultRecoverable.sol\":{\"keccak256\":\"0x4f4de2c27ea7df731ad7d9babc37965a805282fed16b422f46a35d9d2ef931a1\",\"urls\":[\"bzzr://02d492884e6b1cf7c0869974219c40453d23cf2021cc1deaa6895e0f1b4404b9\"]},\"@aragon/os/contracts/factory/AppProxyFactory.sol\":{\"keccak256\":\"0x94e88f4e8747be9487e32069eb22c1455ffc49cfd1299ef1eba212049c2db115\",\"urls\":[\"bzzr://b4e9f5de68841156d93b92e55ef031762a2a273215b19190d93cac86b1776ea4\"]},\"@aragon/os/contracts/kernel/IKernel.sol\":{\"keccak256\":\"0xd02b98282ccd271b0caa86f2c249986f1619dcf41811f5dadce520b32610b68e\",\"urls\":[\"bzzr://e77000fc50cf4cfb160518af1cfb612e6cbbc06cb4357b1e03ff492fd17d8d2e\"]},\"@aragon/os/contracts/kernel/Kernel.sol\":{\"keccak256\":\"0x117b1e169c984a4ad9070d5d7784bf91f8b1b16d3e695694cde253181b5ade3e\",\"urls\":[\"bzzr://1b5c68c03da122c98cdf6d36c5a26309bb0199afc9790fa5fa6c2311be46875b\"]},\"@aragon/os/contracts/kernel/KernelConstants.sol\":{\"keccak256\":\"0x95e46be2becfb4c8952880909cd32adf5dcfa8c2e0fdf4ae054bbf83ef7f53cd\",\"urls\":[\"bzzr://68d3ce6cda841600d1e5724c0752314a084e4eeebc1fdcb6bc22c92d77c9a3db\"]},\"@aragon/os/contracts/kernel/KernelStorage.sol\":{\"keccak256\":\"0x682eac86f7a617281098c15cadbaeec72a50cbe49101861a1454519df1718a4c\",\"urls\":[\"bzzr://f988478fa117c50841e0ecebb437b5bce214c3965de387e248e72f3266e86be5\"]},\"@aragon/os/contracts/lib/misc/ERCProxy.sol\":{\"keccak256\":\"0x7ede022292e2e9b7042b933e9ced7213f1e5c6c76fdd02c078a3abbbc03c7ee3\",\"urls\":[\"bzzr://3cb0c6f7982d8671ffabe9f1d631edef9905113afef3540574b2ea0e314ce9a1\"]},\"@aragon/os/contracts/lib/token/ERC20.sol\":{\"keccak256\":\"0xa2e319fde92f9e70912f09bf6e99bbf8b9b798961d54ffcba59d347d37bde1b7\",\"urls\":[\"bzzr://8c9a4aec8e185884f26ffb125975bd52c2363359b9adff481649c59cfe15660f\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b506040516020806200318f833981016040525180156200003e576200003e64010000000062000045810204565b5062000263565b620000586401000000006200014d810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000f8578181015183820152602001620000de565b50505050905090810190601f168015620001265780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200014b6000196401000000006200017c810204565b565b6000620001776000805160206200316f83398151915264010000000062001dcf6200025b82021704565b905090565b6200018f6401000000006200014d810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200022e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000f8578181015183820152602001620000de565b50620002586000805160206200316f833981519152826401000000006200203b6200025f82021704565b50565b5490565b9055565b612efc80620002736000396000f300608060405260043610620001865763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146200018b5780631113ed0d14620001b7578063178e607914620001e157806332f0a3b514620001f9578063397edd41146200023a5780634558850c14620002b7578063485cc95514620002d5578063756f6049146200030e5780637e7db6e1146200032657806380cd5ac3146200035757806386070cfe146200038b5780638b3dd74914620003a35780638c61757d14620003bb5780638ea8dc9d14620003d6578063958fde8214620003ee5780639d4941d81462000422578063ae5b25401462000453578063be00bbd8146200048a578063c050a7a614620004a8578063d162f8b01462000525578063db8a61d4146200059e578063de28735914620005b6578063de4796ed14620005ce578063e156a8f314620005e6578063e8187ff0146200061a578063ede658b01462000632578063fdef910614620006ab578063ff289fc5146200072a575b600080fd5b3480156200019857600080fd5b50620001a36200075e565b604080519115158252519081900360200190f35b348015620001c457600080fd5b50620001cf6200078c565b60408051918252519081900360200190f35b348015620001ee57600080fd5b50620001cf620007b0565b3480156200020657600080fd5b5062000211620007d4565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156200024757600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845262000211948235946024803573ffffffffffffffffffffffffffffffffffffffff16953695946064949201919081908401838280828437509497505050509135151592506200081e915050565b348015620002c457600080fd5b5062000211600435602435620009dd565b348015620002e257600080fd5b506200030c73ffffffffffffffffffffffffffffffffffffffff6004358116906024351662000a0d565b005b3480156200031b57600080fd5b50620001cf62000c6c565b3480156200033357600080fd5b50620001a373ffffffffffffffffffffffffffffffffffffffff6004351662000c90565b3480156200036457600080fd5b506200021160043573ffffffffffffffffffffffffffffffffffffffff6024351662000c96565b3480156200039857600080fd5b50620001cf62000dc0565b348015620003b057600080fd5b50620001cf62000dc6565b348015620003c857600080fd5b506200030c60043562000df8565b348015620003e357600080fd5b50620001cf62000eff565b348015620003fb57600080fd5b506200021160043573ffffffffffffffffffffffffffffffffffffffff6024351662000f23565b3480156200042f57600080fd5b506200030c73ffffffffffffffffffffffffffffffffffffffff6004351662001044565b3480156200046057600080fd5b506200030c60043560243573ffffffffffffffffffffffffffffffffffffffff604435166200137c565b3480156200049757600080fd5b506200021160043560243562001470565b348015620004b557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845262000211948235946024803573ffffffffffffffffffffffffffffffffffffffff1695369594606494920191908190840183828082843750949750505050913515159250620014a1915050565b3480156200053257600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526200021194823573ffffffffffffffffffffffffffffffffffffffff16946024803595369594606494920191908190840183828082843750949750620015d89650505050505050565b348015620005ab57600080fd5b50620001cf620016fd565b348015620005c357600080fd5b506200021162001721565b348015620005db57600080fd5b50620001a36200176f565b348015620005f357600080fd5b506200021173ffffffffffffffffffffffffffffffffffffffff60043516602435620017a2565b3480156200062757600080fd5b50620001cf620017c8565b3480156200063f57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526200021194823573ffffffffffffffffffffffffffffffffffffffff16946024803595369594606494920191908190840183828082843750949750620017ec9650505050505050565b348015620006b857600080fd5b50604080516020601f606435600481810135928301849004840285018401909552818452620001a39473ffffffffffffffffffffffffffffffffffffffff8135811695602480359092169560443595369560849401918190840183828082843750949750620019119650505050505050565b3480156200073757600080fd5b506200021173ffffffffffffffffffffffffffffffffffffffff6004351660243562001a6e565b6000806200076b62000dc6565b90508015801590620007865750806200078362001a8d565b10155b91505090565b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c90565b7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb90565b60015460009081527f9e3eae70920eeef6013879bf9155b985893698c145361c31365929723678b257602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd06200086d7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8762001a91565b620008853330846200087f8562001a9f565b62001911565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620009265781810151838201526020016200090c565b50505050905090810190601f168015620009545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620009907ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f888862001aa9565b6200099d308887620017ec565b92508315620009d357620009d37fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb88856200137c565b5050949350505050565b600060208181529281526040808220909352908152205473ffffffffffffffffffffffffffffffffffffffff1681565b600062000a1962000dc6565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000ab8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062000ac362001ba9565b62000b107ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a8562001c91565b62000b3c307fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a620017a2565b90508073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000bda57600080fd5b505af115801562000bef573d6000803e3d6000fd5b5062000c4392507fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb91507fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a90508362001c91565b50507f7e852e0fcfce6551c13800f1e7476f982525c2b5277ba14b24339c68416336d160015550565b7fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f890565b50600190565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000ce57ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8562001a91565b62000cf73330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506040805160008082526020820190925262000db791879187916200081e565b95945050505050565b60015481565b600062000df37febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e62001dcf565b905090565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000e457fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb8362001a91565b62000e573330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b505050600155565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd081565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000f727ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8562001a91565b62000f843330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562001024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506040805160008082526020820190925262000db79187918791620014a1565b6000806000620010548462000c90565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515620010f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b50620010ff620007d4565b92506200110c8362001dd3565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515620011ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5073ffffffffffffffffffffffffffffffffffffffff841615156200121a576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f1935050505015801562001213573d6000803e3d6000fd5b5062001311565b50826200124473ffffffffffffffffffffffffffffffffffffffff82163063ffffffff62001e0f16565b91506200126f73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff62001f4d16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c454400000060208201529015156200130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0620013a9848462001a91565b620013bb3330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c4544000000000000000000000000000060208201529015156200145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506200146985858562001c91565b5050505050565b60009182526020828152604080842092845291905290205473ffffffffffffffffffffffffffffffffffffffff1690565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0620014f07ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8762001a91565b620015023330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c454400000000000000000000000000006020820152901515620015a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b50620015d07ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f888862001aa9565b6200099d3088875b600080848484620015e8620020c4565b73ffffffffffffffffffffffffffffffffffffffff8416815260208082018490526060604083018181528451918401919091528351909160808401919085019080838360005b83811015620016485781810151838201526020016200162e565b50505050905090810190601f168015620016765780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156200169a573d6000803e3d6000fd5b506040805173ffffffffffffffffffffffffffffffffffffffff831681526000602082015280820187905290519192507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf47919081900360600190a1949350505050565b7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f90565b600062000df37fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a62001470565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200179c62000dc6565b14905090565b60408051600080825260208201909252620017c19084908490620017ec565b9392505050565b7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a90565b600080848484620017fc620020d5565b73ffffffffffffffffffffffffffffffffffffffff8416815260208082018490526060604083018181528451918401919091528351909160808401919085019080838360005b838110156200185c57818101518382015260200162001842565b50505050905090810190601f1680156200188a5780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080158015620018ae573d6000803e3d6000fd5b506040805173ffffffffffffffffffffffffffffffffffffffff831681526001602082015280820187905290519192507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf47919081900360600190a1949350505050565b6000806200191e62001721565b905073ffffffffffffffffffffffffffffffffffffffff81161580159062001a6457506040517ffdef910600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483019081528782166024840152604483018790526080606484019081528651608485015286519285169363fdef9106938b938b938b938b9360a490910190602085019080838360005b83811015620019e4578181015183820152602001620019ca565b50505050905090810190601f16801562001a125780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801562001a3557600080fd5b505af115801562001a4a573d6000803e3d6000fd5b505050506040513d602081101562001a6157600080fd5b50515b9695505050505050565b60408051600080825260208201909252620017c19084908490620015d8565b4390565b6060620017c1838362001fde565b8051602002815290565b600062001ab7848462001470565b905073ffffffffffffffffffffffffffffffffffffffff81161562001b965760408051808201909152601981527f4b45524e454c5f494e56414c49445f4150505f4348414e474500000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8281169084161462001b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062001ba3565b62001ba384848462001c91565b50505050565b62001bb362000dc6565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562001c52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062001c8f62001c6162001a8d565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff6200203b16565b565b62001c9c8162001dd3565b60408051808201909152601781527f4b45524e454c5f4150505f4e4f545f434f4e5452414354000000000000000000602082015290151562001d3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5060008381526020818152604080832085845282529182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915582519081529151849286927f2ec1ae0a449b7ae354b9dacfb3ade6b6332ba26b7fcbb935835fa39dd7263b2392918290030190a3505050565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff8316151562001dfe576000915062001e09565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052600090818062001e9e86846200203f565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151562001f43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260009062000db7858262002071565b6040805160028082526060808301845292602083019080388339019050509050828160008151811015156200200f57fe5b6020908102909101015280518290829060019081106200202b57fe5b6020908102909101015292915050565b9055565b6000806000806040516020818751602089018a5afa925060008311156200206557805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115620020ba573d8015620020a65760208114620020b057620020b8565b60019350620020b8565b600183511493505b505b5090949350505050565b6040516106fd80620020e783390190565b6040516106ed80620027e4833901905600608060405234801561001057600080fd5b506040516106fd3803806106fd8339810160409081528151602083015191830151909201828282600061004b8464010000000061017a810204565b61005d836401000000006101a2810204565b61006f836401000000006101d9810204565b90506000825111156101185761008d816401000000006102a9810204565b151561009857600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100cd5781810151838201526020016100b5565b50505050905090810190601f1680156100fa5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561011857600080fd5b50505050610145610137836101d9640100000000026401000000009004565b6401000000006102d6810204565b6101676101596401000000006102fb810204565b6401000000006102a9810204565b151561017257600080fd5b505050610354565b61019f6000805160206106bd8339815191528264010000000061032661032682021704565b50565b61019f7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b8264010000000061032661032682021704565b60006101ec64010000000061032a810204565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506040513d60208110156102a157600080fd5b505192915050565b600080600160a060020a03831615156102c557600091506102d0565b823b90506000811191505b50919050565b61019f6000805160206106dd8339815191528264010000000061032661032682021704565b60006103216000805160206106dd83398151915264010000000061031e61035082021704565b905090565b9055565b60006103216000805160206106bd83398151915264010000000061031e61035082021704565b5490565b61035a806103636000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101f2945050505050565b505050005b34801561013757600080fd5b50610140610233565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610238565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b50610140610263565b3480156101da57600080fd5b5061019061028e565b60006101ed6102b9565b905090565b60006101fd836102e4565b151561020857600080fd5b612710905060008083516020850186855a03f43d604051816000823e82801561022f578282f35b8282fd5b600190565b60006101ed7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea61031e565b60006101ed7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b61031e565b60006101ed7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b61031e565b60006101ed7fdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e61031e565b60008073ffffffffffffffffffffffffffffffffffffffff8316151561030d5760009150610318565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a7230582011dde276c5373896f3034af8449357ad9bb5fbfcfd199a85aeef252b0a933c3b00294172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137bdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e608060405234801561001057600080fd5b506040516106ed3803806106ed8339810160409081528151602083015191830151909201828282600061004b84640100000000610124810204565b61005d8364010000000061014c810204565b61006f83640100000000610183810204565b90506000825111156101185761008d81640100000000610253810204565b151561009857600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100cd5781810151838201526020016100b5565b50505050905090810190601f1680156100fa5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561011857600080fd5b505050505050506102b3565b6101496000805160206106cd833981519152826401000000006103d761028082021704565b50565b6101497fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b826401000000006103d761028082021704565b6000610196640100000000610284810204565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b15801561022157600080fd5b505af1158015610235573d6000803e3d6000fd5b505050506040513d602081101561024b57600080fd5b505192915050565b600080600160a060020a038316151561026f576000915061027a565b823b90506000811191505b50919050565b9055565b60006102aa6000805160206106cd8339815191526401000000006103cf6102af82021704565b905090565b5490565b61040b806102c26000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101fa945050505050565b505050005b34801561013757600080fd5b5061014061023b565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610240565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b5061014061026b565b3480156101da57600080fd5b50610190610296565b60006101f56101f061026b565b6102c1565b905090565b600061020583610395565b151561021057600080fd5b612710905060008083516020850186855a03f43d604051816000823e828015610237578282f35b8282fd5b600290565b60006101f57f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6103cf565b60006101f57fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6103cf565b60006101f57f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6103cf565b60006102cb610296565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561036357600080fd5b505af1158015610377573d6000803e3d6000fd5b505050506040513d602081101561038d57600080fd5b505192915050565b60008073ffffffffffffffffffffffffffffffffffffffff831615156103be57600091506103c9565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a7230582037fda6007dae017dcd94ca2548a6ac816a59129ff8c0a1770a132538939f53c200294172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137ba165627a7a72305820c2bff56086d2820109f8d53ed1e2ee4e697b8c9738174e20b54892283567b9210029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x608060405260043610620001865763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146200018b5780631113ed0d14620001b7578063178e607914620001e157806332f0a3b514620001f9578063397edd41146200023a5780634558850c14620002b7578063485cc95514620002d5578063756f6049146200030e5780637e7db6e1146200032657806380cd5ac3146200035757806386070cfe146200038b5780638b3dd74914620003a35780638c61757d14620003bb5780638ea8dc9d14620003d6578063958fde8214620003ee5780639d4941d81462000422578063ae5b25401462000453578063be00bbd8146200048a578063c050a7a614620004a8578063d162f8b01462000525578063db8a61d4146200059e578063de28735914620005b6578063de4796ed14620005ce578063e156a8f314620005e6578063e8187ff0146200061a578063ede658b01462000632578063fdef910614620006ab578063ff289fc5146200072a575b600080fd5b3480156200019857600080fd5b50620001a36200075e565b604080519115158252519081900360200190f35b348015620001c457600080fd5b50620001cf6200078c565b60408051918252519081900360200190f35b348015620001ee57600080fd5b50620001cf620007b0565b3480156200020657600080fd5b5062000211620007d4565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156200024757600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845262000211948235946024803573ffffffffffffffffffffffffffffffffffffffff16953695946064949201919081908401838280828437509497505050509135151592506200081e915050565b348015620002c457600080fd5b5062000211600435602435620009dd565b348015620002e257600080fd5b506200030c73ffffffffffffffffffffffffffffffffffffffff6004358116906024351662000a0d565b005b3480156200031b57600080fd5b50620001cf62000c6c565b3480156200033357600080fd5b50620001a373ffffffffffffffffffffffffffffffffffffffff6004351662000c90565b3480156200036457600080fd5b506200021160043573ffffffffffffffffffffffffffffffffffffffff6024351662000c96565b3480156200039857600080fd5b50620001cf62000dc0565b348015620003b057600080fd5b50620001cf62000dc6565b348015620003c857600080fd5b506200030c60043562000df8565b348015620003e357600080fd5b50620001cf62000eff565b348015620003fb57600080fd5b506200021160043573ffffffffffffffffffffffffffffffffffffffff6024351662000f23565b3480156200042f57600080fd5b506200030c73ffffffffffffffffffffffffffffffffffffffff6004351662001044565b3480156200046057600080fd5b506200030c60043560243573ffffffffffffffffffffffffffffffffffffffff604435166200137c565b3480156200049757600080fd5b506200021160043560243562001470565b348015620004b557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845262000211948235946024803573ffffffffffffffffffffffffffffffffffffffff1695369594606494920191908190840183828082843750949750505050913515159250620014a1915050565b3480156200053257600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526200021194823573ffffffffffffffffffffffffffffffffffffffff16946024803595369594606494920191908190840183828082843750949750620015d89650505050505050565b348015620005ab57600080fd5b50620001cf620016fd565b348015620005c357600080fd5b506200021162001721565b348015620005db57600080fd5b50620001a36200176f565b348015620005f357600080fd5b506200021173ffffffffffffffffffffffffffffffffffffffff60043516602435620017a2565b3480156200062757600080fd5b50620001cf620017c8565b3480156200063f57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526200021194823573ffffffffffffffffffffffffffffffffffffffff16946024803595369594606494920191908190840183828082843750949750620017ec9650505050505050565b348015620006b857600080fd5b50604080516020601f606435600481810135928301849004840285018401909552818452620001a39473ffffffffffffffffffffffffffffffffffffffff8135811695602480359092169560443595369560849401918190840183828082843750949750620019119650505050505050565b3480156200073757600080fd5b506200021173ffffffffffffffffffffffffffffffffffffffff6004351660243562001a6e565b6000806200076b62000dc6565b90508015801590620007865750806200078362001a8d565b10155b91505090565b7f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c90565b7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb90565b60015460009081527f9e3eae70920eeef6013879bf9155b985893698c145361c31365929723678b257602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd06200086d7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8762001a91565b620008853330846200087f8562001a9f565b62001911565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620009265781810151838201526020016200090c565b50505050905090810190601f168015620009545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620009907ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f888862001aa9565b6200099d308887620017ec565b92508315620009d357620009d37fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb88856200137c565b5050949350505050565b600060208181529281526040808220909352908152205473ffffffffffffffffffffffffffffffffffffffff1681565b600062000a1962000dc6565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000ab8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062000ac362001ba9565b62000b107ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a8562001c91565b62000b3c307fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a620017a2565b90508073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000bda57600080fd5b505af115801562000bef573d6000803e3d6000fd5b5062000c4392507fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb91507fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a90508362001c91565b50507f7e852e0fcfce6551c13800f1e7476f982525c2b5277ba14b24339c68416336d160015550565b7fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f890565b50600190565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000ce57ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8562001a91565b62000cf73330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506040805160008082526020820190925262000db791879187916200081e565b95945050505050565b60015481565b600062000df37febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e62001dcf565b905090565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000e457fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb8362001a91565b62000e573330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562000ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b505050600155565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd081565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd062000f727ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8562001a91565b62000f843330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c45440000000000000000000000000000602082015290151562001024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506040805160008082526020820190925262000db79187918791620014a1565b6000806000620010548462000c90565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515620010f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b50620010ff620007d4565b92506200110c8362001dd3565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515620011ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5073ffffffffffffffffffffffffffffffffffffffff841615156200121a576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f1935050505015801562001213573d6000803e3d6000fd5b5062001311565b50826200124473ffffffffffffffffffffffffffffffffffffffff82163063ffffffff62001e0f16565b91506200126f73ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff62001f4d16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c454400000060208201529015156200130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b7fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0620013a9848462001a91565b620013bb3330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c4544000000000000000000000000000060208201529015156200145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b506200146985858562001c91565b5050505050565b60009182526020828152604080842092845291905290205473ffffffffffffffffffffffffffffffffffffffff1690565b60007fb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0620014f07ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f8762001a91565b620015023330846200087f8562001a9f565b60408051808201909152601281527f4b45524e454c5f415554485f4641494c454400000000000000000000000000006020820152901515620015a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b50620015d07ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f888862001aa9565b6200099d3088875b600080848484620015e8620020c4565b73ffffffffffffffffffffffffffffffffffffffff8416815260208082018490526060604083018181528451918401919091528351909160808401919085019080838360005b83811015620016485781810151838201526020016200162e565b50505050905090810190601f168015620016765780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156200169a573d6000803e3d6000fd5b506040805173ffffffffffffffffffffffffffffffffffffffff831681526000602082015280820187905290519192507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf47919081900360600190a1949350505050565b7ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f90565b600062000df37fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a62001470565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200179c62000dc6565b14905090565b60408051600080825260208201909252620017c19084908490620017ec565b9392505050565b7fe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a90565b600080848484620017fc620020d5565b73ffffffffffffffffffffffffffffffffffffffff8416815260208082018490526060604083018181528451918401919091528351909160808401919085019080838360005b838110156200185c57818101518382015260200162001842565b50505050905090810190601f1680156200188a5780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080158015620018ae573d6000803e3d6000fd5b506040805173ffffffffffffffffffffffffffffffffffffffff831681526001602082015280820187905290519192507fd880e726dced8808d727f02dd0e6fdd3a945b24bfee77e13367bcbe61ddbaf47919081900360600190a1949350505050565b6000806200191e62001721565b905073ffffffffffffffffffffffffffffffffffffffff81161580159062001a6457506040517ffdef910600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483019081528782166024840152604483018790526080606484019081528651608485015286519285169363fdef9106938b938b938b938b9360a490910190602085019080838360005b83811015620019e4578181015183820152602001620019ca565b50505050905090810190601f16801562001a125780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801562001a3557600080fd5b505af115801562001a4a573d6000803e3d6000fd5b505050506040513d602081101562001a6157600080fd5b50515b9695505050505050565b60408051600080825260208201909252620017c19084908490620015d8565b4390565b6060620017c1838362001fde565b8051602002815290565b600062001ab7848462001470565b905073ffffffffffffffffffffffffffffffffffffffff81161562001b965760408051808201909152601981527f4b45524e454c5f494e56414c49445f4150505f4348414e474500000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8281169084161462001b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062001ba3565b62001ba384848462001c91565b50505050565b62001bb362000dc6565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562001c52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5062001c8f62001c6162001a8d565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff6200203b16565b565b62001c9c8162001dd3565b60408051808201909152601781527f4b45524e454c5f4150505f4e4f545f434f4e5452414354000000000000000000602082015290151562001d3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5060008381526020818152604080832085845282529182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915582519081529151849286927f2ec1ae0a449b7ae354b9dacfb3ade6b6332ba26b7fcbb935835fa39dd7263b2392918290030190a3505050565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff8316151562001dfe576000915062001e09565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052600090818062001e9e86846200203f565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f5245564552544544000000006020820152919350915082151562001f43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620009265781810151838201526020016200090c565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260009062000db7858262002071565b6040805160028082526060808301845292602083019080388339019050509050828160008151811015156200200f57fe5b6020908102909101015280518290829060019081106200202b57fe5b6020908102909101015292915050565b9055565b6000806000806040516020818751602089018a5afa925060008311156200206557805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115620020ba573d8015620020a65760208114620020b057620020b8565b60019350620020b8565b600183511493505b505b5090949350505050565b6040516106fd80620020e783390190565b6040516106ed80620027e4833901905600608060405234801561001057600080fd5b506040516106fd3803806106fd8339810160409081528151602083015191830151909201828282600061004b8464010000000061017a810204565b61005d836401000000006101a2810204565b61006f836401000000006101d9810204565b90506000825111156101185761008d816401000000006102a9810204565b151561009857600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100cd5781810151838201526020016100b5565b50505050905090810190601f1680156100fa5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561011857600080fd5b50505050610145610137836101d9640100000000026401000000009004565b6401000000006102d6810204565b6101676101596401000000006102fb810204565b6401000000006102a9810204565b151561017257600080fd5b505050610354565b61019f6000805160206106bd8339815191528264010000000061032661032682021704565b50565b61019f7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b8264010000000061032661032682021704565b60006101ec64010000000061032a810204565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506040513d60208110156102a157600080fd5b505192915050565b600080600160a060020a03831615156102c557600091506102d0565b823b90506000811191505b50919050565b61019f6000805160206106dd8339815191528264010000000061032661032682021704565b60006103216000805160206106dd83398151915264010000000061031e61035082021704565b905090565b9055565b60006103216000805160206106bd83398151915264010000000061031e61035082021704565b5490565b61035a806103636000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101f2945050505050565b505050005b34801561013757600080fd5b50610140610233565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610238565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b50610140610263565b3480156101da57600080fd5b5061019061028e565b60006101ed6102b9565b905090565b60006101fd836102e4565b151561020857600080fd5b612710905060008083516020850186855a03f43d604051816000823e82801561022f578282f35b8282fd5b600190565b60006101ed7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea61031e565b60006101ed7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b61031e565b60006101ed7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b61031e565b60006101ed7fdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e61031e565b60008073ffffffffffffffffffffffffffffffffffffffff8316151561030d5760009150610318565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a7230582011dde276c5373896f3034af8449357ad9bb5fbfcfd199a85aeef252b0a933c3b00294172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137bdee64df20d65e53d7f51cb6ab6d921a0a6a638a91e942e1d8d02df28e31c038e608060405234801561001057600080fd5b506040516106ed3803806106ed8339810160409081528151602083015191830151909201828282600061004b84640100000000610124810204565b61005d8364010000000061014c810204565b61006f83640100000000610183810204565b90506000825111156101185761008d81640100000000610253810204565b151561009857600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100cd5781810151838201526020016100b5565b50505050905090810190601f1680156100fa5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561011857600080fd5b505050505050506102b3565b6101496000805160206106cd833981519152826401000000006103d761028082021704565b50565b6101497fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b826401000000006103d761028082021704565b6000610196640100000000610284810204565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b15801561022157600080fd5b505af1158015610235573d6000803e3d6000fd5b505050506040513d602081101561024b57600080fd5b505192915050565b600080600160a060020a038316151561026f576000915061027a565b823b90506000811191505b50919050565b9055565b60006102aa6000805160206106cd8339815191526401000000006103cf6102af82021704565b905090565b5490565b61040b806102c26000396000f30060806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101fa945050505050565b505050005b34801561013757600080fd5b5061014061023b565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610240565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b5061014061026b565b3480156101da57600080fd5b50610190610296565b60006101f56101f061026b565b6102c1565b905090565b600061020583610395565b151561021057600080fd5b612710905060008083516020850186855a03f43d604051816000823e828015610237578282f35b8282fd5b600290565b60006101f57f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6103cf565b60006101f57fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6103cf565b60006101f57f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6103cf565b60006102cb610296565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561036357600080fd5b505af1158015610377573d6000803e3d6000fd5b505050506040513d602081101561038d57600080fd5b505192915050565b60008073ffffffffffffffffffffffffffffffffffffffff831615156103be57600091506103c9565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a7230582037fda6007dae017dcd94ca2548a6ac816a59129ff8c0a1770a132538939f53c200294172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137ba165627a7a72305820c2bff56086d2820109f8d53ed1e2ee4e697b8c9738174e20b54892283567b9210029",
  "sourceMap": "441:10209:50:-;;;1305:110;8:9:-1;5:2;;;30:1;27;20:12;5:2;1305:110:50;;;;;;;;;;;;;1355:54;;;;1389:9;:7;;;;:9;:::i;:::-;1305:110;441:10209;;590:84:32;615:24:30;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;607:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;637:30:32;-1:-1:-1;;637:13:32;;;;:30;:::i;:::-;590:84::o;881:137:30:-;936:7;962:49;-1:-1:-1;;;;;;;;;;;962:47:30;;;;;;:49;:::i;:::-;955:56;;881:137;:::o;1751:141::-;615:24;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;-1:-1:-1;1824:61:30;-1:-1:-1;;;;;;;;;;;1872:12:30;1824:47;;;;;;:61;:::i;:::-;1751:141;:::o;519:134:37:-;630:15;;620:27::o;1028:119::-;1117:22;;1115:26::o;441:10209:50:-;;;;;;;",
  "deployedSourceMap": "441:10209:50:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:208:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:30;;;;;;;;;;;;;;;;;;;;;;7920:87:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7920:87:50;;;;;;;;;;;;;;;;;;;;7816:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7816:99:50;;;;8631:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8631:133:50;;;;;;;;;;;;;;;;;;;;;;;3739:675;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3739:675:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3739:675:50;;-1:-1:-1;;;;3739:675:50;;;;;-1:-1:-1;3739:675:50;;-1:-1:-1;;3739:675:50;93:61:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;93:61:53;;;;;;;1819:537:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1819:537:50;;;;;;;;;;;;;;7614:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7614:91:50;;;;1659:99:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1659:99:38;;;;;;;2693:262:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2693:262:50;;;;;;;;;160:33:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;160:33:53;;;;881:137:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:30;;;;7233:220:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7233:220:50;;;;;729:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;729:109:50;;;;4763:274;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4763:274:50;;;;;;;;;836:623:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;836:623:38;;;;;;;6884:191:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6884:191:50;;;;;;;;;;;8368:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8368:130:50;;;;;;;5832:687;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5832:687:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5832:687:50;;-1:-1:-1;;;;5832:687:50;;;;;-1:-1:-1;5832:687:50;;-1:-1:-1;;5832:687:50;1875:292:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1875:292:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1875:292:46;;-1:-1:-1;1875:292:46;;-1:-1:-1;;;;;;;1875:292:46;7710:101:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7710:101:50;;;;8844:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8844:132:50;;;;287:117:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:32;;;;433:157:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;433:157:46;;;;;;;;;8012:99:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8012:99:50;;;;866:300:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;866:300:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;866:300:46;;-1:-1:-1;866:300:46;;-1:-1:-1;;;;;;;866:300:46;9423:311:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9423:311:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9423:311:50;;-1:-1:-1;9423:311:50;;-1:-1:-1;;;;;;;9423:311:50;1384:164:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1384:164:46;;;;;;;;;1128:208:30;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:30;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;:::o;7920:87:50:-;426:66:51;7920:87:50;:::o;7816:99::-;1368:66:51;7816:99:50;:::o;8631:133::-;8711:25;8738:18;8680:7;8706:51;;;:31;;:51;:31;:51;;;;;8631:133;:::o;3739:675::-;3945:17;772:66;3887:39;1242:66:51;3919:6:50;3887:3;:39::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;:::-;10482:13;:107::i;:::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10461:169:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3978:58:50;1242:66:51;4019:6:50;4027:8;3978:12;:58::i;:::-;4057:45;4069:4;4075:6;4083:18;4057:11;:45::i;:::-;4046:56;;4319:11;4315:93;;;4346:51;1368:66:51;4380:6:50;4388:8;4346:6;:51::i;:::-;3739:675;;;;;;;;:::o;93:61:53:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1819:537:50:-;2108:8;615:24:30;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;;1909:13:50;:11;:13::i;:::-;1957:72;1242:66:51;552;2020:8:50;1957:7;:72::i;:::-;2124:44;2136:4;552:66:51;2124:11:50;:44::i;:::-;2108:61;;2179:3;:14;;;2194:19;2179:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2179:35:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2224:66:50;;-1:-1:-1;1368:66:51;;-1:-1:-1;552:66:51;;-1:-1:-1;2286:3:50;2224:7;:66::i;:::-;-1:-1:-1;;680:66:51;2322:27:50;2301:48;-1:-1:-1;1819:537:50:o;7614:91::-;1115:66:51;7614:91:50;:::o;1659:99:38:-;-1:-1:-1;1747:4:38;;1659:99::o;2693:262:50:-;2855:17;772:66;2797:39;1242:66:51;2829:6:50;2797:3;:39::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;10482:107::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10461:169:50;-1:-1:-1;2928:12:50;;;2938:1;2928:12;;;;;;;;;2895:53;;2910:6;;2918:8;;2895:14;:53::i;:::-;2888:60;2693:262;-1:-1:-1;;;;;2693:262:50:o;160:33:53:-;;;;:::o;881:137:30:-;936:7;962:49;345:66;962:47;:49::i;:::-;955:56;;881:137;:::o;7233:220:50:-;772:66;7339:51;1368:66:51;7370:19:50;7339:3;:51::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;10482:107::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10461:169:50;-1:-1:-1;;;7406:18:50;:40;7233:220::o;729:109::-;772:66;729:109;:::o;4763:274::-;4931:17;772:66;4873:39;1242:66:51;4905:6:50;4873:3;:39::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;10482:107::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10461:169:50;-1:-1:-1;5010:12:50;;;5020:1;5010:12;;;;;;;;;4971:59;;4992:6;;5000:8;;4971:20;:59::i;836:623:38:-;960:13;1067:15;1224:11;904:27;924:6;904:19;:27::i;:::-;933:16;;;;;;;;;;;;;;;;;;896:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;896:54:38;;976:18;:16;:18::i;:::-;960:34;;1012:17;1023:5;1012:10;:17::i;:::-;1031:24;;;;;;;;;;;;;;;;;;1004:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1004:52:38;-1:-1:-1;1096:13:38;;;;1092:307;;;1170:23;;1143:4;1135:21;;-1:-1:-1;1135:21:38;1170:14;;;:23;;;;;1135:21;;1170:23;;;;1135:21;1170:14;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1170:23:38;1092:307;;;-1:-1:-1;1244:6:38;1275:27;:21;;;1297:4;1275:27;:21;:27;:::i;:::-;1265:37;-1:-1:-1;1324:34:38;:18;;;1343:5;1265:37;1324:34;:18;:34;:::i;:::-;1360:27;;;;;;;;;;;;;;;;;;1316:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1316:72:38;;1092:307;1436:6;1414:38;;1429:5;1414:38;;;1444:7;1414:38;;;;;;;;;;;;;;;;;;836:623;;;;:::o;6884:191:50:-;772:66;6996:23;7000:10;7012:6;6996:3;:23::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;10482:107::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10461:169:50;;7035:33;7043:10;7055:6;7063:4;7035:7;:33::i;:::-;6884:191;;;;;:::o;8368:130::-;8441:7;8467:16;;;;;;;;;;;:24;;;;;;;;;;;;8368:130::o;5832:687::-;6044:17;772:66;5986:39;1242:66:51;6018:6:50;5986:3;:39::i;:::-;10482:107;10496:10;10516:4;10523:5;10530:58;10580:7;10530:49;:58::i;10482:107::-;10603:17;;;;;;;;;;;;;;;;;;10461:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10461:169:50;-1:-1:-1;6077:58:50;1242:66:51;6118:6:50;6126:8;6077:12;:58::i;:::-;6156:51;6174:4;6180:6;6188:18;1875:292:46;1977:14;2003:20;2045:7;2054:6;2062:18;2026:55;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2026:55:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2096:42:46;;;;;;;;2124:5;2096:42;;;;;;;;;;;;2003:78;;-1:-1:-1;2096:42:46;;;;;;;;;;2155:5;1875:292;-1:-1:-1;;;;1875:292:46:o;7710:101:50:-;1242:66:51;7710:101:50;:::o;8844:132::-;8880:4;8908:60;1368:66:51;552;8908:6:50;:60::i;287:117:32:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;433:157:46:-;570:12;;;503:19;570:12;;;;;;;;;541:42;;553:7;;562:6;;541:11;:42::i;:::-;534:49;433:157;-1:-1:-1;;;433:157:46:o;8012:99:50:-;552:66:51;8012:99:50;:::o;866:300:46:-;962:19;993:25;1045:7;1054:6;1062:18;1021:60;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1021:60:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;1096:41:46;;;;;;;;1124:4;1096:41;;;;;;;;;;;;993:88;;-1:-1:-1;1096:41:46;;;;;;;;;;1154:5;866:300;-1:-1:-1;;;;866:300:46:o;9423:311:50:-;9524:4;9540:15;9558:5;:3;:5::i;:::-;9540:23;-1:-1:-1;9580:33:50;;;;;;;:147;;-1:-1:-1;9676:51:50;;;;;:24;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;;;9701:4;;9707:6;;9715:5;;9722:4;;9676:51;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9676:51:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9676:51:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9676:51:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9676:51:50;9580:147;9573:154;9423:311;-1:-1:-1;;;;;;9423:311:50:o;1384:164:46:-;1528:12;;;1460:14;1528:12;;;;;;;;;1493:48;;1511:7;;1520:6;;1493:17;:48::i;347:94:35:-;422:12;347:94;:::o;303:126:12:-;363:11;393:29;405:2;418;393:3;:29::i;142:539:23:-;559:13;;575:2;559:18;639:26;;559:6;596:79::o;9976:414:50:-;10067:11;10081:26;10088:10;10100:6;10081;:26::i;:::-;10067:40;-1:-1:-1;10121:17:50;;;;10117:267;;10284:24;;;;;;;;;;;;;;;;;10271:11;;;;;;;;10263:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10263:46:50;;10117:267;;;10340:33;10348:10;10360:6;10368:4;10340:7;:33::i;:::-;9976:414;;;;:::o;1447:123:30:-;615:24;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;;1498;1546:16;:14;:16::i;:::-;345:66;;1498:65;:47;:65;:::i;:::-;1447:123::o;9740:230:50:-;9834:16;9845:4;9834:10;:16::i;:::-;9852:22;;;;;;;;;;;;;;;;;;9826:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;9826:49:50;-1:-1:-1;9885:4:50;:16;;;;;;;;;;;:24;;;;;;;;;:31;;;;;;;;;;;;;9931:32;;;;;;;9885:24;;:16;;9931:32;;;;;;;;;9740:230;;;:::o;519:134:37:-;630:15;;620:27::o;426:244:31:-;486:4;;506:21;;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;4578:403:34:-;4708:91;;;4744:16;4708:91;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4708:91:34;;;;;;;;25:18:-1;;61:17;;4708:91:34;182:15:-1;4744:25:34;179:29:-1;160:49;;4656:7:34;;;;4849:39;4744:6;4708:91;4849:12;:39::i;:::-;4915:28;;;;;;;;;;;;;;;;;4810:78;;-1:-1:-1;4810:78:34;-1:-1:-1;4898:46:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4898:46:34;-1:-1:-1;4962:12:34;4578:403;-1:-1:-1;;;;;4578:403:34:o;3100:304::-;3232:101;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3232:101:34;;;;;;;;25:18:-1;;61:17;;3232:101:34;182:15:-1;3268:17:34;179:29:-1;160:49;;3184:4:34;;3350:47;3372:6;3232:101;3350:21;:47::i;1717:148:12:-;1804:16;;;1818:1;1804:16;;;1777:11;1804:16;;;;;1777:11;1804:16;;;;;105:10:-1;1804:16:12;88:34:-1;136:17;;-1:-1;1804:16:12;1800:20;;1837:2;1830:1;1832;1830:4;;;;;;;;;;;;;;;;;;:9;1849:4;;1856:2;;1849:1;;1851;;1849:4;;;;;;;;;;;;;;:9;1717:148;;-1:-1:-1;;1717:148:12:o;1028:119:37:-;1117:22;;1115:26::o;2148:774:34:-;2255:4;2261:7;2284:12;2306:11;2367:4;2361:11;2741:4;2670:3;2619:9;2613:16;2572:4;2561:9;2557:20;2508:5;2451:3;2423:371;2412:382;;2823:1;2814:7;2811:14;2808:2;;;2857:3;2851:10;2844:17;;2808:2;-1:-1:-1;2902:7:34;;2911:3;;-1:-1:-1;2148:774:34;-1:-1:-1;;;2148:774:34:o;800:1342::-;903:4;923:8;981:4;975:11;1403:4;1332:3;1281:9;1275:16;1234:4;1223:9;1219:20;1169:1;1120:5;1063:3;1041:415;1485:1;1476:7;1473:14;1470:2;;;1587:14;1672:55;;;;1806:4;1801:193;;;;1580:512;;1672:55;1708:1;1701:8;;1672:55;;1801:193;1974:1;1968:3;1962:10;1959:17;1952:24;;1580:512;;1470:2;-1:-1:-1;2132:3:34;;800:1342;-1:-1:-1;;;;800:1342:34:o;441:10209:50:-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"./IKernel.sol\";\nimport \"./KernelConstants.sol\";\nimport \"./KernelStorage.sol\";\nimport \"../acl/IACL.sol\";\nimport \"../acl/ACLSyntaxSugar.sol\";\nimport \"../common/ConversionHelpers.sol\";\nimport \"../common/IsContract.sol\";\nimport \"../common/Petrifiable.sol\";\nimport \"../common/VaultRecoverable.sol\";\nimport \"../factory/AppProxyFactory.sol\";\nimport \"../lib/misc/ERCProxy.sol\";\n\n\n// solium-disable-next-line max-len\ncontract Kernel is IKernel, KernelStorage, KernelAppIds, KernelNamespaceConstants, Petrifiable, IsContract, VaultRecoverable, AppProxyFactory, ACLSyntaxSugar {\n    /* Hardcoded constants to save gas\n    bytes32 public constant APP_MANAGER_ROLE = keccak256(\"APP_MANAGER_ROLE\");\n    */\n    bytes32 public constant APP_MANAGER_ROLE = 0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0;\n\n    string private constant ERROR_APP_NOT_CONTRACT = \"KERNEL_APP_NOT_CONTRACT\";\n    string private constant ERROR_INVALID_APP_CHANGE = \"KERNEL_INVALID_APP_CHANGE\";\n    string private constant ERROR_AUTH_FAILED = \"KERNEL_AUTH_FAILED\";\n\n    /**\n    * @dev Constructor that allows the deployer to choose if the base instance should be petrified immediately.\n    * @param _shouldPetrify Immediately petrify this instance so that it can never be initialized\n    */\n    constructor(bool _shouldPetrify) public {\n        if (_shouldPetrify) {\n            petrify();\n        }\n    }\n\n    /**\n    * @dev Initialize can only be called once. It saves the block number in which it was initialized.\n    * @notice Initialize this kernel instance along with its ACL and set `_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(IACL _baseAcl, address _permissionsCreator) public onlyInit {\n        initialized();\n\n        // Set ACL base\n        _setApp(KERNEL_APP_BASES_NAMESPACE, KERNEL_DEFAULT_ACL_APP_ID, _baseAcl);\n\n        // Create ACL instance and attach it as the default ACL app\n        IACL acl = IACL(newAppProxy(this, KERNEL_DEFAULT_ACL_APP_ID));\n        acl.initialize(_permissionsCreator);\n        _setApp(KERNEL_APP_ADDR_NAMESPACE, KERNEL_DEFAULT_ACL_APP_ID, acl);\n\n        recoveryVaultAppId = KERNEL_DEFAULT_VAULT_APP_ID;\n    }\n\n    /**\n    * @dev Create a new instance of an app linked to this kernel\n    * @notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @return AppProxy instance\n    */\n    function newAppInstance(bytes32 _appId, address _appBase)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        return newAppInstance(_appId, _appBase, new bytes(0), false);\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    * @notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @param _initializePayload Payload for call made by the proxy during its construction to initialize\n    * @param _setDefault Whether the app proxy app is the default one.\n    *        Useful when the Kernel needs to know of an instance of a particular app,\n    *        like Vault for escape hatch mechanism.\n    * @return AppProxy instance\n    */\n    function newAppInstance(bytes32 _appId, address _appBase, bytes _initializePayload, bool _setDefault)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        _setAppIfNew(KERNEL_APP_BASES_NAMESPACE, _appId, _appBase);\n        appProxy = newAppProxy(this, _appId, _initializePayload);\n        // By calling setApp directly and not the internal functions, we make sure the params are checked\n        // and it will only succeed if sender has permissions to set something to the namespace.\n        if (_setDefault) {\n            setApp(KERNEL_APP_ADDR_NAMESPACE, _appId, appProxy);\n        }\n    }\n\n    /**\n    * @dev Create a new pinned instance of an app linked to this kernel\n    * @notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`.\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @return AppProxy instance\n    */\n    function newPinnedAppInstance(bytes32 _appId, address _appBase)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        return newPinnedAppInstance(_appId, _appBase, new bytes(0), false);\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    * @notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n    * @param _appId Identifier for app\n    * @param _appBase Address of the app's base implementation\n    * @param _initializePayload Payload for call made by the proxy during its construction to initialize\n    * @param _setDefault Whether the app proxy app is the default one.\n    *        Useful when the Kernel needs to know of an instance of a particular app,\n    *        like Vault for escape hatch mechanism.\n    * @return AppProxy instance\n    */\n    function newPinnedAppInstance(bytes32 _appId, address _appBase, bytes _initializePayload, bool _setDefault)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_BASES_NAMESPACE, _appId))\n        returns (ERCProxy appProxy)\n    {\n        _setAppIfNew(KERNEL_APP_BASES_NAMESPACE, _appId, _appBase);\n        appProxy = newAppProxyPinned(this, _appId, _initializePayload);\n        // By calling setApp directly and not the internal functions, we make sure the params are checked\n        // and it will only succeed if sender has permissions to set something to the namespace.\n        if (_setDefault) {\n            setApp(KERNEL_APP_ADDR_NAMESPACE, _appId, appProxy);\n        }\n    }\n\n    /**\n    * @dev Set the resolving address of an app instance or base implementation\n    * @notice Set the resolving address of `_appId` in namespace `_namespace` to `_app`\n    * @param _namespace App namespace to use\n    * @param _appId Identifier for app\n    * @param _app Address of the app instance or base implementation\n    * @return ID of app\n    */\n    function setApp(bytes32 _namespace, bytes32 _appId, address _app)\n        public\n        auth(APP_MANAGER_ROLE, arr(_namespace, _appId))\n    {\n        _setApp(_namespace, _appId, _app);\n    }\n\n    /**\n    * @dev Set the default vault id for the escape hatch mechanism\n    * @param _recoveryVaultAppId Identifier of the recovery vault app\n    */\n    function setRecoveryVaultAppId(bytes32 _recoveryVaultAppId)\n        public\n        auth(APP_MANAGER_ROLE, arr(KERNEL_APP_ADDR_NAMESPACE, _recoveryVaultAppId))\n    {\n        recoveryVaultAppId = _recoveryVaultAppId;\n    }\n\n    // External access to default app id and namespace constants to mimic default getters for constants\n    /* solium-disable function-order, mixedcase */\n    function CORE_NAMESPACE() external pure returns (bytes32) { return KERNEL_CORE_NAMESPACE; }\n    function APP_BASES_NAMESPACE() external pure returns (bytes32) { return KERNEL_APP_BASES_NAMESPACE; }\n    function APP_ADDR_NAMESPACE() external pure returns (bytes32) { return KERNEL_APP_ADDR_NAMESPACE; }\n    function KERNEL_APP_ID() external pure returns (bytes32) { return KERNEL_CORE_APP_ID; }\n    function DEFAULT_ACL_APP_ID() external pure returns (bytes32) { return KERNEL_DEFAULT_ACL_APP_ID; }\n    /* solium-enable function-order, mixedcase */\n\n    /**\n    * @dev Get the address of an app instance or base implementation\n    * @param _namespace App namespace to use\n    * @param _appId Identifier for app\n    * @return Address of the app\n    */\n    function getApp(bytes32 _namespace, bytes32 _appId) public view returns (address) {\n        return apps[_namespace][_appId];\n    }\n\n    /**\n    * @dev Get the address of the recovery Vault instance (to recover funds)\n    * @return Address of the Vault\n    */\n    function getRecoveryVault() public view returns (address) {\n        return apps[KERNEL_APP_ADDR_NAMESPACE][recoveryVaultAppId];\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(KERNEL_APP_ADDR_NAMESPACE, KERNEL_DEFAULT_ACL_APP_ID));\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    *         Always returns false if the kernel hasn't been initialized yet.\n    */\n    function hasPermission(address _who, address _where, bytes32 _what, bytes _how) public view returns (bool) {\n        IACL defaultAcl = acl();\n        return address(defaultAcl) != address(0) && // Poor man's initialization check (saves gas)\n            defaultAcl.hasPermission(_who, _where, _what, _how);\n    }\n\n    function _setApp(bytes32 _namespace, bytes32 _appId, address _app) internal {\n        require(isContract(_app), ERROR_APP_NOT_CONTRACT);\n        apps[_namespace][_appId] = _app;\n        emit SetApp(_namespace, _appId, _app);\n    }\n\n    function _setAppIfNew(bytes32 _namespace, bytes32 _appId, address _app) internal {\n        address app = getApp(_namespace, _appId);\n        if (app != address(0)) {\n            // The only way to set an app is if it passes the isContract check, so no need to check it again\n            require(app == _app, ERROR_INVALID_APP_CHANGE);\n        } else {\n            _setApp(_namespace, _appId, _app);\n        }\n    }\n\n    modifier auth(bytes32 _role, uint256[] memory _params) {\n        require(\n            hasPermission(msg.sender, address(this), _role, ConversionHelpers.dangerouslyCastUintArrayToBytes(_params)),\n            ERROR_AUTH_FAILED\n        );\n        _;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/kernel/Kernel.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
    "exportedSymbols": {
      "Kernel": [
        8723
      ]
    },
    "id": 8724,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8233,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:50"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "./IKernel.sol",
        "id": 8234,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 8232,
        "src": "25:23:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "./KernelConstants.sol",
        "id": 8235,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 8746,
        "src": "49:31:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelStorage.sol",
        "file": "./KernelStorage.sol",
        "id": 8236,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 8825,
        "src": "81:29:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 8237,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 5305,
        "src": "111:25:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACLSyntaxSugar.sol",
        "file": "../acl/ACLSyntaxSugar.sol",
        "id": 8238,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 5284,
        "src": "137:35:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/ConversionHelpers.sol",
        "file": "../common/ConversionHelpers.sol",
        "id": 8239,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 6184,
        "src": "173:41:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IsContract.sol",
        "file": "../common/IsContract.sol",
        "id": 8240,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 6470,
        "src": "215:34:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Petrifiable.sol",
        "file": "../common/Petrifiable.sol",
        "id": 8241,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 6503,
        "src": "250:35:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/VaultRecoverable.sol",
        "file": "../common/VaultRecoverable.sol",
        "id": 8242,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 7054,
        "src": "286:40:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/AppProxyFactory.sol",
        "file": "../factory/AppProxyFactory.sol",
        "id": 8243,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 7871,
        "src": "327:40:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/misc/ERCProxy.sol",
        "file": "../lib/misc/ERCProxy.sol",
        "id": 8244,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 9857,
        "src": "368:34:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8245,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8231,
              "src": "460:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$8231",
                "typeString": "contract IKernel"
              }
            },
            "id": 8246,
            "nodeType": "InheritanceSpecifier",
            "src": "460:7:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8247,
              "name": "KernelStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8824,
              "src": "469:13:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelStorage_$8824",
                "typeString": "contract KernelStorage"
              }
            },
            "id": 8248,
            "nodeType": "InheritanceSpecifier",
            "src": "469:13:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8249,
              "name": "KernelAppIds",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8735,
              "src": "484:12:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelAppIds_$8735",
                "typeString": "contract KernelAppIds"
              }
            },
            "id": 8250,
            "nodeType": "InheritanceSpecifier",
            "src": "484:12:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8251,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8745,
              "src": "498:24:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$8745",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 8252,
            "nodeType": "InheritanceSpecifier",
            "src": "498:24:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8253,
              "name": "Petrifiable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6502,
              "src": "524:11:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Petrifiable_$6502",
                "typeString": "contract Petrifiable"
              }
            },
            "id": 8254,
            "nodeType": "InheritanceSpecifier",
            "src": "524:11:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8255,
              "name": "IsContract",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6469,
              "src": "537:10:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IsContract_$6469",
                "typeString": "contract IsContract"
              }
            },
            "id": 8256,
            "nodeType": "InheritanceSpecifier",
            "src": "537:10:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8257,
              "name": "VaultRecoverable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7053,
              "src": "549:16:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VaultRecoverable_$7053",
                "typeString": "contract VaultRecoverable"
              }
            },
            "id": 8258,
            "nodeType": "InheritanceSpecifier",
            "src": "549:16:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8259,
              "name": "AppProxyFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7870,
              "src": "567:15:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppProxyFactory_$7870",
                "typeString": "contract AppProxyFactory"
              }
            },
            "id": 8260,
            "nodeType": "InheritanceSpecifier",
            "src": "567:15:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8261,
              "name": "ACLSyntaxSugar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5208,
              "src": "584:14:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ACLSyntaxSugar_$5208",
                "typeString": "contract ACLSyntaxSugar"
              }
            },
            "id": 8262,
            "nodeType": "InheritanceSpecifier",
            "src": "584:14:50"
          }
        ],
        "contractDependencies": [
          5208,
          6293,
          6343,
          6441,
          6469,
          6502,
          6831,
          7053,
          7870,
          8190,
          8231,
          8735,
          8745,
          8824
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8723,
        "linearizedBaseContracts": [
          8723,
          5208,
          7870,
          7053,
          6469,
          6293,
          6502,
          6441,
          6831,
          8745,
          8735,
          8824,
          8231,
          6343,
          8190
        ],
        "name": "Kernel",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 8265,
            "name": "APP_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 8723,
            "src": "729:109:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 8263,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "729:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307862366439323730386633643438313761666331303631343764393639653232396365643563343665363565306135303032613064333931323837373632626430",
              "id": 8264,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "772:66:50",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_82704613664676796936649533353167530996754393993849268174999512363230727384016_by_1",
                "typeString": "int_const 8270...(69 digits omitted)...4016"
              },
              "value": "0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 8268,
            "name": "ERROR_APP_NOT_CONTRACT",
            "nodeType": "VariableDeclaration",
            "scope": 8723,
            "src": "845:74:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 8266,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "845:6:50",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f4150505f4e4f545f434f4e5452414354",
              "id": 8267,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "894:25:50",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9836ab188560c8863264933b2423feee77bc53fbabf48ddf22703b0c91862812",
                "typeString": "literal_string \"KERNEL_APP_NOT_CONTRACT\""
              },
              "value": "KERNEL_APP_NOT_CONTRACT"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 8271,
            "name": "ERROR_INVALID_APP_CHANGE",
            "nodeType": "VariableDeclaration",
            "scope": 8723,
            "src": "925:78:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 8269,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "925:6:50",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f494e56414c49445f4150505f4348414e4745",
              "id": 8270,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "976:27:50",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e4acfdbe2a685f787d10384f7152f5de5d8b0224aa0b8e04fb5d376ed2b3e513",
                "typeString": "literal_string \"KERNEL_INVALID_APP_CHANGE\""
              },
              "value": "KERNEL_INVALID_APP_CHANGE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 8274,
            "name": "ERROR_AUTH_FAILED",
            "nodeType": "VariableDeclaration",
            "scope": 8723,
            "src": "1009:64:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 8272,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1009:6:50",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f415554485f4641494c4544",
              "id": 8273,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1053:20:50",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2f44e6c32cf650dbae4931fdeafb7f4804fc17f8169bd4fb754968e09d978601",
                "typeString": "literal_string \"KERNEL_AUTH_FAILED\""
              },
              "value": "KERNEL_AUTH_FAILED"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 8285,
              "nodeType": "Block",
              "src": "1345:70:50",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 8279,
                    "name": "_shouldPetrify",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8276,
                    "src": "1359:14:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8284,
                  "nodeType": "IfStatement",
                  "src": "1355:54:50",
                  "trueBody": {
                    "id": 8283,
                    "nodeType": "Block",
                    "src": "1375:34:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8280,
                            "name": "petrify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6501,
                            "src": "1389:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 8281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1389:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8282,
                        "nodeType": "ExpressionStatement",
                        "src": "1389:9:50"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor that allows the deployer to choose if the base instance should be petrified immediately.\n@param _shouldPetrify Immediately petrify this instance so that it can never be initialized",
            "id": 8286,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8276,
                  "name": "_shouldPetrify",
                  "nodeType": "VariableDeclaration",
                  "scope": 8286,
                  "src": "1317:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8275,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1317:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1316:21:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8278,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1345:0:50"
            },
            "scope": 8723,
            "src": "1305:110:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8329,
              "nodeType": "Block",
              "src": "1899:457:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8295,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6426,
                      "src": "1909:11:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 8296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1909:13:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8297,
                  "nodeType": "ExpressionStatement",
                  "src": "1909:13:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8299,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "1965:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8300,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8731,
                        "src": "1993:25:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8301,
                        "name": "_baseAcl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8288,
                        "src": "2020:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 8298,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8659,
                      "src": "1957:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1957:72:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8303,
                  "nodeType": "ExpressionStatement",
                  "src": "1957:72:50"
                },
                {
                  "assignments": [
                    8305
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8305,
                      "name": "acl",
                      "nodeType": "VariableDeclaration",
                      "scope": 8330,
                      "src": "2108:8:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$5304",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8304,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5304,
                        "src": "2108:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8312,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8308,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10505,
                            "src": "2136:4:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$8723",
                              "typeString": "contract Kernel"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8309,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8731,
                            "src": "2142:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$8723",
                              "typeString": "contract Kernel"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 8307,
                          "name": "newAppProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            7788,
                            7819
                          ],
                          "referencedDeclaration": 7788,
                          "src": "2124:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$8231_$_t_bytes32_$returns$_t_contract$_AppProxyUpgradeable_$5934_$",
                            "typeString": "function (contract IKernel,bytes32) returns (contract AppProxyUpgradeable)"
                          }
                        },
                        "id": 8310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2124:44:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$5934",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$5934",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      ],
                      "id": 8306,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5304,
                      "src": "2119:4:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$5304_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 8311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2119:50:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2108:61:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8316,
                        "name": "_permissionsCreator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8290,
                        "src": "2194:19:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8313,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8305,
                        "src": "2179:3:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      },
                      "id": 8315,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5290,
                      "src": "2179:14:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 8317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2179:35:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8318,
                  "nodeType": "ExpressionStatement",
                  "src": "2179:35:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8320,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8744,
                        "src": "2232:25:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8321,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8731,
                        "src": "2259:25:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8322,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8305,
                        "src": "2286:3:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 8319,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8659,
                      "src": "2224:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2224:66:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8324,
                  "nodeType": "ExpressionStatement",
                  "src": "2224:66:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8325,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8823,
                      "src": "2301:18:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8326,
                      "name": "KERNEL_DEFAULT_VAULT_APP_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8734,
                      "src": "2322:27:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2301:48:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 8328,
                  "nodeType": "ExpressionStatement",
                  "src": "2301:48:50"
                }
              ]
            },
            "documentation": "@dev Initialize can only be called once. It saves the block number in which it was initialized.\n@notice Initialize this kernel instance along with its ACL and set `_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",
            "id": 8330,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 8293,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8292,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6373,
                  "src": "1890:8:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1890:8:50"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8288,
                  "name": "_baseAcl",
                  "nodeType": "VariableDeclaration",
                  "scope": 8330,
                  "src": "1839:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$5304",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8287,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5304,
                    "src": "1839:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8290,
                  "name": "_permissionsCreator",
                  "nodeType": "VariableDeclaration",
                  "scope": 8330,
                  "src": "1854:27:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1854:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1838:44:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1899:0:50"
            },
            "scope": 8723,
            "src": "1819:537:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8356,
              "nodeType": "Block",
              "src": "2878:77:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8347,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8332,
                        "src": "2910:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8348,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8334,
                        "src": "2918:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2938:1:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 8350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "2928:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 8349,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2932:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 8352,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2928:12:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 8353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2942:5:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8346,
                      "name": "newAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8357,
                        8401
                      ],
                      "referencedDeclaration": 8401,
                      "src": "2895:14:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$9856_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 8354,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2895:53:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 8345,
                  "id": 8355,
                  "nodeType": "Return",
                  "src": "2888:60:50"
                }
              ]
            },
            "documentation": "@dev Create a new instance of an app linked to this kernel\n@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 8357,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8337,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "2779:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8339,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "2801:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8340,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8332,
                        "src": "2829:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8338,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "2797:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8341,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2797:39:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8342,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8336,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "2774:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2774:63:50"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8332,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8357,
                  "src": "2717:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8331,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2717:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8334,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 8357,
                  "src": "2733:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8333,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2733:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2716:34:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8344,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 8357,
                  "src": "2855:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$9856",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8343,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9856,
                    "src": "2855:8:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2854:19:50"
            },
            "scope": 8723,
            "src": "2693:262:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8400,
              "nodeType": "Block",
              "src": "3968:446:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8378,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "3991:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8379,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8359,
                        "src": "4019:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8380,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8361,
                        "src": "4027:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8377,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8697,
                      "src": "3978:12:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8381,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3978:58:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8382,
                  "nodeType": "ExpressionStatement",
                  "src": "3978:58:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8383,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8375,
                      "src": "4046:8:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$9856",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8385,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10505,
                          "src": "4069:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$8723",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8386,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8359,
                          "src": "4075:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8387,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8363,
                          "src": "4083:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$8723",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 8384,
                        "name": "newAppProxy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          7788,
                          7819
                        ],
                        "referencedDeclaration": 7819,
                        "src": "4057:11:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$8231_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyUpgradeable_$5934_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyUpgradeable)"
                        }
                      },
                      "id": 8388,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4057:45:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyUpgradeable_$5934",
                        "typeString": "contract AppProxyUpgradeable"
                      }
                    },
                    "src": "4046:56:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 8390,
                  "nodeType": "ExpressionStatement",
                  "src": "4046:56:50"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 8391,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8365,
                    "src": "4319:11:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8399,
                  "nodeType": "IfStatement",
                  "src": "4315:93:50",
                  "trueBody": {
                    "id": 8398,
                    "nodeType": "Block",
                    "src": "4332:76:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8393,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8744,
                              "src": "4353:25:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8394,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8359,
                              "src": "4380:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8395,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8375,
                              "src": "4388:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$9856",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$9856",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 8392,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8495
                            ],
                            "referencedDeclaration": 8495,
                            "src": "4346:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 8396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4346:51:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8397,
                        "nodeType": "ExpressionStatement",
                        "src": "4346:51:50"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@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@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 8401,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8368,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "3869:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8370,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "3891:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8371,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8359,
                        "src": "3919:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8369,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "3887:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3887:39:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8373,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8367,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "3864:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3864:63:50"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8359,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8401,
                  "src": "3763:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8358,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3763:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8361,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 8401,
                  "src": "3779:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8360,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3779:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8363,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 8401,
                  "src": "3797:24:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8362,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3797:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8365,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 8401,
                  "src": "3823:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8364,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3823:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3762:78:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8376,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8375,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 8401,
                  "src": "3945:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$9856",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8374,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9856,
                    "src": "3945:8:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3944:19:50"
            },
            "scope": 8723,
            "src": "3739:675:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8427,
              "nodeType": "Block",
              "src": "4954:83:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8418,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8403,
                        "src": "4992:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8419,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8405,
                        "src": "5000:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5020:1:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 8421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "5010:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 8420,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "5014:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 8423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5010:12:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 8424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5024:5:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8417,
                      "name": "newPinnedAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8428,
                        8472
                      ],
                      "referencedDeclaration": 8472,
                      "src": "4971:20:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$9856_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 8425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4971:59:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 8416,
                  "id": 8426,
                  "nodeType": "Return",
                  "src": "4964:66:50"
                }
              ]
            },
            "documentation": "@dev Create a new pinned instance of an app linked to this kernel\n@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`.\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 8428,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8408,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "4855:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8410,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "4877:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8411,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8403,
                        "src": "4905:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8409,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "4873:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8412,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4873:39:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8413,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8407,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "4850:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4850:63:50"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8403,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8428,
                  "src": "4793:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8402,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4793:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8405,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 8428,
                  "src": "4809:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8404,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4809:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4792:34:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8415,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 8428,
                  "src": "4931:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$9856",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8414,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9856,
                    "src": "4931:8:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4930:19:50"
            },
            "scope": 8723,
            "src": "4763:274:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8471,
              "nodeType": "Block",
              "src": "6067:452:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8449,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "6090:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8450,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8430,
                        "src": "6118:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8451,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8432,
                        "src": "6126:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8448,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8697,
                      "src": "6077:12:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6077:58:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8453,
                  "nodeType": "ExpressionStatement",
                  "src": "6077:58:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8454,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8446,
                      "src": "6145:8:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$9856",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8456,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10505,
                          "src": "6174:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$8723",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8457,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8430,
                          "src": "6180:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8458,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8434,
                          "src": "6188:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$8723",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 8455,
                        "name": "newAppProxyPinned",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          7838,
                          7869
                        ],
                        "referencedDeclaration": 7869,
                        "src": "6156:17:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$8231_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyPinned_$5894_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyPinned)"
                        }
                      },
                      "id": 8459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6156:51:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyPinned_$5894",
                        "typeString": "contract AppProxyPinned"
                      }
                    },
                    "src": "6145:62:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 8461,
                  "nodeType": "ExpressionStatement",
                  "src": "6145:62:50"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 8462,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8436,
                    "src": "6424:11:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8470,
                  "nodeType": "IfStatement",
                  "src": "6420:93:50",
                  "trueBody": {
                    "id": 8469,
                    "nodeType": "Block",
                    "src": "6437:76:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8464,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8744,
                              "src": "6458:25:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8465,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8430,
                              "src": "6485:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8466,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8446,
                              "src": "6493:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$9856",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$9856",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 8463,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8495
                            ],
                            "referencedDeclaration": 8495,
                            "src": "6451:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 8467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6451:51:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8468,
                        "nodeType": "ExpressionStatement",
                        "src": "6451:51:50"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@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@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 8472,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8439,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "5968:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8441,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "5990:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8442,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8430,
                        "src": "6018:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8440,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "5986:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5986:39:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8444,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8438,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "5963:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5963:63:50"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8430,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8472,
                  "src": "5862:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8429,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5862:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8432,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 8472,
                  "src": "5878:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8431,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5878:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8434,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 8472,
                  "src": "5896:24:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8433,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5896:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8436,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 8472,
                  "src": "5922:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8435,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5922:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5861:78:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8447,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8446,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 8472,
                  "src": "6044:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$9856",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8445,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9856,
                    "src": "6044:8:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6043:19:50"
            },
            "scope": 8723,
            "src": "5832:687:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8494,
              "nodeType": "Block",
              "src": "7025:50:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8489,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8474,
                        "src": "7043:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8490,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8476,
                        "src": "7055:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8491,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8478,
                        "src": "7063:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8488,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8659,
                      "src": "7035:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7035:33:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8493,
                  "nodeType": "ExpressionStatement",
                  "src": "7035:33:50"
                }
              ]
            },
            "documentation": "@dev Set the resolving address of an app instance or base implementation\n@notice Set the resolving address of `_appId` in namespace `_namespace` to `_app`\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@param _app Address of the app instance or base implementation\n@return ID of app",
            "id": 8495,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8481,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "6978:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8483,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8474,
                        "src": "7000:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8484,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8476,
                        "src": "7012:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8482,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "6996:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6996:23:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8486,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8480,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "6973:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6973:47:50"
              }
            ],
            "name": "setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8474,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 8495,
                  "src": "6900:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8473,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6900:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8476,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8495,
                  "src": "6920:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8475,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6920:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8478,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 8495,
                  "src": "6936:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8477,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6936:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6899:50:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8487,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7025:0:50"
            },
            "scope": 8723,
            "src": "6884:191:50",
            "stateMutability": "nonpayable",
            "superFunction": 8221,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8511,
              "nodeType": "Block",
              "src": "7396:57:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8507,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8823,
                      "src": "7406:18:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8508,
                      "name": "_recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8497,
                      "src": "7427:19:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7406:40:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 8510,
                  "nodeType": "ExpressionStatement",
                  "src": "7406:40:50"
                }
              ]
            },
            "documentation": "@dev Set the default vault id for the escape hatch mechanism\n@param _recoveryVaultAppId Identifier of the recovery vault app",
            "id": 8512,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8500,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "7321:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8502,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8744,
                        "src": "7343:25:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8503,
                        "name": "_recoveryVaultAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8497,
                        "src": "7370:19:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8501,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "7339:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7339:51:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8505,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8499,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "7316:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7316:75:50"
              }
            ],
            "name": "setRecoveryVaultAppId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8498,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8497,
                  "name": "_recoveryVaultAppId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8512,
                  "src": "7264:27:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8496,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7264:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7263:29:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8506,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7396:0:50"
            },
            "scope": 8723,
            "src": "7233:220:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8519,
              "nodeType": "Block",
              "src": "7672:33:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8517,
                    "name": "KERNEL_CORE_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8738,
                    "src": "7681:21:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8516,
                  "id": 8518,
                  "nodeType": "Return",
                  "src": "7674:28:50"
                }
              ]
            },
            "documentation": null,
            "id": 8520,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "CORE_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8513,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7637:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8516,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8515,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8520,
                  "src": "7663:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8514,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7663:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7662:9:50"
            },
            "scope": 8723,
            "src": "7614:91:50",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8527,
              "nodeType": "Block",
              "src": "7773:38:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8525,
                    "name": "KERNEL_APP_BASES_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8741,
                    "src": "7782:26:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8524,
                  "id": 8526,
                  "nodeType": "Return",
                  "src": "7775:33:50"
                }
              ]
            },
            "documentation": null,
            "id": 8528,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_BASES_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8521,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7738:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8524,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8523,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8528,
                  "src": "7764:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8522,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7764:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7763:9:50"
            },
            "scope": 8723,
            "src": "7710:101:50",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8535,
              "nodeType": "Block",
              "src": "7878:37:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8533,
                    "name": "KERNEL_APP_ADDR_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8744,
                    "src": "7887:25:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8532,
                  "id": 8534,
                  "nodeType": "Return",
                  "src": "7880:32:50"
                }
              ]
            },
            "documentation": null,
            "id": 8536,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_ADDR_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7843:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8531,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8536,
                  "src": "7869:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8530,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7869:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7868:9:50"
            },
            "scope": 8723,
            "src": "7816:99:50",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8543,
              "nodeType": "Block",
              "src": "7977:30:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8541,
                    "name": "KERNEL_CORE_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8728,
                    "src": "7986:18:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8540,
                  "id": 8542,
                  "nodeType": "Return",
                  "src": "7979:25:50"
                }
              ]
            },
            "documentation": null,
            "id": 8544,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "KERNEL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8537,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7942:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8540,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8539,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8544,
                  "src": "7968:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8538,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7968:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7967:9:50"
            },
            "scope": 8723,
            "src": "7920:87:50",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8551,
              "nodeType": "Block",
              "src": "8074:37:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8549,
                    "name": "KERNEL_DEFAULT_ACL_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8731,
                    "src": "8083:25:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8548,
                  "id": 8550,
                  "nodeType": "Return",
                  "src": "8076:32:50"
                }
              ]
            },
            "documentation": null,
            "id": 8552,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "DEFAULT_ACL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8545,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8039:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8547,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8552,
                  "src": "8065:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8546,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8065:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8064:9:50"
            },
            "scope": 8723,
            "src": "8012:99:50",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8567,
              "nodeType": "Block",
              "src": "8450:48:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8561,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8821,
                        "src": "8467:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 8563,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8562,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8554,
                        "src": "8472:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8467:16:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 8565,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 8564,
                      "name": "_appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8556,
                      "src": "8484:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8467:24:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8560,
                  "id": 8566,
                  "nodeType": "Return",
                  "src": "8460:31:50"
                }
              ]
            },
            "documentation": "@dev Get the address of an app instance or base implementation\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@return Address of the app",
            "id": 8568,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8557,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8554,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 8568,
                  "src": "8384:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8553,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8384:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8556,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8568,
                  "src": "8404:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8555,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8404:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8383:36:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8560,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8559,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8568,
                  "src": "8441:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8558,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8441:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8440:9:50"
            },
            "scope": 8723,
            "src": "8368:130:50",
            "stateMutability": "view",
            "superFunction": 8230,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8579,
              "nodeType": "Block",
              "src": "8689:75:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8573,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8821,
                        "src": "8706:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 8575,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8574,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8744,
                        "src": "8711:25:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8706:31:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 8577,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 8576,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8823,
                      "src": "8738:18:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8706:51:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8572,
                  "id": 8578,
                  "nodeType": "Return",
                  "src": "8699:58:50"
                }
              ]
            },
            "documentation": "@dev Get the address of the recovery Vault instance (to recover funds)\n@return Address of the Vault",
            "id": 8580,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRecoveryVault",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8569,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8656:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8571,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8580,
                  "src": "8680:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8570,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8680:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8679:9:50"
            },
            "scope": 8723,
            "src": "8631:133:50",
            "stateMutability": "view",
            "superFunction": 7052,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8592,
              "nodeType": "Block",
              "src": "8886:90:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8587,
                            "name": "KERNEL_APP_ADDR_NAMESPACE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8744,
                            "src": "8915:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8588,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8731,
                            "src": "8942:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 8586,
                          "name": "getApp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            8568
                          ],
                          "referencedDeclaration": 8568,
                          "src": "8908:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,bytes32) view returns (address)"
                          }
                        },
                        "id": 8589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8908:60:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8585,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5304,
                      "src": "8903:4:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$5304_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 8590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8903:66:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "functionReturnParameters": 8584,
                  "id": 8591,
                  "nodeType": "Return",
                  "src": "8896:73:50"
                }
              ]
            },
            "documentation": "@dev Get the installed ACL app\n@return ACL app",
            "id": 8593,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "acl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8581,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8856:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8583,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8593,
                  "src": "8880:4:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$5304",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8582,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5304,
                    "src": "8880:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8879:6:50"
            },
            "scope": 8723,
            "src": "8844:132:50",
            "stateMutability": "view",
            "superFunction": 8199,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8627,
              "nodeType": "Block",
              "src": "9530:204:50",
              "statements": [
                {
                  "assignments": [
                    8607
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8607,
                      "name": "defaultAcl",
                      "nodeType": "VariableDeclaration",
                      "scope": 8628,
                      "src": "9540:15:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$5304",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8606,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5304,
                        "src": "9540:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8610,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8608,
                      "name": "acl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8593
                      ],
                      "referencedDeclaration": 8593,
                      "src": "9558:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IACL_$5304_$",
                        "typeString": "function () view returns (contract IACL)"
                      }
                    },
                    "id": 8609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9558:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9540:23:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 8625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 8617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8612,
                            "name": "defaultAcl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8607,
                            "src": "9588:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IACL_$5304",
                              "typeString": "contract IACL"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IACL_$5304",
                              "typeString": "contract IACL"
                            }
                          ],
                          "id": 8611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9580:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 8613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9580:19:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9611:1:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 8614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9603:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 8616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9603:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "9580:33:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8620,
                          "name": "_who",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8595,
                          "src": "9701:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8621,
                          "name": "_where",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8597,
                          "src": "9707:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8622,
                          "name": "_what",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8599,
                          "src": "9715:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8623,
                          "name": "_how",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8601,
                          "src": "9722:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 8618,
                          "name": "defaultAcl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8607,
                          "src": "9676:10:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IACL_$5304",
                            "typeString": "contract IACL"
                          }
                        },
                        "id": 8619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "hasPermission",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5303,
                        "src": "9676:24:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (address,address,bytes32,bytes memory) view external returns (bool)"
                        }
                      },
                      "id": 8624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9676:51:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9580:147:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8605,
                  "id": 8626,
                  "nodeType": "Return",
                  "src": "9573:154:50"
                }
              ]
            },
            "documentation": "@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        Always returns false if the kernel hasn't been initialized yet.",
            "id": 8628,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hasPermission",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8595,
                  "name": "_who",
                  "nodeType": "VariableDeclaration",
                  "scope": 8628,
                  "src": "9446:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8594,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9446:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8597,
                  "name": "_where",
                  "nodeType": "VariableDeclaration",
                  "scope": 8628,
                  "src": "9460:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8596,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9460:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8599,
                  "name": "_what",
                  "nodeType": "VariableDeclaration",
                  "scope": 8628,
                  "src": "9476:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8598,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9476:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8601,
                  "name": "_how",
                  "nodeType": "VariableDeclaration",
                  "scope": 8628,
                  "src": "9491:10:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8600,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9491:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9445:57:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8604,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8628,
                  "src": "9524:4:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8603,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9524:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9523:6:50"
            },
            "scope": 8723,
            "src": "9423:311:50",
            "stateMutability": "view",
            "superFunction": 8212,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8658,
              "nodeType": "Block",
              "src": "9816:154:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8639,
                            "name": "_app",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8634,
                            "src": "9845:4:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8638,
                          "name": "isContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6468,
                          "src": "9834:10:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 8640,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9834:16:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8641,
                        "name": "ERROR_APP_NOT_CONTRACT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8268,
                        "src": "9852:22:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 8637,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "9826:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9826:49:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8643,
                  "nodeType": "ExpressionStatement",
                  "src": "9826:49:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 8644,
                          "name": "apps",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8821,
                          "src": "9885:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                          }
                        },
                        "id": 8647,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 8645,
                          "name": "_namespace",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8630,
                          "src": "9890:10:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9885:16:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 8648,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8646,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8632,
                        "src": "9902:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9885:24:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8649,
                      "name": "_app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8634,
                      "src": "9912:4:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9885:31:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 8651,
                  "nodeType": "ExpressionStatement",
                  "src": "9885:31:50"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8653,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8630,
                        "src": "9938:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8654,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8632,
                        "src": "9950:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8655,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8634,
                        "src": "9958:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8652,
                      "name": "SetApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8189,
                      "src": "9931:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9931:32:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8657,
                  "nodeType": "EmitStatement",
                  "src": "9926:37:50"
                }
              ]
            },
            "documentation": null,
            "id": 8659,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8630,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 8659,
                  "src": "9757:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8629,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9757:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8632,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8659,
                  "src": "9777:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8631,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9777:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8634,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 8659,
                  "src": "9793:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8633,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9793:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9756:50:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8636,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9816:0:50"
            },
            "scope": 8723,
            "src": "9740:230:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8696,
              "nodeType": "Block",
              "src": "10057:333:50",
              "statements": [
                {
                  "assignments": [
                    8669
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8669,
                      "name": "app",
                      "nodeType": "VariableDeclaration",
                      "scope": 8697,
                      "src": "10067:11:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8668,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10067:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8674,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8671,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8661,
                        "src": "10088:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8672,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8663,
                        "src": "10100:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8670,
                      "name": "getApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8568
                      ],
                      "referencedDeclaration": 8568,
                      "src": "10081:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view returns (address)"
                      }
                    },
                    "id": 8673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10081:26:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10067:40:50"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 8679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8675,
                      "name": "app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8669,
                      "src": "10121:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10136:1:50",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 8676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10128:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 8678,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10128:10:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10121:17:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 8694,
                    "nodeType": "Block",
                    "src": "10326:58:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8689,
                              "name": "_namespace",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8661,
                              "src": "10348:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8690,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8663,
                              "src": "10360:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8691,
                              "name": "_app",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8665,
                              "src": "10368:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8688,
                            "name": "_setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8659,
                            "src": "10340:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 8692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10340:33:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8693,
                        "nodeType": "ExpressionStatement",
                        "src": "10340:33:50"
                      }
                    ]
                  },
                  "id": 8695,
                  "nodeType": "IfStatement",
                  "src": "10117:267:50",
                  "trueBody": {
                    "id": 8687,
                    "nodeType": "Block",
                    "src": "10140:180:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8681,
                                "name": "app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8669,
                                "src": "10271:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 8682,
                                "name": "_app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8665,
                                "src": "10278:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10271:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8684,
                              "name": "ERROR_INVALID_APP_CHANGE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8271,
                              "src": "10284:24:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 8680,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10407,
                              10408
                            ],
                            "referencedDeclaration": 10408,
                            "src": "10263:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10263:46:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8686,
                        "nodeType": "ExpressionStatement",
                        "src": "10263:46:50"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 8697,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setAppIfNew",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8661,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 8697,
                  "src": "9998:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8660,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9998:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8663,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8697,
                  "src": "10018:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10018:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8665,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 8697,
                  "src": "10034:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10034:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9997:50:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8667,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10057:0:50"
            },
            "scope": 8723,
            "src": "9976:414:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8721,
              "nodeType": "Block",
              "src": "10451:197:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8706,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "10496:3:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10496:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8709,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10505,
                                "src": "10516:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Kernel_$8723",
                                  "typeString": "contract Kernel"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Kernel_$8723",
                                  "typeString": "contract Kernel"
                                }
                              ],
                              "id": 8708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10508:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 8710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10508:13:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8711,
                            "name": "_role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8699,
                            "src": "10523:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8714,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8702,
                                "src": "10580:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8712,
                                "name": "ConversionHelpers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6183,
                                "src": "10530:17:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ConversionHelpers_$6183_$",
                                  "typeString": "type(library ConversionHelpers)"
                                }
                              },
                              "id": 8713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dangerouslyCastUintArrayToBytes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6155,
                              "src": "10530:49:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256[] memory) pure returns (bytes memory)"
                              }
                            },
                            "id": 8715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10530:58:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8705,
                          "name": "hasPermission",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            8628
                          ],
                          "referencedDeclaration": 8628,
                          "src": "10482:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,bytes32,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 8716,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10482:107:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8717,
                        "name": "ERROR_AUTH_FAILED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8274,
                        "src": "10603:17:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 8704,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "10461:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10461:169:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8719,
                  "nodeType": "ExpressionStatement",
                  "src": "10461:169:50"
                },
                {
                  "id": 8720,
                  "nodeType": "PlaceholderStatement",
                  "src": "10640:1:50"
                }
              ]
            },
            "documentation": null,
            "id": 8722,
            "name": "auth",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 8703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8699,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 8722,
                  "src": "10410:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8698,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10410:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8702,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 8722,
                  "src": "10425:24:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8700,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10425:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8701,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10425:9:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10409:41:50"
            },
            "src": "10396:252:50",
            "visibility": "internal"
          }
        ],
        "scope": 8724,
        "src": "441:10209:50"
      }
    ],
    "src": "0:10651:50"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
    "exportedSymbols": {
      "Kernel": [
        8723
      ]
    },
    "id": 8724,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8233,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:50"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "./IKernel.sol",
        "id": 8234,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 8232,
        "src": "25:23:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "./KernelConstants.sol",
        "id": 8235,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 8746,
        "src": "49:31:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelStorage.sol",
        "file": "./KernelStorage.sol",
        "id": 8236,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 8825,
        "src": "81:29:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 8237,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 5305,
        "src": "111:25:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACLSyntaxSugar.sol",
        "file": "../acl/ACLSyntaxSugar.sol",
        "id": 8238,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 5284,
        "src": "137:35:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/ConversionHelpers.sol",
        "file": "../common/ConversionHelpers.sol",
        "id": 8239,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 6184,
        "src": "173:41:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IsContract.sol",
        "file": "../common/IsContract.sol",
        "id": 8240,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 6470,
        "src": "215:34:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Petrifiable.sol",
        "file": "../common/Petrifiable.sol",
        "id": 8241,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 6503,
        "src": "250:35:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/VaultRecoverable.sol",
        "file": "../common/VaultRecoverable.sol",
        "id": 8242,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 7054,
        "src": "286:40:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/AppProxyFactory.sol",
        "file": "../factory/AppProxyFactory.sol",
        "id": 8243,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 7871,
        "src": "327:40:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/misc/ERCProxy.sol",
        "file": "../lib/misc/ERCProxy.sol",
        "id": 8244,
        "nodeType": "ImportDirective",
        "scope": 8724,
        "sourceUnit": 9857,
        "src": "368:34:50",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8245,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8231,
              "src": "460:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$8231",
                "typeString": "contract IKernel"
              }
            },
            "id": 8246,
            "nodeType": "InheritanceSpecifier",
            "src": "460:7:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8247,
              "name": "KernelStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8824,
              "src": "469:13:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelStorage_$8824",
                "typeString": "contract KernelStorage"
              }
            },
            "id": 8248,
            "nodeType": "InheritanceSpecifier",
            "src": "469:13:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8249,
              "name": "KernelAppIds",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8735,
              "src": "484:12:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelAppIds_$8735",
                "typeString": "contract KernelAppIds"
              }
            },
            "id": 8250,
            "nodeType": "InheritanceSpecifier",
            "src": "484:12:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8251,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8745,
              "src": "498:24:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$8745",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 8252,
            "nodeType": "InheritanceSpecifier",
            "src": "498:24:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8253,
              "name": "Petrifiable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6502,
              "src": "524:11:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Petrifiable_$6502",
                "typeString": "contract Petrifiable"
              }
            },
            "id": 8254,
            "nodeType": "InheritanceSpecifier",
            "src": "524:11:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8255,
              "name": "IsContract",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6469,
              "src": "537:10:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IsContract_$6469",
                "typeString": "contract IsContract"
              }
            },
            "id": 8256,
            "nodeType": "InheritanceSpecifier",
            "src": "537:10:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8257,
              "name": "VaultRecoverable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7053,
              "src": "549:16:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VaultRecoverable_$7053",
                "typeString": "contract VaultRecoverable"
              }
            },
            "id": 8258,
            "nodeType": "InheritanceSpecifier",
            "src": "549:16:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8259,
              "name": "AppProxyFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7870,
              "src": "567:15:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppProxyFactory_$7870",
                "typeString": "contract AppProxyFactory"
              }
            },
            "id": 8260,
            "nodeType": "InheritanceSpecifier",
            "src": "567:15:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8261,
              "name": "ACLSyntaxSugar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5208,
              "src": "584:14:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ACLSyntaxSugar_$5208",
                "typeString": "contract ACLSyntaxSugar"
              }
            },
            "id": 8262,
            "nodeType": "InheritanceSpecifier",
            "src": "584:14:50"
          }
        ],
        "contractDependencies": [
          5208,
          6293,
          6343,
          6441,
          6469,
          6502,
          6831,
          7053,
          7870,
          8190,
          8231,
          8735,
          8745,
          8824
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8723,
        "linearizedBaseContracts": [
          8723,
          5208,
          7870,
          7053,
          6469,
          6293,
          6502,
          6441,
          6831,
          8745,
          8735,
          8824,
          8231,
          6343,
          8190
        ],
        "name": "Kernel",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 8265,
            "name": "APP_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 8723,
            "src": "729:109:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 8263,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "729:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307862366439323730386633643438313761666331303631343764393639653232396365643563343665363565306135303032613064333931323837373632626430",
              "id": 8264,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "772:66:50",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_82704613664676796936649533353167530996754393993849268174999512363230727384016_by_1",
                "typeString": "int_const 8270...(69 digits omitted)...4016"
              },
              "value": "0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 8268,
            "name": "ERROR_APP_NOT_CONTRACT",
            "nodeType": "VariableDeclaration",
            "scope": 8723,
            "src": "845:74:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 8266,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "845:6:50",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f4150505f4e4f545f434f4e5452414354",
              "id": 8267,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "894:25:50",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9836ab188560c8863264933b2423feee77bc53fbabf48ddf22703b0c91862812",
                "typeString": "literal_string \"KERNEL_APP_NOT_CONTRACT\""
              },
              "value": "KERNEL_APP_NOT_CONTRACT"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 8271,
            "name": "ERROR_INVALID_APP_CHANGE",
            "nodeType": "VariableDeclaration",
            "scope": 8723,
            "src": "925:78:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 8269,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "925:6:50",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f494e56414c49445f4150505f4348414e4745",
              "id": 8270,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "976:27:50",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e4acfdbe2a685f787d10384f7152f5de5d8b0224aa0b8e04fb5d376ed2b3e513",
                "typeString": "literal_string \"KERNEL_INVALID_APP_CHANGE\""
              },
              "value": "KERNEL_INVALID_APP_CHANGE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 8274,
            "name": "ERROR_AUTH_FAILED",
            "nodeType": "VariableDeclaration",
            "scope": 8723,
            "src": "1009:64:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 8272,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1009:6:50",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4b45524e454c5f415554485f4641494c4544",
              "id": 8273,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1053:20:50",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2f44e6c32cf650dbae4931fdeafb7f4804fc17f8169bd4fb754968e09d978601",
                "typeString": "literal_string \"KERNEL_AUTH_FAILED\""
              },
              "value": "KERNEL_AUTH_FAILED"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 8285,
              "nodeType": "Block",
              "src": "1345:70:50",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 8279,
                    "name": "_shouldPetrify",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8276,
                    "src": "1359:14:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8284,
                  "nodeType": "IfStatement",
                  "src": "1355:54:50",
                  "trueBody": {
                    "id": 8283,
                    "nodeType": "Block",
                    "src": "1375:34:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8280,
                            "name": "petrify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6501,
                            "src": "1389:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 8281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1389:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8282,
                        "nodeType": "ExpressionStatement",
                        "src": "1389:9:50"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor that allows the deployer to choose if the base instance should be petrified immediately.\n@param _shouldPetrify Immediately petrify this instance so that it can never be initialized",
            "id": 8286,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8276,
                  "name": "_shouldPetrify",
                  "nodeType": "VariableDeclaration",
                  "scope": 8286,
                  "src": "1317:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8275,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1317:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1316:21:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8278,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1345:0:50"
            },
            "scope": 8723,
            "src": "1305:110:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8329,
              "nodeType": "Block",
              "src": "1899:457:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8295,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6426,
                      "src": "1909:11:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 8296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1909:13:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8297,
                  "nodeType": "ExpressionStatement",
                  "src": "1909:13:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8299,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "1965:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8300,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8731,
                        "src": "1993:25:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8301,
                        "name": "_baseAcl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8288,
                        "src": "2020:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 8298,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8659,
                      "src": "1957:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1957:72:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8303,
                  "nodeType": "ExpressionStatement",
                  "src": "1957:72:50"
                },
                {
                  "assignments": [
                    8305
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8305,
                      "name": "acl",
                      "nodeType": "VariableDeclaration",
                      "scope": 8330,
                      "src": "2108:8:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$5304",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8304,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5304,
                        "src": "2108:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8312,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8308,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10505,
                            "src": "2136:4:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$8723",
                              "typeString": "contract Kernel"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8309,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8731,
                            "src": "2142:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$8723",
                              "typeString": "contract Kernel"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 8307,
                          "name": "newAppProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            7788,
                            7819
                          ],
                          "referencedDeclaration": 7788,
                          "src": "2124:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$8231_$_t_bytes32_$returns$_t_contract$_AppProxyUpgradeable_$5934_$",
                            "typeString": "function (contract IKernel,bytes32) returns (contract AppProxyUpgradeable)"
                          }
                        },
                        "id": 8310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2124:44:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$5934",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_AppProxyUpgradeable_$5934",
                          "typeString": "contract AppProxyUpgradeable"
                        }
                      ],
                      "id": 8306,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5304,
                      "src": "2119:4:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$5304_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 8311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2119:50:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2108:61:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8316,
                        "name": "_permissionsCreator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8290,
                        "src": "2194:19:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8313,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8305,
                        "src": "2179:3:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      },
                      "id": 8315,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5290,
                      "src": "2179:14:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 8317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2179:35:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8318,
                  "nodeType": "ExpressionStatement",
                  "src": "2179:35:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8320,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8744,
                        "src": "2232:25:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8321,
                        "name": "KERNEL_DEFAULT_ACL_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8731,
                        "src": "2259:25:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8322,
                        "name": "acl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8305,
                        "src": "2286:3:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      ],
                      "id": 8319,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8659,
                      "src": "2224:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2224:66:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8324,
                  "nodeType": "ExpressionStatement",
                  "src": "2224:66:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8325,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8823,
                      "src": "2301:18:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8326,
                      "name": "KERNEL_DEFAULT_VAULT_APP_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8734,
                      "src": "2322:27:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2301:48:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 8328,
                  "nodeType": "ExpressionStatement",
                  "src": "2301:48:50"
                }
              ]
            },
            "documentation": "@dev Initialize can only be called once. It saves the block number in which it was initialized.\n@notice Initialize this kernel instance along with its ACL and set `_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",
            "id": 8330,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 8293,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8292,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6373,
                  "src": "1890:8:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1890:8:50"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8288,
                  "name": "_baseAcl",
                  "nodeType": "VariableDeclaration",
                  "scope": 8330,
                  "src": "1839:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$5304",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8287,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5304,
                    "src": "1839:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8290,
                  "name": "_permissionsCreator",
                  "nodeType": "VariableDeclaration",
                  "scope": 8330,
                  "src": "1854:27:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1854:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1838:44:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1899:0:50"
            },
            "scope": 8723,
            "src": "1819:537:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8356,
              "nodeType": "Block",
              "src": "2878:77:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8347,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8332,
                        "src": "2910:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8348,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8334,
                        "src": "2918:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2938:1:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 8350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "2928:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 8349,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2932:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 8352,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2928:12:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 8353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2942:5:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8346,
                      "name": "newAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8357,
                        8401
                      ],
                      "referencedDeclaration": 8401,
                      "src": "2895:14:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$9856_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 8354,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2895:53:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 8345,
                  "id": 8355,
                  "nodeType": "Return",
                  "src": "2888:60:50"
                }
              ]
            },
            "documentation": "@dev Create a new instance of an app linked to this kernel\n@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 8357,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8337,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "2779:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8339,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "2801:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8340,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8332,
                        "src": "2829:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8338,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "2797:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8341,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2797:39:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8342,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8336,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "2774:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2774:63:50"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8332,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8357,
                  "src": "2717:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8331,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2717:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8334,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 8357,
                  "src": "2733:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8333,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2733:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2716:34:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8344,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 8357,
                  "src": "2855:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$9856",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8343,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9856,
                    "src": "2855:8:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2854:19:50"
            },
            "scope": 8723,
            "src": "2693:262:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8400,
              "nodeType": "Block",
              "src": "3968:446:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8378,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "3991:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8379,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8359,
                        "src": "4019:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8380,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8361,
                        "src": "4027:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8377,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8697,
                      "src": "3978:12:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8381,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3978:58:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8382,
                  "nodeType": "ExpressionStatement",
                  "src": "3978:58:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8383,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8375,
                      "src": "4046:8:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$9856",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8385,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10505,
                          "src": "4069:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$8723",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8386,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8359,
                          "src": "4075:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8387,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8363,
                          "src": "4083:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$8723",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 8384,
                        "name": "newAppProxy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          7788,
                          7819
                        ],
                        "referencedDeclaration": 7819,
                        "src": "4057:11:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$8231_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyUpgradeable_$5934_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyUpgradeable)"
                        }
                      },
                      "id": 8388,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4057:45:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyUpgradeable_$5934",
                        "typeString": "contract AppProxyUpgradeable"
                      }
                    },
                    "src": "4046:56:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 8390,
                  "nodeType": "ExpressionStatement",
                  "src": "4046:56:50"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 8391,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8365,
                    "src": "4319:11:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8399,
                  "nodeType": "IfStatement",
                  "src": "4315:93:50",
                  "trueBody": {
                    "id": 8398,
                    "nodeType": "Block",
                    "src": "4332:76:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8393,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8744,
                              "src": "4353:25:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8394,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8359,
                              "src": "4380:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8395,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8375,
                              "src": "4388:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$9856",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$9856",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 8392,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8495
                            ],
                            "referencedDeclaration": 8495,
                            "src": "4346:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 8396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4346:51:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8397,
                        "nodeType": "ExpressionStatement",
                        "src": "4346:51:50"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@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@notice Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 8401,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8368,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "3869:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8370,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "3891:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8371,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8359,
                        "src": "3919:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8369,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "3887:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3887:39:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8373,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8367,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "3864:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3864:63:50"
              }
            ],
            "name": "newAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8359,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8401,
                  "src": "3763:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8358,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3763:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8361,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 8401,
                  "src": "3779:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8360,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3779:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8363,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 8401,
                  "src": "3797:24:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8362,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3797:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8365,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 8401,
                  "src": "3823:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8364,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3823:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3762:78:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8376,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8375,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 8401,
                  "src": "3945:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$9856",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8374,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9856,
                    "src": "3945:8:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3944:19:50"
            },
            "scope": 8723,
            "src": "3739:675:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8427,
              "nodeType": "Block",
              "src": "4954:83:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8418,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8403,
                        "src": "4992:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8419,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8405,
                        "src": "5000:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5020:1:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 8421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "5010:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 8420,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "5014:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 8423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5010:12:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 8424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5024:5:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8417,
                      "name": "newPinnedAppInstance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8428,
                        8472
                      ],
                      "referencedDeclaration": 8472,
                      "src": "4971:20:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_contract$_ERCProxy_$9856_$",
                        "typeString": "function (bytes32,address,bytes memory,bool) returns (contract ERCProxy)"
                      }
                    },
                    "id": 8425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4971:59:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "functionReturnParameters": 8416,
                  "id": 8426,
                  "nodeType": "Return",
                  "src": "4964:66:50"
                }
              ]
            },
            "documentation": "@dev Create a new pinned instance of an app linked to this kernel\n@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`.\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@return AppProxy instance",
            "id": 8428,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8408,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "4855:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8410,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "4877:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8411,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8403,
                        "src": "4905:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8409,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "4873:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8412,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4873:39:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8413,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8407,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "4850:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4850:63:50"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8403,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8428,
                  "src": "4793:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8402,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4793:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8405,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 8428,
                  "src": "4809:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8404,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4809:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4792:34:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8415,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 8428,
                  "src": "4931:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$9856",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8414,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9856,
                    "src": "4931:8:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4930:19:50"
            },
            "scope": 8723,
            "src": "4763:274:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8471,
              "nodeType": "Block",
              "src": "6067:452:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8449,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "6090:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8450,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8430,
                        "src": "6118:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8451,
                        "name": "_appBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8432,
                        "src": "6126:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8448,
                      "name": "_setAppIfNew",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8697,
                      "src": "6077:12:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6077:58:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8453,
                  "nodeType": "ExpressionStatement",
                  "src": "6077:58:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8454,
                      "name": "appProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8446,
                      "src": "6145:8:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERCProxy_$9856",
                        "typeString": "contract ERCProxy"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8456,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10505,
                          "src": "6174:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Kernel_$8723",
                            "typeString": "contract Kernel"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8457,
                          "name": "_appId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8430,
                          "src": "6180:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8458,
                          "name": "_initializePayload",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8434,
                          "src": "6188:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Kernel_$8723",
                            "typeString": "contract Kernel"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 8455,
                        "name": "newAppProxyPinned",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          7838,
                          7869
                        ],
                        "referencedDeclaration": 7869,
                        "src": "6156:17:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IKernel_$8231_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AppProxyPinned_$5894_$",
                          "typeString": "function (contract IKernel,bytes32,bytes memory) returns (contract AppProxyPinned)"
                        }
                      },
                      "id": 8459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6156:51:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AppProxyPinned_$5894",
                        "typeString": "contract AppProxyPinned"
                      }
                    },
                    "src": "6145:62:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "id": 8461,
                  "nodeType": "ExpressionStatement",
                  "src": "6145:62:50"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 8462,
                    "name": "_setDefault",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8436,
                    "src": "6424:11:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8470,
                  "nodeType": "IfStatement",
                  "src": "6420:93:50",
                  "trueBody": {
                    "id": 8469,
                    "nodeType": "Block",
                    "src": "6437:76:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8464,
                              "name": "KERNEL_APP_ADDR_NAMESPACE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8744,
                              "src": "6458:25:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8465,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8430,
                              "src": "6485:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8466,
                              "name": "appProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8446,
                              "src": "6493:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERCProxy_$9856",
                                "typeString": "contract ERCProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_ERCProxy_$9856",
                                "typeString": "contract ERCProxy"
                              }
                            ],
                            "id": 8463,
                            "name": "setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8495
                            ],
                            "referencedDeclaration": 8495,
                            "src": "6451:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 8467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6451:51:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8468,
                        "nodeType": "ExpressionStatement",
                        "src": "6451:51:50"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@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@notice Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`\n@param _appId Identifier for app\n@param _appBase Address of the app's base implementation\n@param _initializePayload Payload for call made by the proxy during its construction to initialize\n@param _setDefault Whether the app proxy app is the default one.\n       Useful when the Kernel needs to know of an instance of a particular app,\n       like Vault for escape hatch mechanism.\n@return AppProxy instance",
            "id": 8472,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8439,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "5968:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8441,
                        "name": "KERNEL_APP_BASES_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8741,
                        "src": "5990:26:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8442,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8430,
                        "src": "6018:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8440,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "5986:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5986:39:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8444,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8438,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "5963:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5963:63:50"
              }
            ],
            "name": "newPinnedAppInstance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8430,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8472,
                  "src": "5862:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8429,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5862:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8432,
                  "name": "_appBase",
                  "nodeType": "VariableDeclaration",
                  "scope": 8472,
                  "src": "5878:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8431,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5878:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8434,
                  "name": "_initializePayload",
                  "nodeType": "VariableDeclaration",
                  "scope": 8472,
                  "src": "5896:24:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8433,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5896:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8436,
                  "name": "_setDefault",
                  "nodeType": "VariableDeclaration",
                  "scope": 8472,
                  "src": "5922:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8435,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5922:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5861:78:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8447,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8446,
                  "name": "appProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 8472,
                  "src": "6044:17:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERCProxy_$9856",
                    "typeString": "contract ERCProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8445,
                    "name": "ERCProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9856,
                    "src": "6044:8:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERCProxy_$9856",
                      "typeString": "contract ERCProxy"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6043:19:50"
            },
            "scope": 8723,
            "src": "5832:687:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8494,
              "nodeType": "Block",
              "src": "7025:50:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8489,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8474,
                        "src": "7043:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8490,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8476,
                        "src": "7055:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8491,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8478,
                        "src": "7063:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8488,
                      "name": "_setApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8659,
                      "src": "7035:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7035:33:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8493,
                  "nodeType": "ExpressionStatement",
                  "src": "7035:33:50"
                }
              ]
            },
            "documentation": "@dev Set the resolving address of an app instance or base implementation\n@notice Set the resolving address of `_appId` in namespace `_namespace` to `_app`\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@param _app Address of the app instance or base implementation\n@return ID of app",
            "id": 8495,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8481,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "6978:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8483,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8474,
                        "src": "7000:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8484,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8476,
                        "src": "7012:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8482,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "6996:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6996:23:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8486,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8480,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "6973:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6973:47:50"
              }
            ],
            "name": "setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8474,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 8495,
                  "src": "6900:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8473,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6900:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8476,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8495,
                  "src": "6920:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8475,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6920:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8478,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 8495,
                  "src": "6936:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8477,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6936:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6899:50:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8487,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7025:0:50"
            },
            "scope": 8723,
            "src": "6884:191:50",
            "stateMutability": "nonpayable",
            "superFunction": 8221,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8511,
              "nodeType": "Block",
              "src": "7396:57:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8507,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8823,
                      "src": "7406:18:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8508,
                      "name": "_recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8497,
                      "src": "7427:19:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7406:40:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 8510,
                  "nodeType": "ExpressionStatement",
                  "src": "7406:40:50"
                }
              ]
            },
            "documentation": "@dev Set the default vault id for the escape hatch mechanism\n@param _recoveryVaultAppId Identifier of the recovery vault app",
            "id": 8512,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8500,
                    "name": "APP_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8265,
                    "src": "7321:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8502,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8744,
                        "src": "7343:25:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8503,
                        "name": "_recoveryVaultAppId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8497,
                        "src": "7370:19:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8501,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 4833,
                      "src": "7339:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 8504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7339:51:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 8505,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8499,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8722,
                  "src": "7316:4:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7316:75:50"
              }
            ],
            "name": "setRecoveryVaultAppId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8498,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8497,
                  "name": "_recoveryVaultAppId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8512,
                  "src": "7264:27:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8496,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7264:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7263:29:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8506,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7396:0:50"
            },
            "scope": 8723,
            "src": "7233:220:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8519,
              "nodeType": "Block",
              "src": "7672:33:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8517,
                    "name": "KERNEL_CORE_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8738,
                    "src": "7681:21:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8516,
                  "id": 8518,
                  "nodeType": "Return",
                  "src": "7674:28:50"
                }
              ]
            },
            "documentation": null,
            "id": 8520,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "CORE_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8513,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7637:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8516,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8515,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8520,
                  "src": "7663:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8514,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7663:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7662:9:50"
            },
            "scope": 8723,
            "src": "7614:91:50",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8527,
              "nodeType": "Block",
              "src": "7773:38:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8525,
                    "name": "KERNEL_APP_BASES_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8741,
                    "src": "7782:26:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8524,
                  "id": 8526,
                  "nodeType": "Return",
                  "src": "7775:33:50"
                }
              ]
            },
            "documentation": null,
            "id": 8528,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_BASES_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8521,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7738:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8524,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8523,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8528,
                  "src": "7764:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8522,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7764:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7763:9:50"
            },
            "scope": 8723,
            "src": "7710:101:50",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8535,
              "nodeType": "Block",
              "src": "7878:37:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8533,
                    "name": "KERNEL_APP_ADDR_NAMESPACE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8744,
                    "src": "7887:25:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8532,
                  "id": 8534,
                  "nodeType": "Return",
                  "src": "7880:32:50"
                }
              ]
            },
            "documentation": null,
            "id": 8536,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "APP_ADDR_NAMESPACE",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7843:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8531,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8536,
                  "src": "7869:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8530,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7869:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7868:9:50"
            },
            "scope": 8723,
            "src": "7816:99:50",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8543,
              "nodeType": "Block",
              "src": "7977:30:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8541,
                    "name": "KERNEL_CORE_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8728,
                    "src": "7986:18:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8540,
                  "id": 8542,
                  "nodeType": "Return",
                  "src": "7979:25:50"
                }
              ]
            },
            "documentation": null,
            "id": 8544,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "KERNEL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8537,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7942:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8540,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8539,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8544,
                  "src": "7968:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8538,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7968:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7967:9:50"
            },
            "scope": 8723,
            "src": "7920:87:50",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8551,
              "nodeType": "Block",
              "src": "8074:37:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8549,
                    "name": "KERNEL_DEFAULT_ACL_APP_ID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8731,
                    "src": "8083:25:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8548,
                  "id": 8550,
                  "nodeType": "Return",
                  "src": "8076:32:50"
                }
              ]
            },
            "documentation": null,
            "id": 8552,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "DEFAULT_ACL_APP_ID",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8545,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8039:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8547,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8552,
                  "src": "8065:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8546,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8065:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8064:9:50"
            },
            "scope": 8723,
            "src": "8012:99:50",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8567,
              "nodeType": "Block",
              "src": "8450:48:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8561,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8821,
                        "src": "8467:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 8563,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8562,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8554,
                        "src": "8472:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8467:16:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 8565,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 8564,
                      "name": "_appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8556,
                      "src": "8484:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8467:24:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8560,
                  "id": 8566,
                  "nodeType": "Return",
                  "src": "8460:31:50"
                }
              ]
            },
            "documentation": "@dev Get the address of an app instance or base implementation\n@param _namespace App namespace to use\n@param _appId Identifier for app\n@return Address of the app",
            "id": 8568,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8557,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8554,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 8568,
                  "src": "8384:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8553,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8384:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8556,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8568,
                  "src": "8404:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8555,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8404:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8383:36:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8560,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8559,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8568,
                  "src": "8441:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8558,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8441:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8440:9:50"
            },
            "scope": 8723,
            "src": "8368:130:50",
            "stateMutability": "view",
            "superFunction": 8230,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8579,
              "nodeType": "Block",
              "src": "8689:75:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8573,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8821,
                        "src": "8706:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 8575,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8574,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8744,
                        "src": "8711:25:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8706:31:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 8577,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 8576,
                      "name": "recoveryVaultAppId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8823,
                      "src": "8738:18:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8706:51:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8572,
                  "id": 8578,
                  "nodeType": "Return",
                  "src": "8699:58:50"
                }
              ]
            },
            "documentation": "@dev Get the address of the recovery Vault instance (to recover funds)\n@return Address of the Vault",
            "id": 8580,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRecoveryVault",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8569,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8656:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8571,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8580,
                  "src": "8680:7:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8570,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8680:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8679:9:50"
            },
            "scope": 8723,
            "src": "8631:133:50",
            "stateMutability": "view",
            "superFunction": 7052,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8592,
              "nodeType": "Block",
              "src": "8886:90:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8587,
                            "name": "KERNEL_APP_ADDR_NAMESPACE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8744,
                            "src": "8915:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8588,
                            "name": "KERNEL_DEFAULT_ACL_APP_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8731,
                            "src": "8942:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 8586,
                          "name": "getApp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            8568
                          ],
                          "referencedDeclaration": 8568,
                          "src": "8908:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,bytes32) view returns (address)"
                          }
                        },
                        "id": 8589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8908:60:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8585,
                      "name": "IACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5304,
                      "src": "8903:4:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IACL_$5304_$",
                        "typeString": "type(contract IACL)"
                      }
                    },
                    "id": 8590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8903:66:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "functionReturnParameters": 8584,
                  "id": 8591,
                  "nodeType": "Return",
                  "src": "8896:73:50"
                }
              ]
            },
            "documentation": "@dev Get the installed ACL app\n@return ACL app",
            "id": 8593,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "acl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8581,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8856:2:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8583,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8593,
                  "src": "8880:4:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$5304",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8582,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5304,
                    "src": "8880:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8879:6:50"
            },
            "scope": 8723,
            "src": "8844:132:50",
            "stateMutability": "view",
            "superFunction": 8199,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8627,
              "nodeType": "Block",
              "src": "9530:204:50",
              "statements": [
                {
                  "assignments": [
                    8607
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8607,
                      "name": "defaultAcl",
                      "nodeType": "VariableDeclaration",
                      "scope": 8628,
                      "src": "9540:15:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$5304",
                        "typeString": "contract IACL"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8606,
                        "name": "IACL",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5304,
                        "src": "9540:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IACL_$5304",
                          "typeString": "contract IACL"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8610,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8608,
                      "name": "acl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8593
                      ],
                      "referencedDeclaration": 8593,
                      "src": "9558:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IACL_$5304_$",
                        "typeString": "function () view returns (contract IACL)"
                      }
                    },
                    "id": 8609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9558:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$5304",
                      "typeString": "contract IACL"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9540:23:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 8625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 8617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8612,
                            "name": "defaultAcl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8607,
                            "src": "9588:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IACL_$5304",
                              "typeString": "contract IACL"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IACL_$5304",
                              "typeString": "contract IACL"
                            }
                          ],
                          "id": 8611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9580:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 8613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9580:19:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9611:1:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 8614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9603:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 8616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9603:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "9580:33:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8620,
                          "name": "_who",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8595,
                          "src": "9701:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8621,
                          "name": "_where",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8597,
                          "src": "9707:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8622,
                          "name": "_what",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8599,
                          "src": "9715:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 8623,
                          "name": "_how",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8601,
                          "src": "9722:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 8618,
                          "name": "defaultAcl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8607,
                          "src": "9676:10:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IACL_$5304",
                            "typeString": "contract IACL"
                          }
                        },
                        "id": 8619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "hasPermission",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5303,
                        "src": "9676:24:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (address,address,bytes32,bytes memory) view external returns (bool)"
                        }
                      },
                      "id": 8624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9676:51:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9580:147:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8605,
                  "id": 8626,
                  "nodeType": "Return",
                  "src": "9573:154:50"
                }
              ]
            },
            "documentation": "@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        Always returns false if the kernel hasn't been initialized yet.",
            "id": 8628,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hasPermission",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8595,
                  "name": "_who",
                  "nodeType": "VariableDeclaration",
                  "scope": 8628,
                  "src": "9446:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8594,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9446:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8597,
                  "name": "_where",
                  "nodeType": "VariableDeclaration",
                  "scope": 8628,
                  "src": "9460:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8596,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9460:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8599,
                  "name": "_what",
                  "nodeType": "VariableDeclaration",
                  "scope": 8628,
                  "src": "9476:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8598,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9476:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8601,
                  "name": "_how",
                  "nodeType": "VariableDeclaration",
                  "scope": 8628,
                  "src": "9491:10:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8600,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9491:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9445:57:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8604,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8628,
                  "src": "9524:4:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8603,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9524:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9523:6:50"
            },
            "scope": 8723,
            "src": "9423:311:50",
            "stateMutability": "view",
            "superFunction": 8212,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8658,
              "nodeType": "Block",
              "src": "9816:154:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8639,
                            "name": "_app",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8634,
                            "src": "9845:4:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8638,
                          "name": "isContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6468,
                          "src": "9834:10:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 8640,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9834:16:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8641,
                        "name": "ERROR_APP_NOT_CONTRACT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8268,
                        "src": "9852:22:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 8637,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "9826:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9826:49:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8643,
                  "nodeType": "ExpressionStatement",
                  "src": "9826:49:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 8644,
                          "name": "apps",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8821,
                          "src": "9885:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                          }
                        },
                        "id": 8647,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 8645,
                          "name": "_namespace",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8630,
                          "src": "9890:10:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9885:16:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 8648,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8646,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8632,
                        "src": "9902:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9885:24:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8649,
                      "name": "_app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8634,
                      "src": "9912:4:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9885:31:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 8651,
                  "nodeType": "ExpressionStatement",
                  "src": "9885:31:50"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8653,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8630,
                        "src": "9938:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8654,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8632,
                        "src": "9950:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8655,
                        "name": "_app",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8634,
                        "src": "9958:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8652,
                      "name": "SetApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8189,
                      "src": "9931:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 8656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9931:32:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8657,
                  "nodeType": "EmitStatement",
                  "src": "9926:37:50"
                }
              ]
            },
            "documentation": null,
            "id": 8659,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setApp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8630,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 8659,
                  "src": "9757:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8629,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9757:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8632,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8659,
                  "src": "9777:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8631,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9777:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8634,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 8659,
                  "src": "9793:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8633,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9793:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9756:50:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8636,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9816:0:50"
            },
            "scope": 8723,
            "src": "9740:230:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8696,
              "nodeType": "Block",
              "src": "10057:333:50",
              "statements": [
                {
                  "assignments": [
                    8669
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8669,
                      "name": "app",
                      "nodeType": "VariableDeclaration",
                      "scope": 8697,
                      "src": "10067:11:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8668,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10067:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8674,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8671,
                        "name": "_namespace",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8661,
                        "src": "10088:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8672,
                        "name": "_appId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8663,
                        "src": "10100:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8670,
                      "name": "getApp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8568
                      ],
                      "referencedDeclaration": 8568,
                      "src": "10081:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view returns (address)"
                      }
                    },
                    "id": 8673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10081:26:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10067:40:50"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 8679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8675,
                      "name": "app",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8669,
                      "src": "10121:3:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10136:1:50",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 8676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10128:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 8678,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10128:10:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10121:17:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 8694,
                    "nodeType": "Block",
                    "src": "10326:58:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8689,
                              "name": "_namespace",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8661,
                              "src": "10348:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8690,
                              "name": "_appId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8663,
                              "src": "10360:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8691,
                              "name": "_app",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8665,
                              "src": "10368:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8688,
                            "name": "_setApp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8659,
                            "src": "10340:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,address)"
                            }
                          },
                          "id": 8692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10340:33:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8693,
                        "nodeType": "ExpressionStatement",
                        "src": "10340:33:50"
                      }
                    ]
                  },
                  "id": 8695,
                  "nodeType": "IfStatement",
                  "src": "10117:267:50",
                  "trueBody": {
                    "id": 8687,
                    "nodeType": "Block",
                    "src": "10140:180:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8681,
                                "name": "app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8669,
                                "src": "10271:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 8682,
                                "name": "_app",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8665,
                                "src": "10278:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10271:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8684,
                              "name": "ERROR_INVALID_APP_CHANGE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8271,
                              "src": "10284:24:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 8680,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10407,
                              10408
                            ],
                            "referencedDeclaration": 10408,
                            "src": "10263:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10263:46:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8686,
                        "nodeType": "ExpressionStatement",
                        "src": "10263:46:50"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 8697,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setAppIfNew",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8661,
                  "name": "_namespace",
                  "nodeType": "VariableDeclaration",
                  "scope": 8697,
                  "src": "9998:18:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8660,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9998:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8663,
                  "name": "_appId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8697,
                  "src": "10018:14:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10018:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8665,
                  "name": "_app",
                  "nodeType": "VariableDeclaration",
                  "scope": 8697,
                  "src": "10034:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10034:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9997:50:50"
            },
            "payable": false,
            "returnParameters": {
              "id": 8667,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10057:0:50"
            },
            "scope": 8723,
            "src": "9976:414:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8721,
              "nodeType": "Block",
              "src": "10451:197:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8706,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "10496:3:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10496:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8709,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10505,
                                "src": "10516:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Kernel_$8723",
                                  "typeString": "contract Kernel"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Kernel_$8723",
                                  "typeString": "contract Kernel"
                                }
                              ],
                              "id": 8708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10508:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 8710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10508:13:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8711,
                            "name": "_role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8699,
                            "src": "10523:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8714,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8702,
                                "src": "10580:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8712,
                                "name": "ConversionHelpers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6183,
                                "src": "10530:17:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ConversionHelpers_$6183_$",
                                  "typeString": "type(library ConversionHelpers)"
                                }
                              },
                              "id": 8713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dangerouslyCastUintArrayToBytes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6155,
                              "src": "10530:49:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256[] memory) pure returns (bytes memory)"
                              }
                            },
                            "id": 8715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10530:58:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8705,
                          "name": "hasPermission",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            8628
                          ],
                          "referencedDeclaration": 8628,
                          "src": "10482:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,bytes32,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 8716,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10482:107:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8717,
                        "name": "ERROR_AUTH_FAILED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8274,
                        "src": "10603:17:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 8704,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "10461:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10461:169:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8719,
                  "nodeType": "ExpressionStatement",
                  "src": "10461:169:50"
                },
                {
                  "id": 8720,
                  "nodeType": "PlaceholderStatement",
                  "src": "10640:1:50"
                }
              ]
            },
            "documentation": null,
            "id": 8722,
            "name": "auth",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 8703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8699,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 8722,
                  "src": "10410:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8698,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10410:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8702,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 8722,
                  "src": "10425:24:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8700,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10425:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8701,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10425:9:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10409:41:50"
            },
            "src": "10396:252:50",
            "visibility": "internal"
          }
        ],
        "scope": 8724,
        "src": "441:10209:50"
      }
    ],
    "src": "0:10651:50"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.602Z",
  "devdoc": {
    "methods": {
      "acl()": {
        "details": "Get the installed ACL app",
        "return": "ACL app"
      },
      "allowRecoverability(address)": {
        "details": "By default deriving from AragonApp makes it recoverable",
        "params": {
          "token": "Token address that would be recovered"
        },
        "return": "bool whether the app allows the recovery"
      },
      "getApp(bytes32,bytes32)": {
        "details": "Get the address of an app instance or base implementation",
        "params": {
          "_appId": "Identifier for app",
          "_namespace": "App namespace to use"
        },
        "return": "Address of the app"
      },
      "getInitializationBlock()": {
        "return": "Block number in which the contract was initialized"
      },
      "getRecoveryVault()": {
        "details": "Get the address of the recovery Vault instance (to recover funds)",
        "return": "Address of the Vault"
      },
      "hasInitialized()": {
        "return": "Whether the contract has been initialized by the time of the current block"
      },
      "hasPermission(address,address,bytes32,bytes)": {
        "details": "Function called by apps to check ACL on kernel or to check permission status",
        "params": {
          "_how": "Extra data for ACL auth",
          "_what": "Identifier for a group of actions in app",
          "_where": "Address of the app",
          "_who": "Sender of the original call"
        },
        "return": "Boolean indicating whether the ACL allows the role or not.        Always returns false if the kernel hasn't been initialized yet."
      },
      "initialize(address,address)": {
        "details": "Initialize can only be called once. It saves the block number in which it was initialized.",
        "params": {
          "_baseAcl": "Address of base ACL app",
          "_permissionsCreator": "Entity that will be given permission over createPermission"
        }
      },
      "newAppInstance(bytes32,address)": {
        "details": "Create a new instance of an app linked to this kernel",
        "params": {
          "_appBase": "Address of the app's base implementation",
          "_appId": "Identifier for app"
        },
        "return": "AppProxy instance"
      },
      "newAppInstance(bytes32,address,bytes,bool)": {
        "details": "Create a new instance of an app linked to this kernel and set its base     implementation if it was not already set",
        "params": {
          "_appBase": "Address of the app's base implementation",
          "_appId": "Identifier for app",
          "_initializePayload": "Payload for call made by the proxy during its construction to initialize",
          "_setDefault": "Whether the app proxy app is the default one.       Useful when the Kernel needs to know of an instance of a particular app,       like Vault for escape hatch mechanism."
        },
        "return": "AppProxy instance"
      },
      "newAppProxy(address,bytes32)": {
        "params": {
          "_appId": "Identifier for app",
          "_kernel": "App's Kernel reference"
        },
        "return": "AppProxyUpgradeable"
      },
      "newAppProxy(address,bytes32,bytes)": {
        "params": {
          "_appId": "Identifier for app",
          "_kernel": "App's Kernel reference"
        },
        "return": "AppProxyUpgradeable"
      },
      "newAppProxyPinned(address,bytes32)": {
        "params": {
          "_appId": "Identifier for app",
          "_kernel": "App's Kernel reference"
        },
        "return": "AppProxyPinned"
      },
      "newAppProxyPinned(address,bytes32,bytes)": {
        "params": {
          "_appId": "Identifier for app",
          "_initializePayload": "Proxy initialization payload",
          "_kernel": "App's Kernel reference"
        },
        "return": "AppProxyPinned"
      },
      "newPinnedAppInstance(bytes32,address)": {
        "details": "Create a new pinned instance of an app linked to this kernel",
        "params": {
          "_appBase": "Address of the app's base implementation",
          "_appId": "Identifier for app"
        },
        "return": "AppProxy instance"
      },
      "newPinnedAppInstance(bytes32,address,bytes,bool)": {
        "details": "Create a new pinned instance of an app linked to this kernel and set     its base implementation if it was not already set",
        "params": {
          "_appBase": "Address of the app's base implementation",
          "_appId": "Identifier for app",
          "_initializePayload": "Payload for call made by the proxy during its construction to initialize",
          "_setDefault": "Whether the app proxy app is the default one.       Useful when the Kernel needs to know of an instance of a particular app,       like Vault for escape hatch mechanism."
        },
        "return": "AppProxy instance"
      },
      "setApp(bytes32,bytes32,address)": {
        "details": "Set the resolving address of an app instance or base implementation",
        "params": {
          "_app": "Address of the app instance or base implementation",
          "_appId": "Identifier for app",
          "_namespace": "App namespace to use"
        },
        "return": "ID of app"
      },
      "setRecoveryVaultAppId(bytes32)": {
        "details": "Set the default vault id for the escape hatch mechanism",
        "params": {
          "_recoveryVaultAppId": "Identifier of the recovery vault app"
        }
      },
      "transferToVault(address)": {
        "params": {
          "_token": "Token balance to be sent to recovery vault."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "initialize(address,address)": {
        "notice": "Initialize this kernel instance along with its ACL and set `_permissionsCreator` as the entity that can create other permissions"
      },
      "newAppInstance(bytes32,address)": {
        "notice": "Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`"
      },
      "newAppInstance(bytes32,address,bytes,bool)": {
        "notice": "Create a new upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`"
      },
      "newAppProxy(address,bytes32)": {
        "notice": "Create a new upgradeable app instance on `_kernel` with identifier `_appId`"
      },
      "newAppProxy(address,bytes32,bytes)": {
        "notice": "Create a new upgradeable app instance on `_kernel` with identifier `_appId` and initialization payload `_initializePayload`"
      },
      "newAppProxyPinned(address,bytes32)": {
        "notice": "Create a new pinned app instance on `_kernel` with identifier `_appId`"
      },
      "newAppProxyPinned(address,bytes32,bytes)": {
        "notice": "Create a new pinned app instance on `_kernel` with identifier `_appId` and initialization payload `_initializePayload`"
      },
      "newPinnedAppInstance(bytes32,address)": {
        "notice": "Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`."
      },
      "newPinnedAppInstance(bytes32,address,bytes,bool)": {
        "notice": "Create a new non-upgradeable instance of `_appId` app linked to the Kernel, setting its code to `_appBase`. `_setDefault ? 'Also sets it as the default app instance.':''`"
      },
      "setApp(bytes32,bytes32,address)": {
        "notice": "Set the resolving address of `_appId` in namespace `_namespace` to `_app`"
      },
      "transferToVault(address)": {
        "notice": "Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them."
      }
    }
  }
}