witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
959 lines (958 loc) • 426 kB
JSON
{
"contractName": "WitnetProxy",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
},
{
"stateMutability": "payable",
"type": "receive"
},
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "_initData",
"type": "bytes"
}
],
"name": "upgradeTo",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initData\",\"type\":\"bytes\"}],\"name\":\"upgradeTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Guillermo D\\u00edaz <guillermo@witnet.io>\",\"kind\":\"dev\",\"methods\":{\"upgradeTo(address,bytes)\":{\"params\":{\"_initData\":\"Raw data with which new implementation will be initialized.\",\"_newImplementation\":\"New implementation address.\"},\"returns\":{\"_0\":\"Returns whether new implementation would be further upgradable, or not.\"}}},\"title\":\"WitnetProxy: upgradable delegate-proxy contract. \",\"version\":1},\"userdoc\":{\"events\":{\"Upgraded(address)\":{\"notice\":\"Event emitted every time the implementation gets updated.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructor with no params as to ease eventual support of Singleton pattern (i.e. ERC-2470).\"},\"implementation()\":{\"notice\":\"Returns proxy's current implementation address.\"},\"upgradeTo(address,bytes)\":{\"notice\":\"Upgrades the `implementation` address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetProxy.sol\":\"WitnetProxy\"},\"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/WitnetProxy.sol\":{\"keccak256\":\"0x6f0ec2c544192c9439bde88f5ed4efec5bdef506cb0dcb739c29329a798033fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca05338334632aab3aef3c17a4b8686251ec488da49b9fcd3712642e57e0ce2a\",\"dweb:/ipfs/QmZk1uDdytKFii4TXUnJkFBBB3CZVSPKKR85ugFjWUTufS\"]},\"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": "0x6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033",
"deployedBytecode": "0x60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033",
"immutableReferences": {},
"generatedSources": [],
"deployedGeneratedSources": [
{
"ast": {
"nativeSrc": "0:7155:136",
"nodeType": "YulBlock",
"src": "0:7155:136",
"statements": [
{
"nativeSrc": "6:3:136",
"nodeType": "YulBlock",
"src": "6:3:136",
"statements": []
},
{
"body": {
"nativeSrc": "115:102:136",
"nodeType": "YulBlock",
"src": "115:102:136",
"statements": [
{
"nativeSrc": "125:26:136",
"nodeType": "YulAssignment",
"src": "125:26:136",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "137:9:136",
"nodeType": "YulIdentifier",
"src": "137:9:136"
},
{
"kind": "number",
"nativeSrc": "148:2:136",
"nodeType": "YulLiteral",
"src": "148:2:136",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "133:3:136",
"nodeType": "YulIdentifier",
"src": "133:3:136"
},
"nativeSrc": "133:18:136",
"nodeType": "YulFunctionCall",
"src": "133:18:136"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "125:4:136",
"nodeType": "YulIdentifier",
"src": "125:4:136"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "167:9:136",
"nodeType": "YulIdentifier",
"src": "167:9:136"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "182:6:136",
"nodeType": "YulIdentifier",
"src": "182:6:136"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "198:3:136",
"nodeType": "YulLiteral",
"src": "198:3:136",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "203:1:136",
"nodeType": "YulLiteral",
"src": "203:1:136",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "194:3:136",
"nodeType": "YulIdentifier",
"src": "194:3:136"
},
"nativeSrc": "194:11:136",
"nodeType": "YulFunctionCall",
"src": "194:11:136"
},
{
"kind": "number",
"nativeSrc": "207:1:136",
"nodeType": "YulLiteral",
"src": "207:1:136",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "190:3:136",
"nodeType": "YulIdentifier",
"src": "190:3:136"
},
"nativeSrc": "190:19:136",
"nodeType": "YulFunctionCall",
"src": "190:19:136"
}
],
"functionName": {
"name": "and",
"nativeSrc": "178:3:136",
"nodeType": "YulIdentifier",
"src": "178:3:136"
},
"nativeSrc": "178:32:136",
"nodeType": "YulFunctionCall",
"src": "178:32:136"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "160:6:136",
"nodeType": "YulIdentifier",
"src": "160:6:136"
},
"nativeSrc": "160:51:136",
"nodeType": "YulFunctionCall",
"src": "160:51:136"
},
"nativeSrc": "160:51:136",
"nodeType": "YulExpressionStatement",
"src": "160:51:136"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "14:203:136",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "84:9:136",
"nodeType": "YulTypedName",
"src": "84:9:136",
"type": ""
},
{
"name": "value0",
"nativeSrc": "95:6:136",
"nodeType": "YulTypedName",
"src": "95:6:136",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "106:4:136",
"nodeType": "YulTypedName",
"src": "106:4:136",
"type": ""
}
],
"src": "14:203:136"
},
{
"body": {
"nativeSrc": "254:95:136",
"nodeType": "YulBlock",
"src": "254:95:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "271:1:136",
"nodeType": "YulLiteral",
"src": "271:1:136",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "278:3:136",
"nodeType": "YulLiteral",
"src": "278:3:136",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "283:10:136",
"nodeType": "YulLiteral",
"src": "283:10:136",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "274:3:136",
"nodeType": "YulIdentifier",
"src": "274:3:136"
},
"nativeSrc": "274:20:136",
"nodeType": "YulFunctionCall",
"src": "274:20:136"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "264:6:136",
"nodeType": "YulIdentifier",
"src": "264:6:136"
},
"nativeSrc": "264:31:136",
"nodeType": "YulFunctionCall",
"src": "264:31:136"
},
"nativeSrc": "264:31:136",
"nodeType": "YulExpressionStatement",
"src": "264:31:136"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "311:1:136",
"nodeType": "YulLiteral",
"src": "311:1:136",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "314:4:136",
"nodeType": "YulLiteral",
"src": "314:4:136",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "304:6:136",
"nodeType": "YulIdentifier",
"src": "304:6:136"
},
"nativeSrc": "304:15:136",
"nodeType": "YulFunctionCall",
"src": "304:15:136"
},
"nativeSrc": "304:15:136",
"nodeType": "YulExpressionStatement",
"src": "304:15:136"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "335:1:136",
"nodeType": "YulLiteral",
"src": "335:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "338:4:136",
"nodeType": "YulLiteral",
"src": "338:4:136",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "328:6:136",
"nodeType": "YulIdentifier",
"src": "328:6:136"
},
"nativeSrc": "328:15:136",
"nodeType": "YulFunctionCall",
"src": "328:15:136"
},
"nativeSrc": "328:15:136",
"nodeType": "YulExpressionStatement",
"src": "328:15:136"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "222:127:136",
"nodeType": "YulFunctionDefinition",
"src": "222:127:136"
},
{
"body": {
"nativeSrc": "399:230:136",
"nodeType": "YulBlock",
"src": "399:230:136",
"statements": [
{
"nativeSrc": "409:19:136",
"nodeType": "YulAssignment",
"src": "409:19:136",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "425:2:136",
"nodeType": "YulLiteral",
"src": "425:2:136",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "419:5:136",
"nodeType": "YulIdentifier",
"src": "419:5:136"
},
"nativeSrc": "419:9:136",
"nodeType": "YulFunctionCall",
"src": "419:9:136"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "409:6:136",
"nodeType": "YulIdentifier",
"src": "409:6:136"
}
]
},
{
"nativeSrc": "437:58:136",
"nodeType": "YulVariableDeclaration",
"src": "437:58:136",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "459:6:136",
"nodeType": "YulIdentifier",
"src": "459:6:136"
},
{
"arguments": [
{
"arguments": [
{
"name": "size",
"nativeSrc": "475:4:136",
"nodeType": "YulIdentifier",
"src": "475:4:136"
},
{
"kind": "number",
"nativeSrc": "481:2:136",
"nodeType": "YulLiteral",
"src": "481:2:136",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "471:3:136",
"nodeType": "YulIdentifier",
"src": "471:3:136"
},
"nativeSrc": "471:13:136",
"nodeType": "YulFunctionCall",
"src": "471:13:136"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "490:2:136",
"nodeType": "YulLiteral",
"src": "490:2:136",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "486:3:136",
"nodeType": "YulIdentifier",
"src": "486:3:136"
},
"nativeSrc": "486:7:136",
"nodeType": "YulFunctionCall",
"src": "486:7:136"
}
],
"functionName": {
"name": "and",
"nativeSrc": "467:3:136",
"nodeType": "YulIdentifier",
"src": "467:3:136"
},
"nativeSrc": "467:27:136",
"nodeType": "YulFunctionCall",
"src": "467:27:136"
}
],
"functionName": {
"name": "add",
"nativeSrc": "455:3:136",
"nodeType": "YulIdentifier",
"src": "455:3:136"
},
"nativeSrc": "455:40:136",
"nodeType": "YulFunctionCall",
"src": "455:40:136"
},
"variables": [
{
"name": "newFreePtr",
"nativeSrc": "441:10:136",
"nodeType": "YulTypedName",
"src": "441:10:136",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "570:22:136",
"nodeType": "YulBlock",
"src": "570:22:136",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "572:16:136",
"nodeType": "YulIdentifier",
"src": "572:16:136"
},
"nativeSrc": "572:18:136",
"nodeType": "YulFunctionCall",
"src": "572:18:136"
},
"nativeSrc": "572:18:136",
"nodeType": "YulExpressionStatement",
"src": "572:18:136"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "513:10:136",
"nodeType": "YulIdentifier",
"src": "513:10:136"
},
{
"kind": "number",
"nativeSrc": "525:18:136",
"nodeType": "YulLiteral",
"src": "525:18:136",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "510:2:136",
"nodeType": "YulIdentifier",
"src": "510:2:136"
},
"nativeSrc": "510:34:136",
"nodeType": "YulFunctionCall",
"src": "510:34:136"
},
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "549:10:136",
"nodeType": "YulIdentifier",
"src": "549:10:136"
},
{
"name": "memPtr",
"nativeSrc": "561:6:136",
"nodeType": "YulIdentifier",
"src": "561:6:136"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "546:2:136",
"nodeType": "YulIdentifier",
"src": "546:2:136"
},
"nativeSrc": "546:22:136",
"nodeType": "YulFunctionCall",
"src": "546:22:136"
}
],
"functionName": {
"name": "or",
"nativeSrc": "507:2:136",
"nodeType": "YulIdentifier",
"src": "507:2:136"
},
"nativeSrc": "507:62:136",
"nodeType": "YulFunctionCall",
"src": "507:62:136"
},
"nativeSrc": "504:88:136",
"nodeType": "YulIf",
"src": "504:88:136"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "608:2:136",
"nodeType": "YulLiteral",
"src": "608:2:136",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nativeSrc": "612:10:136",
"nodeType": "YulIdentifier",
"src": "612:10:136"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "601:6:136",
"nodeType": "YulIdentifier",
"src": "601:6:136"
},
"nativeSrc": "601:22:136",
"nodeType": "YulFunctionCall",
"src": "601:22:136"
},
"nativeSrc": "601:22:136",
"nodeType": "YulExpressionStatement",
"src": "601:22:136"
}
]
},
"name": "allocate_memory",
"nativeSrc": "354:275:136",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nativeSrc": "379:4:136",
"nodeType": "YulTypedName",
"src": "379:4:136",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "388:6:136",
"nodeType": "YulTypedName",
"src": "388:6:136",
"type": ""
}
],
"src": "354:275:136"
},
{
"body": {
"nativeSrc": "691:129:136",
"nodeType": "YulBlock",
"src": "691:129:136",
"statements": [
{
"body": {
"nativeSrc": "735:22:136",
"nodeType": "YulBlock",
"src": "735:22:136",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "737:16:136",
"nodeType": "YulIdentifier",
"src": "737:16:136"
},
"nativeSrc": "737:18:136",
"nodeType": "YulFunctionCall",
"src": "737:18:136"
},
"nativeSrc": "737:18:136",
"nodeType": "YulExpressionStatement",
"src": "737:18:136"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nativeSrc": "707:6:136",
"nodeType": "YulIdentifier",
"src": "707:6:136"
},
{
"kind": "number",
"nativeSrc": "715:18:136",
"nodeType": "YulLiteral",
"src": "715:18:136",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "704:2:136",
"nodeType": "YulIdentifier",
"src": "704:2:136"
},
"nativeSrc": "704:30:136",
"nodeType": "YulFunctionCall",
"src": "704:30:136"
},
"nativeSrc": "701:56:136",
"nodeType": "YulIf",
"src": "701:56:136"
},
{
"nativeSrc": "766:48:136",
"nodeType": "YulAssignment",
"src": "766:48:136",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nativeSrc": "786:6:136",
"nodeType": "YulIdentifier",
"src": "786:6:136"
},
{
"kind": "number",
"nativeSrc": "794:2:136",
"nodeType": "YulLiteral",
"src": "794:2:136",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "782:3:136",
"nodeType": "YulIdentifier",
"src": "782:3:136"
},
"nativeSrc": "782:15:136",
"nodeType": "YulFunctionCall",
"src": "782:15:136"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "803:2:136",
"nodeType": "YulLiteral",
"src": "803:2:136",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "799:3:136",
"nodeType": "YulIdentifier",
"src": "799:3:136"
},
"nativeSrc": "799:7:136",
"nodeType": "YulFunctionCall",
"src": "799:7:136"
}
],
"functionName": {
"name": "and",
"nativeSrc": "778:3:136",
"nodeType": "YulIdentifier",
"src": "778:3:136"
},
"nativeSrc": "778:29:136",
"nodeType": "YulFunctionCall",
"src": "778:29:136"
},
{
"kind": "number",
"nativeSrc": "809:4:136",
"nodeType": "YulLiteral",
"src": "809:4:136",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "774:3:136",
"nodeType": "YulIdentifier",
"src": "774:3:136"
},
"nativeSrc": "774:40:136",
"nodeType": "YulFunctionCall",
"src": "774:40:136"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "766:4:136",
"nodeType": "YulIdentifier",
"src": "766:4:136"
}
]
}
]
},
"name": "array_allocation_size_bytes",
"nativeSrc": "634:186:136",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nativeSrc": "671:6:136",
"nodeType": "YulTypedName",
"src": "671:6:136",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nativeSrc": "682:4:136",
"nodeType": "YulTypedName",
"src": "682:4:136",
"type": ""
}
],
"src": "634:186:136"
},
{
"body": {
"nativeSrc": "921:773:136",
"nodeType": "YulBlock",
"src": "921:773:136",
"statements": [
{
"body": {
"nativeSrc": "967:16:136",
"nodeType": "YulBlock",
"src": "967:16:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "976:1:136",
"nodeType": "YulLiteral",
"src": "976:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "979:1:136",
"nodeType": "YulLiteral",
"src": "979:1:136",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "969:6:136",
"nodeType": "YulIdentifier",
"src": "969:6:136"
},
"nativeSrc": "969:12:136",
"nodeType": "YulFunctionCall",
"src": "969:12:136"
},
"nativeSrc": "969:12:136",
"nodeType": "YulExpressionStatement",
"src": "969:12:136"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "942:7:136",
"nodeType": "YulIdentifier",
"src": "942:7:136"
},
{
"name": "headStart",
"nativeSrc": "951:9:136",
"nodeType": "YulIdentifier",
"src": "951:9:136"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "938:3:136",
"nodeType": "YulIdentifier",
"src": "938:3:136"
},
"nativeSrc": "938:23:136",
"nodeType": "YulFunctionCall",
"src": "938:23:136"
},
{
"kind": "number",
"nativeSrc": "963:2:136",
"nodeType": "YulLiteral",
"src": "963:2:136",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "934:3:136",
"nodeType": "YulIdentifier",
"src": "934:3:136"
},
"nativeSrc": "934:32:136",
"nodeType": "YulFunctionCall",
"src": "934:32:136"
},
"nativeSrc": "931:52:136",
"nodeType": "YulIf",
"src": "931:52:136"
},
{