UNPKG

witnet-solidity-bridge

Version:

Witnet Solidity Bridge contracts for EVM-compatible chains

443 lines (442 loc) 950 kB
{ "contractName": "WitOracleResultStatusLib", "abi": [ { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint256", "name": "range", "type": "uint256" } ], "name": "IndexOutOfBounds", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "InvalidLengthEncoding", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "read", "type": "uint256" }, { "internalType": "uint256", "name": "expected", "type": "uint256" } ], "name": "UnexpectedMajorType", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "_result", "type": "bytes" } ], "name": "toString", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"range\",\"type\":\"uint256\"}],\"name\":\"IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidLengthEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"read\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"}],\"name\":\"UnexpectedMajorType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_result\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The Witnet Foundation.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"A library for interpreting Witnet resolution errors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/libs/WitOracleResultStatusLib.sol\":\"WitOracleResultStatusLib\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/libs/Bech32.sol\":{\"keccak256\":\"0x14618323a0efe7586c20906a2e9cee7ad63baa976ff231c57f7f2d7d3707fb8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a19f05fe84047a7a6d3d6fc39972b432e6e536aa70472386a9d7a6d9aab64a64\",\"dweb:/ipfs/QmcHwUY66yjiotRH4Q3kbRvSzcHyLQ1yHL3KbtQKiMhtZE\"]},\"project:/contracts/libs/Secp256k1.sol\":{\"keccak256\":\"0xbe686002da5004ff39dd70709f3820eba2afe9323ae9cb894009c161e4b1a666\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fab91775216de0707cea9ad285b10be09127461a13432fea358bf9cb2a0c2e\",\"dweb:/ipfs/QmeRUGsgstnM4hxM9hpkBf3L6cE5btirEaowcMxmuw3utj\"]},\"project:/contracts/libs/WitOracleResultStatusLib.sol\":{\"keccak256\":\"0x9ea0a1a68498957ee7baaae50e078ee845dacd031f129b0a3cbf40cd413f3efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0836f04c9ed07cb90b54b07b38eb95fba769be0d921e687fe1184d6570ff34e8\",\"dweb:/ipfs/QmPv9g3KGobVdr5bsCv5715V97DmEdTqzz9mhbEZjugqgC\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x1d446c3e534e40e676d1763bfb2897fadfac8afed904ab757843d7d6770b0a6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://338fb1073f17d64e8d31bfe492d9475ce906788ee08e6489ce30413f91dc1328\",\"dweb:/ipfs/QmPe5QX2AGTnQFjse1Xttq4ZYWwYAiXoySb5VUui3PqPhk\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0x8e07aebe2954ab3e6f2d8eceedb12db7cf915c1f3e8630f4fa9999cecb1c78ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6c54cc901183d61546e8fd15bd5ea8ef238ebc915642946071d435dd7481ea\",\"dweb:/ipfs/Qmcaqta7YjUSBbBUGqoh44bsCS6UqqoyHjBuz4qnKBShXM\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xd99308373575cc10fb7f2ceb0f6a8625f3911275c1fa27811fae498d98d03d97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4909a999d7b660a2dc54ca957b6eccfa523e2765fc4d6a2574dee7d5cd67b43\",\"dweb:/ipfs/QmWGQT4KDcfSFe1hcHVoWx6E4PhYMaod5iLpJCWBEeShzh\"]}},\"version\":1}", "bytecode": "0x611de1610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c806371aad10d14610038575b5f5ffd5b61004b610046366004611740565b610061565b60405161005891906117ac565b60405180910390f35b60605f610070838501856119ca565b90505f815160ff81111561008657610086611a81565b036100b357505060408051808201909152600a81526927379032b93937b9399760b11b602082015261033d565b60f0815160ff8111156100c8576100c8611a81565b036100fb57505060408051808201909152601081526f20bbb0b4ba34b733903932b9bab63a1760811b602082015261033d565b60f1815160ff81111561011057610110611a81565b036101455750506040805180820190915260128152712334b730b634bd34b733903932b9bab63a1760711b602082015261033d565b60f2815160ff81111561015a5761015a611a81565b0361018c57505060408051808201909152600f81526e2132b4b733903234b9b83aba32b21760891b602082015261033d565b60f8815160ff8111156101a1576101a1611a81565b036101d657505060408051808201909152601281527120b63932b0b23c903232b634bb32b932b21760711b602082015261033d565b60f9815160ff8111156101eb576101eb611a81565b0361022b57505060408051808201909152601a81527f4572726f723a207265736f6c7574696f6e2074696d656f75742e000000000000602082015261033d565b60e0815160ff81111561024057610240611a81565b0361028057505060408051808201909152601f81527f4272696467653a206d616c666f726d6564206461746120726571756573742e00602082015261033d565b60e1815160ff81111561029557610295611a81565b036102d557505060408051808201909152601881527f4272696467653a20706f6f7220696e63656e74697665732e0000000000000000602082015261033d565b60e2815160ff8111156102ea576102ea611a81565b0361032a57505060408051808201909152601f81527f4272696467653a206f76657273697a65642074616c6c7920726573756c742e00602082015261033d565b61033381610343565b91505061033d565b505b92915050565b606080610363835f015160ff81111561035e5761035e611a81565b610482565b15610395575060408051808201909152601081526f021b4b931bab6b9ba30b73a34b0b61d160851b6020820152610450565b82516103b19060ff8111156103ac576103ac611a81565b61049f565b156103e4575060408051808201909152601181527002837b7b91034b731b2b73a34bb32b99d1607d1b6020820152610450565b82516104009060ff8111156103fb576103fb611a81565b6104fa565b1561042d575060408051808201909152600b81526a021b7b739b2b739bab99d160ad1b6020820152610450565b5060408051808201909152600a815269021b934ba34b1b0b61d160b51b60208201525b8061045a84610539565b60405160200161046b929190611aac565b604051602081830303815290604052915050919050565b5f60545b8260ff81111561049857610498611a81565b1492915050565b5f605f8260ff8111156104b4576104b4611a81565b14806104d1575060528260ff8111156104cf576104cf611a81565b145b806104ed575060e18260ff8111156104eb576104eb611a81565b145b8061033d575060e2610486565b5f60528260ff81111561050f5761050f611a81565b148061052c575060518260ff81111561052a5761052a611a81565b145b8061033d57506050610486565b60606052825160ff81111561055057610550611a81565b0361058657505060408051808201909152601581527434b739bab33334b1b4b2b73a1031b7b6b6b4ba399760591b602082015290565b6054825160ff81111561059b5761059b611a81565b036105a95761033d82610845565b6051825160ff8111156105be576105be611a81565b036105f557505060408051808201909152601681527534b739bab33334b1b4b2b73a1036b0b537b934ba3c9760511b602082015290565b6050825160ff81111561060a5761060a611a81565b0361064057505060408051808201909152601581527434b739bab33334b1b4b2b73a103932bb32b0b6399760591b602082015290565b605f825160ff81111561065557610655611a81565b1480610673575060e2825160ff81111561067157610671611a81565b145b156106a557505060408051808201909152601181527037bb32b939b4bd32b2103932b9bab63a1760791b602082015290565b6055825160ff8111156106ba576106ba611a81565b036106f857505060408051808201909152601a81527f696e636f6e73697374656e74206461746120736f75726365732e000000000000602082015290565b6057825160ff81111561070d5761070d611a81565b036107415761071b82610845565b60405160200161072b9190611ac8565b6040516020818303038152906040529050919050565b6056825160ff81111561075657610756611a81565b1480610774575060e0825160ff81111561077257610772611a81565b145b156107925761078282610845565b60405160200161072b9190611af7565b60ff825160ff8111156107a7576107a7611a81565b03610811575f826020015160138111156107c3576107c3611a81565b146107e1576107d182610845565b60405160200161072b9190611b1e565b50506040805180820190915260148152733ab73430b7323632b21034b73a32b931b2b83a1760611b602082015290565b81516108309060ff81111561082857610828611a81565b60ff16610be2565b60405160200161072b9190611b46565b919050565b606060048260200151601381111561085f5761085f611a81565b036108af5761086d82610cce565b60ff1660ff81111561088157610881611a81565b829060ff81111561089457610894611a81565b908160ff8111156108a7576108a7611a81565b9052506108e8565b505060408051808201909152601a81527f28756e7061727361626c65206572726f722064657461696c7329000000000000602082015290565b6030825160ff8111156108fd576108fd611a81565b036109825760048260200151601381111561091a5761091a611a81565b036109495761093961092b83610cce565b6001600160401b0316610da8565b60405160200161072b9190611b5c565b505060408051808201909152601c81527f756e737065636966696320687474702073746174757320636f64652e00000000602082015290565b6031825160ff81111561099757610997611a81565b036109c95750506040805180820190915260118152703932b9b837b739b2903a34b6b2b7baba1760791b602082015290565b6070825160ff8111156109de576109de611a81565b03610a55576004826020015160138111156109fb576109fb611a81565b03610a1c57610a0c61092b83610cce565b60405160200161072b9190611b75565b505060408051808201909152601a81527f617272617920696e646578206f7574206f6620626f756e64732e000000000000602082015290565b6071825160ff811115610a6a57610a6a611a81565b03610ad357600782602001516013811115610a8757610a87611a81565b03610aa557610a9582610efc565b60405160200161072b9190611ba6565b505060408051808201909152601281527136b0b81035b2bc903737ba103337bab7321760711b602082015290565b6072825160ff811115610ae857610ae8611a81565b03610b5c57600782602001516013811115610b0557610b05611a81565b03610b2357610b1382610efc565b60405160200161072b9190611bcd565b505060408051808201909152601d81527f6a736f6e20706174682072657475726e6564206e6f2076616c7565732e000000602082015290565b8151610b789060ff811115610b7357610b73611a81565b610be2565b5f83602001516013811115610b8f57610b8f611a81565b03610ba85760405180602001604052805f815250610bd1565b610bb183610f8f565b604051602001610bc19190611bfe565b6040516020818303038152906040525b60405160200161072b929190611c25565b6040805160028082528183019092526060915f91906020820181803683370190505090505f610c12601085611c66565b610c1d906030611c87565b90505f610c2b601086611ca0565b610c36906030611c87565b905060398260ff161115610c5257610c4f600783611c87565b91505b60398160ff161115610c6c57610c69600782611c87565b90505b8160f81b835f81518110610c8257610c82611cc1565b60200101906001600160f81b03191690815f1a9053508060f81b83600181518110610caf57610caf611cc1565b60200101906001600160f81b03191690815f1a90535091949350505050565b5f816004610cdb8261107c565b158015610d0d5750806013811115610cf557610cf5611a81565b82602001516013811115610d0b57610d0b611a81565b145b610d585760405162461bcd60e51b815260206004820152601760248201527663626f723a2063616e6e6f74206665746368206461746160481b60448201526064015b60405180910390fd5b610d658460a00151611089565b9250610d748260a001516110e2565b82602001906013811115610d8a57610d8a611a81565b90816013811115610d9d57610d9d611a81565b815250505050919050565b60408051606480825260a08201909252606091905f90826020820181803683370190505090505f5b5f610ddc600a87611cd5565b9050610de9600a87611ce8565b9550610df6816030611c87565b60f81b8383610e0481611cfb565b945081518110610e1657610e16611cc1565b60200101906001600160f81b03191690815f1a90535050845f03610dd0575f816001600160401b03811115610e4d57610e4d6117e1565b6040519080825280601f01601f191660200182016040528015610e77576020820181803683370190505b50905060015b828111610ef25783610e8f8285611d13565b81518110610e9f57610e9f611cc1565b01602001516001600160f81b03191682610eba600184611d13565b81518110610eca57610eca611cc1565b60200101906001600160f81b03191690815f1a90535080610eea81611cfb565b915050610e7d565b5095945050505050565b6060816007610f0a8261107c565b158015610f3c5750806013811115610f2457610f24611a81565b82602001516013811115610f3a57610f3a611a81565b145b610f825760405162461bcd60e51b815260206004820152601760248201527663626f723a2063616e6e6f74206665746368206461746160481b6044820152606401610d4f565b610d658460a001516111a4565b60605f82602001516013811115610fa857610fa8611a81565b03610fc057505060408051602081019091525f815290565b600782602001516013811115610fd857610fd8611a81565b0361100c57610fe682610efc565b604051602001610ff69190611d26565b6040516020818303038152906040529050611061565b60048260200151601381111561102457611024611a81565b036110455761103561092b83610cce565b604051602001610ff69190611d4e565b5060408051808201909152600381526201f96160ed1b60208201525b8061106b83610f8f565b60405160200161072b929190611aac565b5f61033d825f01516112a6565b5f815f8060ff16826040015160ff16146110c757604080830151905161800560e51b815260ff91821660048201529082166024820152604401610d4f565b6110d8845f015185606001516112c9565b92505b5050919050565b5f6110f68251805151602090910151101590565b610840576006826040015160ff161161113e5760408201516502020183808360d11b9060ff166007811061112c5761112c611cc1565b1a601381111561033d5761033d611a81565b816040015160ff1660070361084057816060015160ff166014148061116a5750816060015160ff166015145b1561117757506002919050565b6019826060015160ff16101580156111975750601b826060015160ff1611155b1561084057506005919050565b60608160038060ff16826040015160ff16146111e457604080830151905161800560e51b815260ff91821660048201529082166024820152604401610d4f565b6111f5845f015185606001516112c9565b6001600160401b03166080850181905267fffffffffffffffe190161128f575f5b80611289575f61122d865f01518760400151611390565b90506001600160401b03808216101561127e578461125761124f600484611d6b565b885190611435565b604051602001611268929190611aac565b6040516020818303038152906040529450611283565b600191505b50611216565b506110db565b6080840151845161129f91611435565b92506110db565b5f60f08260ff8111156112bb576112bb611a81565b148061033d575060f1610486565b5f60188260ff1610156112e0575060ff811661033d565b8160ff166018036112fe576112f4836115b9565b60ff16905061033d565b8160ff1660190361131d5761131283611619565b61ffff16905061033d565b8160ff16601a0361133e5761133183611684565b63ffffffff16905061033d565b8160ff16601b0361135957611352836116e2565b905061033d565b8160ff16601f0361137257506001600160401b0361033d565b604051636d785b1360e01b815260ff83166004820152602401610d4f565b5f5f61139b846115b9565b90508060ff1660ff036113b8576001600160401b0391505061033d565b6113c58482601f166112c9565b91506001600160401b03808316106113fb57604051636d785b1360e01b81526001600160401b0383166004820152602401610d4f565b60ff83166007600583901c161461033b5760405161800560e51b81526007600583901c16600482015260ff84166024820152604401610d4f565b6060816001600160401b03166001600160401b03811115611458576114586117e1565b6040519080825280601f01601f191660200182016040528015611482576020820181803683370190505b5090505f5b826001600160401b0316816001600160401b031610156115b0575f6114ab856115b9565b905060808116156115725760e08160ff1610156114e7576114cb856115b9565b603f16600682601f1660ff16901b179050600184039350611572565b60f08160ff16101561152c576114fc856115b9565b603f16600661150a876115b9565b603f1660ff16901b600c83600f1660ff16901b17179050600284039350611572565b611535856115b9565b603f166006611543876115b9565b603f16901b600c611553886115b9565b603f1660ff16901b601284600f1660ff16901b17171790506003840393505b8060f81b83836001600160401b03168151811061159157611591611cc1565b60200101906001600160f81b03191690815f1a90535050600101611487565b50908152919050565b5f8160200151825f015151808211156115ef576040516363a056dd60e01b81526004810183905260248101829052604401610d4f565b835160208501805180830160010151955090819061160c82611cfb565b8152505050505050919050565b5f8160200151600261162b9190611d98565b82515180821115611659576040516363a056dd60e01b81526004810183905260248101829052604401610d4f565b83516020850180516002818401810151965090916116778284611d98565b9052509395945050505050565b5f816020015160046116969190611d98565b825151808211156116c4576040516363a056dd60e01b81526004810183905260248101829052604401610d4f565b83516020850180516004818401810151965090916116778284611d98565b5f816020015160086116f49190611d98565b82515180821115611722576040516363a056dd60e01b81526004810183905260248101829052604401610d4f565b83516020850180516008818401810151965090916116778284611d98565b5f5f60208385031215611751575f5ffd5b82356001600160401b03811115611766575f5ffd5b8301601f81018513611776575f5ffd5b80356001600160401b0381111561178b575f5ffd5b85602082840101111561179c575f5ffd5b6020919091019590945092505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715611817576118176117e1565b60405290565b604080519081016001600160401b0381118282101715611817576118176117e1565b604051601f8201601f191681016001600160401b0381118282101715611867576118676117e1565b604052919050565b803560148110610840575f5ffd5b80356001600160401b0381168114610840575f5ffd5b803560ff81168114610840575f5ffd5b5f60c082840312156118b3575f5ffd5b6118bb6117f5565b905081356001600160401b038111156118d2575f5ffd5b8201604081850312156118e3575f5ffd5b6118eb61181d565b81356001600160401b03811115611900575f5ffd5b8201601f81018613611910575f5ffd5b80356001600160401b03811115611929576119296117e1565b61193c601f8201601f191660200161183f565b818152876020838501011115611950575f5ffd5b816020840160208301375f60209282018301528352928301358284015250825261197b908301611893565b602082015261198c60408301611893565b604082015261199d60608301611893565b60608201526119ae6080830161187d565b60808201526119bf60a0830161187d565b60a082015292915050565b5f602082840312156119da575f5ffd5b81356001600160401b038111156119ef575f5ffd5b820160c08185031215611a00575f5ffd5b611a086117f5565b81356101008110611a17575f5ffd5b8152611a256020830161186f565b60208201526040828101359082015260608083013590820152611a4a6080830161187d565b608082015260a08201356001600160401b03811115611a67575f5ffd5b611a73868285016118a3565b60a083015250949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f81518060208401855e5f93019283525090919050565b5f611ac0611aba8386611a95565b84611a95565b949350505050565b73036b0b63337b936b2b2103932b9b837b739b29d160651b81525f611af06014830184611a95565b9392505050565b72036b0b63337b936b2b2103932b8bab2b9ba1d1606d1b81525f611af06013830184611a95565b7303ab73430b73632b21034b73a32b931b2b83a1d160651b81525f611af06014830184611a95565b61060f60f31b81525f611af06002830184611a95565b64687474702f60d81b81525f611af06005830184611a95565b7f617272617920696e646578206f7574206f6620626f756e64733a20000000000081525f611af0601b830184611a95565b72036b0b81035b2bc903737ba103337bab7321d1606d1b81525f611af06013830184611a95565b7f6a736f6e20706174682072657475726e6564206e6f2076616c7565733a20000081525f611af0601e830184611a95565b61040560f31b81525f611c146002830184611a95565b602960f81b81526001019392505050565b61060f60f31b81525f611ac0611aba6002840186611a95565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60ff831680611c7857611c78611c3e565b8060ff84160491505092915050565b60ff818116838216019081111561033d5761033d611c52565b5f60ff831680611cb257611cb2611c3e565b8060ff84160691505092915050565b634e487b7160e01b5f52603260045260245ffd5b5f82611ce357611ce3611c3e565b500690565b5f82611cf657611cf6611c3e565b500490565b5f60018201611d0c57611d0c611c52565b5060010190565b8181038181111561033d5761033d611c52565b602760f81b81525f611d3b6001830184611a95565b6201396160ed1b81526003019392505050565b5f611d598284611a95565b61016160f51b81526002019392505050565b5f6001600160401b03831680611d8357611d83611c3e565b806001600160401b0384160491505092915050565b8082018082111561033d5761033d611c5256fea264697066735822122092dbcda8545e05df9a74e619736389a1cc7c0d45d10e79dd6af025e6b7cf972064736f6c634300081e0033", "deployedBytecode": "0x7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c806371aad10d14610038575b5f5ffd5b61004b610046366004611740565b610061565b60405161005891906117ac565b60405180910390f35b60605f610070838501856119ca565b90505f815160ff81111561008657610086611a81565b036100b357505060408051808201909152600a81526927379032b93937b9399760b11b602082015261033d565b60f0815160ff8111156100c8576100c8611a81565b036100fb57505060408051808201909152601081526f20bbb0b4ba34b733903932b9bab63a1760811b602082015261033d565b60f1815160ff81111561011057610110611a81565b036101455750506040805180820190915260128152712334b730b634bd34b733903932b9bab63a1760711b602082015261033d565b60f2815160ff81111561015a5761015a611a81565b0361018c57505060408051808201909152600f81526e2132b4b733903234b9b83aba32b21760891b602082015261033d565b60f8815160ff8111156101a1576101a1611a81565b036101d657505060408051808201909152601281527120b63932b0b23c903232b634bb32b932b21760711b602082015261033d565b60f9815160ff8111156101eb576101eb611a81565b0361022b57505060408051808201909152601a81527f4572726f723a207265736f6c7574696f6e2074696d656f75742e000000000000602082015261033d565b60e0815160ff81111561024057610240611a81565b0361028057505060408051808201909152601f81527f4272696467653a206d616c666f726d6564206461746120726571756573742e00602082015261033d565b60e1815160ff81111561029557610295611a81565b036102d557505060408051808201909152601881527f4272696467653a20706f6f7220696e63656e74697665732e0000000000000000602082015261033d565b60e2815160ff8111156102ea576102ea611a81565b0361032a57505060408051808201909152601f81527f4272696467653a206f76657273697a65642074616c6c7920726573756c742e00602082015261033d565b61033381610343565b91505061033d565b505b92915050565b606080610363835f015160ff81111561035e5761035e611a81565b610482565b15610395575060408051808201909152601081526f021b4b931bab6b9ba30b73a34b0b61d160851b6020820152610450565b82516103b19060ff8111156103ac576103ac611a81565b61049f565b156103e4575060408051808201909152601181527002837b7b91034b731b2b73a34bb32b99d1607d1b6020820152610450565b82516104009060ff8111156103fb576103fb611a81565b6104fa565b1561042d575060408051808201909152600b81526a021b7b739b2b739bab99d160ad1b6020820152610450565b5060408051808201909152600a815269021b934ba34b1b0b61d160b51b60208201525b8061045a84610539565b60405160200161046b929190611aac565b604051602081830303815290604052915050919050565b5f60545b8260ff81111561049857610498611a81565b1492915050565b5f605f8260ff8111156104b4576104b4611a81565b14806104d1575060528260ff8111156104cf576104cf611a81565b145b806104ed575060e18260ff8111156104eb576104eb611a81565b145b8061033d575060e2610486565b5f60528260ff81111561050f5761050f611a81565b148061052c575060518260ff81111561052a5761052a611a81565b145b8061033d57506050610486565b60606052825160ff81111561055057610550611a81565b0361058657505060408051808201909152601581527434b739bab33334b1b4b2b73a1031b7b6b6b4ba399760591b602082015290565b6054825160ff81111561059b5761059b611a81565b036105a95761033d82610845565b6051825160ff8111156105be576105be611a81565b036105f557505060408051808201909152601681527534b739bab33334b1b4b2b73a1036b0b537b934ba3c9760511b602082015290565b6050825160ff81111561060a5761060a611a81565b0361064057505060408051808201909152601581527434b739bab33334b1b4b2b73a103932bb32b0b6399760591b602082015290565b605f825160ff81111561065557610655611a81565b1480610673575060e2825160ff81111561067157610671611a81565b145b156106a557505060408051808201909152601181527037bb32b939b4bd32b2103932b9bab63a1760791b602082015290565b6055825160ff8111156106ba576106ba611a81565b036106f857505060408051808201909152601a81527f696e636f6e73697374656e74206461746120736f75726365732e000000000000602082015290565b6057825160ff81111561070d5761070d611a81565b036107415761071b82610845565b60405160200161072b9190611ac8565b6040516020818303038152906040529050919050565b6056825160ff81111561075657610756611a81565b1480610774575060e0825160ff81111561077257610772611a81565b145b156107925761078282610845565b60405160200161072b9190611af7565b60ff825160ff8111156107a7576107a7611a81565b03610811575f826020015160138111156107c3576107c3611a81565b146107e1576107d182610845565b60405160200161072b9190611b1e565b50506040805180820190915260148152733ab73430b7323632b21034b73a32b931b2b83a1760611b602082015290565b81516108309060ff81111561082857610828611a81565b60ff16610be2565b60405160200161072b9190611b46565b919050565b606060048260200151601381111561085f5761085f611a81565b036108af5761086d82610cce565b60ff1660ff81111561088157610881611a81565b829060ff81111561089457610894611a81565b908160ff8111156108a7576108a7611a81565b9052506108e8565b505060408051808201909152601a81527f28756e7061727361626c65206572726f722064657461696c7329000000000000602082015290565b6030825160ff8111156108fd576108fd611a81565b036109825760048260200151601381111561091a5761091a611a81565b036109495761093961092b83610cce565b6001600160401b0316610da8565b60405160200161072b9190611b5c565b505060408051808201909152601c81527f756e737065636966696320687474702073746174757320636f64652e00000000602082015290565b6031825160ff81111561099757610997611a81565b036109c95750506040805180820190915260118152703932b9b837b739b2903a34b6b2b7baba1760791b602082015290565b6070825160ff8111156109de576109de611a81565b03610a55576004826020015160138111156109fb576109fb611a81565b03610a1c57610a0c61092b83610cce565b60405160200161072b9190611b75565b505060408051808201909152601a81527f617272617920696e646578206f7574206f6620626f756e64732e000000000000602082015290565b6071825160ff811115610a6a57610a6a611a81565b03610ad357600782602001516013811115610a8757610a87611a81565b03610aa557610a9582610efc565b60405160200161072b9190611ba6565b505060408051808201909152601281527136b0b81035b2bc903737ba103337bab7321760711b602082015290565b6072825160ff811115610ae857610ae8611a81565b03610b5c57600782602001516013811115610b0557610b05611a81565b03610b2357610b1382610efc565b60405160200161072b9190611bcd565b505060408051808201909152601d81527f6a736f6e20706174682072657475726e6564206e6f2076616c7565732e000000602082015290565b8151610b789060ff811115610b7357610b73611a81565b610be2565b5f83602001516013811115610b8f57610b8f611a81565b03610ba85760405180602001604052805f815250610bd1565b610bb183610f8f565b604051602001610bc19190611bfe565b6040516020818303038152906040525b60405160200161072b929190611c25565b6040805160028082528183019092526060915f91906020820181803683370190505090505f610c12601085611c66565b610c1d906030611c87565b90505f610c2b601086611ca0565b610c36906030611c87565b905060398260ff161115610c5257610c4f600783611c87565b91505b60398160ff161115610c6c57610c69600782611c87565b90505b8160f81b835f81518110610c8257610c82611cc1565b60200101906001600160f81b03191690815f1a9053508060f81b83600181518110610caf57610caf611cc1565b60200101906001600160f81b03191690815f1a90535091949350505050565b5f816004610cdb8261107c565b158015610d0d5750806013811115610cf557610cf5611a81565b82602001516013811115610d0b57610d0b611a81565b145b610d585760405162461bcd60e51b815260206004820152601760248201527663626f723a2063616e6e6f74206665746368206461746160481b60448201526064015b60405180910390fd5b610d658460a00151611089565b9250610d748260a001516110e2565b82602001906013811115610d8a57610d8a611a81565b90816013811115610d9d57610d9d611a81565b815250505050919050565b60408051606480825260a08201909252606091905f90826020820181803683370190505090505f5b5f610ddc600a87611cd5565b9050610de9600a87611ce8565b9550610df6816030611c87565b60f81b8383610e0481611cfb565b945081518110610e1657610e16611cc1565b60200101906001600160f81b03191690815f1a90535050845f03610dd0575f816001600160401b03811115610e4d57610e4d6117e1565b6040519080825280601f01601f191660200182016040528015610e77576020820181803683370190505b50905060015b828111610ef25783610e8f8285611d13565b81518110610e9f57610e9f611cc1565b01602001516001600160f81b03191682610eba600184611d13565b81518110610eca57610eca611cc1565b60200101906001600160f81b03191690815f1a90535080610eea81611cfb565b915050610e7d565b5095945050505050565b6060816007610f0a8261107c565b158015610f3c5750806013811115610f2457610f24611a81565b82602001516013811115610f3a57610f3a611a81565b145b610f825760405162461bcd60e51b815260206004820152601760248201527663626f723a2063616e6e6f74206665746368206461746160481b6044820152606401610d4f565b610d658460a001516111a4565b60605f82602001516013811115610fa857610fa8611a81565b03610fc057505060408051602081019091525f815290565b600782602001516013811115610fd857610fd8611a81565b0361100c57610fe682610efc565b604051602001610ff69190611d26565b6040516020818303038152906040529050611061565b60048260200151601381111561102457611024611a81565b036110455761103561092b83610cce565b604051602001610ff69190611d4e565b5060408051808201909152600381526201f96160ed1b60208201525b8061106b83610f8f565b60405160200161072b929190611aac565b5f61033d825f01516112a6565b5f815f8060ff16826040015160ff16146110c757604080830151905161800560e51b815260ff91821660048201529082166024820152604401610d4f565b6110d8845f015185606001516112c9565b92505b5050919050565b5f6110f68251805151602090910151101590565b610840576006826040015160ff161161113e5760408201516502020183808360d11b9060ff166007811061112c5761112c611cc1565b1a601381111561033d5761033d611a81565b816040015160ff1660070361084057816060015160ff166014148061116a5750816060015160ff166015145b1561117757506002919050565b6019826060015160ff16101580156111975750601b826060015160ff1611155b1561084057506005919050565b60608160038060ff16826040015160ff16146111e457604080830151905161800560e51b815260ff91821660048201529082166024820152604401610d4f565b6111f5845f015185606001516112c9565b6001600160401b03166080850181905267fffffffffffffffe190161128f575f5b80611289575f61122d865f01518760400151611390565b90506001600160401b03808216101561127e578461125761124f600484611d6b565b885190611435565b604051602001611268929190611aac565b6040516020818303038152906040529450611283565b600191505b50611216565b506110db565b6080840151845161129f91611435565b92506110db565b5f60f08260ff8111156112bb576112bb611a81565b148061033d575060f1610486565b5f60188260ff1610156112e0575060ff811661033d565b8160ff166018036112fe576112f4836115b9565b60ff16905061033d565b8160ff1660190361131d5761131283611619565b61ffff16905061033d565b8160ff16601a0361133e5761133183611684565b63ffffffff16905061033d565b8160ff16601b0361135957611352836116e2565b905061033d565b8160ff16601f0361137257506001600160401b0361033d565b604051636d785b1360e01b815260ff83166004820152602401610d4f565b5f5f61139b846115b9565b90508060ff1660ff036113b8576001600160401b0391505061033d565b6113c58482601f166112c9565b91506001600160401b03808316106113fb57604051636d785b1360e01b81526001600160401b0383166004820152602401610d4f565b60ff83166007600583901c161461033b5760405161800560e51b81526007600583901c16600482015260ff84166024820152604401610d4f565b6060816001600160401b03166001600160401b03811115611458576114586117e1565b6040519080825280601f01601f191660200182016040528015611482576020820181803683370190505b5090505f5b826001600160401b0316816001600160401b031610156115b0575f6114ab856115b9565b905060808116156115725760e08160ff1610156114e7576114cb856115b9565b603f16600682601f1660ff16901b179050600184039350611572565b60f08160ff16101561152c576114fc856115b9565b603f16600661150a876115b9565b603f1660ff16901b600c83600f1660ff16901b17179050600284039350611572565b611535856115b9565b603f166006611543876115b9565b603f16901b600c611553886115b9565b603f1660ff16901b601284600f1660ff16901b17171790506003840393505b8060f81b83836001600160401b03168151811061159157611591611cc1565b60200101906001600160f81b03191690815f1a90535050600101611487565b50908152919050565b5f8160200151825f015151808211156115ef576040516363a056dd60e01b81526004810183905260248101829052604401610d4f565b835160208501805180830160010151955090819061160c82611cfb565b8152505050505050919050565b5f8160200151600261162b9190611d98565b82515180821115611659576040516363a056dd60e01b81526004810183905260248101829052604401610d4f565b83516020850180516002818401810151965090916116778284611d98565b9052509395945050505050565b5f816020015160046116969190611d98565b825151808211156116c4576040516363a056dd60e01b81526004810183905260248101829052604401610d4f565b83516020850180516004818401810151965090916116778284611d98565b5f816020015160086116f49190611d98565b82515180821115611722576040516363a056dd60e01b81526004810183905260248101829052604401610d4f565b83516020850180516008818401810151965090916116778284611d98565b5f5f60208385031215611751575f5ffd5b82356001600160401b03811115611766575f5ffd5b8301601f81018513611776575f5ffd5b80356001600160401b0381111561178b575f5ffd5b85602082840101111561179c575f5ffd5b6020919091019590945092505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715611817576118176117e1565b60405290565b604080519081016001600160401b0381118282101715611817576118176117e1565b604051601f8201601f191681016001600160401b0381118282101715611867576118676117e1565b604052919050565b803560148110610840575f5ffd5b80356001600160401b0381168114610840575f5ffd5b803560ff81168114610840575f5ffd5b5f60c082840312156118b3575f5ffd5b6118bb6117f5565b905081356001600160401b038111156118d2575f5ffd5b8201604081850312156118e3575f5ffd5b6118eb61181d565b81356001600160401b03811115611900575f5ffd5b8201601f81018613611910575f5ffd5b80356001600160401b03811115611929576119296117e1565b61193c601f8201601f191660200161183f565b818152876020838501011115611950575f5ffd5b816020840160208301375f60209282018301528352928301358284015250825261197b908301611893565b602082015261198c60408301611893565b604082015261199d60608301611893565b60608201526119ae6080830161187d565b60808201526119bf60a0830161187d565b60a082015292915050565b5f602082840312156119da575f5ffd5b81356001600160401b038111156119ef575f5ffd5b820160c08185031215611a00575f5ffd5b611a086117f5565b81356101008110611a17575f5ffd5b8152611a256020830161186f565b60208201526040828101359082015260608083013590820152611a4a6080830161187d565b608082015260a08201356001600160401b03811115611a67575f5ffd5b611a73868285016118a3565b60a083015250949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f81518060208401855e5f93019283525090919050565b5f611ac0611aba8386611a95565b84611a95565b949350505050565b73036b0b63337b936b2b2103932b9b837b739b29d160651b81525f611af06014830184611a95565b9392505050565b72036b0b63337b936b2b2103932b8bab2b9ba1d1606d1b81525f611af06013830184611a95565b7303ab73430b73632b21034b73a32b931b2b83a1d160651b81525f611af06014830184611a95565b61060f60f31b81525f611af06002830184611a95565b64687474702f60d81b81525f611af06005830184611a95565b7f617272617920696e646578206f7574206f6620626f756e64733a20000000000081525f611af0601b830184611a95565b72036b0b81035b2bc903737ba103337bab7321d1606d1b81525f611af06013830184611a95565b7f6a736f6e20706174682072657475726e6564206e6f2076616c7565733a20000081525f611af0601e830184611a95565b61040560f31b81525f611c146002830184611a95565b602960f81b81526001019392505050565b61060f60f31b81525f611ac0611aba6002840186611a95565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60ff831680611c7857611c78611c3e565b8060ff84160491505092915050565b60ff818116838216019081111561033d5761033d611c52565b5f60ff831680611cb257611cb2611c3e565b8060ff84160691505092915050565b634e487b7160e01b5f52603260045260245ffd5b5f82611ce357611ce3611c3e565b500690565b5f82611cf657611cf6611c3e565b500490565b5f60018201611d0c57611d0c611c52565b5060010190565b8181038181111561033d5761033d611c52565b602760f81b81525f611d3b6001830184611a95565b6201396160ed1b81526003019392505050565b5f611d598284611a95565b61016160f51b81526002019392505050565b5f6001600160401b03831680611d8357611d83611c3e565b806001600160401b0384160491505092915050565b8082018082111561033d5761033d611c5256fea264697066735822122092dbcda8545e05df9a74e619736389a1cc7c0d45d10e79dd6af025e6b7cf972064736f6c634300081e0033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [ { "ast": { "nativeSrc": "0:13632:136", "nodeType": "YulBlock", "src": "0:13632:136", "statements": [ { "nativeSrc": "6:3:136", "nodeType": "YulBlock", "src": "6:3:136", "statements": [] }, { "body": { "nativeSrc": "103:497:136", "nodeType": "YulBlock", "src": "103:497:136", "statements": [ { "body": { "nativeSrc": "149:16:136", "nodeType": "YulBlock", "src": "149:16:136", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "158:1:136", "nodeType": "YulLiteral", "src": "158:1:136", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "161:1:136", "nodeType": "YulLiteral", "src": "161:1:136", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "151:6:136", "nodeType": "YulIdentifier", "src": "151:6:136" }, "nativeSrc": "151:12:136", "nodeType": "YulFunctionCall", "src": "151:12:136" }, "nativeSrc": "151:12:136", "nodeType": "YulExpressionStatement", "src": "151:12:136" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nativeSrc": "124:7:136", "nodeType": "YulIdentifier", "src": "124:7:136" }, { "name": "headStart", "nativeSrc": "133:9:136", "nodeType": "YulIdentifier", "src": "133:9:136" } ], "functionName": { "name": "sub", "nativeSrc": "120:3:136", "nodeType": "YulIdentifier", "src": "120:3:136" }, "nativeSrc": "120:23:136", "nodeType": "YulFunctionCall", "src": "120:23:136" }, { "kind": "number", "nativeSrc": "145:2:136", "nodeType": "YulLiteral", "src": "145:2:136", "type": "", "value": "32" } ], "functionName": { "name": "slt", "nativeSrc": "116:3:136", "nodeType": "YulIdentifier", "src": "116:3:136" }, "nativeSrc": "116:32:136", "nodeType": "YulFunctionCall", "src": "116:32:136" }, "nativeSrc": "113:52:136", "nodeType": "YulIf", "src": "113:52:136" }, { "nativeSrc": "174:37:136", "nodeType": "YulVariableDeclaration", "src": "174:37:136", "value": { "arguments": [ { "name": "headStart", "nativeSrc": "201:9:136", "nodeType": "YulIdentifier", "src": "201:9:136" } ], "functionName": { "name": "calldataload", "nativeSrc": "188:12:136", "nodeType": "YulIdentifier", "src": "188:12:136" }, "nativeSrc": "188:23:136", "nodeType": "YulFunctionCall", "src": "188:23:136" }, "variables": [ { "name": "offset", "nativeSrc": "178:6:136", "nodeType": "YulTypedName", "src": "178:6:136", "type": "" } ] }, { "body": { "nativeSrc": "254:16:136", "nodeType": "YulBlock", "src": "254:16:136", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "263:1:136", "nodeType": "YulLiteral", "src": "263:1:136", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "266:1:136", "nodeType": "YulLiteral", "src": "266:1:136", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "256:6:136", "nodeType": "YulIdentifier", "src": "256:6:136" }, "nativeSrc": "256:12:136", "nodeType": "YulFunctionCall", "src": "256:12:136" }, "nativeSrc": "256:12:136", "nodeType": "YulExpressionStatement", "src": "256:12:136" } ] }, "condition": { "arguments": [ { "name": "offset", "nativeSrc": "226:6:136", "nodeType": "YulIdentifier", "src": "226:6:136" }, { "kind": "number", "nativeSrc": "234:18:136", "nodeType": "YulLiteral", "src": "234:18:136", "type": "", "value": "0xffffffffffffffff" } ], "functionName": { "name": "gt", "nativeSrc": "223:2:136", "nodeType": "YulIdentifier", "src": "223:2:136" }, "nativeSrc": "223:30:136", "nodeType": "YulFunctionCall", "src": "223:30:136" }, "nativeSrc": "220:50:136", "nodeType": "YulIf", "src": "220:50:136" }, { "nativeSrc": "279:32:136", "nodeType": "YulVariableDeclaration", "src": "279:32:136", "value": { "arguments": [ { "name": "headStart", "nativeSrc": "293:9:136", "nodeType": "YulIdentifier", "src": "293:9:136" }, { "name": "offset", "nativeSrc": "304:6:136", "nodeType": "YulIdentifier", "src": "304:6:136" } ], "functionName": { "name": "add", "nativeSrc": "289:3:136", "nodeType": "YulIdentifier", "src": "289:3:136" }, "nativeSrc": "289:22:136", "nodeType": "YulFunctionCall", "src": "289:22:136" }, "variables": [ { "name": "_1", "nativeSrc": "283:2:136", "nodeType": "YulTypedName", "src": "283:2:136", "type": "" } ] }, { "body": { "nativeSrc": "359:16:136", "nodeType": "YulBlock", "src": "359:16:136", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "368:1:136", "nodeType": "YulLiteral", "src": "368:1:136", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "371:1:136", "nodeType": "YulLiteral", "src": "371:1:136", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "361:6:136", "nodeType": "YulIdentifier", "src": "361:6:136" }, "nativeSrc": "361:12:136", "nodeType": "YulFunctionCall", "src": "361:12:136" }, "nativeSrc": "361:12:136", "nodeType": "YulExpressionStatement", "src": "361:12:136" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "_1", "nativeSrc": "338:2:136", "nodeType": "YulIdentifier", "src": "338:2:136" }, { "kind": "number", "nativeSrc": "342:4:136", "nodeType": "YulLiteral", "src": "342:4:136", "type": "", "value": "0x1f" } ], "functionName": { "name": "add", "nativeSrc": "334:3:136", "nodeType": "YulIdentifier", "src": "334:3:136" }, "nativeSrc": "334:13:136", "nodeType": "YulFunctionCall", "src": "334:13:136" }, { "name": "dataEnd", "nativeSrc": "349:7:136", "nodeType": "YulIdentifier", "src": "349:7:136" } ], "functionName": { "name": "slt", "nativeSrc": "330:3:136", "nodeType": "YulIdentifier", "src": "330:3:136" }, "nativeSrc": "330:27:136", "nodeType": "YulFunctionCall", "src": "330:27:136" } ], "functionName": { "name": "iszero", "nativeSrc": "323:6:136", "nodeType": "YulIdentifier", "src": "323:6:136" }, "nativeSrc": "323:35:136", "nodeType": "YulFunctionCall", "src": "323:35:136" }, "nativeSrc": "320:55:136", "nodeType": "YulIf", "src": "320:55:136" }, { "nativeSrc": "384:30:136", "nodeType": "YulVariableDeclaration", "src": "384:30:136", "value": { "arguments": [ { "name": "_1", "nativeSrc": "411:2:136", "nodeType": "YulIdentifier",