{
  "contractName": "ModuleManager",
  "sourceName": "@gnosis.pm/safe-contracts/contracts/base/ModuleManager.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "DisabledModule",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "EnabledModule",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "ExecutionFromModuleFailure",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "ExecutionFromModuleSuccess",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "prevModule",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "disableModule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "enableModule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "enum Enum.Operation",
          "name": "operation",
          "type": "uint8"
        }
      ],
      "name": "execTransactionFromModule",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "enum Enum.Operation",
          "name": "operation",
          "type": "uint8"
        }
      ],
      "name": "execTransactionFromModuleReturnData",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "start",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "pageSize",
          "type": "uint256"
        }
      ],
      "name": "getModulesPaginated",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "array",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "next",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "isModuleEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610922806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632d9ad53d14610067578063468721a71461008f5780635229073f146100a2578063610b5925146100c3578063cc2f8452146100d8578063e009cfde146100f9575b600080fd5b61007a61007536600461065b565b61010c565b60405190151581526020015b60405180910390f35b61007a61009d3660046106a2565b610147565b6100b56100b03660046106a2565b610223565b60405161008692919061077e565b6100d66100d136600461065b565b610259565b005b6100eb6100e63660046107dd565b610399565b604051610086929190610807565b6100d6610107366004610864565b610492565b600060016001600160a01b0383161480159061014157506001600160a01b038281166000908152602081905260409020541615155b92915050565b6000336001148015906101715750336000908152602081905260409020546001600160a01b031615155b6101aa5760405162461bcd60e51b815260206004820152600560248201526411d4cc4c0d60da1b60448201526064015b60405180910390fd5b6101b7858585855a6105be565b905080156101ef5760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a261021b565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b6000606061023386868686610147565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b610261610606565b6001600160a01b0381161580159061028357506001600160a01b038116600114155b6102b75760405162461bcd60e51b8152602060048201526005602482015264475331303160d81b60448201526064016101a1565b6001600160a01b0381811660009081526020819052604090205416156103075760405162461bcd60e51b815260206004820152600560248201526423a998981960d91b60448201526064016101a1565b600060208181527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d80546001600160a01b0385811680865260408087208054939094166001600160a01b03199384161790935560019095528254168417909155519182527fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f8440910160405180910390a150565b606060008267ffffffffffffffff8111156103b6576103b661067d565b6040519080825280602002602001820160405280156103df578160200160208202803683370190505b506001600160a01b0380861660009081526020819052604081205492945091165b6001600160a01b0381161580159061042257506001600160a01b038116600114155b801561042d57508482105b15610484578084838151811061044557610445610897565b6001600160a01b03928316602091820292909201810191909152918116600090815291829052604090912054168161047c816108ad565b925050610400565b908352919491935090915050565b61049a610606565b6001600160a01b038116158015906104bc57506001600160a01b038116600114155b6104f05760405162461bcd60e51b8152602060048201526005602482015264475331303160d81b60448201526064016101a1565b6001600160a01b038281166000908152602081905260409020548116908216146105445760405162461bcd60e51b8152602060048201526005602482015264475331303360d81b60448201526064016101a1565b6001600160a01b03818116600081815260208181526040808320805488871685528285208054919097166001600160a01b03199182161790965592849052825490941690915591519081527faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace4054276910160405180910390a15050565b600060018360018111156105d4576105d46108d6565b14156105ed576000808551602087018986f490506105fd565b600080855160208701888a87f190505b95945050505050565b33301461063d5760405162461bcd60e51b8152602060048201526005602482015264475330333160d81b60448201526064016101a1565b565b80356001600160a01b038116811461065657600080fd5b919050565b60006020828403121561066d57600080fd5b6106768261063f565b9392505050565b634e487b7160e01b600052604160045260246000fd5b80356002811061065657600080fd5b600080600080608085870312156106b857600080fd5b6106c18561063f565b935060208501359250604085013567ffffffffffffffff808211156106e557600080fd5b818701915087601f8301126106f957600080fd5b81358181111561070b5761070b61067d565b604051601f8201601f19908116603f011681019083821181831017156107335761073361067d565b816040528281528a602084870101111561074c57600080fd5b82602086016020830137600060208483010152809650505050505061077360608601610693565b905092959194509250565b821515815260006020604081840152835180604085015260005b818110156107b457858101830151858201606001528201610798565b818111156107c6576000606083870101525b50601f01601f191692909201606001949350505050565b600080604083850312156107f057600080fd5b6107f98361063f565b946020939093013593505050565b604080825283519082018190526000906020906060840190828701845b828110156108495781516001600160a01b031684529284019290840190600101610824565b5050506001600160a01b039490941692019190915250919050565b6000806040838503121561087757600080fd5b6108808361063f565b915061088e6020840161063f565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156108cf57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fdfea26469706673582212202af1673d42a8a1f8bafc53355975518103dbac2c2829c16ac17794fcf321cdbf64736f6c634300080a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80632d9ad53d14610067578063468721a71461008f5780635229073f146100a2578063610b5925146100c3578063cc2f8452146100d8578063e009cfde146100f9575b600080fd5b61007a61007536600461065b565b61010c565b60405190151581526020015b60405180910390f35b61007a61009d3660046106a2565b610147565b6100b56100b03660046106a2565b610223565b60405161008692919061077e565b6100d66100d136600461065b565b610259565b005b6100eb6100e63660046107dd565b610399565b604051610086929190610807565b6100d6610107366004610864565b610492565b600060016001600160a01b0383161480159061014157506001600160a01b038281166000908152602081905260409020541615155b92915050565b6000336001148015906101715750336000908152602081905260409020546001600160a01b031615155b6101aa5760405162461bcd60e51b815260206004820152600560248201526411d4cc4c0d60da1b60448201526064015b60405180910390fd5b6101b7858585855a6105be565b905080156101ef5760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a261021b565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b6000606061023386868686610147565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b610261610606565b6001600160a01b0381161580159061028357506001600160a01b038116600114155b6102b75760405162461bcd60e51b8152602060048201526005602482015264475331303160d81b60448201526064016101a1565b6001600160a01b0381811660009081526020819052604090205416156103075760405162461bcd60e51b815260206004820152600560248201526423a998981960d91b60448201526064016101a1565b600060208181527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d80546001600160a01b0385811680865260408087208054939094166001600160a01b03199384161790935560019095528254168417909155519182527fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f8440910160405180910390a150565b606060008267ffffffffffffffff8111156103b6576103b661067d565b6040519080825280602002602001820160405280156103df578160200160208202803683370190505b506001600160a01b0380861660009081526020819052604081205492945091165b6001600160a01b0381161580159061042257506001600160a01b038116600114155b801561042d57508482105b15610484578084838151811061044557610445610897565b6001600160a01b03928316602091820292909201810191909152918116600090815291829052604090912054168161047c816108ad565b925050610400565b908352919491935090915050565b61049a610606565b6001600160a01b038116158015906104bc57506001600160a01b038116600114155b6104f05760405162461bcd60e51b8152602060048201526005602482015264475331303160d81b60448201526064016101a1565b6001600160a01b038281166000908152602081905260409020548116908216146105445760405162461bcd60e51b8152602060048201526005602482015264475331303360d81b60448201526064016101a1565b6001600160a01b03818116600081815260208181526040808320805488871685528285208054919097166001600160a01b03199182161790965592849052825490941690915591519081527faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace4054276910160405180910390a15050565b600060018360018111156105d4576105d46108d6565b14156105ed576000808551602087018986f490506105fd565b600080855160208701888a87f190505b95945050505050565b33301461063d5760405162461bcd60e51b8152602060048201526005602482015264475330333160d81b60448201526064016101a1565b565b80356001600160a01b038116811461065657600080fd5b919050565b60006020828403121561066d57600080fd5b6106768261063f565b9392505050565b634e487b7160e01b600052604160045260246000fd5b80356002811061065657600080fd5b600080600080608085870312156106b857600080fd5b6106c18561063f565b935060208501359250604085013567ffffffffffffffff808211156106e557600080fd5b818701915087601f8301126106f957600080fd5b81358181111561070b5761070b61067d565b604051601f8201601f19908116603f011681019083821181831017156107335761073361067d565b816040528281528a602084870101111561074c57600080fd5b82602086016020830137600060208483010152809650505050505061077360608601610693565b905092959194509250565b821515815260006020604081840152835180604085015260005b818110156107b457858101830151858201606001528201610798565b818111156107c6576000606083870101525b50601f01601f191692909201606001949350505050565b600080604083850312156107f057600080fd5b6107f98361063f565b946020939093013593505050565b604080825283519082018190526000906020906060840190828701845b828110156108495781516001600160a01b031684529284019290840190600101610824565b5050506001600160a01b039490941692019190915250919050565b6000806040838503121561087757600080fd5b6108808361063f565b915061088e6020840161063f565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156108cf57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fdfea26469706673582212202af1673d42a8a1f8bafc53355975518103dbac2c2829c16ac17794fcf321cdbf64736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "devdoc": {
    "author": "Stefan George - <stefan@gnosis.pm>Richard Meissner - <richard@gnosis.pm>",
    "kind": "dev",
    "methods": {
      "disableModule(address,address)": {
        "details": "Allows to remove a module from the whitelist.      This can only be done via a Safe transaction.",
        "params": {
          "module": "Module to be removed.",
          "prevModule": "Module that pointed to the module to be removed in the linked list"
        }
      },
      "enableModule(address)": {
        "details": "Allows to add a module to the whitelist.      This can only be done via a Safe transaction.",
        "params": {
          "module": "Module to be whitelisted."
        }
      },
      "execTransactionFromModule(address,uint256,bytes,uint8)": {
        "details": "Allows a Module to execute a Safe transaction without any further confirmations.",
        "params": {
          "data": "Data payload of module transaction.",
          "operation": "Operation type of module transaction.",
          "to": "Destination address of module transaction.",
          "value": "Ether value of module transaction."
        }
      },
      "execTransactionFromModuleReturnData(address,uint256,bytes,uint8)": {
        "details": "Allows a Module to execute a Safe transaction without any further confirmations and return data",
        "params": {
          "data": "Data payload of module transaction.",
          "operation": "Operation type of module transaction.",
          "to": "Destination address of module transaction.",
          "value": "Ether value of module transaction."
        }
      },
      "getModulesPaginated(address,uint256)": {
        "details": "Returns array of modules.",
        "params": {
          "pageSize": "Maximum number of modules that should be returned.",
          "start": "Start of the page."
        },
        "returns": {
          "array": "Array of modules.",
          "next": "Start of the next page."
        }
      },
      "isModuleEnabled(address)": {
        "details": "Returns if an module is enabled",
        "returns": {
          "_0": "True if the module is enabled"
        }
      }
    },
    "title": "Module Manager - A contract that manages modules that can execute transactions via this contract",
    "version": 1
  },
  "evm": {
    "bytecode": {
      "functionDebugData": {},
      "generatedSources": [],
      "linkReferences": {},
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x922 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2D9AD53D EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x468721A7 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0x5229073F EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x610B5925 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0xCC2F8452 EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0xE009CFDE EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH2 0x75 CALLDATASIZE PUSH1 0x4 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7A PUSH2 0x9D CALLDATASIZE PUSH1 0x4 PUSH2 0x6A2 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A2 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x86 SWAP3 SWAP2 SWAP1 PUSH2 0x77E JUMP JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x259 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0x399 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x86 SWAP3 SWAP2 SWAP1 PUSH2 0x807 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x107 CALLDATASIZE PUSH1 0x4 PUSH2 0x864 JUMP JUMPDEST PUSH2 0x492 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x141 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO ISZERO JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 EQ DUP1 ISZERO SWAP1 PUSH2 0x171 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x1AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x11D4CC4C0D PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1B7 DUP6 DUP6 DUP6 DUP6 GAS PUSH2 0x5BE JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1EF JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x6895C13664AA4F67288B25D7A21D7AAA34916E355FB9B6FAE0A139A9085BECB8 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0x21B JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xACD2C8702804128FDB0DB2BB49F6D127DD0181C13FD45DBFE16DE0930E2BD375 SWAP1 PUSH1 0x0 SWAP1 LOG2 JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x233 DUP7 DUP7 DUP7 DUP7 PUSH2 0x147 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 MLOAD PUSH1 0x20 RETURNDATASIZE ADD DUP2 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY DUP1 SWAP2 POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x261 PUSH2 0x606 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x283 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x1 EQ ISZERO JUMPDEST PUSH2 0x2B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x4753313031 PUSH1 0xD8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x307 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x23A9989819 PUSH1 0xD9 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH32 0xADA5013122D395BA3C54772283FB069B10426056EF8CA54750CB9BB552A59E7D DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x40 DUP1 DUP8 KECCAK256 DUP1 SLOAD SWAP4 SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP4 DUP5 AND OR SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP1 SWAP6 MSTORE DUP3 SLOAD AND DUP5 OR SWAP1 SWAP2 SSTORE MLOAD SWAP2 DUP3 MSTORE PUSH32 0xECDF3A3EFFEA5783A3C4C2140E677577666428D44ED9D474A0B3A4C9943F8440 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3B6 JUMPI PUSH2 0x3B6 PUSH2 0x67D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3DF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP2 AND JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x422 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x1 EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x42D JUMPI POP DUP5 DUP3 LT JUMPDEST ISZERO PUSH2 0x484 JUMPI DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x445 JUMPI PUSH2 0x445 PUSH2 0x897 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP2 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD AND DUP2 PUSH2 0x47C DUP2 PUSH2 0x8AD JUMP JUMPDEST SWAP3 POP POP PUSH2 0x400 JUMP JUMPDEST SWAP1 DUP4 MSTORE SWAP2 SWAP5 SWAP2 SWAP4 POP SWAP1 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x49A PUSH2 0x606 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4BC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x1 EQ ISZERO JUMPDEST PUSH2 0x4F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x4753313031 PUSH1 0xD8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x544 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x4753313033 PUSH1 0xD8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 DUP8 AND DUP6 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP7 SSTORE SWAP3 DUP5 SWAP1 MSTORE DUP3 SLOAD SWAP1 SWAP5 AND SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xAAB4FA2B463F581B2B32CB3B7E3B704B9CE37CC209B5FB4D77E593ACE4054276 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x5D4 JUMPI PUSH2 0x5D4 PUSH2 0x8D6 JUMP JUMPDEST EQ ISZERO PUSH2 0x5ED JUMPI PUSH1 0x0 DUP1 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP10 DUP7 DELEGATECALL SWAP1 POP PUSH2 0x5FD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 DUP11 DUP8 CALL SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x63D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x4753303331 PUSH1 0xD8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A1 JUMP JUMPDEST JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x676 DUP3 PUSH2 0x63F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x6B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6C1 DUP6 PUSH2 0x63F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x70B JUMPI PUSH2 0x70B PUSH2 0x67D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x733 JUMPI PUSH2 0x733 PUSH2 0x67D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP PUSH2 0x773 PUSH1 0x60 DUP7 ADD PUSH2 0x693 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x40 DUP2 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7B4 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x60 ADD MSTORE DUP3 ADD PUSH2 0x798 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x60 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F9 DUP4 PUSH2 0x63F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x849 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x824 JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x880 DUP4 PUSH2 0x63F JUMP JUMPDEST SWAP2 POP PUSH2 0x88E PUSH1 0x20 DUP5 ADD PUSH2 0x63F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x8CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A CALL PUSH8 0x3D42A8A1F8BAFC53 CALLDATALOAD MSIZE PUSH22 0x518103DBAC2C2829C16AC17794FCF321CDBF64736F6C PUSH4 0x4300080A STOP CALLER ",
      "sourceMap": "374:5660:4:-:0;;;;;;;;;;;;;;;;;;;"
    },
    "deployedBytecode": {
      "functionDebugData": {
        "@disableModule_1304": {
          "entryPoint": 1170,
          "id": 1304,
          "parameterSlots": 2,
          "returnSlots": 0
        },
        "@enableModule_1249": {
          "entryPoint": 601,
          "id": 1249,
          "parameterSlots": 1,
          "returnSlots": 0
        },
        "@execTransactionFromModuleReturnData_1389": {
          "entryPoint": 547,
          "id": 1389,
          "parameterSlots": 4,
          "returnSlots": 2
        },
        "@execTransactionFromModule_1361": {
          "entryPoint": 327,
          "id": 1361,
          "parameterSlots": 4,
          "returnSlots": 1
        },
        "@execute_983": {
          "entryPoint": 1470,
          "id": 983,
          "parameterSlots": 5,
          "returnSlots": 1
        },
        "@getModulesPaginated_1479": {
          "entryPoint": 921,
          "id": 1479,
          "parameterSlots": 2,
          "returnSlots": 2
        },
        "@isModuleEnabled_1411": {
          "entryPoint": 268,
          "id": 1411,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "@requireSelfCall_2065": {
          "entryPoint": 1542,
          "id": 2065,
          "parameterSlots": 0,
          "returnSlots": 0
        },
        "abi_decode_address": {
          "entryPoint": 1599,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "abi_decode_enum_Operation": {
          "entryPoint": 1683,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "abi_decode_tuple_t_address": {
          "entryPoint": 1627,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_decode_tuple_t_addresst_address": {
          "entryPoint": 2148,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 2
        },
        "abi_decode_tuple_t_addresst_uint256": {
          "entryPoint": 2013,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 2
        },
        "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_enum$_Operation_$1997": {
          "entryPoint": 1698,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 4
        },
        "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr_t_address__to_t_array$_t_address_$dyn_memory_ptr_t_address__fromStack_reversed": {
          "entryPoint": 2055,
          "id": null,
          "parameterSlots": 3,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_bool_t_bytes_memory_ptr__to_t_bool_t_bytes_memory_ptr__fromStack_reversed": {
          "entryPoint": 1918,
          "id": null,
          "parameterSlots": 3,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_stringliteral_7295c339622429fbd8194417b44c0a2c972675caa6bf424cf588d99024c608be__to_t_string_memory_ptr__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_stringliteral_b44c13dad2cf265cdd10f957c112238232519dfdaff7245a6824a63db294cf23__to_t_string_memory_ptr__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_stringliteral_b7248be3e8887f14d79f63d350787adcdb5e12b47898ebd6ef2aacf660fc9f17__to_t_string_memory_ptr__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_stringliteral_bfe16ebc2bd5d2fdfe588255b31e648718f9ede037848519acb772cd4f042f12__to_t_string_memory_ptr__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_stringliteral_eab5e6af6960e6bb32b59bfd1d877c9c1728e4c18fa7a83eb40baa1c0f05f61f__to_t_string_memory_ptr__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "increment_t_uint256": {
          "entryPoint": 2221,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "panic_error_0x21": {
          "entryPoint": 2262,
          "id": null,
          "parameterSlots": 0,
          "returnSlots": 0
        },
        "panic_error_0x32": {
          "entryPoint": 2199,
          "id": null,
          "parameterSlots": 0,
          "returnSlots": 0
        },
        "panic_error_0x41": {
          "entryPoint": 1661,
          "id": null,
          "parameterSlots": 0,
          "returnSlots": 0
        }
      },
      "generatedSources": [
        {
          "ast": {
            "nodeType": "YulBlock",
            "src": "0:6364:86",
            "statements": [
              {
                "nodeType": "YulBlock",
                "src": "6:3:86",
                "statements": []
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "63:124:86",
                  "statements": [
                    {
                      "nodeType": "YulAssignment",
                      "src": "73:29:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "95:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "82:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "82:20:86"
                      },
                      "variableNames": [
                        {
                          "name": "value",
                          "nodeType": "YulIdentifier",
                          "src": "73:5:86"
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "165:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "174:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "177:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "167:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "167:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "167:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "124:5:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "135:5:86"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "150:3:86",
                                            "type": "",
                                            "value": "160"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "155:1:86",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "146:3:86"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "146:11:86"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "159:1:86",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "142:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "142:19:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "131:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "131:31:86"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nodeType": "YulIdentifier",
                              "src": "121:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "121:42:86"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "114:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "114:50:86"
                      },
                      "nodeType": "YulIf",
                      "src": "111:70:86"
                    }
                  ]
                },
                "name": "abi_decode_address",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "offset",
                    "nodeType": "YulTypedName",
                    "src": "42:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value",
                    "nodeType": "YulTypedName",
                    "src": "53:5:86",
                    "type": ""
                  }
                ],
                "src": "14:173:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "262:116:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "308:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "317:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "320:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "310:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "310:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "310:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "283:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "292:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "279:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "279:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "304:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "275:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "275:32:86"
                      },
                      "nodeType": "YulIf",
                      "src": "272:52:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "333:39:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "362:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_address",
                          "nodeType": "YulIdentifier",
                          "src": "343:18:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "343:29:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "333:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_address",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "228:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "239:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "251:6:86",
                    "type": ""
                  }
                ],
                "src": "192:186:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "478:92:86",
                  "statements": [
                    {
                      "nodeType": "YulAssignment",
                      "src": "488:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "500:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "511:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "496:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "496:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "488:4:86"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "530:9:86"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "555:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "548:6:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "548:14:86"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "541:6:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "541:22:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "523:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "523:41:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "523:41:86"
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "447:9:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "458:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "469:4:86",
                    "type": ""
                  }
                ],
                "src": "383:187:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "607:95:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "624:1:86",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "631:3:86",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "636:10:86",
                                "type": "",
                                "value": "0x4e487b71"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "627:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "627:20:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "617:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "617:31:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "617:31:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "664:1:86",
                            "type": "",
                            "value": "4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "667:4:86",
                            "type": "",
                            "value": "0x41"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "657:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "657:15:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "657:15:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "688:1:86",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "691:4:86",
                            "type": "",
                            "value": "0x24"
                          }
                        ],
                        "functionName": {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "681:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "681:15:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "681:15:86"
                    }
                  ]
                },
                "name": "panic_error_0x41",
                "nodeType": "YulFunctionDefinition",
                "src": "575:127:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "763:94:86",
                  "statements": [
                    {
                      "nodeType": "YulAssignment",
                      "src": "773:29:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "795:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "782:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "782:20:86"
                      },
                      "variableNames": [
                        {
                          "name": "value",
                          "nodeType": "YulIdentifier",
                          "src": "773:5:86"
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "835:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "844:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "847:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "837:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "837:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "837:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "824:5:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "831:1:86",
                                "type": "",
                                "value": "2"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nodeType": "YulIdentifier",
                              "src": "821:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "821:12:86"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "814:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "814:20:86"
                      },
                      "nodeType": "YulIf",
                      "src": "811:40:86"
                    }
                  ]
                },
                "name": "abi_decode_enum_Operation",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "offset",
                    "nodeType": "YulTypedName",
                    "src": "742:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value",
                    "nodeType": "YulTypedName",
                    "src": "753:5:86",
                    "type": ""
                  }
                ],
                "src": "707:150:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "1006:1015:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "1053:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1062:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1065:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "1055:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1055:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1055:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "1027:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1036:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1023:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1023:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1048:3:86",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1019:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1019:33:86"
                      },
                      "nodeType": "YulIf",
                      "src": "1016:53:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1078:39:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1107:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_address",
                          "nodeType": "YulIdentifier",
                          "src": "1088:18:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1088:29:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "1078:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1126:42:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1153:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1164:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1149:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1149:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "1136:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1136:32:86"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "1126:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1177:46:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1208:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1219:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1204:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1204:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "1191:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1191:32:86"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1181:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1232:28:86",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1242:18:86",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      },
                      "variables": [
                        {
                          "name": "_1",
                          "nodeType": "YulTypedName",
                          "src": "1236:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "1287:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1296:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1299:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "1289:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1289:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1289:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1275:6:86"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "1283:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "1272:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1272:14:86"
                      },
                      "nodeType": "YulIf",
                      "src": "1269:34:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1312:32:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1326:9:86"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1337:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1322:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1322:22:86"
                      },
                      "variables": [
                        {
                          "name": "_2",
                          "nodeType": "YulTypedName",
                          "src": "1316:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "1392:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1401:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1404:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "1394:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1394:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1394:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1371:2:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1375:4:86",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1367:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1367:13:86"
                              },
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "1382:7:86"
                              }
                            ],
                            "functionName": {
                              "name": "slt",
                              "nodeType": "YulIdentifier",
                              "src": "1363:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1363:27:86"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "1356:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1356:35:86"
                      },
                      "nodeType": "YulIf",
                      "src": "1353:55:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1417:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "1440:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "1427:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1427:16:86"
                      },
                      "variables": [
                        {
                          "name": "_3",
                          "nodeType": "YulTypedName",
                          "src": "1421:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "1466:22:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "panic_error_0x41",
                                "nodeType": "YulIdentifier",
                                "src": "1468:16:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1468:18:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1468:18:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "1458:2:86"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "1462:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "1455:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1455:10:86"
                      },
                      "nodeType": "YulIf",
                      "src": "1452:36:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1497:17:86",
                      "value": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1511:2:86",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "1507:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1507:7:86"
                      },
                      "variables": [
                        {
                          "name": "_4",
                          "nodeType": "YulTypedName",
                          "src": "1501:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1523:23:86",
                      "value": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1543:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "1537:5:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1537:9:86"
                      },
                      "variables": [
                        {
                          "name": "memPtr",
                          "nodeType": "YulTypedName",
                          "src": "1527:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1555:71:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "1577:6:86"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1601:2:86"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1605:4:86",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1597:3:86"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1597:13:86"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1612:2:86"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1593:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1593:22:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1617:2:86",
                                    "type": "",
                                    "value": "63"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1589:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1589:31:86"
                              },
                              {
                                "name": "_4",
                                "nodeType": "YulIdentifier",
                                "src": "1622:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1585:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1585:40:86"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1573:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1573:53:86"
                      },
                      "variables": [
                        {
                          "name": "newFreePtr",
                          "nodeType": "YulTypedName",
                          "src": "1559:10:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "1685:22:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "panic_error_0x41",
                                "nodeType": "YulIdentifier",
                                "src": "1687:16:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1687:18:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1687:18:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "newFreePtr",
                                "nodeType": "YulIdentifier",
                                "src": "1644:10:86"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1656:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "gt",
                              "nodeType": "YulIdentifier",
                              "src": "1641:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1641:18:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "newFreePtr",
                                "nodeType": "YulIdentifier",
                                "src": "1664:10:86"
                              },
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1676:6:86"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nodeType": "YulIdentifier",
                              "src": "1661:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1661:22:86"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nodeType": "YulIdentifier",
                          "src": "1638:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1638:46:86"
                      },
                      "nodeType": "YulIf",
                      "src": "1635:72:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1723:2:86",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "1727:10:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1716:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1716:22:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1716:22:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "1754:6:86"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "1762:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1747:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1747:18:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1747:18:86"
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "1811:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1820:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1823:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "1813:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1813:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "1813:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1788:2:86"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1792:2:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1784:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1784:11:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1797:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1780:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1780:20:86"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1802:7:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "1777:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1777:33:86"
                      },
                      "nodeType": "YulIf",
                      "src": "1774:53:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1853:6:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1861:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1849:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1849:15:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "1870:2:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1874:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1866:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1866:11:86"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "1879:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldatacopy",
                          "nodeType": "YulIdentifier",
                          "src": "1836:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1836:46:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1836:46:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1906:6:86"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1914:2:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1902:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1902:15:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1919:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1898:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1898:24:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1924:1:86",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1891:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1891:35:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1891:35:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1935:16:86",
                      "value": {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1945:6:86"
                      },
                      "variableNames": [
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "1935:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1960:55:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2000:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2011:2:86",
                                "type": "",
                                "value": "96"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1996:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1996:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_enum_Operation",
                          "nodeType": "YulIdentifier",
                          "src": "1970:25:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1970:45:86"
                      },
                      "variableNames": [
                        {
                          "name": "value3",
                          "nodeType": "YulIdentifier",
                          "src": "1960:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_enum$_Operation_$1997",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "948:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "959:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "971:6:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "979:6:86",
                    "type": ""
                  },
                  {
                    "name": "value2",
                    "nodeType": "YulTypedName",
                    "src": "987:6:86",
                    "type": ""
                  },
                  {
                    "name": "value3",
                    "nodeType": "YulTypedName",
                    "src": "995:6:86",
                    "type": ""
                  }
                ],
                "src": "862:1159:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "2167:535:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2184:9:86"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2209:6:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2202:6:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2202:14:86"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "2195:6:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2195:22:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "2177:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2177:41:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "2177:41:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2227:12:86",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2237:2:86",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "_1",
                          "nodeType": "YulTypedName",
                          "src": "2231:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2259:9:86"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "2270:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2255:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2255:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2275:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "2248:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2248:30:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "2248:30:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2287:27:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "2307:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "2301:5:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2301:13:86"
                      },
                      "variables": [
                        {
                          "name": "length",
                          "nodeType": "YulTypedName",
                          "src": "2291:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2334:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2345:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2330:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2330:18:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2350:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "2323:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2323:34:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "2323:34:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2366:10:86",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2375:1:86",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "i",
                          "nodeType": "YulTypedName",
                          "src": "2370:1:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2435:90:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "headStart",
                                          "nodeType": "YulIdentifier",
                                          "src": "2464:9:86"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2475:1:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2460:3:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2460:17:86"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2479:2:86",
                                      "type": "",
                                      "value": "96"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "2456:3:86"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2456:26:86"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value1",
                                              "nodeType": "YulIdentifier",
                                              "src": "2498:6:86"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "2506:1:86"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2494:3:86"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2494:14:86"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2510:2:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2490:3:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2490:23:86"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "2484:5:86"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2484:30:86"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "2449:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2449:66:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "2449:66:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "2396:1:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2399:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "2393:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2393:13:86"
                      },
                      "nodeType": "YulForLoop",
                      "post": {
                        "nodeType": "YulBlock",
                        "src": "2407:19:86",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "2409:15:86",
                            "value": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "2418:1:86"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2421:2:86"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "2414:3:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2414:10:86"
                            },
                            "variableNames": [
                              {
                                "name": "i",
                                "nodeType": "YulIdentifier",
                                "src": "2409:1:86"
                              }
                            ]
                          }
                        ]
                      },
                      "pre": {
                        "nodeType": "YulBlock",
                        "src": "2389:3:86",
                        "statements": []
                      },
                      "src": "2385:140:86"
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2559:66:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "headStart",
                                          "nodeType": "YulIdentifier",
                                          "src": "2588:9:86"
                                        },
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "2599:6:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2584:3:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2584:22:86"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2608:2:86",
                                      "type": "",
                                      "value": "96"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "2580:3:86"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2580:31:86"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2613:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "2573:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2573:42:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "2573:42:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "2540:1:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2543:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "2537:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2537:13:86"
                      },
                      "nodeType": "YulIf",
                      "src": "2534:91:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2634:62:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2650:9:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2669:6:86"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2677:2:86",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2665:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2665:15:86"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2686:2:86",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "2682:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2682:7:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "2661:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2661:29:86"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2646:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2646:45:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2693:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2642:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2642:54:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "2634:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_bool_t_bytes_memory_ptr__to_t_bool_t_bytes_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "2128:9:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "2139:6:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "2147:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "2158:4:86",
                    "type": ""
                  }
                ],
                "src": "2026:676:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "2794:167:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2840:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2849:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2852:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "2842:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2842:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "2842:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "2815:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2824:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "2811:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2811:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2836:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "2807:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2807:32:86"
                      },
                      "nodeType": "YulIf",
                      "src": "2804:52:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2865:39:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2894:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_address",
                          "nodeType": "YulIdentifier",
                          "src": "2875:18:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2875:29:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "2865:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2913:42:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2940:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2951:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2936:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2936:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "2923:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2923:32:86"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "2913:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_addresst_uint256",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "2752:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "2763:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "2775:6:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "2783:6:86",
                    "type": ""
                  }
                ],
                "src": "2707:254:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "3145:578:86",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3155:32:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3173:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3184:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3169:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3169:18:86"
                      },
                      "variables": [
                        {
                          "name": "tail_1",
                          "nodeType": "YulTypedName",
                          "src": "3159:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3203:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3214:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "3196:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3196:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "3196:21:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3226:17:86",
                      "value": {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "3237:6:86"
                      },
                      "variables": [
                        {
                          "name": "pos",
                          "nodeType": "YulTypedName",
                          "src": "3230:3:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3252:27:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "3272:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "3266:5:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3266:13:86"
                      },
                      "variables": [
                        {
                          "name": "length",
                          "nodeType": "YulTypedName",
                          "src": "3256:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "3295:6:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "3303:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "3288:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3288:22:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "3288:22:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3319:25:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3330:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3341:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3326:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3326:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "pos",
                          "nodeType": "YulIdentifier",
                          "src": "3319:3:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3353:14:86",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3363:4:86",
                        "type": "",
                        "value": "0x20"
                      },
                      "variables": [
                        {
                          "name": "_1",
                          "nodeType": "YulTypedName",
                          "src": "3357:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3376:29:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "3394:6:86"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "3402:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3390:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3390:15:86"
                      },
                      "variables": [
                        {
                          "name": "srcPtr",
                          "nodeType": "YulTypedName",
                          "src": "3380:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3414:10:86",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3423:1:86",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "i",
                          "nodeType": "YulTypedName",
                          "src": "3418:1:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3482:146:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "3503:3:86"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "3518:6:86"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "3512:5:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3512:13:86"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3535:3:86",
                                              "type": "",
                                              "value": "160"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3540:1:86",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "3531:3:86"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3531:11:86"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3544:1:86",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "3527:3:86"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3527:19:86"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "and",
                                    "nodeType": "YulIdentifier",
                                    "src": "3508:3:86"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "3508:39:86"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "3496:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3496:52:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3496:52:86"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "3561:19:86",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "3572:3:86"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3577:2:86"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "3568:3:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3568:12:86"
                            },
                            "variableNames": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "3561:3:86"
                              }
                            ]
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "3593:25:86",
                            "value": {
                              "arguments": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "3607:6:86"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3615:2:86"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "3603:3:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3603:15:86"
                            },
                            "variableNames": [
                              {
                                "name": "srcPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3593:6:86"
                              }
                            ]
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "3444:1:86"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "3447:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "3441:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3441:13:86"
                      },
                      "nodeType": "YulForLoop",
                      "post": {
                        "nodeType": "YulBlock",
                        "src": "3455:18:86",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "3457:14:86",
                            "value": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "3466:1:86"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3469:1:86",
                                  "type": "",
                                  "value": "1"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "3462:3:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3462:9:86"
                            },
                            "variableNames": [
                              {
                                "name": "i",
                                "nodeType": "YulIdentifier",
                                "src": "3457:1:86"
                              }
                            ]
                          }
                        ]
                      },
                      "pre": {
                        "nodeType": "YulBlock",
                        "src": "3437:3:86",
                        "statements": []
                      },
                      "src": "3433:195:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3637:11:86",
                      "value": {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3645:3:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "3637:4:86"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3668:9:86"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "3679:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3664:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3664:18:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "3688:6:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3704:3:86",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3709:1:86",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3700:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3700:11:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3713:1:86",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "3696:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3696:19:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "3684:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3684:32:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "3657:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3657:60:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "3657:60:86"
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr_t_address__to_t_array$_t_address_$dyn_memory_ptr_t_address__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "3106:9:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "3117:6:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "3125:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "3136:4:86",
                    "type": ""
                  }
                ],
                "src": "2966:757:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "3815:173:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3861:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3870:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3873:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "3863:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3863:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3863:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "3836:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3845:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "3832:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3832:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3857:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "3828:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3828:32:86"
                      },
                      "nodeType": "YulIf",
                      "src": "3825:52:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3886:39:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3915:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_address",
                          "nodeType": "YulIdentifier",
                          "src": "3896:18:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3896:29:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "3886:6:86"
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3934:48:86",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3967:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3978:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3963:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3963:18:86"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_address",
                          "nodeType": "YulIdentifier",
                          "src": "3944:18:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3944:38:86"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "3934:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_addresst_address",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "3773:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "3784:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "3796:6:86",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "3804:6:86",
                    "type": ""
                  }
                ],
                "src": "3728:260:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "4167:154:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4184:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4195:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4177:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4177:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4177:21:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4218:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4229:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4214:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4214:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4234:1:86",
                            "type": "",
                            "value": "5"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4207:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4207:29:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4207:29:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4256:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4267:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4252:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4252:18:86"
                          },
                          {
                            "hexValue": "4753313034",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "4272:7:86",
                            "type": "",
                            "value": "GS104"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4245:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4245:35:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4245:35:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "4289:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4301:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4312:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4297:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4297:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "4289:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_stringliteral_b44c13dad2cf265cdd10f957c112238232519dfdaff7245a6824a63db294cf23__to_t_string_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "4144:9:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "4158:4:86",
                    "type": ""
                  }
                ],
                "src": "3993:328:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "4500:154:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4517:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4528:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4510:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4510:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4510:21:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4551:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4562:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4547:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4547:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4567:1:86",
                            "type": "",
                            "value": "5"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4540:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4540:29:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4540:29:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4589:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4600:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4585:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4585:18:86"
                          },
                          {
                            "hexValue": "4753313031",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "4605:7:86",
                            "type": "",
                            "value": "GS101"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4578:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4578:35:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4578:35:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "4622:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4634:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4645:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4630:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4630:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "4622:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_stringliteral_eab5e6af6960e6bb32b59bfd1d877c9c1728e4c18fa7a83eb40baa1c0f05f61f__to_t_string_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "4477:9:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "4491:4:86",
                    "type": ""
                  }
                ],
                "src": "4326:328:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "4833:154:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4850:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4861:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4843:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4843:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4843:21:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4884:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4895:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4880:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4880:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4900:1:86",
                            "type": "",
                            "value": "5"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4873:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4873:29:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4873:29:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4922:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4933:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4918:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4918:18:86"
                          },
                          {
                            "hexValue": "4753313032",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "4938:7:86",
                            "type": "",
                            "value": "GS102"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "4911:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4911:35:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "4911:35:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "4955:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4967:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4978:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4963:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4963:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "4955:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_stringliteral_bfe16ebc2bd5d2fdfe588255b31e648718f9ede037848519acb772cd4f042f12__to_t_string_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "4810:9:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "4824:4:86",
                    "type": ""
                  }
                ],
                "src": "4659:328:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "5093:102:86",
                  "statements": [
                    {
                      "nodeType": "YulAssignment",
                      "src": "5103:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5115:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5126:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5111:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5111:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "5103:4:86"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5145:9:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "5160:6:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5176:3:86",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5181:1:86",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "5172:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5172:11:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5185:1:86",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "5168:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5168:19:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "5156:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5156:32:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5138:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5138:51:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5138:51:86"
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "5062:9:86",
                    "type": ""
                  },
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "5073:6:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "5084:4:86",
                    "type": ""
                  }
                ],
                "src": "4992:203:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "5232:95:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5249:1:86",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5256:3:86",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5261:10:86",
                                "type": "",
                                "value": "0x4e487b71"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "5252:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5252:20:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5242:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5242:31:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5242:31:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5289:1:86",
                            "type": "",
                            "value": "4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5292:4:86",
                            "type": "",
                            "value": "0x32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5282:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5282:15:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5282:15:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5313:1:86",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5316:4:86",
                            "type": "",
                            "value": "0x24"
                          }
                        ],
                        "functionName": {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "5306:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5306:15:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5306:15:86"
                    }
                  ]
                },
                "name": "panic_error_0x32",
                "nodeType": "YulFunctionDefinition",
                "src": "5200:127:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "5379:185:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "5418:111:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5439:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5446:3:86",
                                      "type": "",
                                      "value": "224"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5451:10:86",
                                      "type": "",
                                      "value": "0x4e487b71"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "shl",
                                    "nodeType": "YulIdentifier",
                                    "src": "5442:3:86"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5442:20:86"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "5432:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5432:31:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "5432:31:86"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5483:1:86",
                                  "type": "",
                                  "value": "4"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5486:4:86",
                                  "type": "",
                                  "value": "0x11"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "5476:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5476:15:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "5476:15:86"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5511:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5514:4:86",
                                  "type": "",
                                  "value": "0x24"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "5504:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5504:15:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "5504:15:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "5395:5:86"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5406:1:86",
                                "type": "",
                                "value": "0"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "5402:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5402:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "5392:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5392:17:86"
                      },
                      "nodeType": "YulIf",
                      "src": "5389:140:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "5538:20:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "5549:5:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5556:1:86",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5545:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5545:13:86"
                      },
                      "variableNames": [
                        {
                          "name": "ret",
                          "nodeType": "YulIdentifier",
                          "src": "5538:3:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "increment_t_uint256",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "value",
                    "nodeType": "YulTypedName",
                    "src": "5361:5:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "ret",
                    "nodeType": "YulTypedName",
                    "src": "5371:3:86",
                    "type": ""
                  }
                ],
                "src": "5332:232:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "5743:154:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5760:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5771:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5753:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5753:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5753:21:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "5794:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5805:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "5790:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5790:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5810:1:86",
                            "type": "",
                            "value": "5"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5783:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5783:29:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5783:29:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "5832:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5843:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "5828:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5828:18:86"
                          },
                          {
                            "hexValue": "4753313033",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "5848:7:86",
                            "type": "",
                            "value": "GS103"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5821:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5821:35:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5821:35:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "5865:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5877:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5888:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5873:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5873:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "5865:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_stringliteral_7295c339622429fbd8194417b44c0a2c972675caa6bf424cf588d99024c608be__to_t_string_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "5720:9:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "5734:4:86",
                    "type": ""
                  }
                ],
                "src": "5569:328:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "5934:95:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5951:1:86",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5958:3:86",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5963:10:86",
                                "type": "",
                                "value": "0x4e487b71"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "5954:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5954:20:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5944:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5944:31:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5944:31:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5991:1:86",
                            "type": "",
                            "value": "4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5994:4:86",
                            "type": "",
                            "value": "0x21"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "5984:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5984:15:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "5984:15:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6015:1:86",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6018:4:86",
                            "type": "",
                            "value": "0x24"
                          }
                        ],
                        "functionName": {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "6008:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6008:15:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6008:15:86"
                    }
                  ]
                },
                "name": "panic_error_0x21",
                "nodeType": "YulFunctionDefinition",
                "src": "5902:127:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "6208:154:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6225:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6236:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "6218:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6218:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6218:21:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "6259:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6270:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6255:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6255:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6275:1:86",
                            "type": "",
                            "value": "5"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "6248:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6248:29:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6248:29:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "6297:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6308:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6293:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6293:18:86"
                          },
                          {
                            "hexValue": "4753303331",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "6313:7:86",
                            "type": "",
                            "value": "GS031"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "6286:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6286:35:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "6286:35:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "6330:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6342:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6353:2:86",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6338:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6338:18:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "6330:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_stringliteral_b7248be3e8887f14d79f63d350787adcdb5e12b47898ebd6ef2aacf660fc9f17__to_t_string_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "6185:9:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "6199:4:86",
                    "type": ""
                  }
                ],
                "src": "6034:328:86"
              }
            ]
          },
          "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_enum_Operation(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(lt(value, 2)) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_enum$_Operation_$1997(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value2 := memPtr\n        value3 := abi_decode_enum_Operation(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_bool_t_bytes_memory_ptr__to_t_bool_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, iszero(iszero(value0)))\n        let _1 := 32\n        mstore(add(headStart, _1), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 96), mload(add(add(value1, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 96), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr_t_address__to_t_array$_t_address_$dyn_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 64)\n        mstore(headStart, 64)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 96)\n        let _1 := 0x20\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n        mstore(add(headStart, _1), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_b44c13dad2cf265cdd10f957c112238232519dfdaff7245a6824a63db294cf23__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 5)\n        mstore(add(headStart, 64), \"GS104\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_eab5e6af6960e6bb32b59bfd1d877c9c1728e4c18fa7a83eb40baa1c0f05f61f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 5)\n        mstore(add(headStart, 64), \"GS101\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_bfe16ebc2bd5d2fdfe588255b31e648718f9ede037848519acb772cd4f042f12__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 5)\n        mstore(add(headStart, 64), \"GS102\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_stringliteral_7295c339622429fbd8194417b44c0a2c972675caa6bf424cf588d99024c608be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 5)\n        mstore(add(headStart, 64), \"GS103\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_b7248be3e8887f14d79f63d350787adcdb5e12b47898ebd6ef2aacf660fc9f17__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 5)\n        mstore(add(headStart, 64), \"GS031\")\n        tail := add(headStart, 96)\n    }\n}",
          "id": 86,
          "language": "Yul",
          "name": "#utility.yul"
        }
      ],
      "immutableReferences": {},
      "linkReferences": {},
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2D9AD53D EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x468721A7 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0x5229073F EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x610B5925 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0xCC2F8452 EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0xE009CFDE EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH2 0x75 CALLDATASIZE PUSH1 0x4 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7A PUSH2 0x9D CALLDATASIZE PUSH1 0x4 PUSH2 0x6A2 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A2 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x86 SWAP3 SWAP2 SWAP1 PUSH2 0x77E JUMP JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x259 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0x399 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x86 SWAP3 SWAP2 SWAP1 PUSH2 0x807 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x107 CALLDATASIZE PUSH1 0x4 PUSH2 0x864 JUMP JUMPDEST PUSH2 0x492 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x141 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO ISZERO JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 EQ DUP1 ISZERO SWAP1 PUSH2 0x171 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x1AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x11D4CC4C0D PUSH1 0xDA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1B7 DUP6 DUP6 DUP6 DUP6 GAS PUSH2 0x5BE JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1EF JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x6895C13664AA4F67288B25D7A21D7AAA34916E355FB9B6FAE0A139A9085BECB8 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0x21B JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xACD2C8702804128FDB0DB2BB49F6D127DD0181C13FD45DBFE16DE0930E2BD375 SWAP1 PUSH1 0x0 SWAP1 LOG2 JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x233 DUP7 DUP7 DUP7 DUP7 PUSH2 0x147 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 MLOAD PUSH1 0x20 RETURNDATASIZE ADD DUP2 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP2 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY DUP1 SWAP2 POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x261 PUSH2 0x606 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x283 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x1 EQ ISZERO JUMPDEST PUSH2 0x2B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x4753313031 PUSH1 0xD8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x307 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x23A9989819 PUSH1 0xD9 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH32 0xADA5013122D395BA3C54772283FB069B10426056EF8CA54750CB9BB552A59E7D DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x40 DUP1 DUP8 KECCAK256 DUP1 SLOAD SWAP4 SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP4 DUP5 AND OR SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP1 SWAP6 MSTORE DUP3 SLOAD AND DUP5 OR SWAP1 SWAP2 SSTORE MLOAD SWAP2 DUP3 MSTORE PUSH32 0xECDF3A3EFFEA5783A3C4C2140E677577666428D44ED9D474A0B3A4C9943F8440 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3B6 JUMPI PUSH2 0x3B6 PUSH2 0x67D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3DF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP2 AND JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x422 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x1 EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x42D JUMPI POP DUP5 DUP3 LT JUMPDEST ISZERO PUSH2 0x484 JUMPI DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x445 JUMPI PUSH2 0x445 PUSH2 0x897 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP2 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD AND DUP2 PUSH2 0x47C DUP2 PUSH2 0x8AD JUMP JUMPDEST SWAP3 POP POP PUSH2 0x400 JUMP JUMPDEST SWAP1 DUP4 MSTORE SWAP2 SWAP5 SWAP2 SWAP4 POP SWAP1 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x49A PUSH2 0x606 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4BC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x1 EQ ISZERO JUMPDEST PUSH2 0x4F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x4753313031 PUSH1 0xD8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x544 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x4753313033 PUSH1 0xD8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 DUP8 AND DUP6 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP7 SSTORE SWAP3 DUP5 SWAP1 MSTORE DUP3 SLOAD SWAP1 SWAP5 AND SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xAAB4FA2B463F581B2B32CB3B7E3B704B9CE37CC209B5FB4D77E593ACE4054276 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x5D4 JUMPI PUSH2 0x5D4 PUSH2 0x8D6 JUMP JUMPDEST EQ ISZERO PUSH2 0x5ED JUMPI PUSH1 0x0 DUP1 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP10 DUP7 DELEGATECALL SWAP1 POP PUSH2 0x5FD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 MLOAD PUSH1 0x20 DUP8 ADD DUP9 DUP11 DUP8 CALL SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x63D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5 PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0x4753303331 PUSH1 0xD8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A1 JUMP JUMPDEST JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x676 DUP3 PUSH2 0x63F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x6B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6C1 DUP6 PUSH2 0x63F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x70B JUMPI PUSH2 0x70B PUSH2 0x67D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x733 JUMPI PUSH2 0x733 PUSH2 0x67D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP PUSH2 0x773 PUSH1 0x60 DUP7 ADD PUSH2 0x693 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x40 DUP2 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7B4 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x60 ADD MSTORE DUP3 ADD PUSH2 0x798 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x60 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F9 DUP4 PUSH2 0x63F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x849 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x824 JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x880 DUP4 PUSH2 0x63F JUMP JUMPDEST SWAP2 POP PUSH2 0x88E PUSH1 0x20 DUP5 ADD PUSH2 0x63F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x8CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A CALL PUSH8 0x3D42A8A1F8BAFC53 CALLDATALOAD MSIZE PUSH22 0x518103DBAC2C2829C16AC17794FCF321CDBF64736F6C PUSH4 0x4300080A STOP CALLER ",
      "sourceMap": "374:5660:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4861:151;;;;;;:::i;:::-;;:::i;:::-;;;548:14:86;;541:22;523:41;;511:2;496:18;4861:151:4;;;;;;;;2868:586;;;;;;:::i;:::-;;:::i;3805:959::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1363:426::-;;;;;;:::i;:::-;;:::i;:::-;;5257:775;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2109:423::-;;;;;;:::i;:::-;;:::i;4861:151::-;4923:4;692:3;-1:-1:-1;;;;;4946:26:4;;;;;;:59;;-1:-1:-1;;;;;;4976:15:4;;;5003:1;4976:15;;;;;;;;;;;;:29;;4946:59;4939:66;4861:151;-1:-1:-1;;4861:151:4:o;2868:586::-;3037:12;3118:10;692:3;3118:30;;;;:67;;-1:-1:-1;3160:10:4;3183:1;3152:19;;;;;;;;;;;-1:-1:-1;;;;;3152:19:4;:33;;3118:67;3110:85;;;;-1:-1:-1;;;3110:85:4;;4195:2:86;3110:85:4;;;4177:21:86;4234:1;4214:18;;;4207:29;-1:-1:-1;;;4252:18:86;;;4245:35;4297:18;;3110:85:4;;;;;;;;;3277:46;3285:2;3289:5;3296:4;3302:9;3313;3277:7;:46::i;:::-;3267:56;;3337:7;3333:114;;;3351:38;;3378:10;;3351:38;;;;;3333:114;;;3409:38;;3436:10;;3409:38;;;;;3333:114;2868:586;;;;;;:::o;3805:959::-;3976:12;3990:23;4035:53;4061:2;4065:5;4072:4;4078:9;4035:25;:53::i;:::-;4025:63;;4235:4;4229:11;4477:4;4459:16;4455:27;4450:3;4446:37;4440:4;4433:51;4539:16;4534:3;4527:29;4633:16;4630:1;4623:4;4618:3;4614:14;4599:51;4745:3;4731:17;;;3805:959;;;;;;;:::o;1363:426::-;440:17:9;:15;:17::i;:::-;-1:-1:-1;;;;;1491:20:4;::::1;::::0;;::::1;::::0;:50:::1;;-1:-1:-1::0;;;;;;1515:26:4;::::1;692:3;1515:26;;1491:50;1483:68;;;::::0;-1:-1:-1;;;1483:68:4;;4528:2:86;1483:68:4::1;::::0;::::1;4510:21:86::0;4567:1;4547:18;;;4540:29;-1:-1:-1;;;4585:18:86;;;4578:35;4630:18;;1483:68:4::1;4326:328:86::0;1483:68:4::1;-1:-1:-1::0;;;;;1610:15:4;;::::1;1637:1;1610:15:::0;;;::::1;::::0;;;;;;;::::1;:29:::0;1602:47:::1;;;::::0;-1:-1:-1;;;1602:47:4;;4861:2:86;1602:47:4::1;::::0;::::1;4843:21:86::0;4900:1;4880:18;;;4873:29;-1:-1:-1;;;4918:18:86;;;4911:35;4963:18;;1602:47:4::1;4659:328:86::0;1602:47:4::1;1677:7;:25;::::0;;;;;;-1:-1:-1;;;;;1659:15:4;;::::1;::::0;;;1677:25;1659:15;;;:43;;1677:25;;;::::1;-1:-1:-1::0;;;;;;1659:43:4;;::::1;;::::0;;;-1:-1:-1;1712:25:4;;;:34;;::::1;::::0;::::1;::::0;;;1761:21;5138:51:86;;;1761:21:4::1;::::0;5111:18:86;1761:21:4::1;;;;;;;1363:426:::0;:::o;5257:775::-;5342:22;5366:12;5453:8;5439:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5439:23:4;-1:-1:-1;;;;;;5563:14:4;;;5506:19;5563:14;;;;;;;;;;;5431:31;;-1:-1:-1;5506:19:4;5563:14;5587:239;-1:-1:-1;;;;;5594:29:4;;;;;;:66;;-1:-1:-1;;;;;;5627:33:4;;692:3;5627:33;;5594:66;:92;;;;;5678:8;5664:11;:22;5594:92;5587:239;;;5723:13;5702:5;5708:11;5702:18;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5702:34:4;;;:18;;;;;;;;;;:34;;;;5766:22;;;:7;:22;;;;;;;;;;;;;5802:13;;;;:::i;:::-;;;;5587:239;;;5990:26;;;5997:5;;5842:13;;-1:-1:-1;5257:775:4;;-1:-1:-1;;5257:775:4:o;2109:423::-;440:17:9;:15;:17::i;:::-;-1:-1:-1;;;;;2286:20:4;::::1;::::0;;::::1;::::0;:50:::1;;-1:-1:-1::0;;;;;;2310:26:4;::::1;692:3;2310:26;;2286:50;2278:68;;;::::0;-1:-1:-1;;;2278:68:4;;4528:2:86;2278:68:4::1;::::0;::::1;4510:21:86::0;4567:1;4547:18;;;4540:29;-1:-1:-1;;;4585:18:86;;;4578:35;4630:18;;2278:68:4::1;4326:328:86::0;2278:68:4::1;-1:-1:-1::0;;;;;2364:19:4;;::::1;:7;:19:::0;;;::::1;::::0;;;;;;;;::::1;:29:::0;;::::1;;2356:47;;;::::0;-1:-1:-1;;;2356:47:4;;5771:2:86;2356:47:4::1;::::0;::::1;5753:21:86::0;5810:1;5790:18;;;5783:29;-1:-1:-1;;;5828:18:86;;;5821:35;5873:18;;2356:47:4::1;5569:328:86::0;2356:47:4::1;-1:-1:-1::0;;;;;2435:15:4;;::::1;:7;:15:::0;;;::::1;::::0;;;;;;;;;2413:19;;::::1;::::0;;;;;:37;;2435:15;;;::::1;-1:-1:-1::0;;;;;;2413:37:4;;::::1;;::::0;;;2460:15;;;;:28;;;;::::1;::::0;;;2503:22;;5138:51:86;;;2503:22:4::1;::::0;5111:18:86;2503:22:4::1;;;;;;;2109:423:::0;;:::o;242:639:1:-;410:12;451:27;438:9;:40;;;;;;;;:::i;:::-;;434:441;;;649:1;646;639:4;633:11;626:4;620;616:15;612:2;605:5;592:59;581:70;;434:441;;;849:1;846;839:4;833:11;826:4;820;816:15;809:5;805:2;798:5;793:58;782:69;;434:441;242:639;;;;;;;:::o;231:102:9:-;289:10;311:4;289:27;281:45;;;;-1:-1:-1;;;281:45:9;;6236:2:86;281:45:9;;;6218:21:86;6275:1;6255:18;;;6248:29;-1:-1:-1;;;6293:18:86;;;6286:35;6338:18;;281:45:9;6034:328:86;281:45:9;231:102::o;14:173:86:-;82:20;;-1:-1:-1;;;;;131:31:86;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:86:o;575:127::-;636:10;631:3;627:20;624:1;617:31;667:4;664:1;657:15;691:4;688:1;681:15;707:150;782:20;;831:1;821:12;;811:40;;847:1;844;837:12;862:1159;971:6;979;987;995;1048:3;1036:9;1027:7;1023:23;1019:33;1016:53;;;1065:1;1062;1055:12;1016:53;1088:29;1107:9;1088:29;:::i;:::-;1078:39;;1164:2;1153:9;1149:18;1136:32;1126:42;;1219:2;1208:9;1204:18;1191:32;1242:18;1283:2;1275:6;1272:14;1269:34;;;1299:1;1296;1289:12;1269:34;1337:6;1326:9;1322:22;1312:32;;1382:7;1375:4;1371:2;1367:13;1363:27;1353:55;;1404:1;1401;1394:12;1353:55;1440:2;1427:16;1462:2;1458;1455:10;1452:36;;;1468:18;;:::i;:::-;1543:2;1537:9;1511:2;1597:13;;-1:-1:-1;;1593:22:86;;;1617:2;1589:31;1585:40;1573:53;;;1641:18;;;1661:22;;;1638:46;1635:72;;;1687:18;;:::i;:::-;1727:10;1723:2;1716:22;1762:2;1754:6;1747:18;1802:7;1797:2;1792;1788;1784:11;1780:20;1777:33;1774:53;;;1823:1;1820;1813:12;1774:53;1879:2;1874;1870;1866:11;1861:2;1853:6;1849:15;1836:46;1924:1;1919:2;1914;1906:6;1902:15;1898:24;1891:35;1945:6;1935:16;;;;;;;1970:45;2011:2;2000:9;1996:18;1970:45;:::i;:::-;1960:55;;862:1159;;;;;;;:::o;2026:676::-;2209:6;2202:14;2195:22;2184:9;2177:41;2158:4;2237:2;2275;2270;2259:9;2255:18;2248:30;2307:6;2301:13;2350:6;2345:2;2334:9;2330:18;2323:34;2375:1;2385:140;2399:6;2396:1;2393:13;2385:140;;;2494:14;;;2490:23;;2484:30;2460:17;;;2479:2;2456:26;2449:66;2414:10;;2385:140;;;2543:6;2540:1;2537:13;2534:91;;;2613:1;2608:2;2599:6;2588:9;2584:22;2580:31;2573:42;2534:91;-1:-1:-1;2686:2:86;2665:15;-1:-1:-1;;2661:29:86;2646:45;;;;2693:2;2642:54;;2026:676;-1:-1:-1;;;;2026:676:86:o;2707:254::-;2775:6;2783;2836:2;2824:9;2815:7;2811:23;2807:32;2804:52;;;2852:1;2849;2842:12;2804:52;2875:29;2894:9;2875:29;:::i;:::-;2865:39;2951:2;2936:18;;;;2923:32;;-1:-1:-1;;;2707:254:86:o;2966:757::-;3184:2;3196:21;;;3266:13;;3169:18;;;3288:22;;;3136:4;;3363;;3341:2;3326:18;;;3390:15;;;3136:4;3433:195;3447:6;3444:1;3441:13;3433:195;;;3512:13;;-1:-1:-1;;;;;3508:39:86;3496:52;;3568:12;;;;3603:15;;;;3544:1;3462:9;3433:195;;;-1:-1:-1;;;;;;;;3684:32:86;;;;3664:18;;3657:60;;;;-1:-1:-1;3645:3:86;2966:757;-1:-1:-1;2966:757:86:o;3728:260::-;3796:6;3804;3857:2;3845:9;3836:7;3832:23;3828:32;3825:52;;;3873:1;3870;3863:12;3825:52;3896:29;3915:9;3896:29;:::i;:::-;3886:39;;3944:38;3978:2;3967:9;3963:18;3944:38;:::i;:::-;3934:48;;3728:260;;;;;:::o;5200:127::-;5261:10;5256:3;5252:20;5249:1;5242:31;5292:4;5289:1;5282:15;5316:4;5313:1;5306:15;5332:232;5371:3;-1:-1:-1;;5392:17:86;;5389:140;;;5451:10;5446:3;5442:20;5439:1;5432:31;5486:4;5483:1;5476:15;5514:4;5511:1;5504:15;5389:140;-1:-1:-1;5556:1:86;5545:13;;5332:232::o;5902:127::-;5963:10;5958:3;5954:20;5951:1;5944:31;5994:4;5991:1;5984:15;6018:4;6015:1;6008:15"
    },
    "gasEstimates": {
      "creation": {
        "codeDepositCost": "467600",
        "executionCost": "505",
        "totalCost": "468105"
      },
      "external": {
        "disableModule(address,address)": "infinite",
        "enableModule(address)": "54439",
        "execTransactionFromModule(address,uint256,bytes,uint8)": "infinite",
        "execTransactionFromModuleReturnData(address,uint256,bytes,uint8)": "infinite",
        "getModulesPaginated(address,uint256)": "infinite",
        "isModuleEnabled(address)": "2602"
      },
      "internal": {
        "setupModules(address,bytes memory)": "infinite"
      }
    },
    "methodIdentifiers": {
      "disableModule(address,address)": "e009cfde",
      "enableModule(address)": "610b5925",
      "execTransactionFromModule(address,uint256,bytes,uint8)": "468721a7",
      "execTransactionFromModuleReturnData(address,uint256,bytes,uint8)": "5229073f",
      "getModulesPaginated(address,uint256)": "cc2f8452",
      "isModuleEnabled(address)": "2d9ad53d"
    }
  },
  "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"DisabledModule\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"EnabledModule\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"ExecutionFromModuleFailure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"ExecutionFromModuleSuccess\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prevModule\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"disableModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"enableModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execTransactionFromModule\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execTransactionFromModuleReturnData\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"start\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pageSize\",\"type\":\"uint256\"}],\"name\":\"getModulesPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"array\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"next\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"isModuleEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.pm>Richard Meissner - <richard@gnosis.pm>\",\"kind\":\"dev\",\"methods\":{\"disableModule(address,address)\":{\"details\":\"Allows to remove a module from the whitelist.      This can only be done via a Safe transaction.\",\"params\":{\"module\":\"Module to be removed.\",\"prevModule\":\"Module that pointed to the module to be removed in the linked list\"}},\"enableModule(address)\":{\"details\":\"Allows to add a module to the whitelist.      This can only be done via a Safe transaction.\",\"params\":{\"module\":\"Module to be whitelisted.\"}},\"execTransactionFromModule(address,uint256,bytes,uint8)\":{\"details\":\"Allows a Module to execute a Safe transaction without any further confirmations.\",\"params\":{\"data\":\"Data payload of module transaction.\",\"operation\":\"Operation type of module transaction.\",\"to\":\"Destination address of module transaction.\",\"value\":\"Ether value of module transaction.\"}},\"execTransactionFromModuleReturnData(address,uint256,bytes,uint8)\":{\"details\":\"Allows a Module to execute a Safe transaction without any further confirmations and return data\",\"params\":{\"data\":\"Data payload of module transaction.\",\"operation\":\"Operation type of module transaction.\",\"to\":\"Destination address of module transaction.\",\"value\":\"Ether value of module transaction.\"}},\"getModulesPaginated(address,uint256)\":{\"details\":\"Returns array of modules.\",\"params\":{\"pageSize\":\"Maximum number of modules that should be returned.\",\"start\":\"Start of the page.\"},\"returns\":{\"array\":\"Array of modules.\",\"next\":\"Start of the next page.\"}},\"isModuleEnabled(address)\":{\"details\":\"Returns if an module is enabled\",\"returns\":{\"_0\":\"True if the module is enabled\"}}},\"title\":\"Module Manager - A contract that manages modules that can execute transactions via this contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disableModule(address,address)\":{\"notice\":\"Disables the module `module` for the Safe.\"},\"enableModule(address)\":{\"notice\":\"Enables the module `module` for the Safe.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@gnosis.pm/safe-contracts/contracts/base/ModuleManager.sol\":\"ModuleManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@gnosis.pm/safe-contracts/contracts/base/Executor.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\nimport \\\"../common/Enum.sol\\\";\\n\\n/// @title Executor - A contract that can execute transactions\\n/// @author Richard Meissner - <richard@gnosis.pm>\\ncontract Executor {\\n    function execute(\\n        address to,\\n        uint256 value,\\n        bytes memory data,\\n        Enum.Operation operation,\\n        uint256 txGas\\n    ) internal returns (bool success) {\\n        if (operation == Enum.Operation.DelegateCall) {\\n            // solhint-disable-next-line no-inline-assembly\\n            assembly {\\n                success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\\n            }\\n        } else {\\n            // solhint-disable-next-line no-inline-assembly\\n            assembly {\\n                success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4d3a900673473466bc27413fdbb11aae60b5580b792c49411f01544e0b24fe08\",\"license\":\"LGPL-3.0-only\"},\"@gnosis.pm/safe-contracts/contracts/base/ModuleManager.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\nimport \\\"../common/Enum.sol\\\";\\nimport \\\"../common/SelfAuthorized.sol\\\";\\nimport \\\"./Executor.sol\\\";\\n\\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\\n/// @author Stefan George - <stefan@gnosis.pm>\\n/// @author Richard Meissner - <richard@gnosis.pm>\\ncontract ModuleManager is SelfAuthorized, Executor {\\n    event EnabledModule(address module);\\n    event DisabledModule(address module);\\n    event ExecutionFromModuleSuccess(address indexed module);\\n    event ExecutionFromModuleFailure(address indexed module);\\n\\n    address internal constant SENTINEL_MODULES = address(0x1);\\n\\n    mapping(address => address) internal modules;\\n\\n    function setupModules(address to, bytes memory data) internal {\\n        require(modules[SENTINEL_MODULES] == address(0), \\\"GS100\\\");\\n        modules[SENTINEL_MODULES] = SENTINEL_MODULES;\\n        if (to != address(0))\\n            // Setup has to complete successfully or transaction fails.\\n            require(execute(to, 0, data, Enum.Operation.DelegateCall, gasleft()), \\\"GS000\\\");\\n    }\\n\\n    /// @dev Allows to add a module to the whitelist.\\n    ///      This can only be done via a Safe transaction.\\n    /// @notice Enables the module `module` for the Safe.\\n    /// @param module Module to be whitelisted.\\n    function enableModule(address module) public authorized {\\n        // Module address cannot be null or sentinel.\\n        require(module != address(0) && module != SENTINEL_MODULES, \\\"GS101\\\");\\n        // Module cannot be added twice.\\n        require(modules[module] == address(0), \\\"GS102\\\");\\n        modules[module] = modules[SENTINEL_MODULES];\\n        modules[SENTINEL_MODULES] = module;\\n        emit EnabledModule(module);\\n    }\\n\\n    /// @dev Allows to remove a module from the whitelist.\\n    ///      This can only be done via a Safe transaction.\\n    /// @notice Disables the module `module` for the Safe.\\n    /// @param prevModule Module that pointed to the module to be removed in the linked list\\n    /// @param module Module to be removed.\\n    function disableModule(address prevModule, address module) public authorized {\\n        // Validate module address and check that it corresponds to module index.\\n        require(module != address(0) && module != SENTINEL_MODULES, \\\"GS101\\\");\\n        require(modules[prevModule] == module, \\\"GS103\\\");\\n        modules[prevModule] = modules[module];\\n        modules[module] = address(0);\\n        emit DisabledModule(module);\\n    }\\n\\n    /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\\n    /// @param to Destination address of module transaction.\\n    /// @param value Ether value of module transaction.\\n    /// @param data Data payload of module transaction.\\n    /// @param operation Operation type of module transaction.\\n    function execTransactionFromModule(\\n        address to,\\n        uint256 value,\\n        bytes memory data,\\n        Enum.Operation operation\\n    ) public virtual returns (bool success) {\\n        // Only whitelisted modules are allowed.\\n        require(msg.sender != SENTINEL_MODULES && modules[msg.sender] != address(0), \\\"GS104\\\");\\n        // Execute transaction without further confirmations.\\n        success = execute(to, value, data, operation, gasleft());\\n        if (success) emit ExecutionFromModuleSuccess(msg.sender);\\n        else emit ExecutionFromModuleFailure(msg.sender);\\n    }\\n\\n    /// @dev Allows a Module to execute a Safe transaction without any further confirmations and return data\\n    /// @param to Destination address of module transaction.\\n    /// @param value Ether value of module transaction.\\n    /// @param data Data payload of module transaction.\\n    /// @param operation Operation type of module transaction.\\n    function execTransactionFromModuleReturnData(\\n        address to,\\n        uint256 value,\\n        bytes memory data,\\n        Enum.Operation operation\\n    ) public returns (bool success, bytes memory returnData) {\\n        success = execTransactionFromModule(to, value, data, operation);\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            // Load free memory location\\n            let ptr := mload(0x40)\\n            // We allocate memory for the return data by setting the free memory location to\\n            // current free memory location + data size + 32 bytes for data size value\\n            mstore(0x40, add(ptr, add(returndatasize(), 0x20)))\\n            // Store the size\\n            mstore(ptr, returndatasize())\\n            // Store the data\\n            returndatacopy(add(ptr, 0x20), 0, returndatasize())\\n            // Point the return data to the correct memory location\\n            returnData := ptr\\n        }\\n    }\\n\\n    /// @dev Returns if an module is enabled\\n    /// @return True if the module is enabled\\n    function isModuleEnabled(address module) public view returns (bool) {\\n        return SENTINEL_MODULES != module && modules[module] != address(0);\\n    }\\n\\n    /// @dev Returns array of modules.\\n    /// @param start Start of the page.\\n    /// @param pageSize Maximum number of modules that should be returned.\\n    /// @return array Array of modules.\\n    /// @return next Start of the next page.\\n    function getModulesPaginated(address start, uint256 pageSize) external view returns (address[] memory array, address next) {\\n        // Init array with max page size\\n        array = new address[](pageSize);\\n\\n        // Populate return array\\n        uint256 moduleCount = 0;\\n        address currentModule = modules[start];\\n        while (currentModule != address(0x0) && currentModule != SENTINEL_MODULES && moduleCount < pageSize) {\\n            array[moduleCount] = currentModule;\\n            currentModule = modules[currentModule];\\n            moduleCount++;\\n        }\\n        next = currentModule;\\n        // Set correct size of returned array\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            mstore(array, moduleCount)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5512760a0328309f82a71cbe2ac14e0942501b9d44d5fb417bd02174546672e5\",\"license\":\"LGPL-3.0-only\"},\"@gnosis.pm/safe-contracts/contracts/common/Enum.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\n\\n/// @title Enum - Collection of enums\\n/// @author Richard Meissner - <richard@gnosis.pm>\\ncontract Enum {\\n    enum Operation {Call, DelegateCall}\\n}\\n\",\"keccak256\":\"0x473e45b1a5cc47be494b0e123c9127f0c11c1e0992a321ae5a644c0bfdb2c14f\",\"license\":\"LGPL-3.0-only\"},\"@gnosis.pm/safe-contracts/contracts/common/SelfAuthorized.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\n\\n/// @title SelfAuthorized - authorizes current contract to perform actions\\n/// @author Richard Meissner - <richard@gnosis.pm>\\ncontract SelfAuthorized {\\n    function requireSelfCall() private view {\\n        require(msg.sender == address(this), \\\"GS031\\\");\\n    }\\n\\n    modifier authorized() {\\n        // This is a function call as it minimized the bytecode size\\n        requireSelfCall();\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x59d36efca578b75541a776f62a0d0ef03712fc27b6647c3915c14b572106d7bc\",\"license\":\"LGPL-3.0-only\"}},\"version\":1}",
  "storageLayout": {
    "storage": [
      {
        "astId": 1149,
        "contract": "@gnosis.pm/safe-contracts/contracts/base/ModuleManager.sol:ModuleManager",
        "label": "modules",
        "offset": 0,
        "slot": "0",
        "type": "t_mapping(t_address,t_address)"
      }
    ],
    "types": {
      "t_address": {
        "encoding": "inplace",
        "label": "address",
        "numberOfBytes": "20"
      },
      "t_mapping(t_address,t_address)": {
        "encoding": "mapping",
        "key": "t_address",
        "label": "mapping(address => address)",
        "numberOfBytes": "32",
        "value": "t_address"
      }
    }
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "disableModule(address,address)": {
        "notice": "Disables the module `module` for the Safe."
      },
      "enableModule(address)": {
        "notice": "Enables the module `module` for the Safe."
      }
    },
    "version": 1
  }
}