{
  "contractName": "WitnetDeployerConfluxCore",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initCode",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "deploy",
      "outputs": [
        {
          "internalType": "address",
          "name": "_deployed",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initCode",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "determineAddr",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "determineProxyAddr",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proxySalt",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_firstImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_initData",
          "type": "bytes"
        }
      ],
      "name": "proxify",
      "outputs": [
        {
          "internalType": "contract WitnetProxy",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_deployed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"determineAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"determineProxyAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proxySalt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_firstImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initData\",\"type\":\"bytes\"}],\"name\":\"proxify\",\"outputs\":[{\"internalType\":\"contract WitnetProxy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Guillermo D\\u00edaz <guillermo@witnet.io>\",\"kind\":\"dev\",\"methods\":{\"deploy(bytes,bytes32)\":{\"details\":\"The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the addressnor the nonce of the caller (i.e. see EIP-1014). \",\"params\":{\"_initCode\":\"Creation code, including construction logic and input parameters.\",\"_salt\":\"Arbitrary value to modify resulting address.\"},\"returns\":{\"_deployed\":\"Just deployed contract address.\"}},\"determineAddr(bytes,bytes32)\":{\"params\":{\"_initCode\":\"Creation code, including construction logic and input parameters.\",\"_salt\":\"Arbitrary value to modify resulting address.\"},\"returns\":{\"_0\":\"Deterministic contract address.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy(bytes,bytes32)\":{\"notice\":\"Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. \"},\"determineAddr(bytes,bytes32)\":{\"notice\":\"Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\"}},\"notice\":\"WitnetDeployerConfluxCore contract used both as CREATE2 factory (EIP-1014) for Witnet artifacts, and CREATE3 factory (EIP-3171) for Witnet proxies, on the Conflux Core Ecosystem.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetDeployerConfluxCore.sol\":\"WitnetDeployerConfluxCore\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"project:/contracts/core/WitnetDeployer.sol\":{\"keccak256\":\"0xa048c54e33bcd337112df5e3c8d3a528ad91179bda1963b3b08eb022d36cc038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d37c3f74831d38abfdf76345f2c9190198643204f8ec2b4c515eb32d609b8f9\",\"dweb:/ipfs/QmcD6mDyAcs2nxnQjmU5Yu9dLuLuGuBkLj9LnFCbeu5gjV\"]},\"project:/contracts/core/WitnetDeployerConfluxCore.sol\":{\"keccak256\":\"0x979463e2b451de5ecdec0da1cc1809b228c46de6f2a7ecd142cb843916088a67\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a1302ae62e45b74aa6dd7aff3e7ac9088e6a1176a1433ad464cb5effff0392\",\"dweb:/ipfs/QmTdi4JEQ1raLYVeSub4NHiNQgK1jdtCfsheuETRg5T8Ka\"]},\"project:/contracts/core/WitnetProxy.sol\":{\"keccak256\":\"0x6f0ec2c544192c9439bde88f5ed4efec5bdef506cb0dcb739c29329a798033fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca05338334632aab3aef3c17a4b8686251ec488da49b9fcd3712642e57e0ce2a\",\"dweb:/ipfs/QmZk1uDdytKFii4TXUnJkFBBB3CZVSPKKR85ugFjWUTufS\"]},\"project:/contracts/libs/Create3.sol\":{\"keccak256\":\"0xfbda4c773f859bef9d7878ca9412f244da85f7bd49df07c49a17544f4708d718\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f83b72ad1c35c707cc6daa4e8266d9d711f561a188fbb0be1885d3f08146ca6\",\"dweb:/ipfs/QmPJwdieqkxoSvqmczAtRMfb5EN8uWiabqMKj4yVqsUncv\"]},\"project:/contracts/patterns/Initializable.sol\":{\"keccak256\":\"0xaac470e87f361cf15d68d1618d6eb7d4913885d33ccc39c797841a9591d44296\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef3760b2039feda8715d4bd9f8de8e3885f25573d12ba92f52d626ba880a08bf\",\"dweb:/ipfs/QmP2mfHPBKkjTAKft95sPDb4PBsjfmAwc47Kdcv3xYSf3g\"]},\"project:/contracts/patterns/Proxiable.sol\":{\"keccak256\":\"0x86032205378fed9ed2bf155eed8ce4bdbb13b7f5960850c6d50954a38b61a3d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f89978eda4244a13f42a6092a94ac829bb3e38c92d77d4978b9f32894b187a63\",\"dweb:/ipfs/Qmbc1XaFCvLm3Sxvh7tP29Ug32jBGy3avsCqBGAptxs765\"]},\"project:/contracts/patterns/Upgradeable.sol\":{\"keccak256\":\"0x49d1a83abc7a9b39d224677dde65ead4b7f1104332a94c9e619854b2a6b3a89e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6a798a953af921a5b4e24e3f78bebae97819a85c90deb12ec505952faa42814\",\"dweb:/ipfs/QmVJhv4x3MXf4aDbMC5Q259K8kZNvxSXzmy8anoow7nS7k\"]}},\"version\":1}",
  "bytecode": "0x6080604052348015600e575f5ffd5b50610ed78061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610335565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046103eb565b6100e9565b61006161009e36600461042d565b610177565b6100616100b13660046103eb565b6102bd565b5f6100e3604051806020016100ca90610328565b601f1982820381018352601f90910116604052836102bd565b92915050565b5f6100f483836102bd565b9050806001600160a01b03163b5f036100e357818351602085015ff590506001600160a01b0381166100e35760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b5f5f610182856100b6565b9050806001600160a01b03163b5f03610259576101c1604051806020016101a890610328565b601f1982820381018352601f90910116604052866100e9565b50806001600160a01b0316636fbc15e98533866040516020016101e592919061048d565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161021192919061048d565b6020604051808303815f875af115801561022d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025191906104d1565b5090506102b6565b60405162461bcd60e51b815260206004820152602c60248201527f5769746e65744465706c6f796572436f6e666c7578436f72653a20616c72656160448201526b191e481c1c9bde1a599a595960a21b606482015260840161016e565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012060016001609c1b03166001609f1b1790565b6109b1806104f183390190565b5f60208284031215610345575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261036f575f5ffd5b813567ffffffffffffffff8111156103895761038961034c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103b8576103b861034c565b6040528181528382016020018510156103cf575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156103fc575f5ffd5b823567ffffffffffffffff811115610412575f5ffd5b61041e85828601610360565b95602094909401359450505050565b5f5f5f6060848603121561043f575f5ffd5b8335925060208401356001600160a01b038116811461045c575f5ffd5b9150604084013567ffffffffffffffff811115610477575f5ffd5b61048386828701610360565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f602082840312156104e1575f5ffd5b815180151581146102b6575f5ffdfe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a2646970667358221220abc27366a611719dd850a059fe933df5940208b5608695dddee764d89854d78464736f6c634300081e0033",
  "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610335565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046103eb565b6100e9565b61006161009e36600461042d565b610177565b6100616100b13660046103eb565b6102bd565b5f6100e3604051806020016100ca90610328565b601f1982820381018352601f90910116604052836102bd565b92915050565b5f6100f483836102bd565b9050806001600160a01b03163b5f036100e357818351602085015ff590506001600160a01b0381166100e35760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b5f5f610182856100b6565b9050806001600160a01b03163b5f03610259576101c1604051806020016101a890610328565b601f1982820381018352601f90910116604052866100e9565b50806001600160a01b0316636fbc15e98533866040516020016101e592919061048d565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161021192919061048d565b6020604051808303815f875af115801561022d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025191906104d1565b5090506102b6565b60405162461bcd60e51b815260206004820152602c60248201527f5769746e65744465706c6f796572436f6e666c7578436f72653a20616c72656160448201526b191e481c1c9bde1a599a595960a21b606482015260840161016e565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012060016001609c1b03166001609f1b1790565b6109b1806104f183390190565b5f60208284031215610345575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261036f575f5ffd5b813567ffffffffffffffff8111156103895761038961034c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103b8576103b861034c565b6040528181528382016020018510156103cf575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156103fc575f5ffd5b823567ffffffffffffffff811115610412575f5ffd5b61041e85828601610360565b95602094909401359450505050565b5f5f5f6060848603121561043f575f5ffd5b8335925060208401356001600160a01b038116811461045c575f5ffd5b9150604084013567ffffffffffffffff811115610477575f5ffd5b61048386828701610360565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f602082840312156104e1575f5ffd5b815180151581146102b6575f5ffdfe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a2646970667358221220abc27366a611719dd850a059fe933df5940208b5608695dddee764d89854d78464736f6c634300081e0033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nativeSrc": "0:4669:136",
        "nodeType": "YulBlock",
        "src": "0:4669:136",
        "statements": [
          {
            "nativeSrc": "6:3:136",
            "nodeType": "YulBlock",
            "src": "6:3:136",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "84:156:136",
              "nodeType": "YulBlock",
              "src": "84:156:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "130:16:136",
                    "nodeType": "YulBlock",
                    "src": "130:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "139:1:136",
                              "nodeType": "YulLiteral",
                              "src": "139:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "142:1:136",
                              "nodeType": "YulLiteral",
                              "src": "142:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "132:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "132:6:136"
                          },
                          "nativeSrc": "132:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "132:12:136"
                        },
                        "nativeSrc": "132:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "132:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "105:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "105:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "114:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "114:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "101:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "101:3:136"
                        },
                        "nativeSrc": "101:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "101:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "126:2:136",
                        "nodeType": "YulLiteral",
                        "src": "126:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "97:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "97:3:136"
                    },
                    "nativeSrc": "97:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "97:32:136"
                  },
                  "nativeSrc": "94:52:136",
                  "nodeType": "YulIf",
                  "src": "94:52:136"
                },
                {
                  "nativeSrc": "155:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "155:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "168:1:136",
                    "nodeType": "YulLiteral",
                    "src": "168:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "159:5:136",
                      "nodeType": "YulTypedName",
                      "src": "159:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "178:32:136",
                  "nodeType": "YulAssignment",
                  "src": "178:32:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "200:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "200:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "187:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "187:12:136"
                    },
                    "nativeSrc": "187:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "187:23:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "178:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "178:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "219:15:136",
                  "nodeType": "YulAssignment",
                  "src": "219:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "229:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "229:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "219:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "219:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32",
            "nativeSrc": "14:226:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "50:9:136",
                "nodeType": "YulTypedName",
                "src": "50:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "61:7:136",
                "nodeType": "YulTypedName",
                "src": "61:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "73:6:136",
                "nodeType": "YulTypedName",
                "src": "73:6:136",
                "type": ""
              }
            ],
            "src": "14:226:136"
          },
          {
            "body": {
              "nativeSrc": "346:102:136",
              "nodeType": "YulBlock",
              "src": "346:102:136",
              "statements": [
                {
                  "nativeSrc": "356:26:136",
                  "nodeType": "YulAssignment",
                  "src": "356:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "368:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "368:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "379:2:136",
                        "nodeType": "YulLiteral",
                        "src": "379:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "364:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "364:3:136"
                    },
                    "nativeSrc": "364:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "364:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "356:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "356:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "398:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "398:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "413:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "413:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "429:3:136",
                                    "nodeType": "YulLiteral",
                                    "src": "429:3:136",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "434:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "434:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "425:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "425:3:136"
                                },
                                "nativeSrc": "425:11:136",
                                "nodeType": "YulFunctionCall",
                                "src": "425:11:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "438:1:136",
                                "nodeType": "YulLiteral",
                                "src": "438:1:136",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "421:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "421:3:136"
                            },
                            "nativeSrc": "421:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "421:19:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "409:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "409:3:136"
                        },
                        "nativeSrc": "409:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "409:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "391:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "391:6:136"
                    },
                    "nativeSrc": "391:51:136",
                    "nodeType": "YulFunctionCall",
                    "src": "391:51:136"
                  },
                  "nativeSrc": "391:51:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "391:51:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nativeSrc": "245:203:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "315:9:136",
                "nodeType": "YulTypedName",
                "src": "315:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "326:6:136",
                "nodeType": "YulTypedName",
                "src": "326:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "337:4:136",
                "nodeType": "YulTypedName",
                "src": "337:4:136",
                "type": ""
              }
            ],
            "src": "245:203:136"
          },
          {
            "body": {
              "nativeSrc": "485:95:136",
              "nodeType": "YulBlock",
              "src": "485:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "502:1:136",
                        "nodeType": "YulLiteral",
                        "src": "502:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "509:3:136",
                            "nodeType": "YulLiteral",
                            "src": "509:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "514:10:136",
                            "nodeType": "YulLiteral",
                            "src": "514:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "505:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "505:3:136"
                        },
                        "nativeSrc": "505:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "505:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "495:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "495:6:136"
                    },
                    "nativeSrc": "495:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "495:31:136"
                  },
                  "nativeSrc": "495:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "495:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "542:1:136",
                        "nodeType": "YulLiteral",
                        "src": "542:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "545:4:136",
                        "nodeType": "YulLiteral",
                        "src": "545:4:136",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "535:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "535:6:136"
                    },
                    "nativeSrc": "535:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "535:15:136"
                  },
                  "nativeSrc": "535:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "535:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "566:1:136",
                        "nodeType": "YulLiteral",
                        "src": "566:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "569:4:136",
                        "nodeType": "YulLiteral",
                        "src": "569:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "559:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "559:6:136"
                    },
                    "nativeSrc": "559:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "559:15:136"
                  },
                  "nativeSrc": "559:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "559:15:136"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nativeSrc": "453:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "453:127:136"
          },
          {
            "body": {
              "nativeSrc": "637:673:136",
              "nodeType": "YulBlock",
              "src": "637:673:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "686:16:136",
                    "nodeType": "YulBlock",
                    "src": "686:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "695:1:136",
                              "nodeType": "YulLiteral",
                              "src": "695:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "698:1:136",
                              "nodeType": "YulLiteral",
                              "src": "698:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "688:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "688:6:136"
                          },
                          "nativeSrc": "688:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "688:12:136"
                        },
                        "nativeSrc": "688:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "688:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "665:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "665:6:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "673:4:136",
                                "nodeType": "YulLiteral",
                                "src": "673:4:136",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "661:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "661:3:136"
                            },
                            "nativeSrc": "661:17:136",
                            "nodeType": "YulFunctionCall",
                            "src": "661:17:136"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "680:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "680:3:136"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "657:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "657:3:136"
                        },
                        "nativeSrc": "657:27:136",
                        "nodeType": "YulFunctionCall",
                        "src": "657:27:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "650:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "650:6:136"
                    },
                    "nativeSrc": "650:35:136",
                    "nodeType": "YulFunctionCall",
                    "src": "650:35:136"
                  },
                  "nativeSrc": "647:55:136",
                  "nodeType": "YulIf",
                  "src": "647:55:136"
                },
                {
                  "nativeSrc": "711:34:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "711:34:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "738:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "738:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "725:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "725:12:136"
                    },
                    "nativeSrc": "725:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "725:20:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "715:6:136",
                      "nodeType": "YulTypedName",
                      "src": "715:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "788:22:136",
                    "nodeType": "YulBlock",
                    "src": "788:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "790:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "790:16:136"
                          },
                          "nativeSrc": "790:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "790:18:136"
                        },
                        "nativeSrc": "790:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "790:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "760:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "760:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "768:18:136",
                        "nodeType": "YulLiteral",
                        "src": "768:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "757:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "757:2:136"
                    },
                    "nativeSrc": "757:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "757:30:136"
                  },
                  "nativeSrc": "754:56:136",
                  "nodeType": "YulIf",
                  "src": "754:56:136"
                },
                {
                  "nativeSrc": "819:23:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "819:23:136",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "839:2:136",
                        "nodeType": "YulLiteral",
                        "src": "839:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "833:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "833:5:136"
                    },
                    "nativeSrc": "833:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "833:9:136"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "823:6:136",
                      "nodeType": "YulTypedName",
                      "src": "823:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "851:85:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "851:85:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "873:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "873:6:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "897:6:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "897:6:136"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "905:4:136",
                                        "nodeType": "YulLiteral",
                                        "src": "905:4:136",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "893:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "893:3:136"
                                    },
                                    "nativeSrc": "893:17:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "893:17:136"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "916:2:136",
                                        "nodeType": "YulLiteral",
                                        "src": "916:2:136",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "912:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "912:3:136"
                                    },
                                    "nativeSrc": "912:7:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "912:7:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "889:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "889:3:136"
                                },
                                "nativeSrc": "889:31:136",
                                "nodeType": "YulFunctionCall",
                                "src": "889:31:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "922:2:136",
                                "nodeType": "YulLiteral",
                                "src": "922:2:136",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "885:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "885:3:136"
                            },
                            "nativeSrc": "885:40:136",
                            "nodeType": "YulFunctionCall",
                            "src": "885:40:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "931:2:136",
                                "nodeType": "YulLiteral",
                                "src": "931:2:136",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "927:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "927:3:136"
                            },
                            "nativeSrc": "927:7:136",
                            "nodeType": "YulFunctionCall",
                            "src": "927:7:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "881:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "881:3:136"
                        },
                        "nativeSrc": "881:54:136",
                        "nodeType": "YulFunctionCall",
                        "src": "881:54:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "869:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "869:3:136"
                    },
                    "nativeSrc": "869:67:136",
                    "nodeType": "YulFunctionCall",
                    "src": "869:67:136"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nativeSrc": "855:10:136",
                      "nodeType": "YulTypedName",
                      "src": "855:10:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1011:22:136",
                    "nodeType": "YulBlock",
                    "src": "1011:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "1013:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "1013:16:136"
                          },
                          "nativeSrc": "1013:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1013:18:136"
                        },
                        "nativeSrc": "1013:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1013:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "954:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "954:10:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "966:18:136",
                            "nodeType": "YulLiteral",
                            "src": "966:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nativeSrc": "951:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "951:2:136"
                        },
                        "nativeSrc": "951:34:136",
                        "nodeType": "YulFunctionCall",
                        "src": "951:34:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "990:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "990:10:136"
                          },
                          {
                            "name": "memPtr",
                            "nativeSrc": "1002:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1002:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "987:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "987:2:136"
                        },
                        "nativeSrc": "987:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "987:22:136"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "948:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "948:2:136"
                    },
                    "nativeSrc": "948:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "948:62:136"
                  },
                  "nativeSrc": "945:88:136",
                  "nodeType": "YulIf",
                  "src": "945:88:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "1049:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1049:2:136",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nativeSrc": "1053:10:136",
                        "nodeType": "YulIdentifier",
                        "src": "1053:10:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1042:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1042:6:136"
                    },
                    "nativeSrc": "1042:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1042:22:136"
                  },
                  "nativeSrc": "1042:22:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1042:22:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "1080:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1080:6:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1088:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1088:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1073:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1073:6:136"
                    },
                    "nativeSrc": "1073:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1073:22:136"
                  },
                  "nativeSrc": "1073:22:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1073:22:136"
                },
                {
                  "body": {
                    "nativeSrc": "1147:16:136",
                    "nodeType": "YulBlock",
                    "src": "1147:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1156:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1156:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1159:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1159:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1149:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1149:6:136"
                          },
                          "nativeSrc": "1149:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1149:12:136"
                        },
                        "nativeSrc": "1149:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1149:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "1118:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1118:6:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1126:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1126:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1114:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1114:3:136"
                            },
                            "nativeSrc": "1114:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1114:19:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1135:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1135:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1110:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1110:3:136"
                        },
                        "nativeSrc": "1110:30:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1110:30:136"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "1142:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "1142:3:136"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1107:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "1107:2:136"
                    },
                    "nativeSrc": "1107:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1107:39:136"
                  },
                  "nativeSrc": "1104:59:136",
                  "nodeType": "YulIf",
                  "src": "1104:59:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "1189:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1189:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1197:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1197:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1185:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1185:3:136"
                        },
                        "nativeSrc": "1185:17:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1185:17:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nativeSrc": "1208:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1208:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1216:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1216:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1204:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1204:3:136"
                        },
                        "nativeSrc": "1204:17:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1204:17:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1223:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1223:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "1172:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1172:12:136"
                    },
                    "nativeSrc": "1172:58:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1172:58:136"
                  },
                  "nativeSrc": "1172:58:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1172:58:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nativeSrc": "1254:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1254:6:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1262:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1262:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1250:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1250:3:136"
                            },
                            "nativeSrc": "1250:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1250:19:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1271:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1271:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1246:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1246:3:136"
                        },
                        "nativeSrc": "1246:30:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1246:30:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1278:1:136",
                        "nodeType": "YulLiteral",
                        "src": "1278:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1239:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1239:6:136"
                    },
                    "nativeSrc": "1239:41:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1239:41:136"
                  },
                  "nativeSrc": "1239:41:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1239:41:136"
                },
                {
                  "nativeSrc": "1289:15:136",
                  "nodeType": "YulAssignment",
                  "src": "1289:15:136",
                  "value": {
                    "name": "memPtr",
                    "nativeSrc": "1298:6:136",
                    "nodeType": "YulIdentifier",
                    "src": "1298:6:136"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nativeSrc": "1289:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "1289:5:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes",
            "nativeSrc": "585:725:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "611:6:136",
                "nodeType": "YulTypedName",
                "src": "611:6:136",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "619:3:136",
                "nodeType": "YulTypedName",
                "src": "619:3:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nativeSrc": "627:5:136",
                "nodeType": "YulTypedName",
                "src": "627:5:136",
                "type": ""
              }
            ],
            "src": "585:725:136"
          },
          {
            "body": {
              "nativeSrc": "1411:338:136",
              "nodeType": "YulBlock",
              "src": "1411:338:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1457:16:136",
                    "nodeType": "YulBlock",
                    "src": "1457:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1466:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1466:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1469:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1469:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1459:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1459:6:136"
                          },
                          "nativeSrc": "1459:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1459:12:136"
                        },
                        "nativeSrc": "1459:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1459:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1432:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "1432:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1441:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1441:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1428:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1428:3:136"
                        },
                        "nativeSrc": "1428:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1428:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1453:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1453:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1424:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "1424:3:136"
                    },
                    "nativeSrc": "1424:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1424:32:136"
                  },
                  "nativeSrc": "1421:52:136",
                  "nodeType": "YulIf",
                  "src": "1421:52:136"
                },
                {
                  "nativeSrc": "1482:37:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1482:37:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1509:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1509:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1496:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1496:12:136"
                    },
                    "nativeSrc": "1496:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1496:23:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "1486:6:136",
                      "nodeType": "YulTypedName",
                      "src": "1486:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1562:16:136",
                    "nodeType": "YulBlock",
                    "src": "1562:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1571:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1571:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1574:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1574:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1564:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1564:6:136"
                          },
                          "nativeSrc": "1564:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1564:12:136"
                        },
                        "nativeSrc": "1564:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1564:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1534:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1534:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1542:18:136",
                        "nodeType": "YulLiteral",
                        "src": "1542:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1531:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "1531:2:136"
                    },
                    "nativeSrc": "1531:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1531:30:136"
                  },
                  "nativeSrc": "1528:50:136",
                  "nodeType": "YulIf",
                  "src": "1528:50:136"
                },
                {
                  "nativeSrc": "1587:59:136",
                  "nodeType": "YulAssignment",
                  "src": "1587:59:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1618:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1618:9:136"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "1629:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1629:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1614:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1614:3:136"
                        },
                        "nativeSrc": "1614:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1614:22:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1638:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "1638:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nativeSrc": "1597:16:136",
                      "nodeType": "YulIdentifier",
                      "src": "1597:16:136"
                    },
                    "nativeSrc": "1597:49:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1597:49:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1587:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1587:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1655:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1655:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1668:1:136",
                    "nodeType": "YulLiteral",
                    "src": "1668:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1659:5:136",
                      "nodeType": "YulTypedName",
                      "src": "1659:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1678:41:136",
                  "nodeType": "YulAssignment",
                  "src": "1678:41:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1704:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1704:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1715:2:136",
                            "nodeType": "YulLiteral",
                            "src": "1715:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1700:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1700:3:136"
                        },
                        "nativeSrc": "1700:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1700:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1687:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1687:12:136"
                    },
                    "nativeSrc": "1687:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1687:32:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "1678:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "1678:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1728:15:136",
                  "nodeType": "YulAssignment",
                  "src": "1728:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "1738:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "1738:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "1728:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1728:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_memory_ptrt_bytes32",
            "nativeSrc": "1315:434:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1369:9:136",
                "nodeType": "YulTypedName",
                "src": "1369:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1380:7:136",
                "nodeType": "YulTypedName",
                "src": "1380:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1392:6:136",
                "nodeType": "YulTypedName",
                "src": "1392:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1400:6:136",
                "nodeType": "YulTypedName",
                "src": "1400:6:136",
                "type": ""
              }
            ],
            "src": "1315:434:136"
          },
          {
            "body": {
              "nativeSrc": "1867:503:136",
              "nodeType": "YulBlock",
              "src": "1867:503:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1913:16:136",
                    "nodeType": "YulBlock",
                    "src": "1913:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1922:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1922:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1925:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1925:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1915:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1915:6:136"
                          },
                          "nativeSrc": "1915:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1915:12:136"
                        },
                        "nativeSrc": "1915:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1915:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1888:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "1888:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1897:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1897:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1884:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1884:3:136"
                        },
                        "nativeSrc": "1884:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1884:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1909:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1909:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1880:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "1880:3:136"
                    },
                    "nativeSrc": "1880:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1880:32:136"
                  },
                  "nativeSrc": "1877:52:136",
                  "nodeType": "YulIf",
                  "src": "1877:52:136"
                },
                {
                  "nativeSrc": "1938:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1938:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1951:1:136",
                    "nodeType": "YulLiteral",
                    "src": "1951:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1942:5:136",
                      "nodeType": "YulTypedName",
                      "src": "1942:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1961:32:136",
                  "nodeType": "YulAssignment",
                  "src": "1961:32:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1983:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1983:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1970:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1970:12:136"
                    },
                    "nativeSrc": "1970:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1970:23:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "1961:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "1961:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2002:15:136",
                  "nodeType": "YulAssignment",
                  "src": "2002:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "2012:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "2012:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "2002:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2002:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2026:47:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2026:47:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2058:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2058:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2069:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2069:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2054:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2054:3:136"
                        },
                        "nativeSrc": "2054:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2054:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2041:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "2041:12:136"
                    },
                    "nativeSrc": "2041:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2041:32:136"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "2030:7:136",
                      "nodeType": "YulTypedName",
                      "src": "2030:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2140:16:136",
                    "nodeType": "YulBlock",
                    "src": "2140:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2149:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2149:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2152:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2152:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2142:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2142:6:136"
                          },
                          "nativeSrc": "2142:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2142:12:136"
                        },
                        "nativeSrc": "2142:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2142:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_1",
                            "nativeSrc": "2095:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "2095:7:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value_1",
                                "nativeSrc": "2108:7:136",
                                "nodeType": "YulIdentifier",
                                "src": "2108:7:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2125:3:136",
                                        "nodeType": "YulLiteral",
                                        "src": "2125:3:136",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2130:1:136",
                                        "nodeType": "YulLiteral",
                                        "src": "2130:1:136",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "2121:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "2121:3:136"
                                    },
                                    "nativeSrc": "2121:11:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2121:11:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2134:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "2134:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "2117:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "2117:3:136"
                                },
                                "nativeSrc": "2117:19:136",
                                "nodeType": "YulFunctionCall",
                                "src": "2117:19:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "2104:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "2104:3:136"
                            },
                            "nativeSrc": "2104:33:136",
                            "nodeType": "YulFunctionCall",
                            "src": "2104:33:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "2092:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "2092:2:136"
                        },
                        "nativeSrc": "2092:46:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2092:46:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "2085:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2085:6:136"
                    },
                    "nativeSrc": "2085:54:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2085:54:136"
                  },
                  "nativeSrc": "2082:74:136",
                  "nodeType": "YulIf",
                  "src": "2082:74:136"
                },
                {
                  "nativeSrc": "2165:17:136",
                  "nodeType": "YulAssignment",
                  "src": "2165:17:136",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "2175:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "2175:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "2165:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2165:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2191:46:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2191:46:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2222:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2222:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2233:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2233:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2218:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2218:3:136"
                        },
                        "nativeSrc": "2218:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2218:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2205:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "2205:12:136"
                    },
                    "nativeSrc": "2205:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2205:32:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "2195:6:136",
                      "nodeType": "YulTypedName",
                      "src": "2195:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2280:16:136",
                    "nodeType": "YulBlock",
                    "src": "2280:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2289:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2289:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2292:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2292:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2282:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2282:6:136"
                          },
                          "nativeSrc": "2282:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2282:12:136"
                        },
                        "nativeSrc": "2282:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2282:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "2252:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "2252:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2260:18:136",
                        "nodeType": "YulLiteral",
                        "src": "2260:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "2249:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "2249:2:136"
                    },
                    "nativeSrc": "2249:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2249:30:136"
                  },
                  "nativeSrc": "2246:50:136",
                  "nodeType": "YulIf",
                  "src": "2246:50:136"
                },
                {
                  "nativeSrc": "2305:59:136",
                  "nodeType": "YulAssignment",
                  "src": "2305:59:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2336:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2336:9:136"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "2347:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2347:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2332:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2332:3:136"
                        },
                        "nativeSrc": "2332:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2332:22:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "2356:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "2356:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nativeSrc": "2315:16:136",
                      "nodeType": "YulIdentifier",
                      "src": "2315:16:136"
                    },
                    "nativeSrc": "2315:49:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2315:49:136"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "2305:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2305:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr",
            "nativeSrc": "1754:616:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1817:9:136",
                "nodeType": "YulTypedName",
                "src": "1817:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1828:7:136",
                "nodeType": "YulTypedName",
                "src": "1828:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1840:6:136",
                "nodeType": "YulTypedName",
                "src": "1840:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1848:6:136",
                "nodeType": "YulTypedName",
                "src": "1848:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "1856:6:136",
                "nodeType": "YulTypedName",
                "src": "1856:6:136",
                "type": ""
              }
            ],
            "src": "1754:616:136"
          },
          {
            "body": {
              "nativeSrc": "2504:102:136",
              "nodeType": "YulBlock",
              "src": "2504:102:136",
              "statements": [
                {
                  "nativeSrc": "2514:26:136",
                  "nodeType": "YulAssignment",
                  "src": "2514:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2526:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2526:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2537:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2537:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2522:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2522:3:136"
                    },
                    "nativeSrc": "2522:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2522:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2514:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "2514:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2556:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2556:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "2571:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2571:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2587:3:136",
                                    "nodeType": "YulLiteral",
                                    "src": "2587:3:136",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2592:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "2592:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "2583:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "2583:3:136"
                                },
                                "nativeSrc": "2583:11:136",
                                "nodeType": "YulFunctionCall",
                                "src": "2583:11:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "2596:1:136",
                                "nodeType": "YulLiteral",
                                "src": "2596:1:136",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "2579:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "2579:3:136"
                            },
                            "nativeSrc": "2579:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "2579:19:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "2567:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2567:3:136"
                        },
                        "nativeSrc": "2567:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2567:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2549:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2549:6:136"
                    },
                    "nativeSrc": "2549:51:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2549:51:136"
                  },
                  "nativeSrc": "2549:51:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2549:51:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_WitnetProxy_$8994__to_t_address_payable__fromStack_reversed",
            "nativeSrc": "2375:231:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2473:9:136",
                "nodeType": "YulTypedName",
                "src": "2473:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2484:6:136",
                "nodeType": "YulTypedName",
                "src": "2484:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2495:4:136",
                "nodeType": "YulTypedName",
                "src": "2495:4:136",
                "type": ""
              }
            ],
            "src": "2375:231:136"
          },
          {
            "body": {
              "nativeSrc": "2785:223:136",
              "nodeType": "YulBlock",
              "src": "2785:223:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2802:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2802:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2813:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2813:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2795:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2795:6:136"
                    },
                    "nativeSrc": "2795:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2795:21:136"
                  },
                  "nativeSrc": "2795:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2795:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2836:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2836:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2847:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2847:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2832:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2832:3:136"
                        },
                        "nativeSrc": "2832:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2832:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2852:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2852:2:136",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2825:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2825:6:136"
                    },
                    "nativeSrc": "2825:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2825:30:136"
                  },
                  "nativeSrc": "2825:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2825:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2875:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2875:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2886:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2886:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2871:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2871:3:136"
                        },
                        "nativeSrc": "2871:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2871:18:136"
                      },
                      {
                        "hexValue": "5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c65",
                        "kind": "string",
                        "nativeSrc": "2891:34:136",
                        "nodeType": "YulLiteral",
                        "src": "2891:34:136",
                        "type": "",
                        "value": "WitnetDeployer: deployment faile"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2864:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2864:6:136"
                    },
                    "nativeSrc": "2864:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2864:62:136"
                  },
                  "nativeSrc": "2864:62:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2864:62:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2946:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2946:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2957:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2957:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2942:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2942:3:136"
                        },
                        "nativeSrc": "2942:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2942:18:136"
                      },
                      {
                        "hexValue": "64",
                        "kind": "string",
                        "nativeSrc": "2962:3:136",
                        "nodeType": "YulLiteral",
                        "src": "2962:3:136",
                        "type": "",
                        "value": "d"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2935:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2935:6:136"
                    },
                    "nativeSrc": "2935:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2935:31:136"
                  },
                  "nativeSrc": "2935:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2935:31:136"
                },
                {
                  "nativeSrc": "2975:27:136",
                  "nodeType": "YulAssignment",
                  "src": "2975:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2987:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2987:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2998:3:136",
                        "nodeType": "YulLiteral",
                        "src": "2998:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2983:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2983:3:136"
                    },
                    "nativeSrc": "2983:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2983:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2975:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "2975:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "2611:397:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2762:9:136",
                "nodeType": "YulTypedName",
                "src": "2762:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2776:4:136",
                "nodeType": "YulTypedName",
                "src": "2776:4:136",
                "type": ""
              }
            ],
            "src": "2611:397:136"
          },
          {
            "body": {
              "nativeSrc": "3160:366:136",
              "nodeType": "YulBlock",
              "src": "3160:366:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3177:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "3177:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "3192:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3192:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3208:3:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3208:3:136",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3213:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3213:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "3204:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3204:3:136"
                                },
                                "nativeSrc": "3204:11:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3204:11:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "3217:1:136",
                                "nodeType": "YulLiteral",
                                "src": "3217:1:136",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "3200:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3200:3:136"
                            },
                            "nativeSrc": "3200:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3200:19:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "3188:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3188:3:136"
                        },
                        "nativeSrc": "3188:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3188:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3170:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3170:6:136"
                    },
                    "nativeSrc": "3170:51:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3170:51:136"
                  },
                  "nativeSrc": "3170:51:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3170:51:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3241:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3241:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3252:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3252:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3237:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3237:3:136"
                        },
                        "nativeSrc": "3237:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3237:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3257:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3257:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3230:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3230:6:136"
                    },
                    "nativeSrc": "3230:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3230:30:136"
                  },
                  "nativeSrc": "3230:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3230:30:136"
                },
                {
                  "nativeSrc": "3269:27:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3269:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nativeSrc": "3289:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3289:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3283:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3283:5:136"
                    },
                    "nativeSrc": "3283:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3283:13:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "3273:6:136",
                      "nodeType": "YulTypedName",
                      "src": "3273:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3316:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3316:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3327:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3327:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3312:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3312:3:136"
                        },
                        "nativeSrc": "3312:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3312:18:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "3332:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3332:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3305:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3305:6:136"
                    },
                    "nativeSrc": "3305:34:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3305:34:136"
                  },
                  "nativeSrc": "3305:34:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3305:34:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3358:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3358:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3369:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3369:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3354:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3354:3:136"
                        },
                        "nativeSrc": "3354:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3354:18:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "3378:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3378:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3386:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3386:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3374:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3374:3:136"
                        },
                        "nativeSrc": "3374:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3374:15:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "3391:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3391:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mcopy",
                      "nativeSrc": "3348:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3348:5:136"
                    },
                    "nativeSrc": "3348:50:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3348:50:136"
                  },
                  "nativeSrc": "3348:50:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3348:50:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nativeSrc": "3422:9:136",
                                "nodeType": "YulIdentifier",
                                "src": "3422:9:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "3433:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "3433:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "3418:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3418:3:136"
                            },
                            "nativeSrc": "3418:22:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3418:22:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3442:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3442:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3414:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3414:3:136"
                        },
                        "nativeSrc": "3414:31:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3414:31:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3447:1:136",
                        "nodeType": "YulLiteral",
                        "src": "3447:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3407:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3407:6:136"
                    },
                    "nativeSrc": "3407:42:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3407:42:136"
                  },
                  "nativeSrc": "3407:42:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3407:42:136"
                },
                {
                  "nativeSrc": "3458:62:136",
                  "nodeType": "YulAssignment",
                  "src": "3458:62:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3474:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3474:9:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "3493:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "3493:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3501:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3501:2:136",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "3489:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3489:3:136"
                                },
                                "nativeSrc": "3489:15:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3489:15:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3510:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3510:2:136",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "3506:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3506:3:136"
                                },
                                "nativeSrc": "3506:7:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3506:7:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "3485:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3485:3:136"
                            },
                            "nativeSrc": "3485:29:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3485:29:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3470:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3470:3:136"
                        },
                        "nativeSrc": "3470:45:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3470:45:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3517:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3517:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3466:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3466:3:136"
                    },
                    "nativeSrc": "3466:54:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3466:54:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "3458:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "3458:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
            "nativeSrc": "3013:513:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3121:9:136",
                "nodeType": "YulTypedName",
                "src": "3121:9:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "3132:6:136",
                "nodeType": "YulTypedName",
                "src": "3132:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "3140:6:136",
                "nodeType": "YulTypedName",
                "src": "3140:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "3151:4:136",
                "nodeType": "YulTypedName",
                "src": "3151:4:136",
                "type": ""
              }
            ],
            "src": "3013:513:136"
          },
          {
            "body": {
              "nativeSrc": "3609:199:136",
              "nodeType": "YulBlock",
              "src": "3609:199:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "3655:16:136",
                    "nodeType": "YulBlock",
                    "src": "3655:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3664:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3664:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3667:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3667:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3657:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3657:6:136"
                          },
                          "nativeSrc": "3657:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3657:12:136"
                        },
                        "nativeSrc": "3657:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3657:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "3630:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "3630:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "3639:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3639:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "3626:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3626:3:136"
                        },
                        "nativeSrc": "3626:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3626:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3651:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3651:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "3622:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3622:3:136"
                    },
                    "nativeSrc": "3622:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3622:32:136"
                  },
                  "nativeSrc": "3619:52:136",
                  "nodeType": "YulIf",
                  "src": "3619:52:136"
                },
                {
                  "nativeSrc": "3680:29:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3680:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3699:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "3699:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3693:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3693:5:136"
                    },
                    "nativeSrc": "3693:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3693:16:136"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "3684:5:136",
                      "nodeType": "YulTypedName",
                      "src": "3684:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3762:16:136",
                    "nodeType": "YulBlock",
                    "src": "3762:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3771:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3771:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3774:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3774:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3764:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3764:6:136"
                          },
                          "nativeSrc": "3764:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3764:12:136"
                        },
                        "nativeSrc": "3764:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3764:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "3731:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "3731:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "3752:5:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "3752:5:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "3745:6:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3745:6:136"
                                },
                                "nativeSrc": "3745:13:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3745:13:136"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "3738:6:136",
                              "nodeType": "YulIdentifier",
                              "src": "3738:6:136"
                            },
                            "nativeSrc": "3738:21:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3738:21:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "3728:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "3728:2:136"
                        },
                        "nativeSrc": "3728:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3728:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3721:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3721:6:136"
                    },
                    "nativeSrc": "3721:40:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3721:40:136"
                  },
                  "nativeSrc": "3718:60:136",
                  "nodeType": "YulIf",
                  "src": "3718:60:136"
                },
                {
                  "nativeSrc": "3787:15:136",
                  "nodeType": "YulAssignment",
                  "src": "3787:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "3797:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "3797:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "3787:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3787:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nativeSrc": "3531:277:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3575:9:136",
                "nodeType": "YulTypedName",
                "src": "3575:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "3586:7:136",
                "nodeType": "YulTypedName",
                "src": "3586:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "3598:6:136",
                "nodeType": "YulTypedName",
                "src": "3598:6:136",
                "type": ""
              }
            ],
            "src": "3531:277:136"
          },
          {
            "body": {
              "nativeSrc": "3987:234:136",
              "nodeType": "YulBlock",
              "src": "3987:234:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4004:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4004:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4015:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4015:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3997:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3997:6:136"
                    },
                    "nativeSrc": "3997:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3997:21:136"
                  },
                  "nativeSrc": "3997:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3997:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4038:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4038:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4049:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4049:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4034:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4034:3:136"
                        },
                        "nativeSrc": "4034:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4034:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4054:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4054:2:136",
                        "type": "",
                        "value": "44"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4027:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4027:6:136"
                    },
                    "nativeSrc": "4027:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4027:30:136"
                  },
                  "nativeSrc": "4027:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4027:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4077:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4077:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4088:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4088:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4073:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4073:3:136"
                        },
                        "nativeSrc": "4073:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4073:18:136"
                      },
                      {
                        "hexValue": "5769746e65744465706c6f796572436f6e666c7578436f72653a20616c726561",
                        "kind": "string",
                        "nativeSrc": "4093:34:136",
                        "nodeType": "YulLiteral",
                        "src": "4093:34:136",
                        "type": "",
                        "value": "WitnetDeployerConfluxCore: alrea"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4066:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4066:6:136"
                    },
                    "nativeSrc": "4066:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4066:62:136"
                  },
                  "nativeSrc": "4066:62:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4066:62:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4148:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4148:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4159:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4159:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4144:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4144:3:136"
                        },
                        "nativeSrc": "4144:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4144:18:136"
                      },
                      {
                        "hexValue": "64792070726f786966696564",
                        "kind": "string",
                        "nativeSrc": "4164:14:136",
                        "nodeType": "YulLiteral",
                        "src": "4164:14:136",
                        "type": "",
                        "value": "dy proxified"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4137:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4137:6:136"
                    },
                    "nativeSrc": "4137:42:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4137:42:136"
                  },
                  "nativeSrc": "4137:42:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4137:42:136"
                },
                {
                  "nativeSrc": "4188:27:136",
                  "nodeType": "YulAssignment",
                  "src": "4188:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4200:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4200:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4211:3:136",
                        "nodeType": "YulLiteral",
                        "src": "4211:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4196:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4196:3:136"
                    },
                    "nativeSrc": "4196:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4196:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "4188:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "4188:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_65817204dea5927f14b134534592238589b47b1c532975b5952b836ed27903ee__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "3813:408:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3964:9:136",
                "nodeType": "YulTypedName",
                "src": "3964:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "3978:4:136",
                "nodeType": "YulTypedName",
                "src": "3978:4:136",
                "type": ""
              }
            ],
            "src": "3813:408:136"
          },
          {
            "body": {
              "nativeSrc": "4427:240:136",
              "nodeType": "YulBlock",
              "src": "4427:240:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4444:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "4444:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "4453:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "4453:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4465:3:136",
                                "nodeType": "YulLiteral",
                                "src": "4465:3:136",
                                "type": "",
                                "value": "248"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "4470:3:136",
                                "nodeType": "YulLiteral",
                                "src": "4470:3:136",
                                "type": "",
                                "value": "255"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4461:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4461:3:136"
                            },
                            "nativeSrc": "4461:13:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4461:13:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4449:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4449:3:136"
                        },
                        "nativeSrc": "4449:26:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4449:26:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4437:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4437:6:136"
                    },
                    "nativeSrc": "4437:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4437:39:136"
                  },
                  "nativeSrc": "4437:39:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4437:39:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4496:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4496:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4501:1:136",
                            "nodeType": "YulLiteral",
                            "src": "4501:1:136",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4492:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4492:3:136"
                        },
                        "nativeSrc": "4492:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4492:11:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4513:2:136",
                                "nodeType": "YulLiteral",
                                "src": "4513:2:136",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value1",
                                "nativeSrc": "4517:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "4517:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4509:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4509:3:136"
                            },
                            "nativeSrc": "4509:15:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4509:15:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4530:26:136",
                                "nodeType": "YulLiteral",
                                "src": "4530:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "4526:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4526:3:136"
                            },
                            "nativeSrc": "4526:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4526:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4505:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4505:3:136"
                        },
                        "nativeSrc": "4505:53:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4505:53:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4485:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4485:6:136"
                    },
                    "nativeSrc": "4485:74:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4485:74:136"
                  },
                  "nativeSrc": "4485:74:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4485:74:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4579:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4579:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4584:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4584:2:136",
                            "type": "",
                            "value": "21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4575:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4575:3:136"
                        },
                        "nativeSrc": "4575:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4575:12:136"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "4589:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4589:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4568:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4568:6:136"
                    },
                    "nativeSrc": "4568:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4568:28:136"
                  },
                  "nativeSrc": "4568:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4568:28:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4616:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4616:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4621:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4621:2:136",
                            "type": "",
                            "value": "53"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4612:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4612:3:136"
                        },
                        "nativeSrc": "4612:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4612:12:136"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "4626:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4626:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4605:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4605:6:136"
                    },
                    "nativeSrc": "4605:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4605:28:136"
                  },
                  "nativeSrc": "4605:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4605:28:136"
                },
                {
                  "nativeSrc": "4642:19:136",
                  "nodeType": "YulAssignment",
                  "src": "4642:19:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4653:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "4653:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4658:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4658:2:136",
                        "type": "",
                        "value": "85"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4649:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4649:3:136"
                    },
                    "nativeSrc": "4649:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4649:12:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "4642:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4642:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "4226:441:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "4379:3:136",
                "nodeType": "YulTypedName",
                "src": "4379:3:136",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "4384:6:136",
                "nodeType": "YulTypedName",
                "src": "4384:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "4392:6:136",
                "nodeType": "YulTypedName",
                "src": "4392:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "4400:6:136",
                "nodeType": "YulTypedName",
                "src": "4400:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "4408:6:136",
                "nodeType": "YulTypedName",
                "src": "4408:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "4419:3:136",
                "nodeType": "YulTypedName",
                "src": "4419:3:136",
                "type": ""
              }
            ],
            "src": "4226:441:136"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\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_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_WitnetProxy_$8994__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"WitnetDeployer: deployment faile\")\n        mstore(add(headStart, 96), \"d\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        mcopy(add(headStart, 96), add(value1, 32), length)\n        mstore(add(add(headStart, length), 96), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_65817204dea5927f14b134534592238589b47b1c532975b5952b836ed27903ee__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"WitnetDeployerConfluxCore: alrea\")\n        mstore(add(headStart, 96), \"dy proxified\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(248, 255)))\n        mstore(add(pos, 1), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 21), value2)\n        mstore(add(pos, 53), value3)\n        end := add(pos, 85)\n    }\n}",
      "id": 136,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "363:2175:22:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "363:2175:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1330:201;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;409:32:136;;;391:51;;379:2;364:18;1330:201:22;;;;;;;893:448:21;;;;;;:::i;:::-;;:::i;1539:994:22:-;;;;;;:::i;:::-;;:::i;763:559::-;;;;;;:::i;:::-;;:::i;1330:201::-;1439:7;1471:52;1485:30;;;;;;;;:::i;:::-;-1:-1:-1;;1485:30:22;;;;;;;;;;;;;;1517:5;1471:13;:52::i;:::-;1464:59;1330:201;-1:-1:-1;;1330:201:22:o;893:448:21:-;990:17;1037:31;1051:9;1062:5;1037:13;:31::i;:::-;1025:43;;1083:9;-1:-1:-1;;;;;1083:21:21;;1108:1;1083:26;1079:255;;1218:5;1206:9;1200:16;1193:4;1182:9;1178:20;1175:1;1167:57;1154:70;-1:-1:-1;;;;;;1261:23:21;;1253:69;;;;-1:-1:-1;;;1253:69:21;;2813:2:136;1253:69:21;;;2795:21:136;2852:2;2832:18;;;2825:30;2891:34;2871:18;;;2864:62;-1:-1:-1;;;2942:18:136;;;2935:31;2983:19;;1253:69:21;;;;;;;;1539:994:22;1684:11;1713:18;1734:30;1753:10;1734:18;:30::i;:::-;1713:51;;1779:10;-1:-1:-1;;;;;1779:22:22;;1805:1;1779:27;1775:751;;1862:50;1869:30;;;;;;;;:::i;:::-;-1:-1:-1;;1869:30:22;;;;;;;;;;;;;;1901:10;1862:6;:50::i;:::-;;2000:10;-1:-1:-1;;;;;1980:42:22;;2041:20;2232:10;2330:9;2130:228;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1980:393;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2415:10:22;-1:-1:-1;2388:39:22;;1775:751;2460:54;;-1:-1:-1;;;2460:54:22;;4015:2:136;2460:54:22;;;3997:21:136;4054:2;4034:18;;;4027:30;4093:34;4073:18;;;4066:62;-1:-1:-1;;;4144:18:136;;;4137:42;4196:19;;2460:54:22;3813:408:136;1539:994:22;;;;;;:::o;763:559::-;1124:20;;;;;;;986:177;;;-1:-1:-1;;;;;;986:177:22;;;4437:39:136;1068:4:22;4513:2:136;4509:15;-1:-1:-1;;4505:53:136;4492:11;;;4485:74;4575:12;;;4568:28;;;;4612:12;;;;4605:28;;;;986:177:22;;;;;;;;;;4649:12:136;;;;986:177:22;;;958:220;;;;;-1:-1:-1;;;;;945:289:22;-1:-1:-1;;;944:359:22;;763:559::o;-1:-1:-1:-;;;;;;;;:::o;14:226:136:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:136;;14:226;-1:-1:-1;14:226:136:o;453:127::-;514:10;509:3;505:20;502:1;495:31;545:4;542:1;535:15;569:4;566:1;559:15;585:725;627:5;680:3;673:4;665:6;661:17;657:27;647:55;;698:1;695;688:12;647:55;738:6;725:20;768:18;760:6;757:30;754:56;;;790:18;;:::i;:::-;839:2;833:9;931:2;893:17;;-1:-1:-1;;889:31:136;;;922:2;885:40;881:54;869:67;;966:18;951:34;;987:22;;;948:62;945:88;;;1013:18;;:::i;:::-;1049:2;1042:22;1073;;;1114:19;;;1135:4;1110:30;1107:39;-1:-1:-1;1104:59:136;;;1159:1;1156;1149:12;1104:59;1223:6;1216:4;1208:6;1204:17;1197:4;1189:6;1185:17;1172:58;1278:1;1250:19;;;1271:4;1246:30;1239:41;;;;1254:6;585:725;-1:-1:-1;;;585:725:136:o;1315:434::-;1392:6;1400;1453:2;1441:9;1432:7;1428:23;1424:32;1421:52;;;1469:1;1466;1459:12;1421:52;1509:9;1496:23;1542:18;1534:6;1531:30;1528:50;;;1574:1;1571;1564:12;1528:50;1597:49;1638:7;1629:6;1618:9;1614:22;1597:49;:::i;:::-;1587:59;1715:2;1700:18;;;;1687:32;;-1:-1:-1;;;;1315:434:136:o;1754:616::-;1840:6;1848;1856;1909:2;1897:9;1888:7;1884:23;1880:32;1877:52;;;1925:1;1922;1915:12;1877:52;1970:23;;;-1:-1:-1;2069:2:136;2054:18;;2041:32;-1:-1:-1;;;;;2104:33:136;;2092:46;;2082:74;;2152:1;2149;2142:12;2082:74;2175:7;-1:-1:-1;2233:2:136;2218:18;;2205:32;2260:18;2249:30;;2246:50;;;2292:1;2289;2282:12;2246:50;2315:49;2356:7;2347:6;2336:9;2332:22;2315:49;:::i;:::-;2305:59;;;1754:616;;;;;:::o;3013:513::-;3217:1;3213;3208:3;3204:11;3200:19;3192:6;3188:32;3177:9;3170:51;3257:2;3252;3241:9;3237:18;3230:30;3151:4;3289:6;3283:13;3332:6;3327:2;3316:9;3312:18;3305:34;3391:6;3386:2;3378:6;3374:15;3369:2;3358:9;3354:18;3348:50;3447:1;3442:2;3433:6;3422:9;3418:22;3414:31;3407:42;3517:2;3510;3506:7;3501:2;3493:6;3489:15;3485:29;3474:9;3470:45;3466:54;3458:62;;;3013:513;;;;;:::o;3531:277::-;3598:6;3651:2;3639:9;3630:7;3626:23;3622:32;3619:52;;;3667:1;3664;3657:12;3619:52;3699:9;3693:16;3752:5;3745:13;3738:21;3731:5;3728:32;3718:60;;3774:1;3771;3764:12",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\nimport \"./WitnetDeployer.sol\";\r\n\r\n/// @notice WitnetDeployerConfluxCore contract used both as CREATE2 factory (EIP-1014) for Witnet artifacts, \r\n/// @notice and CREATE3 factory (EIP-3171) for Witnet proxies, on the Conflux Core Ecosystem.\r\n/// @author Guillermo Díaz <guillermo@witnet.io>\r\n\r\ncontract WitnetDeployerConfluxCore is WitnetDeployer {\r\n\r\n    /// @notice Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\r\n    /// @param _initCode Creation code, including construction logic and input parameters.\r\n    /// @param _salt Arbitrary value to modify resulting address.\r\n    /// @return Deterministic contract address.\r\n    function determineAddr(bytes memory _initCode, bytes32 _salt)\r\n        virtual override\r\n        public view\r\n        returns (address)\r\n    {\r\n        return address(\r\n            (uint160(uint(keccak256(\r\n                abi.encodePacked(\r\n                    bytes1(0xff),\r\n                    address(this),\r\n                    _salt,\r\n                    keccak256(_initCode)\r\n                )\r\n            ))) & uint160(0x0fffFFFFFfFfffFfFfFFffFffFffFFfffFfFFFFf)\r\n            ) | uint160(0x8000000000000000000000000000000000000000)\r\n        );\r\n    }\r\n\r\n    function determineProxyAddr(bytes32 _salt) \r\n        virtual override\r\n        public view\r\n        returns (address)\r\n    {\r\n        return determineAddr(type(WitnetProxy).creationCode, _salt);\r\n    }\r\n\r\n    function proxify(bytes32 _proxySalt, address _firstImplementation, bytes memory _initData)\r\n        virtual override external \r\n        returns (WitnetProxy)\r\n    {\r\n        address _proxyAddr = determineProxyAddr(_proxySalt);\r\n        if (_proxyAddr.code.length == 0) {\r\n            // deploy the WitnetProxy\r\n            deploy(type(WitnetProxy).creationCode, _proxySalt);\r\n            // settle first implementation address,\r\n            WitnetProxy(payable(_proxyAddr)).upgradeTo(\r\n                _firstImplementation, \r\n                // and initialize it, providing\r\n                abi.encode(\r\n                    // the owner (i.e. the caller of this function)\r\n                    msg.sender,\r\n                    // and some (optional) initialization data\r\n                     _initData\r\n                )\r\n            );\r\n            return WitnetProxy(payable(_proxyAddr));\r\n        } else {\r\n            revert(\"WitnetDeployerConfluxCore: already proxified\");\r\n        }\r\n    }\r\n\r\n}",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\core\\WitnetDeployerConfluxCore.sol",
  "ast": {
    "absolutePath": "project:/contracts/core/WitnetDeployerConfluxCore.sol",
    "exportedSymbols": {
      "Create3": [
        31519
      ],
      "ERC165": [
        616
      ],
      "IERC165": [
        628
      ],
      "Initializable": [
        267
      ],
      "Proxiable": [
        45810
      ],
      "Upgradeable": [
        45930
      ],
      "WitnetDeployer": [
        8396
      ],
      "WitnetDeployerConfluxCore": [
        8533
      ],
      "WitnetProxy": [
        8994
      ]
    },
    "id": 8534,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8398,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:22"
      },
      {
        "absolutePath": "project:/contracts/core/WitnetDeployer.sol",
        "file": "./WitnetDeployer.sol",
        "id": 8399,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 8534,
        "sourceUnit": 8397,
        "src": "70:30:22",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 8401,
              "name": "WitnetDeployer",
              "nameLocations": [
                "401:14:22"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 8396,
              "src": "401:14:22"
            },
            "id": 8402,
            "nodeType": "InheritanceSpecifier",
            "src": "401:14:22"
          }
        ],
        "canonicalName": "WitnetDeployerConfluxCore",
        "contractDependencies": [
          8994
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 8400,
          "nodeType": "StructuredDocumentation",
          "src": "104:257:22",
          "text": "@notice WitnetDeployerConfluxCore contract used both as CREATE2 factory (EIP-1014) for Witnet artifacts, \n @notice and CREATE3 factory (EIP-3171) for Witnet proxies, on the Conflux Core Ecosystem.\n @author Guillermo Díaz <guillermo@witnet.io>"
        },
        "fullyImplemented": true,
        "id": 8533,
        "linearizedBaseContracts": [
          8533,
          8396
        ],
        "name": "WitnetDeployerConfluxCore",
        "nameLocation": "372:25:22",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              8318
            ],
            "body": {
              "id": 8451,
              "nodeType": "Block",
              "src": "904:418:22",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "id": 8448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              },
                              "id": 8442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30786666",
                                                    "id": 8424,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1032:4:22",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_255_by_1",
                                                      "typeString": "int_const 255"
                                                    },
                                                    "value": "0xff"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_255_by_1",
                                                      "typeString": "int_const 255"
                                                    }
                                                  ],
                                                  "id": 8423,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "1025:6:22",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_bytes1_$",
                                                    "typeString": "type(bytes1)"
                                                  },
                                                  "typeName": {
                                                    "id": 8422,
                                                    "name": "bytes1",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1025:6:22",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 8425,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1025:12:22",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 8428,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967268,
                                                    "src": "1068:4:22",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_WitnetDeployerConfluxCore_$8533",
                                                      "typeString": "contract WitnetDeployerConfluxCore"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_contract$_WitnetDeployerConfluxCore_$8533",
                                                      "typeString": "contract WitnetDeployerConfluxCore"
                                                    }
                                                  ],
                                                  "id": 8427,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "1060:7:22",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": {
                                                    "id": 8426,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1060:7:22",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 8429,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1060:13:22",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 8430,
                                                "name": "_salt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8407,
                                                "src": "1096:5:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 8432,
                                                    "name": "_initCode",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8405,
                                                    "src": "1134:9:22",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  ],
                                                  "id": 8431,
                                                  "name": "keccak256",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4294967288,
                                                  "src": "1124:9:22",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                                  }
                                                },
                                                "id": 8433,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1124:20:22",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "expression": {
                                                "id": 8420,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967295,
                                                "src": "986:3:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_abi",
                                                  "typeString": "abi"
                                                }
                                              },
                                              "id": 8421,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "990:12:22",
                                              "memberName": "encodePacked",
                                              "nodeType": "MemberAccess",
                                              "src": "986:16:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 8434,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "986:177:22",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 8419,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4294967288,
                                          "src": "958:9:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 8435,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "958:220:22",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 8418,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "953:4:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 8417,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "953:4:22",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 8436,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "953:226:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8416,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "945:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 8415,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "945:7:22",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "945:235:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307830666666464646464666466666664666466646466666466666466666464666666646664646464666",
                                    "id": 8440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1191:42:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "value": "0x0fffFFFFFfFfffFfFfFFffFffFffFFfffFfFFFFf"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8439,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1183:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 8438,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1183:7:22",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1183:51:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              "src": "945:289:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "id": 8443,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "944:305:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "|",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "307838303030303030303030303030303030303030303030303030303030303030303030303030303030",
                              "id": 8446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1260:42:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "value": "0x8000000000000000000000000000000000000000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1252:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint160_$",
                              "typeString": "type(uint160)"
                            },
                            "typeName": {
                              "id": 8444,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "1252:7:22",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1252:51:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "src": "944:359:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 8414,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "922:7:22",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 8413,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "922:7:22",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 8449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "922:392:22",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8412,
                  "id": 8450,
                  "nodeType": "Return",
                  "src": "915:399:22"
                }
              ]
            },
            "documentation": {
              "id": 8403,
              "nodeType": "StructuredDocumentation",
              "src": "425:332:22",
              "text": "@notice Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\n @param _initCode Creation code, including construction logic and input parameters.\n @param _salt Arbitrary value to modify resulting address.\n @return Deterministic contract address."
            },
            "functionSelector": "d3933c29",
            "id": 8452,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determineAddr",
            "nameLocation": "772:13:22",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8409,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "842:8:22"
            },
            "parameters": {
              "id": 8408,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8405,
                  "mutability": "mutable",
                  "name": "_initCode",
                  "nameLocation": "799:9:22",
                  "nodeType": "VariableDeclaration",
                  "scope": 8452,
                  "src": "786:22:22",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8404,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "786:5:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8407,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "818:5:22",
                  "nodeType": "VariableDeclaration",
                  "scope": 8452,
                  "src": "810:13:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8406,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "810:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "785:39:22"
            },
            "returnParameters": {
              "id": 8412,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8411,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8452,
                  "src": "890:7:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8410,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "890:7:22",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "889:9:22"
            },
            "scope": 8533,
            "src": "763:559:22",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              8331
            ],
            "body": {
              "id": 8468,
              "nodeType": "Block",
              "src": "1453:78:22",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8462,
                              "name": "WitnetProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8994,
                              "src": "1490:11:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                "typeString": "type(contract WitnetProxy)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                "typeString": "type(contract WitnetProxy)"
                              }
                            ],
                            "id": 8461,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "1485:4:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 8463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1485:17:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_contract$_WitnetProxy_$8994",
                            "typeString": "type(contract WitnetProxy)"
                          }
                        },
                        "id": 8464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1503:12:22",
                        "memberName": "creationCode",
                        "nodeType": "MemberAccess",
                        "src": "1485:30:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 8465,
                        "name": "_salt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8454,
                        "src": "1517:5:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8460,
                      "name": "determineAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8452
                      ],
                      "referencedDeclaration": 8452,
                      "src": "1471:13:22",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes memory,bytes32) view returns (address)"
                      }
                    },
                    "id": 8466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1471:52:22",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8459,
                  "id": 8467,
                  "nodeType": "Return",
                  "src": "1464:59:22"
                }
              ]
            },
            "functionSelector": "4998f038",
            "id": 8469,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determineProxyAddr",
            "nameLocation": "1339:18:22",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8456,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1391:8:22"
            },
            "parameters": {
              "id": 8455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8454,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "1366:5:22",
                  "nodeType": "VariableDeclaration",
                  "scope": 8469,
                  "src": "1358:13:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8453,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1358:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1357:15:22"
            },
            "returnParameters": {
              "id": 8459,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8458,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8469,
                  "src": "1439:7:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8457,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1439:7:22",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1438:9:22"
            },
            "scope": 8533,
            "src": "1330:201:22",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              8395
            ],
            "body": {
              "id": 8531,
              "nodeType": "Block",
              "src": "1702:831:22",
              "statements": [
                {
                  "assignments": [
                    8483
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8483,
                      "mutability": "mutable",
                      "name": "_proxyAddr",
                      "nameLocation": "1721:10:22",
                      "nodeType": "VariableDeclaration",
                      "scope": 8531,
                      "src": "1713:18:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8482,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1713:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8487,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 8485,
                        "name": "_proxySalt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8471,
                        "src": "1753:10:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8484,
                      "name": "determineProxyAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8469
                      ],
                      "referencedDeclaration": 8469,
                      "src": "1734:18:22",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 8486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1734:30:22",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1713:51:22"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 8488,
                          "name": "_proxyAddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8483,
                          "src": "1779:10:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1790:4:22",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "1779:15:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 8490,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1795:6:22",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "1779:22:22",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 8491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1805:1:22",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1779:27:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 8529,
                    "nodeType": "Block",
                    "src": "2445:81:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "5769746e65744465706c6f796572436f6e666c7578436f72653a20616c72656164792070726f786966696564",
                              "id": 8526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2467:46:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_65817204dea5927f14b134534592238589b47b1c532975b5952b836ed27903ee",
                                "typeString": "literal_string \"WitnetDeployerConfluxCore: already proxified\""
                              },
                              "value": "WitnetDeployerConfluxCore: already proxified"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_65817204dea5927f14b134534592238589b47b1c532975b5952b836ed27903ee",
                                "typeString": "literal_string \"WitnetDeployerConfluxCore: already proxified\""
                              }
                            ],
                            "id": 8525,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967277,
                              4294967277
                            ],
                            "referencedDeclaration": 4294967277,
                            "src": "2460:6:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 8527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2460:54:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8528,
                        "nodeType": "ExpressionStatement",
                        "src": "2460:54:22"
                      }
                    ]
                  },
                  "id": 8530,
                  "nodeType": "IfStatement",
                  "src": "1775:751:22",
                  "trueBody": {
                    "id": 8524,
                    "nodeType": "Block",
                    "src": "1808:631:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8495,
                                    "name": "WitnetProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8994,
                                    "src": "1874:11:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                      "typeString": "type(contract WitnetProxy)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                      "typeString": "type(contract WitnetProxy)"
                                    }
                                  ],
                                  "id": 8494,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967269,
                                  "src": "1869:4:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 8496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1869:17:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_WitnetProxy_$8994",
                                  "typeString": "type(contract WitnetProxy)"
                                }
                              },
                              "id": 8497,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "1887:12:22",
                              "memberName": "creationCode",
                              "nodeType": "MemberAccess",
                              "src": "1869:30:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 8498,
                              "name": "_proxySalt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8471,
                              "src": "1901:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 8493,
                            "name": "deploy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8280,
                            "src": "1862:6:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes memory,bytes32) returns (address)"
                            }
                          },
                          "id": 8499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1862:50:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8500,
                        "nodeType": "ExpressionStatement",
                        "src": "1862:50:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8508,
                              "name": "_firstImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8473,
                              "src": "2041:20:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 8511,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967281,
                                    "src": "2232:3:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 8512,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2236:6:22",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "2232:10:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 8513,
                                  "name": "_initData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8475,
                                  "src": "2330:9:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 8509,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967295,
                                  "src": "2130:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 8510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2134:6:22",
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "2130:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 8514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2130:228:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 8504,
                                      "name": "_proxyAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8483,
                                      "src": "2000:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8503,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1992:8:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_payable_$",
                                      "typeString": "type(address payable)"
                                    },
                                    "typeName": {
                                      "id": 8502,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1992:8:22",
                                      "stateMutability": "payable",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 8505,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1992:19:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 8501,
                                "name": "WitnetProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8994,
                                "src": "1980:11:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                  "typeString": "type(contract WitnetProxy)"
                                }
                              },
                              "id": 8506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1980:32:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                                "typeString": "contract WitnetProxy"
                              }
                            },
                            "id": 8507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2013:9:22",
                            "memberName": "upgradeTo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8984,
                            "src": "1980:42:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (address,bytes memory) external returns (bool)"
                            }
                          },
                          "id": 8515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1980:393:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8516,
                        "nodeType": "ExpressionStatement",
                        "src": "1980:393:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 8520,
                                  "name": "_proxyAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8483,
                                  "src": "2415:10:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2407:8:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 8518,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2407:8:22",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2407:19:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 8517,
                            "name": "WitnetProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8994,
                            "src": "2395:11:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                              "typeString": "type(contract WitnetProxy)"
                            }
                          },
                          "id": 8522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2395:32:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                            "typeString": "contract WitnetProxy"
                          }
                        },
                        "functionReturnParameters": 8481,
                        "id": 8523,
                        "nodeType": "Return",
                        "src": "2388:39:22"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "5ba489e7",
            "id": 8532,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "proxify",
            "nameLocation": "1548:7:22",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8477,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1647:8:22"
            },
            "parameters": {
              "id": 8476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8471,
                  "mutability": "mutable",
                  "name": "_proxySalt",
                  "nameLocation": "1564:10:22",
                  "nodeType": "VariableDeclaration",
                  "scope": 8532,
                  "src": "1556:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8470,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1556:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8473,
                  "mutability": "mutable",
                  "name": "_firstImplementation",
                  "nameLocation": "1584:20:22",
                  "nodeType": "VariableDeclaration",
                  "scope": 8532,
                  "src": "1576:28:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8472,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1576:7:22",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8475,
                  "mutability": "mutable",
                  "name": "_initData",
                  "nameLocation": "1619:9:22",
                  "nodeType": "VariableDeclaration",
                  "scope": 8532,
                  "src": "1606:22:22",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8474,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1606:5:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1555:74:22"
            },
            "returnParameters": {
              "id": 8481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8480,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8532,
                  "src": "1684:11:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                    "typeString": "contract WitnetProxy"
                  },
                  "typeName": {
                    "id": 8479,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8478,
                      "name": "WitnetProxy",
                      "nameLocations": [
                        "1684:11:22"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8994,
                      "src": "1684:11:22"
                    },
                    "referencedDeclaration": 8994,
                    "src": "1684:11:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                      "typeString": "contract WitnetProxy"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1683:13:22"
            },
            "scope": 8533,
            "src": "1539:994:22",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "external"
          }
        ],
        "scope": 8534,
        "src": "363:2175:22",
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "src": "35:2503:22"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:45.455Z",
  "devdoc": {
    "author": "Guillermo Díaz <guillermo@witnet.io>",
    "kind": "dev",
    "methods": {
      "deploy(bytes,bytes32)": {
        "details": "The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the addressnor the nonce of the caller (i.e. see EIP-1014). ",
        "params": {
          "_initCode": "Creation code, including construction logic and input parameters.",
          "_salt": "Arbitrary value to modify resulting address."
        },
        "returns": {
          "_deployed": "Just deployed contract address."
        }
      },
      "determineAddr(bytes,bytes32)": {
        "params": {
          "_initCode": "Creation code, including construction logic and input parameters.",
          "_salt": "Arbitrary value to modify resulting address."
        },
        "returns": {
          "_0": "Deterministic contract address."
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "deploy(bytes,bytes32)": {
        "notice": "Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. "
      },
      "determineAddr(bytes,bytes32)": {
        "notice": "Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`."
      }
    },
    "notice": "WitnetDeployerConfluxCore contract used both as CREATE2 factory (EIP-1014) for Witnet artifacts, and CREATE3 factory (EIP-3171) for Witnet proxies, on the Conflux Core Ecosystem.",
    "version": 1
  }
}