{
  "contractName": "ERC1538ProxyV2",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_erc1538Delegate",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "message",
          "type": "string"
        }
      ],
      "name": "CommitMessage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes4",
          "name": "functionId",
          "type": "bytes4"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldDelegate",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newDelegate",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "functionSignature",
          "type": "string"
        }
      ],
      "name": "FunctionUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1538Delegate\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"CommitMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"functionId\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newDelegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"functionSignature\",\"type\":\"string\"}],\"name\":\"FunctionUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/ERC1538/ERC1538Proxy/ERC1538ProxyV2.sol\":\"ERC1538ProxyV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/ERC1538/ERC1538Core.sol\":{\"keccak256\":\"0x8a9cab9e6b0318cfcacc251611d7b66c38c21a862f74fbb999a02952e6b0caae\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9e424c9c9da6be838314f9a286ffb717741ce3307a0ebd3c107fb4cca3246e34\",\"dweb:/ipfs/QmNvBFdxLCDV6xsmXyQUqXv9MhwbnoFq48xV2r6fw652FM\"]},\"/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/ERC1538/ERC1538Proxy/ERC1538ProxyV2.sol\":{\"keccak256\":\"0xaefe35430b0c86d28b57c6f267563aa5ed6e8aa30afc83296852e0a3c3860336\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2c220589c1a2fb39064ee91237a591dce451f4d9a5f2eeeb0249e53ceffd4ea1\",\"dweb:/ipfs/QmZ23xcbGTMCJxtSxoxDxzS2mm8o6ZaWkd3aXg18gmibcz\"]},\"/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/ERC1538/ERC1538Store.sol\":{\"keccak256\":\"0xb58c26604758cc810e3913d58fb596b728f3a959198fb2517465d5d845601c83\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0764c9073affa00312746ad08a5761aaf489b4cb3c65763fce8a53db185ab0bd\",\"dweb:/ipfs/QmPs8QuvRg4CUCkWoRMvHnqFmdjSgVwAFy6q7k235Qzzkw\"]},\"/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/ERC1538/IERC1538.sol\":{\"keccak256\":\"0x36d14c0ca4e87e7bd5fee27128bc4918b03fda78df870a5c9ce061036e63800b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8b541c5c487fa93a27c3853d9d4650b842079bb597a8b57fe47a93988447565f\",\"dweb:/ipfs/QmQJPX7osVhtjDqyE1KQte1PkfirVtEMvES2iSPcShooAN\"]},\"/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/Upgradeability/Proxy.sol\":{\"keccak256\":\"0xa546737acfbfa27d379d338a075c825ab0648e9d8d8b3ee5bf5191469db3bc19\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1b6bb5cdd62d69a5f4d6c431819cbbcc5029bc40397065abb31a3217a683fa2b\",\"dweb:/ipfs/QmSkkpUDr4CGL74Zdmk47zNPtfddauGW8D3U3iGLKbkaCW\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]},\"solstruct/contracts/libs/LibMap2.bytes4.address.bytes.sol\":{\"keccak256\":\"0xde4da3fc60926f373ab427e6a07f837b773cd220554c1d895e45ec89b3ac069f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dc8d9235bd4795815ec0e2ccea2dc7847a88c04d01af06e67a081ea269b9943\",\"dweb:/ipfs/QmbPrKGJsZcPXXSpZqJPuiFNjVwjbvtgrMpdY6asA1BouT\"]},\"solstruct/contracts/libs/LibSet.bytes4.sol\":{\"keccak256\":\"0xbb3001b2c52c250106497a5567454442c021e575c696da948a472d4390e63920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c639b4d68cf6152560d1826bb38fb162c6ee0d2a6fb4a56d0888d7a41efc58c5\",\"dweb:/ipfs/QmaKLDhS5BJPiobaktgMg5dYEML7JKRi2pkkvAmDQLJAXs\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162000e5538038062000e55833981810160405260208110156200003757600080fd5b505160006200004562000107565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000b460405180606001604052806027815260200162000df460279139826200010b565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de60405180806020018281038252603a81526020018062000e1b603a913960400191505060405180910390a150620006ae565b3390565b815160208301206001600160e01b0319811663690bfe6360e11b141562000130575060005b6001600160e01b0319811663b32cdf4d60e01b14156200015557506001600160e01b03195b600062000172826001620002ab60201b620002b01790919060201c565b9050806001600160a01b0316836001600160a01b0316141562000197575050620002a7565b6001600160a01b038316620001c857620001c1826001620002d760201b620002dc1790919060201c565b50620001e9565b620001e782848660016200034060201b6200033017909392919060201c565b505b826001600160a01b0316816001600160a01b0316836001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f5353876040518080602001828103825283818151815260200191508051906020019080838360005b83811015620002695781810151838201526020016200024f565b50505050905090810190601f168015620002975780820380516001836020036101000a031916815260200191505b509250505060405180910390a450505b5050565b6001600160e01b0319811660009081526002830160205260409020546001600160a01b03165b92915050565b6000620002f68284600001620003bc60201b620003971790919060201c565b506001600160e01b031982166000908152600284016020908152604080832080546001600160a01b03191690556003860190915281206200033791620005c7565b50600192915050565b60006200035f84866000016200050f60201b620004de1790919060201c565b506001600160e01b031984166000908152600286016020908152604080832080546001600160a01b0319166001600160a01b0388161790556003880182529091208351620003b09285019062000612565b50600195945050505050565b6000620003ca83836200058c565b620003d857506000620002d1565b6000620003e68484620005a3565b90506000620003f585620005c3565b9050808214620004ad5760008560000160018303815481106200041457fe5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660000160018503815481106200044d57fe5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866001016000836001600160e01b0319166001600160e01b031916815260200190815260200160002081905550505b6001600160e01b0319841660009081526001860160205260408120558454859080620004d557fe5b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a0219169055905550600191505092915050565b60006200051d83836200058c565b156200052c57506000620002d1565b50815460018082018455600084815260208082206008850401805463ffffffff60079096166004026101000a958602191660e087901c959095029490941790935584546001600160e01b0319909416815293810190915260409092205590565b60006200059a8383620005a3565b15159392505050565b6001600160e01b0319166000908152600191909101602052604090205490565b5490565b50805460018160011615610100020316600290046000825580601f10620005ef57506200060f565b601f0160209004906000526020600020908101906200060f919062000697565b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200065557805160ff191683800117855562000685565b8280016001018555821562000685579182015b828111156200068557825182559160200191906001019062000668565b506200069392915062000697565b5090565b5b8082111562000693576000815560010162000698565b61073680620006be6000396000f3fe6080604052600436106100385760003560e01c8063715018a61461004f5780638da5cb5b14610064578063f2fde38b1461009557610047565b36610047576100456100c8565b005b6100456100c8565b34801561005b57600080fd5b506100456100e2565b34801561007057600080fd5b50610079610196565b604080516001600160a01b039092168252519081900360200190f35b3480156100a157600080fd5b50610045600480360360208110156100b857600080fd5b50356001600160a01b03166101a6565b6100d06100e0565b6100e06100db610557565b6105a7565b565b6100ea6105cb565b6000546001600160a01b0390811691161461014c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03165b90565b6101ae6105cb565b6000546001600160a01b03908116911614610210576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166102555760405162461bcd60e51b81526004018080602001828103825260268152602001806106db6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b0319811660009081526002830160205260409020546001600160a01b03165b92915050565b60006102e88383610397565b506001600160e01b031982166000908152600284016020908152604080832080546001600160a01b031916905560038601909152812061032791610608565b50600192915050565b600061033c85856104de565b506001600160e01b031984166000908152600286016020908152604080832080546001600160a01b0319166001600160a01b038816179055600388018252909120835161038b9285019061064f565b50600195945050505050565b60006103a383836105cf565b6103af575060006102d6565b60006103bb84846105e4565b905060006103c885610604565b905080821461047d5760008560000160018303815481106103e557fe5b90600052602060002090600891828204019190066004029054906101000a900460e01b90508086600001600185038154811061041d57fe5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866001016000836001600160e01b0319166001600160e01b031916815260200190815260200160002081905550505b6001600160e01b03198416600090815260018601602052604081205584548590806104a457fe5b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a0219169055905550600191505092915050565b60006104ea83836105cf565b156104f7575060006102d6565b50815460018082018455600084815260208082206008850401805463ffffffff60079096166004026101000a958602191660e087901c959095029490941790935584546001600160e01b0319909416815293810190915260409092205590565b60008061057060016001600160e01b03198335166102b0565b90506001600160a01b038116156105885790506101a3565b61059b60016001600160e01b03196102b0565b9150506101a3565b5090565b3660008037600080366000845af43d6000803e8080156105c6573d6000f35b3d6000fd5b3390565b60006105db83836105e4565b15159392505050565b6001600160e01b0319166000908152600191909101602052604090205490565b5490565b50805460018160011615610100020316600290046000825580601f1061062e575061064c565b601f01602090049060005260206000209081019061064c91906106c5565b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061069057805160ff19168380011785556106bd565b828001600101855582156106bd579182015b828111156106bd5782518255916020019190600101906106a2565b506105a39291505b5b808211156105a357600081556001016106c656fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a264697066735822122022ecd0113e52447f11329f795a20bbc0d285bf5602a0ae8d6a29dfeeae533dcc64736f6c634300060c0033757064617465436f6e747261637428616464726573732c737472696e675b5d2c737472696e67294164646564204552433135333820757064617465436f6e74726163742066756e6374696f6e20617420636f6e7472616374206372656174696f6e",
  "deployedBytecode": "0x6080604052600436106100385760003560e01c8063715018a61461004f5780638da5cb5b14610064578063f2fde38b1461009557610047565b36610047576100456100c8565b005b6100456100c8565b34801561005b57600080fd5b506100456100e2565b34801561007057600080fd5b50610079610196565b604080516001600160a01b039092168252519081900360200190f35b3480156100a157600080fd5b50610045600480360360208110156100b857600080fd5b50356001600160a01b03166101a6565b6100d06100e0565b6100e06100db610557565b6105a7565b565b6100ea6105cb565b6000546001600160a01b0390811691161461014c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03165b90565b6101ae6105cb565b6000546001600160a01b03908116911614610210576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166102555760405162461bcd60e51b81526004018080602001828103825260268152602001806106db6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b0319811660009081526002830160205260409020546001600160a01b03165b92915050565b60006102e88383610397565b506001600160e01b031982166000908152600284016020908152604080832080546001600160a01b031916905560038601909152812061032791610608565b50600192915050565b600061033c85856104de565b506001600160e01b031984166000908152600286016020908152604080832080546001600160a01b0319166001600160a01b038816179055600388018252909120835161038b9285019061064f565b50600195945050505050565b60006103a383836105cf565b6103af575060006102d6565b60006103bb84846105e4565b905060006103c885610604565b905080821461047d5760008560000160018303815481106103e557fe5b90600052602060002090600891828204019190066004029054906101000a900460e01b90508086600001600185038154811061041d57fe5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866001016000836001600160e01b0319166001600160e01b031916815260200190815260200160002081905550505b6001600160e01b03198416600090815260018601602052604081205584548590806104a457fe5b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a0219169055905550600191505092915050565b60006104ea83836105cf565b156104f7575060006102d6565b50815460018082018455600084815260208082206008850401805463ffffffff60079096166004026101000a958602191660e087901c959095029490941790935584546001600160e01b0319909416815293810190915260409092205590565b60008061057060016001600160e01b03198335166102b0565b90506001600160a01b038116156105885790506101a3565b61059b60016001600160e01b03196102b0565b9150506101a3565b5090565b3660008037600080366000845af43d6000803e8080156105c6573d6000f35b3d6000fd5b3390565b60006105db83836105e4565b15159392505050565b6001600160e01b0319166000908152600191909101602052604090205490565b5490565b50805460018160011615610100020316600290046000825580601f1061062e575061064c565b601f01602090049060005260206000209081019061064c91906106c5565b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061069057805160ff19168380011785556106bd565b828001600101855582156106bd579182015b828111156106bd5782518255916020019190600101906106a2565b506105a39291505b5b808211156105a357600081556001016106c656fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a264697066735822122022ecd0113e52447f11329f795a20bbc0d285bf5602a0ae8d6a29dfeeae533dcc64736f6c634300060c0033",
  "immutableReferences": {},
  "sourceMap": "1339:505:11:-:0;;;1388:208;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1388:208:11;865:17:29;885:12;:10;:12::i;:::-;907:6;:18;;-1:-1:-1;;;;;;907:18:29;-1:-1:-1;;;;;907:18:29;;;;;;;940:43;;907:18;;-1:-1:-1;907:18:29;940:43;;907:6;;940:43;831:159;1439:69:11;;;;;;;;;;;;;;;;;;1491:16;1439:8;:69::i;:::-;1517:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1388:208;1339:505;;590:104:28;677:10;590:104;:::o;1711:633:5:-;1818:31;;;;;;-1:-1:-1;;;;;;1858:17:5;;-1:-1:-1;;;1858:17:5;1854:56;;;-1:-1:-1;1896:10:5;1854:56;-1:-1:-1;;;;;;1917:18:5;;-1:-1:-1;;;1917:18:5;1913:56;;;-1:-1:-1;;;;;;;1913:56:5;1973:19;1995:22;2010:6;1995:7;:14;;;;;;:22;;;;:::i;:::-;1973:44;;2042:11;-1:-1:-1;;;;;2026:27:5;:12;-1:-1:-1;;;;;2026:27:5;;2022:245;;;2084:7;;;;2022:245;-1:-1:-1;;;;;2107:26:5;;2103:164;;2152:19;2164:6;2152:7;:11;;;;;;:19;;;;:::i;:::-;;2103:164;;;2207:55;2219:6;2227:12;2247:13;2207:7;:11;;;;;;:55;;;;;;:::i;:::-;;2103:164;2312:12;-1:-1:-1;;;;;2276:64:5;2299:11;-1:-1:-1;;;;;2276:64:5;2291:6;-1:-1:-1;;;;;2276:64:5;;;2326:13;2276:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1711:633;;;;;:::o;408:116:31:-;-1:-1:-1;;;;;;502:18:31;;480:7;502:18;;;:12;;;:18;;;;;;-1:-1:-1;;;;;502:18:31;408:116;;;;;:::o;1570:176::-;1634:4;1645:24;1664:4;1645;:11;;:18;;;;;;:24;;;;:::i;:::-;-1:-1:-1;;;;;;;1680:18:31;;;;;;:12;;;:18;;;;;;;;1673:25;;-1:-1:-1;;;;;;1673:25:31;;;1709:12;;;:18;;;;;1702:25;;;:::i;:::-;-1:-1:-1;1738:4:31;1570:176;;;;:::o;1339:228::-;1452:4;1463:21;1479:4;1463;:11;;:15;;;;;;:21;;;;:::i;:::-;-1:-1:-1;;;;;;;1488:18:31;;;;;;:12;;;:18;;;;;;;;:28;;-1:-1:-1;;;;;;1488:28:31;-1:-1:-1;;;;;1488:28:31;;;;;1520:12;;;:18;;;;;:28;;;;;;;;:::i;:::-;-1:-1:-1;1559:4:31;;1339:228;-1:-1:-1;;;;;1339:228:31:o;970:416:32:-;1039:4;1055:22;1064:4;1070:6;1055:8;:22::i;:::-;1050:53;;-1:-1:-1;1093:5:32;1086:12;;1050:53;1107:9;1122:21;1130:4;1136:6;1122:7;:21::i;:::-;1107:36;-1:-1:-1;1147:12:32;1162;1169:4;1162:6;:12::i;:::-;1147:27;;1188:4;1183:1;:9;1179:135;;1201:17;1221:4;:11;;1240:1;1233:4;:8;1221:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1201:41;;1268:9;1247:4;:11;;1263:1;1259;:5;1247:18;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1308:1;1282:4;:12;;:23;1295:9;-1:-1:-1;;;;;1282:23:32;;-1:-1:-1;;;;;1282:23:32;;;;;;;;;;;;;:27;;;;1179:135;;-1:-1:-1;;;;;;1325:20:32;;;;;;:12;;;:20;;;;;1318:27;1349:17;;1325:4;;1349:17;;;;;;;;;;;;;-1:-1:-1;;1349:17:32;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1349:17:32;;-1:-1:-1;;970:416:32;;;;:::o;747:220::-;813:4;828:22;837:4;843:6;828:8;:22::i;:::-;824:52;;;-1:-1:-1;866:5:32;859:12;;824:52;-1:-1:-1;879:24:32;;;;;;;;-1:-1:-1;879:24:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;930:18;;-1:-1:-1;;;;;;907:20:32;;;;;:12;;;:20;;;;;;;:41;879:24;747:220::o;514:124::-;590:4;608:21;616:4;622:6;608:7;:21::i;:::-;:26;;;514:124;-1:-1:-1;;;514:124:32:o;391:120::-;-1:-1:-1;;;;;;487:20:32;466:7;487:20;;;:12;;;;;:20;;;;;;;391:120::o;166:101::-;245:18;;166:101::o;1339:505:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1339:505:11;;;-1:-1:-1;1339:505:11;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "1339:505:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1709:11:27;:9;:11::i;:::-;1339:505:11;;1846:11:27;:9;:11::i;1689:145:29:-;;;;;;;;;;;;;:::i;1066:77::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1066:77:29;;;;;;;;;;;;;;1983:240;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1983:240:29;-1:-1:-1;;;;;1983:240:29;;:::i;3383:90:27:-;3419:15;:13;:15::i;:::-;3440:28;3450:17;:15;:17::i;:::-;3440:9;:28::i;:::-;3383:90::o;1689:145:29:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:29;;;:22;;;1262:67;;;;;-1:-1:-1;;;1262:67:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1779:6:::0;;1758:40:::1;::::0;-1:-1:-1;;;;;1779:6:29;;::::1;::::0;1758:40:::1;::::0;1795:1;;1758:40:::1;1825:1;1808:19:::0;;-1:-1:-1;;;;;;1808:19:29::1;::::0;;1689:145::o;1066:77::-;1104:7;1130:6;-1:-1:-1;;;;;1130:6:29;1066:77;;:::o;1983:240::-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:29;;;:22;;;1262:67;;;;;-1:-1:-1;;;1262:67:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2071:22:29;::::1;2063:73;;;;-1:-1:-1::0;;;2063:73:29::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:6;::::0;;2151:38:::1;::::0;-1:-1:-1;;;;;2151:38:29;;::::1;::::0;2172:6;::::1;::::0;2151:38:::1;::::0;::::1;2199:6;:17:::0;;-1:-1:-1;;;;;;2199:17:29::1;-1:-1:-1::0;;;;;2199:17:29;;;::::1;::::0;;;::::1;::::0;;1983:240::o;408:116:31:-;-1:-1:-1;;;;;;502:18:31;;480:7;502:18;;;:12;;;:18;;;;;;-1:-1:-1;;;;;502:18:31;408:116;;;;;:::o;1570:176::-;1634:4;1645:24;:4;1664;1645:18;:24::i;:::-;-1:-1:-1;;;;;;;1680:18:31;;;;;;:12;;;:18;;;;;;;;1673:25;;-1:-1:-1;;;;;;1673:25:31;;;1709:12;;;:18;;;;;1702:25;;;:::i;:::-;-1:-1:-1;1738:4:31;1570:176;;;;:::o;1339:228::-;1452:4;1463:21;:4;1479;1463:15;:21::i;:::-;-1:-1:-1;;;;;;;1488:18:31;;;;;;:12;;;:18;;;;;;;;:28;;-1:-1:-1;;;;;;1488:28:31;-1:-1:-1;;;;;1488:28:31;;;;;1520:12;;;:18;;;;;:28;;;;;;;;:::i;:::-;-1:-1:-1;1559:4:31;;1339:228;-1:-1:-1;;;;;1339:228:31:o;970:416:32:-;1039:4;1055:22;1064:4;1070:6;1055:8;:22::i;:::-;1050:53;;-1:-1:-1;1093:5:32;1086:12;;1050:53;1107:9;1122:21;1130:4;1136:6;1122:7;:21::i;:::-;1107:36;;1147:12;1162;1169:4;1162:6;:12::i;:::-;1147:27;;1188:4;1183:1;:9;1179:135;;1201:17;1221:4;:11;;1240:1;1233:4;:8;1221:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1201:41;;1268:9;1247:4;:11;;1263:1;1259;:5;1247:18;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1308:1;1282:4;:12;;:23;1295:9;-1:-1:-1;;;;;1282:23:32;;-1:-1:-1;;;;;1282:23:32;;;;;;;;;;;;;:27;;;;1179:135;;-1:-1:-1;;;;;;1325:20:32;;;;;;:12;;;:20;;;;;1318:27;1349:17;;1325:4;;1349:17;;;;;;;;;;;;;-1:-1:-1;;1349:17:32;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1349:17:32;;-1:-1:-1;;970:416:32;;;;:::o;747:220::-;813:4;828:22;837:4;843:6;828:8;:22::i;:::-;824:52;;;-1:-1:-1;866:5:32;859:12;;824:52;-1:-1:-1;879:24:32;;;;;;;;-1:-1:-1;879:24:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;930:18;;-1:-1:-1;;;;;;907:20:32;;;;;:12;;;:20;;;;;;;:41;879:24;747:220::o;1599:243:11:-;1658:7;;1695:23;:7;-1:-1:-1;;;;;;1710:7:11;;;1695:14;:23::i;:::-;1672:46;-1:-1:-1;;;;;;1727:26:11;;;1723:116;;1769:12;-1:-1:-1;1762:19:11;;1723:116;1808:26;:7;-1:-1:-1;;;;;;1808:14:11;:26::i;:::-;1801:33;;;;;1723:116;1599:243;;:::o;2289:743:27:-;2591:14;2588:1;2585;2572:34;2787:1;2784;2768:14;2765:1;2749:14;2742:5;2729:60;2851:16;2848:1;2845;2830:38;2883:6;2938:38;;;;3003:16;3000:1;2993:27;2938:38;2957:16;2954:1;2947:27;590:104:28;677:10;590:104;:::o;514:124:32:-;590:4;608:21;616:4;622:6;608:7;:21::i;:::-;:26;;;514:124;-1:-1:-1;;;514:124:32:o;391:120::-;-1:-1:-1;;;;;;487:20:32;466:7;487:20;;;:12;;;;;:20;;;;;;;391:120::o;166:101::-;245:18;;166:101::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "// SPDX-License-Identifier: Apache-2.0\n\n/******************************************************************************\n * Copyright 2020 IEXEC BLOCKCHAIN TECH                                       *\n *                                                                            *\n * Licensed under the Apache License, Version 2.0 (the \"License\");            *\n * you may not use this file except in compliance with the License.           *\n * You may obtain a copy of the License at                                    *\n *                                                                            *\n *     http://www.apache.org/licenses/LICENSE-2.0                             *\n *                                                                            *\n * Unless required by applicable law or agreed to in writing, software        *\n * distributed under the License is distributed on an \"AS IS\" BASIS,          *\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   *\n * See the License for the specific language governing permissions and        *\n * limitations under the License.                                             *\n ******************************************************************************/\n\npragma solidity ^0.6.0;\n\nimport \"../../Upgradeability/Proxy.sol\";\nimport \"../ERC1538Core.sol\";\n\n\ncontract ERC1538ProxyV2 is ERC1538Core, Proxy\n{\n\tconstructor(address _erc1538Delegate)\n\tpublic\n\t{\n\t\t_setFunc(\"updateContract(address,string[],string)\", _erc1538Delegate);\n\t\temit CommitMessage(\"Added ERC1538 updateContract function at contract creation\");\n\t}\n\n\tfunction _implementation() internal override view returns (address)\n\t{\n\t\taddress delegateFunc = m_funcs.value1(msg.sig);\n\n\t\tif (delegateFunc != address(0))\n\t\t{\n\t\t\treturn delegateFunc;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn m_funcs.value1(0xFFFFFFFF);\n\t\t}\n\t}\n}\n",
  "sourcePath": "/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/ERC1538/ERC1538Proxy/ERC1538ProxyV2.sol",
  "ast": {
    "absolutePath": "/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/ERC1538/ERC1538Proxy/ERC1538ProxyV2.sol",
    "exportedSymbols": {
      "ERC1538ProxyV2": [
        1241
      ]
    },
    "id": 1242,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1188,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "1242:23:11"
      },
      {
        "absolutePath": "/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/Upgradeability/Proxy.sol",
        "file": "../../Upgradeability/Proxy.sol",
        "id": 1189,
        "nodeType": "ImportDirective",
        "scope": 1242,
        "sourceUnit": 2453,
        "src": "1267:40:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/ERC1538/ERC1538Core.sol",
        "file": "../ERC1538Core.sol",
        "id": 1190,
        "nodeType": "ImportDirective",
        "scope": 1242,
        "sourceUnit": 362,
        "src": "1308:28:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1191,
              "name": "ERC1538Core",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 361,
              "src": "1366:11:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1538Core_$361",
                "typeString": "contract ERC1538Core"
              }
            },
            "id": 1192,
            "nodeType": "InheritanceSpecifier",
            "src": "1366:11:11"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1193,
              "name": "Proxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2452,
              "src": "1379:5:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Proxy_$2452",
                "typeString": "contract Proxy"
              }
            },
            "id": 1194,
            "nodeType": "InheritanceSpecifier",
            "src": "1379:5:11"
          }
        ],
        "contractDependencies": [
          361,
          1253,
          1270,
          2452,
          2475,
          2584
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1241,
        "linearizedBaseContracts": [
          1241,
          2452,
          361,
          1253,
          2584,
          2475,
          1270
        ],
        "name": "ERC1538ProxyV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1208,
              "nodeType": "Block",
              "src": "1435:161:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "757064617465436f6e747261637428616464726573732c737472696e675b5d2c737472696e6729",
                        "id": 1200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1448:41:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_38aac71279714f5cc9cd321d49738a94959c1125af762370d68c9c5661e47e2f",
                          "typeString": "literal_string \"updateContract(address,string[],string)\""
                        },
                        "value": "updateContract(address,string[],string)"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1201,
                        "name": "_erc1538Delegate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1196,
                        "src": "1491:16:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_38aac71279714f5cc9cd321d49738a94959c1125af762370d68c9c5661e47e2f",
                          "typeString": "literal_string \"updateContract(address,string[],string)\""
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1199,
                      "name": "_setFunc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 360,
                      "src": "1439:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,address)"
                      }
                    },
                    "id": 1202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1439:69:11",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1203,
                  "nodeType": "ExpressionStatement",
                  "src": "1439:69:11"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "4164646564204552433135333820757064617465436f6e74726163742066756e6374696f6e20617420636f6e7472616374206372656174696f6e",
                        "id": 1205,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1531:60:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a59507b444e9cf7401adee1e6ab833d42e0e49661985984591c7f0123a26e73c",
                          "typeString": "literal_string \"Added ERC1538 updateContract function at contract creation\""
                        },
                        "value": "Added ERC1538 updateContract function at contract creation"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_a59507b444e9cf7401adee1e6ab833d42e0e49661985984591c7f0123a26e73c",
                          "typeString": "literal_string \"Added ERC1538 updateContract function at contract creation\""
                        }
                      ],
                      "id": 1204,
                      "name": "CommitMessage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        260
                      ],
                      "referencedDeclaration": 260,
                      "src": "1517:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 1206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1517:75:11",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1207,
                  "nodeType": "EmitStatement",
                  "src": "1512:80:11"
                }
              ]
            },
            "documentation": null,
            "id": 1209,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1196,
                  "mutability": "mutable",
                  "name": "_erc1538Delegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1209,
                  "src": "1400:24:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1195,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1400:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1399:26:11"
            },
            "returnParameters": {
              "id": 1198,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1435:0:11"
            },
            "scope": 1241,
            "src": "1388:208:11",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2425
            ],
            "body": {
              "id": 1239,
              "nodeType": "Block",
              "src": "1668:174:11",
              "statements": [
                {
                  "assignments": [
                    1216
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1216,
                      "mutability": "mutable",
                      "name": "delegateFunc",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1239,
                      "src": "1672:20:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1215,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1672:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1222,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1219,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1710:3:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sig",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1710:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1217,
                        "name": "m_funcs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1252,
                        "src": "1695:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$2796_storage",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                        }
                      },
                      "id": 1218,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2824,
                      "src": "1695:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_bytes4_$returns$_t_address_$bound_to$_t_struct$_map_$2796_storage_ptr_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                      }
                    },
                    "id": 1221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1695:23:11",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1672:46:11"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1223,
                      "name": "delegateFunc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1216,
                      "src": "1727:12:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1751:1:11",
                          "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": 1225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1743:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 1224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1743:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 1227,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1743:10:11",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1727:26:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1237,
                    "nodeType": "Block",
                    "src": "1796:43:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30784646464646464646",
                              "id": 1234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1823:10:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4294967295_by_1",
                                "typeString": "int_const 4294967295"
                              },
                              "value": "0xFFFFFFFF"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_4294967295_by_1",
                                "typeString": "int_const 4294967295"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1232,
                              "name": "m_funcs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1252,
                              "src": "1808:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_map_$2796_storage",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                              }
                            },
                            "id": 1233,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2824,
                            "src": "1808:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_bytes4_$returns$_t_address_$bound_to$_t_struct$_map_$2796_storage_ptr_$",
                              "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                            }
                          },
                          "id": 1235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1808:26:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1214,
                        "id": 1236,
                        "nodeType": "Return",
                        "src": "1801:33:11"
                      }
                    ]
                  },
                  "id": 1238,
                  "nodeType": "IfStatement",
                  "src": "1723:116:11",
                  "trueBody": {
                    "id": 1231,
                    "nodeType": "Block",
                    "src": "1757:29:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1229,
                          "name": "delegateFunc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1216,
                          "src": "1769:12:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1214,
                        "id": 1230,
                        "nodeType": "Return",
                        "src": "1762:19:11"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1240,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_implementation",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1211,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1635:8:11"
            },
            "parameters": {
              "id": 1210,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1623:2:11"
            },
            "returnParameters": {
              "id": 1214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1213,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1240,
                  "src": "1658:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1212,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1658:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1657:9:11"
            },
            "scope": 1241,
            "src": "1599:243:11",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 1242,
        "src": "1339:505:11"
      }
    ],
    "src": "1242:603:11"
  },
  "legacyAST": {
    "absolutePath": "/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/ERC1538/ERC1538Proxy/ERC1538ProxyV2.sol",
    "exportedSymbols": {
      "ERC1538ProxyV2": [
        1241
      ]
    },
    "id": 1242,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1188,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "1242:23:11"
      },
      {
        "absolutePath": "/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/Upgradeability/Proxy.sol",
        "file": "../../Upgradeability/Proxy.sol",
        "id": 1189,
        "nodeType": "ImportDirective",
        "scope": 1242,
        "sourceUnit": 2453,
        "src": "1267:40:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/gabriel/Documents/iexec/poco-boost/iexec-solidity/contracts/ERC1538/ERC1538Core.sol",
        "file": "../ERC1538Core.sol",
        "id": 1190,
        "nodeType": "ImportDirective",
        "scope": 1242,
        "sourceUnit": 362,
        "src": "1308:28:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1191,
              "name": "ERC1538Core",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 361,
              "src": "1366:11:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1538Core_$361",
                "typeString": "contract ERC1538Core"
              }
            },
            "id": 1192,
            "nodeType": "InheritanceSpecifier",
            "src": "1366:11:11"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1193,
              "name": "Proxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2452,
              "src": "1379:5:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Proxy_$2452",
                "typeString": "contract Proxy"
              }
            },
            "id": 1194,
            "nodeType": "InheritanceSpecifier",
            "src": "1379:5:11"
          }
        ],
        "contractDependencies": [
          361,
          1253,
          1270,
          2452,
          2475,
          2584
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1241,
        "linearizedBaseContracts": [
          1241,
          2452,
          361,
          1253,
          2584,
          2475,
          1270
        ],
        "name": "ERC1538ProxyV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1208,
              "nodeType": "Block",
              "src": "1435:161:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "757064617465436f6e747261637428616464726573732c737472696e675b5d2c737472696e6729",
                        "id": 1200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1448:41:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_38aac71279714f5cc9cd321d49738a94959c1125af762370d68c9c5661e47e2f",
                          "typeString": "literal_string \"updateContract(address,string[],string)\""
                        },
                        "value": "updateContract(address,string[],string)"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1201,
                        "name": "_erc1538Delegate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1196,
                        "src": "1491:16:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_38aac71279714f5cc9cd321d49738a94959c1125af762370d68c9c5661e47e2f",
                          "typeString": "literal_string \"updateContract(address,string[],string)\""
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1199,
                      "name": "_setFunc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 360,
                      "src": "1439:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,address)"
                      }
                    },
                    "id": 1202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1439:69:11",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1203,
                  "nodeType": "ExpressionStatement",
                  "src": "1439:69:11"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "4164646564204552433135333820757064617465436f6e74726163742066756e6374696f6e20617420636f6e7472616374206372656174696f6e",
                        "id": 1205,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1531:60:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a59507b444e9cf7401adee1e6ab833d42e0e49661985984591c7f0123a26e73c",
                          "typeString": "literal_string \"Added ERC1538 updateContract function at contract creation\""
                        },
                        "value": "Added ERC1538 updateContract function at contract creation"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_a59507b444e9cf7401adee1e6ab833d42e0e49661985984591c7f0123a26e73c",
                          "typeString": "literal_string \"Added ERC1538 updateContract function at contract creation\""
                        }
                      ],
                      "id": 1204,
                      "name": "CommitMessage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        260
                      ],
                      "referencedDeclaration": 260,
                      "src": "1517:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 1206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1517:75:11",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1207,
                  "nodeType": "EmitStatement",
                  "src": "1512:80:11"
                }
              ]
            },
            "documentation": null,
            "id": 1209,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1196,
                  "mutability": "mutable",
                  "name": "_erc1538Delegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1209,
                  "src": "1400:24:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1195,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1400:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1399:26:11"
            },
            "returnParameters": {
              "id": 1198,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1435:0:11"
            },
            "scope": 1241,
            "src": "1388:208:11",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2425
            ],
            "body": {
              "id": 1239,
              "nodeType": "Block",
              "src": "1668:174:11",
              "statements": [
                {
                  "assignments": [
                    1216
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1216,
                      "mutability": "mutable",
                      "name": "delegateFunc",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1239,
                      "src": "1672:20:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1215,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1672:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1222,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1219,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1710:3:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sig",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1710:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1217,
                        "name": "m_funcs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1252,
                        "src": "1695:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$2796_storage",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                        }
                      },
                      "id": 1218,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2824,
                      "src": "1695:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_bytes4_$returns$_t_address_$bound_to$_t_struct$_map_$2796_storage_ptr_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                      }
                    },
                    "id": 1221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1695:23:11",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1672:46:11"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1223,
                      "name": "delegateFunc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1216,
                      "src": "1727:12:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1751:1:11",
                          "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": 1225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1743:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 1224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1743:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 1227,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1743:10:11",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1727:26:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1237,
                    "nodeType": "Block",
                    "src": "1796:43:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30784646464646464646",
                              "id": 1234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1823:10:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4294967295_by_1",
                                "typeString": "int_const 4294967295"
                              },
                              "value": "0xFFFFFFFF"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_4294967295_by_1",
                                "typeString": "int_const 4294967295"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1232,
                              "name": "m_funcs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1252,
                              "src": "1808:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_map_$2796_storage",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                              }
                            },
                            "id": 1233,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2824,
                            "src": "1808:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_bytes4_$returns$_t_address_$bound_to$_t_struct$_map_$2796_storage_ptr_$",
                              "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                            }
                          },
                          "id": 1235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1808:26:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1214,
                        "id": 1236,
                        "nodeType": "Return",
                        "src": "1801:33:11"
                      }
                    ]
                  },
                  "id": 1238,
                  "nodeType": "IfStatement",
                  "src": "1723:116:11",
                  "trueBody": {
                    "id": 1231,
                    "nodeType": "Block",
                    "src": "1757:29:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1229,
                          "name": "delegateFunc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1216,
                          "src": "1769:12:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1214,
                        "id": 1230,
                        "nodeType": "Return",
                        "src": "1762:19:11"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1240,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_implementation",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1211,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1635:8:11"
            },
            "parameters": {
              "id": 1210,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1623:2:11"
            },
            "returnParameters": {
              "id": 1214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1213,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1240,
                  "src": "1658:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1212,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1658:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1657:9:11"
            },
            "scope": 1241,
            "src": "1599:243:11",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 1242,
        "src": "1339:505:11"
      }
    ],
    "src": "1242:603:11"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.5",
  "updatedAt": "2023-05-04T08:29:47.191Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}