witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
726 lines (725 loc) • 379 kB
JSON
{
"contractName": "WitnetDeployer",
"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.25+commit.b61c2a91\"},\"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@otherplane.com>\",\"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\":\"WitnetDeployer contract used both as CREATE2 (EIP-1014) factory for Witnet artifacts, and CREATE3 (EIP-3171) factory for Witnet proxies.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetDeployer.sol\":\"WitnetDeployer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"project:/contracts/core/WitnetDeployer.sol\":{\"keccak256\":\"0xbaf419861fcc46079b0571b959fe7ff70df90d185334d2e14aa080737e39a49d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8288c91323438474da38b5b9b64c0c327f75e3052ee3b04c8703780ae6e8c4e\",\"dweb:/ipfs/QmT1mdehAeWh1DaRL2MuegmEh6JPrJRE1BajwdriP8v7PT\"]},\"project:/contracts/core/WitnetProxy.sol\":{\"keccak256\":\"0x2b2f56fc69bf0e01f6f1062202d1682cd394fa3b3d9ff2f8f833ab51c9e866cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8017f76a71e4a52a5a5e249081c92510bac5b91f03f727e66ff4406238521337\",\"dweb:/ipfs/QmdWcPAL3MGtxGdpX5CMfgzz4YzxYEeCiFRoGHVCr8rLEL\"]},\"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\":\"0xbeb025c71f037acb1a668174eb6930631bf397129beb825f2660e5d8cf19614f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe6ce4dcd500093ae069d35b91829ccb471e1ca33ed0851fb053fbfe76c78aba\",\"dweb:/ipfs/QmT7huvCFS6bHDxt7HhEogJmyvYNbeb6dFTJudsVSX6nEs\"]}},\"version\":1}",
"bytecode": "0x6080604052348015600f57600080fd5b506111df8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634998f038146100515780634af63f02146100805780635ba489e714610093578063d3933c29146100a6575b600080fd5b61006461005f36600461059b565b6100b9565b6040516001600160a01b03909116815260200160405180910390f35b61006461008e366004610657565b6100ca565b6100646100a136600461069c565b61015b565b6100646100b4366004610657565b61029b565b60006100c4826102f7565b92915050565b60006100d6838361029b565b9050806001600160a01b03163b6000036100c457818351602085016000f590506001600160a01b0381166100c45760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b600080610167856100b9565b9050806001600160a01b03163b600003610242576101a7856040518060200161018f9061058e565b601f1982820381018352601f909101166040526103ca565b50806001600160a01b0316636fbc15e98533866040516020016101cb929190610725565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016101f7929190610725565b6020604051808303816000875af1158015610216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023a9190610767565b509050610294565b60405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a20616c72656164792070726f78696669656044820152601960fa1b6064820152608401610152565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015281516001600160f81b03198183015230606090811b6bffffffffffffffffffffffff19908116602184015260358301959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580840191909152845180840390910181526075830185528051908401206135a560f21b6095840152901b9093166097840152600160f81b60ab8401528151608c81850301815260ac909301909152815191012090565b600061029483836000806103dd846102f7565b90506001600160a01b0381163b156104375760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a2074617267657420616c72656164792065786973747300006044820152606401610152565b6040805180820190915260108082526f67363d3d37363d34f03d5260086018f360801b6020830190815260009291879184f591506001600160a01b0382166104c15760405162461bcd60e51b815260206004820152601f60248201527f437265617465333a206572726f72206372656174696e6720666163746f7279006044820152606401610152565b6000826001600160a01b031685876040516104dc9190610789565b60006040518083038185875af1925050503d8060008114610519576040519150601f19603f3d011682016040523d82523d6000602084013e61051e565b606091505b5050905080801561053857506001600160a01b0384163b15155b6105845760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a206572726f72206372656174696e672074617267657400006044820152606401610152565b5050509392505050565b610a04806107a683390190565b6000602082840312156105ad57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126105db57600080fd5b813567ffffffffffffffff808211156105f6576105f66105b4565b604051601f8301601f19908116603f0116810190828211818310171561061e5761061e6105b4565b8160405283815286602085880101111561063757600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561066a57600080fd5b823567ffffffffffffffff81111561068157600080fd5b61068d858286016105ca565b95602094909401359450505050565b6000806000606084860312156106b157600080fd5b8335925060208401356001600160a01b03811681146106cf57600080fd5b9150604084013567ffffffffffffffff8111156106eb57600080fd5b6106f7868287016105ca565b9150509250925092565b60005b8381101561071c578181015183820152602001610704565b50506000910152565b60018060a01b03831681526040602082015260008251806040840152610752816060850160208701610701565b601f01601f1916919091016060019392505050565b60006020828403121561077957600080fd5b8151801515811461029457600080fd5b6000825161079b818460208701610701565b919091019291505056fe6080604052348015600f57600080fd5b506109e58061001f6000396000f3fe60806040526004361061002d5760003560e01c80635c60da1b146100655780636fbc15e91461009757610034565b3661003457005b600061003e6100c7565b905060405136600082376000803683855af43d806000843e818015610061578184f35b8184fd5b34801561007157600080fd5b5061007a6100c7565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100a357600080fd5b506100b76100b2366004610791565b6100f5565b604051901515815260200161008e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b60006001600160a01b0383166101525760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b600061015c6100c7565b90506001600160a01b0381161561050857806001600160a01b0316846001600160a01b0316036101ce5760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610149565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610228575060408051601f3d908101601f1916820190925261022591810190610830565b60015b6102875760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610149565b806102d45760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610149565b5060405133602482015260009081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b17905251610326919061087d565b600060405180830381855af49150503d8060008114610361576040519150601f19603f3d011682016040523d82523d6000602084013e610366565b606091505b5091509150816103885760405162461bcd60e51b815260040161014990610899565b8080602001905181019061039c9190610830565b6103e85760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610149565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a91906108e0565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906108e0565b146105055760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610149565b50505b600080856001600160a01b0316856040516024016105269190610925565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b1790525161055b919061087d565b600060405180830381855af49150503d8060008114610596576040519150601f19603f3d011682016040523d82523d6000602084013e61059b565b606091505b509150915081610635576044815110156106025760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610149565b6004810190508080602001905181019061061c9190610938565b60405162461bcd60e51b81526004016101499190610925565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106f5575060408051601f3d908101601f191682019092526106f291810190610830565b60015b6107115760405162461bcd60e51b815260040161014990610899565b935061071c92505050565b92915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561076157610761610722565b604052919050565b600067ffffffffffffffff82111561078357610783610722565b50601f01601f191660200190565b600080604083850312156107a457600080fd5b82356001600160a01b03811681146107bb57600080fd5b9150602083013567ffffffffffffffff8111156107d757600080fd5b8301601f810185136107e857600080fd5b80356107fb6107f682610769565b610738565b81815286602083850101111561081057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561084257600080fd5b8151801515811461085257600080fd5b9392505050565b60005b8381101561087457818101518382015260200161085c565b50506000910152565b6000825161088f818460208701610859565b9190910192915050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b6000602082840312156108f257600080fd5b5051919050565b60008151808452610911816020860160208601610859565b601f01601f19169290920160200192915050565b60208152600061085260208301846108f9565b60006020828403121561094a57600080fd5b815167ffffffffffffffff81111561096157600080fd5b8201601f8101841361097257600080fd5b80516109806107f682610769565b81815285602083850101111561099557600080fd5b6109a6826020830160208601610859565b9594505050505056fea2646970667358221220ba4d61ba6dc6b10826f1b2f21a7fb1965aee5031bae62952c0d5d7b7c16674ab64736f6c63430008190033a2646970667358221220c2dfdf77b7842d8ea488b04bd156e9f28e73ce58949b771c7772e88b164fc10c64736f6c63430008190033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80634998f038146100515780634af63f02146100805780635ba489e714610093578063d3933c29146100a6575b600080fd5b61006461005f36600461059b565b6100b9565b6040516001600160a01b03909116815260200160405180910390f35b61006461008e366004610657565b6100ca565b6100646100a136600461069c565b61015b565b6100646100b4366004610657565b61029b565b60006100c4826102f7565b92915050565b60006100d6838361029b565b9050806001600160a01b03163b6000036100c457818351602085016000f590506001600160a01b0381166100c45760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b600080610167856100b9565b9050806001600160a01b03163b600003610242576101a7856040518060200161018f9061058e565b601f1982820381018352601f909101166040526103ca565b50806001600160a01b0316636fbc15e98533866040516020016101cb929190610725565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016101f7929190610725565b6020604051808303816000875af1158015610216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023a9190610767565b509050610294565b60405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a20616c72656164792070726f78696669656044820152601960fa1b6064820152608401610152565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015281516001600160f81b03198183015230606090811b6bffffffffffffffffffffffff19908116602184015260358301959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580840191909152845180840390910181526075830185528051908401206135a560f21b6095840152901b9093166097840152600160f81b60ab8401528151608c81850301815260ac909301909152815191012090565b600061029483836000806103dd846102f7565b90506001600160a01b0381163b156104375760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a2074617267657420616c72656164792065786973747300006044820152606401610152565b6040805180820190915260108082526f67363d3d37363d34f03d5260086018f360801b6020830190815260009291879184f591506001600160a01b0382166104c15760405162461bcd60e51b815260206004820152601f60248201527f437265617465333a206572726f72206372656174696e6720666163746f7279006044820152606401610152565b6000826001600160a01b031685876040516104dc9190610789565b60006040518083038185875af1925050503d8060008114610519576040519150601f19603f3d011682016040523d82523d6000602084013e61051e565b606091505b5050905080801561053857506001600160a01b0384163b15155b6105845760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a206572726f72206372656174696e672074617267657400006044820152606401610152565b5050509392505050565b610a04806107a683390190565b6000602082840312156105ad57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126105db57600080fd5b813567ffffffffffffffff808211156105f6576105f66105b4565b604051601f8301601f19908116603f0116810190828211818310171561061e5761061e6105b4565b8160405283815286602085880101111561063757600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561066a57600080fd5b823567ffffffffffffffff81111561068157600080fd5b61068d858286016105ca565b95602094909401359450505050565b6000806000606084860312156106b157600080fd5b8335925060208401356001600160a01b03811681146106cf57600080fd5b9150604084013567ffffffffffffffff8111156106eb57600080fd5b6106f7868287016105ca565b9150509250925092565b60005b8381101561071c578181015183820152602001610704565b50506000910152565b60018060a01b03831681526040602082015260008251806040840152610752816060850160208701610701565b601f01601f1916919091016060019392505050565b60006020828403121561077957600080fd5b8151801515811461029457600080fd5b6000825161079b818460208701610701565b919091019291505056fe6080604052348015600f57600080fd5b506109e58061001f6000396000f3fe60806040526004361061002d5760003560e01c80635c60da1b146100655780636fbc15e91461009757610034565b3661003457005b600061003e6100c7565b905060405136600082376000803683855af43d806000843e818015610061578184f35b8184fd5b34801561007157600080fd5b5061007a6100c7565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100a357600080fd5b506100b76100b2366004610791565b6100f5565b604051901515815260200161008e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b60006001600160a01b0383166101525760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b600061015c6100c7565b90506001600160a01b0381161561050857806001600160a01b0316846001600160a01b0316036101ce5760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610149565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610228575060408051601f3d908101601f1916820190925261022591810190610830565b60015b6102875760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610149565b806102d45760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610149565b5060405133602482015260009081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b17905251610326919061087d565b600060405180830381855af49150503d8060008114610361576040519150601f19603f3d011682016040523d82523d6000602084013e610366565b606091505b5091509150816103885760405162461bcd60e51b815260040161014990610899565b8080602001905181019061039c9190610830565b6103e85760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610149565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a91906108e0565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906108e0565b146105055760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610149565b50505b600080856001600160a01b0316856040516024016105269190610925565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b1790525161055b919061087d565b600060405180830381855af49150503d8060008114610596576040519150601f19603f3d011682016040523d82523d6000602084013e61059b565b606091505b509150915081610635576044815110156106025760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610149565b6004810190508080602001905181019061061c9190610938565b60405162461bcd60e51b81526004016101499190610925565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106f5575060408051601f3d908101601f191682019092526106f291810190610830565b60015b6107115760405162461bcd60e51b815260040161014990610899565b935061071c92505050565b92915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561076157610761610722565b604052919050565b600067ffffffffffffffff82111561078357610783610722565b50601f01601f191660200190565b600080604083850312156107a457600080fd5b82356001600160a01b03811681146107bb57600080fd5b9150602083013567ffffffffffffffff8111156107d757600080fd5b8301601f810185136107e857600080fd5b80356107fb6107f682610769565b610738565b81815286602083850101111561081057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561084257600080fd5b8151801515811461085257600080fd5b9392505050565b60005b8381101561087457818101518382015260200161085c565b50506000910152565b6000825161088f818460208701610859565b9190910192915050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b6000602082840312156108f257600080fd5b5051919050565b60008151808452610911816020860160208601610859565b601f01601f19169290920160200192915050565b60208152600061085260208301846108f9565b60006020828403121561094a57600080fd5b815167ffffffffffffffff81111561096157600080fd5b8201601f8101841361097257600080fd5b80516109806107f682610769565b81815285602083850101111561099557600080fd5b6109a6826020830160208601610859565b9594505050505056fea2646970667358221220ba4d61ba6dc6b10826f1b2f21a7fb1965aee5031bae62952c0d5d7b7c16674ab64736f6c63430008190033a2646970667358221220c2dfdf77b7842d8ea488b04bd156e9f28e73ce58949b771c7772e88b164fc10c64736f6c63430008190033",
"immutableReferences": {},
"generatedSources": [],
"deployedGeneratedSources": [
{
"ast": {
"nativeSrc": "0:7139:84",
"nodeType": "YulBlock",
"src": "0:7139:84",
"statements": [
{
"nativeSrc": "6:3:84",
"nodeType": "YulBlock",
"src": "6:3:84",
"statements": []
},
{
"body": {
"nativeSrc": "84:110:84",
"nodeType": "YulBlock",
"src": "84:110:84",
"statements": [
{
"body": {
"nativeSrc": "130:16:84",
"nodeType": "YulBlock",
"src": "130:16:84",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "139:1:84",
"nodeType": "YulLiteral",
"src": "139:1:84",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "142:1:84",
"nodeType": "YulLiteral",
"src": "142:1:84",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "132:6:84",
"nodeType": "YulIdentifier",
"src": "132:6:84"
},
"nativeSrc": "132:12:84",
"nodeType": "YulFunctionCall",
"src": "132:12:84"
},
"nativeSrc": "132:12:84",
"nodeType": "YulExpressionStatement",
"src": "132:12:84"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "105:7:84",
"nodeType": "YulIdentifier",
"src": "105:7:84"
},
{
"name": "headStart",
"nativeSrc": "114:9:84",
"nodeType": "YulIdentifier",
"src": "114:9:84"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "101:3:84",
"nodeType": "YulIdentifier",
"src": "101:3:84"
},
"nativeSrc": "101:23:84",
"nodeType": "YulFunctionCall",
"src": "101:23:84"
},
{
"kind": "number",
"nativeSrc": "126:2:84",
"nodeType": "YulLiteral",
"src": "126:2:84",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "97:3:84",
"nodeType": "YulIdentifier",
"src": "97:3:84"
},
"nativeSrc": "97:32:84",
"nodeType": "YulFunctionCall",
"src": "97:32:84"
},
"nativeSrc": "94:52:84",
"nodeType": "YulIf",
"src": "94:52:84"
},
{
"nativeSrc": "155:33:84",
"nodeType": "YulAssignment",
"src": "155:33:84",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "178:9:84",
"nodeType": "YulIdentifier",
"src": "178:9:84"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "165:12:84",
"nodeType": "YulIdentifier",
"src": "165:12:84"
},
"nativeSrc": "165:23:84",
"nodeType": "YulFunctionCall",
"src": "165:23:84"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "155:6:84",
"nodeType": "YulIdentifier",
"src": "155:6:84"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nativeSrc": "14:180:84",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "50:9:84",
"nodeType": "YulTypedName",
"src": "50:9:84",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "61:7:84",
"nodeType": "YulTypedName",
"src": "61:7:84",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "73:6:84",
"nodeType": "YulTypedName",
"src": "73:6:84",
"type": ""
}
],
"src": "14:180:84"
},
{
"body": {
"nativeSrc": "300:102:84",
"nodeType": "YulBlock",
"src": "300:102:84",
"statements": [
{
"nativeSrc": "310:26:84",
"nodeType": "YulAssignment",
"src": "310:26:84",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "322:9:84",
"nodeType": "YulIdentifier",
"src": "322:9:84"
},
{
"kind": "number",
"nativeSrc": "333:2:84",
"nodeType": "YulLiteral",
"src": "333:2:84",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "318:3:84",
"nodeType": "YulIdentifier",
"src": "318:3:84"
},
"nativeSrc": "318:18:84",
"nodeType": "YulFunctionCall",
"src": "318:18:84"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "310:4:84",
"nodeType": "YulIdentifier",
"src": "310:4:84"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "352:9:84",
"nodeType": "YulIdentifier",
"src": "352:9:84"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "367:6:84",
"nodeType": "YulIdentifier",
"src": "367:6:84"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "383:3:84",
"nodeType": "YulLiteral",
"src": "383:3:84",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "388:1:84",
"nodeType": "YulLiteral",
"src": "388:1:84",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "379:3:84",
"nodeType": "YulIdentifier",
"src": "379:3:84"
},
"nativeSrc": "379:11:84",
"nodeType": "YulFunctionCall",
"src": "379:11:84"
},
{
"kind": "number",
"nativeSrc": "392:1:84",
"nodeType": "YulLiteral",
"src": "392:1:84",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "375:3:84",
"nodeType": "YulIdentifier",
"src": "375:3:84"
},
"nativeSrc": "375:19:84",
"nodeType": "YulFunctionCall",
"src": "375:19:84"
}
],
"functionName": {
"name": "and",
"nativeSrc": "363:3:84",
"nodeType": "YulIdentifier",
"src": "363:3:84"
},
"nativeSrc": "363:32:84",
"nodeType": "YulFunctionCall",
"src": "363:32:84"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "345:6:84",
"nodeType": "YulIdentifier",
"src": "345:6:84"
},
"nativeSrc": "345:51:84",
"nodeType": "YulFunctionCall",
"src": "345:51:84"
},
"nativeSrc": "345:51:84",
"nodeType": "YulExpressionStatement",
"src": "345:51:84"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "199:203:84",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "269:9:84",
"nodeType": "YulTypedName",
"src": "269:9:84",
"type": ""
},
{
"name": "value0",
"nativeSrc": "280:6:84",
"nodeType": "YulTypedName",
"src": "280:6:84",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "291:4:84",
"nodeType": "YulTypedName",
"src": "291:4:84",
"type": ""
}
],
"src": "199:203:84"
},
{
"body": {
"nativeSrc": "439:95:84",
"nodeType": "YulBlock",
"src": "439:95:84",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "456:1:84",
"nodeType": "YulLiteral",
"src": "456:1:84",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "463:3:84",
"nodeType": "YulLiteral",
"src": "463:3:84",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "468:10:84",
"nodeType": "YulLiteral",
"src": "468:10:84",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "459:3:84",
"nodeType": "YulIdentifier",
"src": "459:3:84"
},
"nativeSrc": "459:20:84",
"nodeType": "YulFunctionCall",
"src": "459:20:84"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "449:6:84",
"nodeType": "YulIdentifier",
"src": "449:6:84"
},
"nativeSrc": "449:31:84",
"nodeType": "YulFunctionCall",
"src": "449:31:84"
},
"nativeSrc": "449:31:84",
"nodeType": "YulExpressionStatement",
"src": "449:31:84"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "496:1:84",
"nodeType": "YulLiteral",
"src": "496:1:84",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "499:4:84",
"nodeType": "YulLiteral",
"src": "499:4:84",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "489:6:84",
"nodeType": "YulIdentifier",
"src": "489:6:84"
},
"nativeSrc": "489:15:84",
"nodeType": "YulFunctionCall",
"src": "489:15:84"
},
"nativeSrc": "489:15:84",
"nodeType": "YulExpressionStatement",
"src": "489:15:84"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "520:1:84",
"nodeType": "YulLiteral",
"src": "520:1:84",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "523:4:84",
"nodeType": "YulLiteral",
"src": "523:4:84",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "513:6:84",
"nodeType": "YulIdentifier",
"src": "513:6:84"
},
"nativeSrc": "513:15:84",
"nodeType": "YulFunctionCall",
"src": "513:15:84"
},
"nativeSrc": "513:15:84",
"nodeType": "YulExpressionStatement",
"src": "513:15:84"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "407:127:84",
"nodeType": "YulFunctionDefinition",
"src": "407:127:84"
},
{
"body": {
"nativeSrc": "591:666:84",
"nodeType": "YulBlock",
"src": "591:666:84",
"statements": [
{
"body": {
"nativeSrc": "640:16:84",
"nodeType": "YulBlock",
"src": "640:16:84",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "649:1:84",
"nodeType": "YulLiteral",
"src": "649:1:84",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "652:1:84",
"nodeType": "YulLiteral",
"src": "652:1:84",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "642:6:84",
"nodeType": "YulIdentifier",
"src": "642:6:84"
},
"nativeSrc": "642:12:84",
"nodeType": "YulFunctionCall",
"src": "642:12:84"
},
"nativeSrc": "642:12:84",
"nodeType": "YulExpressionStatement",
"src": "642:12:84"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "619:6:84",
"nodeType": "YulIdentifier",
"src": "619:6:84"
},
{
"kind": "number",
"nativeSrc": "627:4:84",
"nodeType": "YulLiteral",
"src": "627:4:84",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "615:3:84",
"nodeType": "YulIdentifier",
"src": "615:3:84"
},
"nativeSrc": "615:17:84",
"nodeType": "YulFunctionCall",
"src": "615:17:84"
},
{
"name": "end",
"nativeSrc": "634:3:84",
"nodeType": "YulIdentifier",
"src": "634:3:84"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "611:3:84",
"nodeType": "YulIdentifier",
"src": "611:3:84"
},
"nativeSrc": "611:27:84",
"nodeType": "YulFunctionCall",
"src": "611:27:84"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "604:6:84",
"nodeType": "YulIdentifier",
"src": "604:6:84"
},
"nativeSrc": "604:35:84",
"nodeType": "YulFunctionCall",
"src": "604:35:84"
},
"nativeSrc": "601:55:84",
"nodeType": "YulIf",
"src": "601:55:84"
},
{
"nativeSrc": "665:30:84",
"nodeType": "YulVariableDeclaration",
"src": "665:30:84",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "688:6:84",
"nodeType": "YulIdentifier",
"src": "688:6:84"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "675:12:84",
"nodeType": "YulIdentifier",
"src": "675:12:84"
},
"nativeSrc": "675:20:84",
"nodeType": "YulFunctionCall",
"src": "675:20:84"
},
"variables": [
{
"name": "_1",
"nativeSrc": "669:2:84",