-
-
Save davidngo239/b8026c8b0f871517ec480b6547d0154a to your computer and use it in GitHub Desktop.
// SPDX-License-Identifier: MIT | |
pragma solidity >= 0.4.22 <0.9.0; | |
library console { | |
address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); | |
function _sendLogPayload(bytes memory payload) private view { | |
uint256 payloadLength = payload.length; | |
address consoleAddress = CONSOLE_ADDRESS; | |
assembly { | |
let payloadStart := add(payload, 32) | |
let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) | |
} | |
} | |
function log() internal view { | |
_sendLogPayload(abi.encodeWithSignature("log()")); | |
} | |
function logInt(int p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(int)", p0)); | |
} | |
function logUint(uint p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); | |
} | |
function logString(string memory p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string)", p0)); | |
} | |
function logBool(bool p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); | |
} | |
function logAddress(address p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address)", p0)); | |
} | |
function logBytes(bytes memory p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); | |
} | |
function logBytes1(bytes1 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); | |
} | |
function logBytes2(bytes2 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); | |
} | |
function logBytes3(bytes3 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); | |
} | |
function logBytes4(bytes4 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); | |
} | |
function logBytes5(bytes5 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); | |
} | |
function logBytes6(bytes6 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); | |
} | |
function logBytes7(bytes7 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); | |
} | |
function logBytes8(bytes8 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); | |
} | |
function logBytes9(bytes9 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); | |
} | |
function logBytes10(bytes10 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); | |
} | |
function logBytes11(bytes11 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); | |
} | |
function logBytes12(bytes12 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); | |
} | |
function logBytes13(bytes13 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); | |
} | |
function logBytes14(bytes14 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); | |
} | |
function logBytes15(bytes15 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); | |
} | |
function logBytes16(bytes16 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); | |
} | |
function logBytes17(bytes17 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); | |
} | |
function logBytes18(bytes18 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); | |
} | |
function logBytes19(bytes19 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); | |
} | |
function logBytes20(bytes20 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); | |
} | |
function logBytes21(bytes21 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); | |
} | |
function logBytes22(bytes22 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); | |
} | |
function logBytes23(bytes23 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); | |
} | |
function logBytes24(bytes24 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); | |
} | |
function logBytes25(bytes25 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); | |
} | |
function logBytes26(bytes26 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); | |
} | |
function logBytes27(bytes27 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); | |
} | |
function logBytes28(bytes28 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); | |
} | |
function logBytes29(bytes29 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); | |
} | |
function logBytes30(bytes30 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); | |
} | |
function logBytes31(bytes31 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); | |
} | |
function logBytes32(bytes32 p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); | |
} | |
function log(uint p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); | |
} | |
function log(string memory p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string)", p0)); | |
} | |
function log(bool p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); | |
} | |
function log(address p0) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address)", p0)); | |
} | |
function log(uint p0, uint p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1)); | |
} | |
function log(uint p0, string memory p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1)); | |
} | |
function log(uint p0, bool p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1)); | |
} | |
function log(uint p0, address p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1)); | |
} | |
function log(string memory p0, uint p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1)); | |
} | |
function log(string memory p0, string memory p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); | |
} | |
function log(string memory p0, bool p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); | |
} | |
function log(string memory p0, address p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); | |
} | |
function log(bool p0, uint p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1)); | |
} | |
function log(bool p0, string memory p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); | |
} | |
function log(bool p0, bool p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); | |
} | |
function log(bool p0, address p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); | |
} | |
function log(address p0, uint p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1)); | |
} | |
function log(address p0, string memory p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); | |
} | |
function log(address p0, bool p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); | |
} | |
function log(address p0, address p1) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); | |
} | |
function log(uint p0, uint p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2)); | |
} | |
function log(uint p0, uint p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2)); | |
} | |
function log(uint p0, uint p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2)); | |
} | |
function log(uint p0, uint p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2)); | |
} | |
function log(uint p0, string memory p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2)); | |
} | |
function log(uint p0, string memory p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2)); | |
} | |
function log(uint p0, string memory p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2)); | |
} | |
function log(uint p0, string memory p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2)); | |
} | |
function log(uint p0, bool p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2)); | |
} | |
function log(uint p0, bool p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2)); | |
} | |
function log(uint p0, bool p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2)); | |
} | |
function log(uint p0, bool p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2)); | |
} | |
function log(uint p0, address p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2)); | |
} | |
function log(uint p0, address p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2)); | |
} | |
function log(uint p0, address p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2)); | |
} | |
function log(uint p0, address p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2)); | |
} | |
function log(string memory p0, uint p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2)); | |
} | |
function log(string memory p0, uint p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2)); | |
} | |
function log(string memory p0, uint p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2)); | |
} | |
function log(string memory p0, uint p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2)); | |
} | |
function log(string memory p0, string memory p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2)); | |
} | |
function log(string memory p0, string memory p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); | |
} | |
function log(string memory p0, string memory p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); | |
} | |
function log(string memory p0, string memory p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); | |
} | |
function log(string memory p0, bool p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2)); | |
} | |
function log(string memory p0, bool p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); | |
} | |
function log(string memory p0, bool p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); | |
} | |
function log(string memory p0, bool p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); | |
} | |
function log(string memory p0, address p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2)); | |
} | |
function log(string memory p0, address p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); | |
} | |
function log(string memory p0, address p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); | |
} | |
function log(string memory p0, address p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); | |
} | |
function log(bool p0, uint p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2)); | |
} | |
function log(bool p0, uint p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2)); | |
} | |
function log(bool p0, uint p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2)); | |
} | |
function log(bool p0, uint p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2)); | |
} | |
function log(bool p0, string memory p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2)); | |
} | |
function log(bool p0, string memory p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); | |
} | |
function log(bool p0, string memory p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); | |
} | |
function log(bool p0, string memory p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); | |
} | |
function log(bool p0, bool p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2)); | |
} | |
function log(bool p0, bool p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); | |
} | |
function log(bool p0, bool p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); | |
} | |
function log(bool p0, bool p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); | |
} | |
function log(bool p0, address p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2)); | |
} | |
function log(bool p0, address p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); | |
} | |
function log(bool p0, address p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); | |
} | |
function log(bool p0, address p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); | |
} | |
function log(address p0, uint p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2)); | |
} | |
function log(address p0, uint p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2)); | |
} | |
function log(address p0, uint p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2)); | |
} | |
function log(address p0, uint p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2)); | |
} | |
function log(address p0, string memory p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2)); | |
} | |
function log(address p0, string memory p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); | |
} | |
function log(address p0, string memory p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); | |
} | |
function log(address p0, string memory p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); | |
} | |
function log(address p0, bool p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2)); | |
} | |
function log(address p0, bool p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); | |
} | |
function log(address p0, bool p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); | |
} | |
function log(address p0, bool p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); | |
} | |
function log(address p0, address p1, uint p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2)); | |
} | |
function log(address p0, address p1, string memory p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); | |
} | |
function log(address p0, address p1, bool p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); | |
} | |
function log(address p0, address p1, address p2) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); | |
} | |
function log(uint p0, uint p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, uint p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, string memory p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, bool p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(uint p0, address p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, uint p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, string memory p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, bool p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(string memory p0, address p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, uint p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, string memory p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, bool p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(bool p0, address p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, uint p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, string memory p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, bool p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, uint p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, uint p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, uint p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, uint p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, string memory p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, string memory p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, string memory p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, string memory p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, bool p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, bool p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, bool p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, bool p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, address p2, uint p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, address p2, string memory p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, address p2, bool p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); | |
} | |
function log(address p0, address p1, address p2, address p3) internal view { | |
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); | |
} | |
} |
REMIX DEFAULT WORKSPACE | |
Remix default workspace is present when: | |
i. Remix loads for the very first time | |
ii. A new workspace is created | |
iii. There are no files existing in the File Explorer | |
This workspace contains 3 directories: | |
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name. | |
2. 'scripts': Holds two scripts to deploy a contract. It is explained below. | |
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract | |
SCRIPTS | |
The 'scripts' folder contains two example async/await scripts for deploying the 'Storage' contract. | |
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required). | |
Also, there is a script containing some unit tests for Storage contract inside tests directory. | |
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled. | |
Output from script will appear in remix terminal. | |
Please note, 'require' statement is supported in a limited manner for Remix supported modules. | |
For now, modules supported by Remix are ethers, web3, swarmgw, chai, remix and hardhat only for hardhat.ethers object/plugin. | |
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE will be shown.' |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
/** | |
* @dev Collection of functions related to the address type | |
*/ | |
library Address { | |
/** | |
* @dev Returns true if `account` is a contract. | |
* | |
* [IMPORTANT] | |
* ==== | |
* It is unsafe to assume that an address for which this function returns | |
* false is an externally-owned account (EOA) and not a contract. | |
* | |
* Among others, `isContract` will return false for the following | |
* types of addresses: | |
* | |
* - an externally-owned account | |
* - a contract in construction | |
* - an address where a contract will be created | |
* - an address where a contract lived, but was destroyed | |
* ==== | |
*/ | |
function isContract(address account) internal view returns (bool) { | |
// This method relies on extcodesize, which returns 0 for contracts in | |
// construction, since the code is only stored at the end of the | |
// constructor execution. | |
uint256 size; | |
// solhint-disable-next-line no-inline-assembly | |
assembly { size := extcodesize(account) } | |
return size > 0; | |
} | |
/** | |
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to | |
* `recipient`, forwarding all available gas and reverting on errors. | |
* | |
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost | |
* of certain opcodes, possibly making contracts go over the 2300 gas limit | |
* imposed by `transfer`, making them unable to receive funds via | |
* `transfer`. {sendValue} removes this limitation. | |
* | |
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. | |
* | |
* IMPORTANT: because control is transferred to `recipient`, care must be | |
* taken to not create reentrancy vulnerabilities. Consider using | |
* {ReentrancyGuard} or the | |
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. | |
*/ | |
function sendValue(address payable recipient, uint256 amount) internal { | |
require(address(this).balance >= amount, "Address: insufficient balance"); | |
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value | |
(bool success, ) = recipient.call{ value: amount }(""); | |
require(success, "Address: unable to send value, recipient may have reverted"); | |
} | |
/** | |
* @dev Performs a Solidity function call using a low level `call`. A | |
* plain`call` is an unsafe replacement for a function call: use this | |
* function instead. | |
* | |
* If `target` reverts with a revert reason, it is bubbled up by this | |
* function (like regular Solidity function calls). | |
* | |
* Returns the raw returned data. To convert to the expected return value, | |
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. | |
* | |
* Requirements: | |
* | |
* - `target` must be a contract. | |
* - calling `target` with `data` must not revert. | |
* | |
* _Available since v3.1._ | |
*/ | |
function functionCall(address target, bytes memory data) internal returns (bytes memory) { | |
return functionCall(target, data, "Address: low-level call failed"); | |
} | |
/** | |
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with | |
* `errorMessage` as a fallback revert reason when `target` reverts. | |
* | |
* _Available since v3.1._ | |
*/ | |
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { | |
return functionCallWithValue(target, data, 0, errorMessage); | |
} | |
/** | |
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], | |
* but also transferring `value` wei to `target`. | |
* | |
* Requirements: | |
* | |
* - the calling contract must have an ETH balance of at least `value`. | |
* - the called Solidity function must be `payable`. | |
* | |
* _Available since v3.1._ | |
*/ | |
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { | |
return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); | |
} | |
/** | |
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but | |
* with `errorMessage` as a fallback revert reason when `target` reverts. | |
* | |
* _Available since v3.1._ | |
*/ | |
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { | |
require(address(this).balance >= value, "Address: insufficient balance for call"); | |
require(isContract(target), "Address: call to non-contract"); | |
// solhint-disable-next-line avoid-low-level-calls | |
(bool success, bytes memory returndata) = target.call{ value: value }(data); | |
return _verifyCallResult(success, returndata, errorMessage); | |
} | |
/** | |
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], | |
* but performing a static call. | |
* | |
* _Available since v3.3._ | |
*/ | |
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { | |
return functionStaticCall(target, data, "Address: low-level static call failed"); | |
} | |
/** | |
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], | |
* but performing a static call. | |
* | |
* _Available since v3.3._ | |
*/ | |
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { | |
require(isContract(target), "Address: static call to non-contract"); | |
// solhint-disable-next-line avoid-low-level-calls | |
(bool success, bytes memory returndata) = target.staticcall(data); | |
return _verifyCallResult(success, returndata, errorMessage); | |
} | |
/** | |
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], | |
* but performing a delegate call. | |
* | |
* _Available since v3.4._ | |
*/ | |
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { | |
return functionDelegateCall(target, data, "Address: low-level delegate call failed"); | |
} | |
/** | |
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], | |
* but performing a delegate call. | |
* | |
* _Available since v3.4._ | |
*/ | |
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { | |
require(isContract(target), "Address: delegate call to non-contract"); | |
// solhint-disable-next-line avoid-low-level-calls | |
(bool success, bytes memory returndata) = target.delegatecall(data); | |
return _verifyCallResult(success, returndata, errorMessage); | |
} | |
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { | |
if (success) { | |
return returndata; | |
} else { | |
// Look for revert reason and bubble it up if present | |
if (returndata.length > 0) { | |
// The easiest way to bubble the revert reason is using memory via assembly | |
// solhint-disable-next-line no-inline-assembly | |
assembly { | |
let returndata_size := mload(returndata) | |
revert(add(32, returndata), returndata_size) | |
} | |
} else { | |
revert(errorMessage); | |
} | |
} | |
} | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"görli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204090f37eca0b478c46c13172b11919cc4807c21b0d7fa8b08dc89669465bbb1464736f6c63430007060033", | |
"opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH SWAP1 RETURN PUSH31 0xCA0B478C46C13172B11919CC4807C21B0D7FA8B08DC89669465BBB1464736F PUSH13 0x63430007060033000000000000 ", | |
"sourceMap": "134:7684:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204090f37eca0b478c46c13172b11919cc4807c21b0d7fa8b08dc89669465bbb1464736f6c63430007060033", | |
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH SWAP1 RETURN PUSH31 0xCA0B478C46C13172B11919CC4807C21B0D7FA8B08DC89669465BBB1464736F PUSH13 0x63430007060033000000000000 ", | |
"sourceMap": "134:7684:0:-:0;;;;;;;;" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "17200", | |
"executionCost": "97", | |
"totalCost": "17297" | |
}, | |
"internal": { | |
"_verifyCallResult(bool,bytes memory,string memory)": "infinite", | |
"functionCall(address,bytes memory)": "infinite", | |
"functionCall(address,bytes memory,string memory)": "infinite", | |
"functionCallWithValue(address,bytes memory,uint256)": "infinite", | |
"functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite", | |
"functionDelegateCall(address,bytes memory)": "infinite", | |
"functionDelegateCall(address,bytes memory,string memory)": "infinite", | |
"functionStaticCall(address,bytes memory)": "infinite", | |
"functionStaticCall(address,bytes memory,string memory)": "infinite", | |
"isContract(address)": "infinite", | |
"sendValue(address payable,uint256)": "infinite" | |
} | |
}, | |
"methodIdentifiers": {} | |
}, | |
"abi": [] | |
} |
{ | |
"compiler": { | |
"version": "0.7.6+commit.7338295f" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [], | |
"devdoc": { | |
"details": "Collection of functions related to the address type", | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"contracts/Address.sol": "Address" | |
}, | |
"evmVersion": "istanbul", | |
"libraries": {}, | |
"metadata": { | |
"bytecodeHash": "ipfs" | |
}, | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"contracts/Address.sol": { | |
"keccak256": "0x429dc5283212926dc6d672ffcd60be522ba268c2e1a2e292a20f9e0c31826f7a", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://1c7884fc5a46c90ebf7b3ba591e54766dd43c5fda8c6e6d0ba596463654f2fca", | |
"dweb:/ipfs/QmWRzsJkRbx1gJivVJxR43LovTeQpYMU9twnCS1SwdHnV2" | |
] | |
} | |
}, | |
"version": 1 | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"görli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "608060405234801561001057600080fd5b50604051610df4380380610df48339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b8382019150602082018581111561006957600080fd5b825186602082028301116401000000008211171561008657600080fd5b8083526020830192505050908051906020019060200280838360005b838110156100bd5780820151818401526020810190506100a2565b50505050905001604052505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060005b81518110156101f5576002604051806040016040528084848151811061019757fe5b6020026020010151815260200160008152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508080600101915050610175565b5050610bee806102066000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063609ff1bd1161005b578063609ff1bd1461017c5780639e7b8d611461019a578063a3ec138d146101de578063e2ba53f01461026357610088565b80630121b93f1461008d578063013cf08b146100bb5780632e4176cf146101045780635c19a95c14610138575b600080fd5b6100b9600480360360208110156100a357600080fd5b8101908080359060200190929190505050610281565b005b6100e7600480360360208110156100d157600080fd5b810190808035906020019092919050505061041e565b604051808381526020018281526020019250505060405180910390f35b61010c610452565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017a6004803603602081101561014e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610476565b005b610184610892565b6040518082815260200191505060405180910390f35b6101dc600480360360208110156101b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610906565b005b610220600480360360208110156101f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b06565b6040518085815260200184151581526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b61026b610b63565b6040518082815260200191505060405180910390f35b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154141561033f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f486173206e6f20726967687420746f20766f746500000000000000000000000081525060200191505060405180910390fd5b8060010160009054906101000a900460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f416c726561647920766f7465642e00000000000000000000000000000000000081525060200191505060405180910390fd5b60018160010160006101000a81548160ff0219169083151502179055508181600201819055508060000154600283815481106103fc57fe5b9060005260206000209060020201600101600082825401925050819055505050565b6002818154811061042e57600080fd5b90600052602060002090600202016000915090508060000154908060010154905082565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff161561053e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f7520616c726561647920766f7465642e000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156105e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e000081525060200191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561077e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f466f756e64206c6f6f7020696e2064656c65676174696f6e2e0000000000000081525060200191505060405180910390fd5b6105e1565b60018160010160006101000a81548160ff021916908315150217905550818160010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff1615610876578160000154600282600201548154811061085357fe5b90600052602060002090600202016001016000828254019250508190555061088d565b816000015481600001600082825401925050819055505b505050565b6000806000905060005b6002805490508110156109015781600282815481106108b757fe5b90600052602060002090600202016001015411156108f457600281815481106108dc57fe5b90600052602060002090600202016001015491508092505b808060010191505061089c565b505090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180610b916028913960400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615610a6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54686520766f74657220616c726561647920766f7465642e000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610abc57600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b60006002610b6f610892565b81548110610b7957fe5b90600052602060002090600202016000015490509056fe4f6e6c79206368616972706572736f6e2063616e206769766520726967687420746f20766f74652ea2646970667358221220f274610f27ddf60e3e34f2b2cfe1ec7ad144a49b7b7075f135465405ca8bfd0364736f6c63430007060033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xDF4 CODESIZE SUB DUP1 PUSH2 0xDF4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP3 POP POP POP SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x197 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x175 JUMP JUMPDEST POP POP PUSH2 0xBEE DUP1 PUSH2 0x206 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x609FF1BD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x609FF1BD EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x9E7B8D61 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xA3EC138D EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0xE2BA53F0 EQ PUSH2 0x263 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x121B93F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x13CF08B EQ PUSH2 0xBB JUMPI DUP1 PUSH4 0x2E4176CF EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x138 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x281 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x41E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x452 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x184 PUSH2 0x892 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x906 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26B PUSH2 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x33F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x486173206E6F20726967687420746F20766F7465000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3C4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x416C726561647920766F7465642E000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x3FC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x53E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x596F7520616C726561647920766F7465642E0000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x5E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x783 JUMPI PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x77E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E1 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x1 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x876 JUMPI DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP3 PUSH1 0x2 ADD SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x853 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x88D JUMP JUMPDEST DUP2 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x901 JUMPI DUP2 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x8B7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD GT ISZERO PUSH2 0x8F4 JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x8DC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP DUP1 SWAP3 POP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x89C JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB91 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xA6D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x54686520766F74657220616C726561647920766F7465642E0000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD EQ PUSH2 0xABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH2 0xB6F PUSH2 0x892 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0xB79 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP INVALID 0x4F PUSH15 0x6C79206368616972706572736F6E20 PUSH4 0x616E2067 PUSH10 0x76652072696768742074 PUSH16 0x20766F74652EA2646970667358221220 CALLCODE PUSH21 0x610F27DDF60E3E34F2B2CFE1EC7AD144A49B7B7075 CALL CALLDATALOAD CHAINID SLOAD SDIV 0xCA DUP12 REVERT SUB PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", | |
"sourceMap": "157:4355:0:-:0;;;955:481;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1023:10;1009:11;;:24;;;;;;;;;;;;;;;;;;1072:1;1043:6;:19;1050:11;;;;;;;;;;;1043:19;;;;;;;;;;;;;;;:26;;:30;;;;1089:6;1084:346;1105:13;:20;1101:1;:24;1084:346;;;1309:9;1324:94;;;;;;;;1357:13;1371:1;1357:16;;;;;;;;;;;;;;1324:94;;;;1402:1;1324:94;;;1309:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1127:3;;;;;;;1084:346;;;;955:481;157:4355;;;;;;" | |
}, | |
"deployedBytecode": { | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063609ff1bd1161005b578063609ff1bd1461017c5780639e7b8d611461019a578063a3ec138d146101de578063e2ba53f01461026357610088565b80630121b93f1461008d578063013cf08b146100bb5780632e4176cf146101045780635c19a95c14610138575b600080fd5b6100b9600480360360208110156100a357600080fd5b8101908080359060200190929190505050610281565b005b6100e7600480360360208110156100d157600080fd5b810190808035906020019092919050505061041e565b604051808381526020018281526020019250505060405180910390f35b61010c610452565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017a6004803603602081101561014e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610476565b005b610184610892565b6040518082815260200191505060405180910390f35b6101dc600480360360208110156101b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610906565b005b610220600480360360208110156101f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b06565b6040518085815260200184151581526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b61026b610b63565b6040518082815260200191505060405180910390f35b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154141561033f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f486173206e6f20726967687420746f20766f746500000000000000000000000081525060200191505060405180910390fd5b8060010160009054906101000a900460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f416c726561647920766f7465642e00000000000000000000000000000000000081525060200191505060405180910390fd5b60018160010160006101000a81548160ff0219169083151502179055508181600201819055508060000154600283815481106103fc57fe5b9060005260206000209060020201600101600082825401925050819055505050565b6002818154811061042e57600080fd5b90600052602060002090600202016000915090508060000154908060010154905082565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff161561053e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f7520616c726561647920766f7465642e000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156105e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e000081525060200191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561077e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f466f756e64206c6f6f7020696e2064656c65676174696f6e2e0000000000000081525060200191505060405180910390fd5b6105e1565b60018160010160006101000a81548160ff021916908315150217905550818160010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff1615610876578160000154600282600201548154811061085357fe5b90600052602060002090600202016001016000828254019250508190555061088d565b816000015481600001600082825401925050819055505b505050565b6000806000905060005b6002805490508110156109015781600282815481106108b757fe5b90600052602060002090600202016001015411156108f457600281815481106108dc57fe5b90600052602060002090600202016001015491508092505b808060010191505061089c565b505090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180610b916028913960400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615610a6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54686520766f74657220616c726561647920766f7465642e000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610abc57600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b60006002610b6f610892565b81548110610b7957fe5b90600052602060002090600202016000015490509056fe4f6e6c79206368616972706572736f6e2063616e206769766520726967687420746f20766f74652ea2646970667358221220f274610f27ddf60e3e34f2b2cfe1ec7ad144a49b7b7075f135465405ca8bfd0364736f6c63430007060033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x609FF1BD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x609FF1BD EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x9E7B8D61 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xA3EC138D EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0xE2BA53F0 EQ PUSH2 0x263 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x121B93F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x13CF08B EQ PUSH2 0xBB JUMPI DUP1 PUSH4 0x2E4176CF EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x138 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x281 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x41E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x452 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x184 PUSH2 0x892 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x906 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26B PUSH2 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x33F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x486173206E6F20726967687420746F20766F7465000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3C4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x416C726561647920766F7465642E000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x3FC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x53E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x596F7520616C726561647920766F7465642E0000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x5E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x783 JUMPI PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x77E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E1 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x1 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x876 JUMPI DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP3 PUSH1 0x2 ADD SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x853 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x88D JUMP JUMPDEST DUP2 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x901 JUMPI DUP2 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x8B7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD GT ISZERO PUSH2 0x8F4 JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x8DC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP DUP1 SWAP3 POP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x89C JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB91 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xA6D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x54686520766F74657220616C726561647920766F7465642E0000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD EQ PUSH2 0xABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH2 0xB6F PUSH2 0x892 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0xB79 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP INVALID 0x4F PUSH15 0x6C79206368616972706572736F6E20 PUSH4 0x616E2067 PUSH10 0x76652072696768742074 PUSH16 0x20766F74652EA2646970667358221220 CALLCODE PUSH21 0x610F27DDF60E3E34F2B2CFE1EC7AD144A49B7B7075 CALL CALLDATALOAD CHAINID SLOAD SDIV 0xCA DUP12 REVERT SUB PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", | |
"sourceMap": "157:4355:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:458;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;791:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;712:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2071:907;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3810:365;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1592:355;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;745:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4366:144;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3166:458;3212:20;3235:6;:18;3242:10;3235:18;;;;;;;;;;;;;;;3212:41;;3288:1;3271:6;:13;;;:18;;3263:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3333:6;:12;;;;;;;;;;;;3332:13;3324:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3389:4;3374:6;:12;;;:19;;;;;;;;;;;;;;;;;;3417:8;3403:6;:11;;:22;;;;3604:6;:13;;;3571:9;3581:8;3571:19;;;;;;;;;;;;;;;;;;:29;;;:46;;;;;;;;;;;3166:458;;:::o;791:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;712:26::-;;;;;;;;;;;;:::o;2071:907::-;2118:20;2141:6;:18;2148:10;2141:18;;;;;;;;;;;;;;;2118:41;;2178:6;:12;;;;;;;;;;;;2177:13;2169:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2237:10;2231:16;;:2;:16;;;;2223:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:223;2331:1;2300:33;;:6;:10;2307:2;2300:10;;;;;;;;;;;;;;;:19;;;;;;;;;;;;:33;;;2293:223;;2354:6;:10;2361:2;2354:10;;;;;;;;;;;;;;;:19;;;;;;;;;;;;2349:24;;2465:10;2459:16;;:2;:16;;;;2451:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:223;;;2540:4;2525:6;:12;;;:19;;;;;;;;;;;;;;;;;;2572:2;2554:6;:15;;;:20;;;;;;;;;;;;;;;;;;2584:23;2610:6;:10;2617:2;2610:10;;;;;;;;;;;;;;;2584:36;;2634:9;:15;;;;;;;;;;;;2630:342;;;2801:6;:13;;;2762:9;2772;:14;;;2762:25;;;;;;;;;;;;;;;;;;:35;;;:52;;;;;;;;;;;2630:342;;;2948:6;:13;;;2928:9;:16;;;:33;;;;;;;;;;;2630:342;2071:907;;;:::o;3810:365::-;3870:21;3907;3931:1;3907:25;;3947:6;3942:227;3963:9;:16;;;;3959:1;:20;3942:227;;;4029:16;4004:9;4014:1;4004:12;;;;;;;;;;;;;;;;;;:22;;;:41;4000:159;;;4084:9;4094:1;4084:12;;;;;;;;;;;;;;;;;;:22;;;4065:41;;4143:1;4124:20;;4000:159;3981:3;;;;;;;3942:227;;;;3810:365;;:::o;1592:355::-;1684:11;;;;;;;;;;1670:25;;:10;:25;;;1649:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1793:6;:13;1800:5;1793:13;;;;;;;;;;;;;;;:19;;;;;;;;;;;;1792:20;1771:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1904:1;1880:6;:13;1887:5;1880:13;;;;;;;;;;;;;;;:20;;;:25;1872:34;;;;;;1939:1;1916:6;:13;1923:5;1916:13;;;;;;;;;;;;;;;:20;;:24;;;;1592:355;:::o;745:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4366:144::-;4421:19;4470:9;4480:17;:15;:17::i;:::-;4470:28;;;;;;;;;;;;;;;;;;:33;;;4456:47;;4366:144;:::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "610800", | |
"executionCost": "infinite", | |
"totalCost": "infinite" | |
}, | |
"external": { | |
"chairperson()": "1089", | |
"delegate(address)": "infinite", | |
"giveRightToVote(address)": "infinite", | |
"proposals(uint256)": "2860", | |
"vote(uint256)": "65454", | |
"voters(address)": "3857", | |
"winnerName()": "infinite", | |
"winningProposal()": "infinite" | |
} | |
}, | |
"methodIdentifiers": { | |
"chairperson()": "2e4176cf", | |
"delegate(address)": "5c19a95c", | |
"giveRightToVote(address)": "9e7b8d61", | |
"proposals(uint256)": "013cf08b", | |
"vote(uint256)": "0121b93f", | |
"voters(address)": "a3ec138d", | |
"winnerName()": "e2ba53f0", | |
"winningProposal()": "609ff1bd" | |
} | |
}, | |
"abi": [ | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes32[]", | |
"name": "proposalNames", | |
"type": "bytes32[]" | |
} | |
], | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"inputs": [], | |
"name": "chairperson", | |
"outputs": [ | |
{ | |
"internalType": "address", | |
"name": "", | |
"type": "address" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "address", | |
"name": "to", | |
"type": "address" | |
} | |
], | |
"name": "delegate", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "address", | |
"name": "voter", | |
"type": "address" | |
} | |
], | |
"name": "giveRightToVote", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"name": "proposals", | |
"outputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "name", | |
"type": "bytes32" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "voteCount", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "proposal", | |
"type": "uint256" | |
} | |
], | |
"name": "vote", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "address", | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "voters", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "weight", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "bool", | |
"name": "voted", | |
"type": "bool" | |
}, | |
{ | |
"internalType": "address", | |
"name": "delegate", | |
"type": "address" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "vote", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "winnerName", | |
"outputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "winnerName_", | |
"type": "bytes32" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "winningProposal", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "winningProposal_", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
] | |
} |
{ | |
"compiler": { | |
"version": "0.7.6+commit.7338295f" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes32[]", | |
"name": "proposalNames", | |
"type": "bytes32[]" | |
} | |
], | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"inputs": [], | |
"name": "chairperson", | |
"outputs": [ | |
{ | |
"internalType": "address", | |
"name": "", | |
"type": "address" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "address", | |
"name": "to", | |
"type": "address" | |
} | |
], | |
"name": "delegate", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "address", | |
"name": "voter", | |
"type": "address" | |
} | |
], | |
"name": "giveRightToVote", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"name": "proposals", | |
"outputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "name", | |
"type": "bytes32" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "voteCount", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "proposal", | |
"type": "uint256" | |
} | |
], | |
"name": "vote", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "address", | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "voters", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "weight", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "bool", | |
"name": "voted", | |
"type": "bool" | |
}, | |
{ | |
"internalType": "address", | |
"name": "delegate", | |
"type": "address" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "vote", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "winnerName", | |
"outputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "winnerName_", | |
"type": "bytes32" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "winningProposal", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "winningProposal_", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"details": "Implements voting process along with vote delegation", | |
"kind": "dev", | |
"methods": { | |
"constructor": { | |
"details": "Create a new ballot to choose one of 'proposalNames'.", | |
"params": { | |
"proposalNames": "names of proposals" | |
} | |
}, | |
"delegate(address)": { | |
"details": "Delegate your vote to the voter 'to'.", | |
"params": { | |
"to": "address to which vote is delegated" | |
} | |
}, | |
"giveRightToVote(address)": { | |
"details": "Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.", | |
"params": { | |
"voter": "address of voter" | |
} | |
}, | |
"vote(uint256)": { | |
"details": "Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.", | |
"params": { | |
"proposal": "index of proposal in the proposals array" | |
} | |
}, | |
"winnerName()": { | |
"details": "Calls winningProposal() function to get the index of the winner contained in the proposals array and then", | |
"returns": { | |
"winnerName_": "the name of the winner" | |
} | |
}, | |
"winningProposal()": { | |
"details": "Computes the winning proposal taking all previous votes into account.", | |
"returns": { | |
"winningProposal_": "index of winning proposal in the proposals array" | |
} | |
} | |
}, | |
"title": "Ballot", | |
"version": 1 | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"contracts/Context.sol": "Ballot" | |
}, | |
"evmVersion": "istanbul", | |
"libraries": {}, | |
"metadata": { | |
"bytecodeHash": "ipfs" | |
}, | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"contracts/Context.sol": { | |
"keccak256": "0x83fe6b367c140a5c7678c420da454c8c3866ccae12da149c5da3ce6568d29b6c", | |
"license": "GPL-3.0", | |
"urls": [ | |
"bzz-raw://5902f2f468a1f776b8f2cb9d584371af88e181954298af92402fca01d0dba3e7", | |
"dweb:/ipfs/QmSUodhSvoorFL5m5CNqve8YvmuBpjCq17NbTf4GUX8ydw" | |
] | |
} | |
}, | |
"version": 1 | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
pragma abicoder v2; | |
import "./Context.sol"; | |
import "./Ownable.sol"; | |
import "./SafeMath.sol"; | |
import "./ERC721.sol"; | |
import "./Ownable.sol"; | |
import "./Strings.sol"; | |
import "./EnumerableSet.sol"; | |
import "./ManagerInterface.sol"; | |
import "./IERC20.sol"; | |
import "./INFTCore.sol"; | |
contract BaseNFT is INFTCore, ERC721, Ownable { | |
using SafeMath for uint256; | |
using Strings for uint256; | |
using EnumerableSet for EnumerableSet.UintSet; | |
mapping(uint256 => NFTItem) public nftFactory; | |
mapping (address => User) internal users; | |
event UpdateClass(uint256 indexed tokenId, string class); | |
event UpdateRare(uint256 indexed tokenId, uint256 rare); | |
event AddNFTFactory(uint256 indexed tokenId); | |
event AddNFTUser(uint256 indexed tokenId); | |
modifier onlySafeNFT() { | |
require(manager.safeNFT(msg.sender), "require Safe Address."); | |
_; | |
} | |
constructor( | |
string memory name, | |
string memory symbol, | |
string memory baseURI, | |
address _manager | |
) ERC721(name, symbol, _manager) { | |
_setBaseURI(baseURI); | |
manager = ManagerInterface(_manager); | |
} | |
/** | |
* @dev Withdraw bnb from this contract (Callable by owner only) | |
*/ | |
function handleForfeitedBalance(address coinAddress, uint256 value, address payable to) public onlyOwner { | |
if (coinAddress == address(0)) { | |
return to.transfer(value); | |
} | |
IERC20(coinAddress).transfer(to, value); | |
} | |
/** | |
* @dev Changes the base URI if we want to move things in the future (Callable by owner only) | |
*/ | |
function changeBaseURI(string memory baseURI) public onlyOwner { | |
_setBaseURI(baseURI); | |
} | |
function changeClass( | |
uint256 _tokenId, | |
address _owner, | |
string memory _class | |
) external override onlySafeNFT { | |
NFTItem memory nft = nftFactory[_tokenId]; | |
nft.class = _class; | |
User storage userInfo = users[_owner]; | |
for (uint256 index = 0; index < userInfo.nfts.length; index++) { | |
if(userInfo.nfts[index].tokenId == _tokenId) { | |
userInfo.nfts[index].class = _class; | |
} | |
} | |
emit UpdateClass(_tokenId, _class); | |
} | |
function changeRare( | |
uint256 _tokenId, | |
address _owner, | |
uint256 _rare | |
) external override onlySafeNFT { | |
NFTItem memory nft = nftFactory[_tokenId]; | |
nft.rare = _rare; | |
User storage userInfo = users[_owner]; | |
for (uint256 index = 0; index < userInfo.nfts.length; index++) { | |
if(userInfo.nfts[index].tokenId == _tokenId) { | |
userInfo.nfts[index].rare = _rare; | |
} | |
} | |
emit UpdateRare(_tokenId, _rare); | |
} | |
function getNFT(uint256 _tokenId) | |
external | |
override | |
view | |
returns (NFTItem memory) | |
{ | |
return nftFactory[_tokenId]; | |
} | |
function setNFTFactory( | |
NFTItem memory _nft, | |
uint256 _tokenId | |
) external override onlySafeNFT { | |
nftFactory[_tokenId] = _nft; | |
emit AddNFTFactory(_tokenId); | |
} | |
function setNFTForUser( | |
NFTItem memory _nft, | |
uint256 _tokenId, | |
address _userAddress | |
) external override onlySafeNFT { | |
User storage user = users[_userAddress]; | |
user.owner = _userAddress; | |
user.nfts.push(_nft); | |
emit AddNFTUser(_tokenId); | |
} | |
function setManager( | |
address _addr | |
) external onlyOwner { | |
manager = ManagerInterface(_addr); | |
} | |
function safeMintNFT( | |
address _addr, | |
uint256 tokenId | |
) external override onlySafeNFT { | |
_safeMint(_addr, tokenId); | |
} | |
function getAllNFT(uint256 _fromTokenId, uint256 _toTokenId) | |
external | |
override | |
view | |
returns (NFTItem[] memory) | |
{ | |
NFTItem[] memory allNft = new NFTItem[](totalSupply()); | |
uint256 count = 0; | |
for (uint256 index = _fromTokenId; index <= _toTokenId; index++) { | |
allNft[count] = nftFactory[index]; | |
++count; | |
} | |
return allNft; | |
} | |
function getUser(address _userAddress) | |
external | |
override | |
view | |
returns (User memory userInfo) | |
{ | |
userInfo = users[_userAddress]; | |
} | |
function getNextNFTId() external override view returns (uint256){ | |
return totalSupply().add(1); | |
} | |
function _transfer(address from, address to, uint256 tokenId) internal override(ERC721) { | |
super._transfer(from, to, tokenId); | |
User storage userFrom = users[from]; | |
for (uint256 index = 0; index < userFrom.nfts.length; index++) { | |
if(userFrom.nfts[index].tokenId == tokenId) { | |
delete userFrom.nfts[index]; | |
} | |
} | |
NFTItem memory nftItem = nftFactory[tokenId]; | |
User storage userTo = users[to]; | |
userTo.nfts.push(nftItem); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
/* | |
* @dev Provides information about the current execution context, including the | |
* sender of the transaction and its data. While these are generally available | |
* via msg.sender and msg.data, they should not be accessed in such a direct | |
* manner, since when dealing with GSN meta-transactions the account sending and | |
* paying for execution may not be the actual sender (as far as an application | |
* is concerned). | |
* | |
* This contract is only required for intermediate, library-like contracts. | |
*/ | |
abstract contract Context { | |
function _msgSender() internal view virtual returns (address payable) { | |
return msg.sender; | |
} | |
function _msgData() internal view virtual returns (bytes memory) { | |
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 | |
return msg.data; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
/** | |
* @dev Library for managing an enumerable variant of Solidity's | |
* https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] | |
* type. | |
* | |
* Maps have the following properties: | |
* | |
* - Entries are added, removed, and checked for existence in constant time | |
* (O(1)). | |
* - Entries are enumerated in O(n). No guarantees are made on the ordering. | |
* | |
* ``` | |
* contract Example { | |
* // Add the library methods | |
* using EnumerableMap for EnumerableMap.UintToAddressMap; | |
* | |
* // Declare a set state variable | |
* EnumerableMap.UintToAddressMap private myMap; | |
* } | |
* ``` | |
* | |
* As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are | |
* supported. | |
*/ | |
library EnumerableMap { | |
// To implement this library for multiple types with as little code | |
// repetition as possible, we write it in terms of a generic Map type with | |
// bytes32 keys and values. | |
// The Map implementation uses private functions, and user-facing | |
// implementations (such as Uint256ToAddressMap) are just wrappers around | |
// the underlying Map. | |
// This means that we can only create new EnumerableMaps for types that fit | |
// in bytes32. | |
struct MapEntry { | |
bytes32 _key; | |
bytes32 _value; | |
} | |
struct Map { | |
// Storage of map keys and values | |
MapEntry[] _entries; | |
// Position of the entry defined by a key in the `entries` array, plus 1 | |
// because index 0 means a key is not in the map. | |
mapping (bytes32 => uint256) _indexes; | |
} | |
/** | |
* @dev Adds a key-value pair to a map, or updates the value for an existing | |
* key. O(1). | |
* | |
* Returns true if the key was added to the map, that is if it was not | |
* already present. | |
*/ | |
function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) { | |
// We read and store the key's index to prevent multiple reads from the same storage slot | |
uint256 keyIndex = map._indexes[key]; | |
if (keyIndex == 0) { // Equivalent to !contains(map, key) | |
map._entries.push(MapEntry({ _key: key, _value: value })); | |
// The entry is stored at length-1, but we add 1 to all indexes | |
// and use 0 as a sentinel value | |
map._indexes[key] = map._entries.length; | |
return true; | |
} else { | |
map._entries[keyIndex - 1]._value = value; | |
return false; | |
} | |
} | |
/** | |
* @dev Removes a key-value pair from a map. O(1). | |
* | |
* Returns true if the key was removed from the map, that is if it was present. | |
*/ | |
function _remove(Map storage map, bytes32 key) private returns (bool) { | |
// We read and store the key's index to prevent multiple reads from the same storage slot | |
uint256 keyIndex = map._indexes[key]; | |
if (keyIndex != 0) { // Equivalent to contains(map, key) | |
// To delete a key-value pair from the _entries array in O(1), we swap the entry to delete with the last one | |
// in the array, and then remove the last entry (sometimes called as 'swap and pop'). | |
// This modifies the order of the array, as noted in {at}. | |
uint256 toDeleteIndex = keyIndex - 1; | |
uint256 lastIndex = map._entries.length - 1; | |
// When the entry to delete is the last one, the swap operation is unnecessary. However, since this occurs | |
// so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. | |
MapEntry storage lastEntry = map._entries[lastIndex]; | |
// Move the last entry to the index where the entry to delete is | |
map._entries[toDeleteIndex] = lastEntry; | |
// Update the index for the moved entry | |
map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based | |
// Delete the slot where the moved entry was stored | |
map._entries.pop(); | |
// Delete the index for the deleted slot | |
delete map._indexes[key]; | |
return true; | |
} else { | |
return false; | |
} | |
} | |
/** | |
* @dev Returns true if the key is in the map. O(1). | |
*/ | |
function _contains(Map storage map, bytes32 key) private view returns (bool) { | |
return map._indexes[key] != 0; | |
} | |
/** | |
* @dev Returns the number of key-value pairs in the map. O(1). | |
*/ | |
function _length(Map storage map) private view returns (uint256) { | |
return map._entries.length; | |
} | |
/** | |
* @dev Returns the key-value pair stored at position `index` in the map. O(1). | |
* | |
* Note that there are no guarantees on the ordering of entries inside the | |
* array, and it may change when more entries are added or removed. | |
* | |
* Requirements: | |
* | |
* - `index` must be strictly less than {length}. | |
*/ | |
function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) { | |
require(map._entries.length > index, "EnumerableMap: index out of bounds"); | |
MapEntry storage entry = map._entries[index]; | |
return (entry._key, entry._value); | |
} | |
/** | |
* @dev Tries to returns the value associated with `key`. O(1). | |
* Does not revert if `key` is not in the map. | |
*/ | |
function _tryGet(Map storage map, bytes32 key) private view returns (bool, bytes32) { | |
uint256 keyIndex = map._indexes[key]; | |
if (keyIndex == 0) return (false, 0); // Equivalent to contains(map, key) | |
return (true, map._entries[keyIndex - 1]._value); // All indexes are 1-based | |
} | |
/** | |
* @dev Returns the value associated with `key`. O(1). | |
* | |
* Requirements: | |
* | |
* - `key` must be in the map. | |
*/ | |
function _get(Map storage map, bytes32 key) private view returns (bytes32) { | |
uint256 keyIndex = map._indexes[key]; | |
require(keyIndex != 0, "EnumerableMap: nonexistent key"); // Equivalent to contains(map, key) | |
return map._entries[keyIndex - 1]._value; // All indexes are 1-based | |
} | |
/** | |
* @dev Same as {_get}, with a custom error message when `key` is not in the map. | |
* | |
* CAUTION: This function is deprecated because it requires allocating memory for the error | |
* message unnecessarily. For custom revert reasons use {_tryGet}. | |
*/ | |
function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) { | |
uint256 keyIndex = map._indexes[key]; | |
require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key) | |
return map._entries[keyIndex - 1]._value; // All indexes are 1-based | |
} | |
// UintToAddressMap | |
struct UintToAddressMap { | |
Map _inner; | |
} | |
/** | |
* @dev Adds a key-value pair to a map, or updates the value for an existing | |
* key. O(1). | |
* | |
* Returns true if the key was added to the map, that is if it was not | |
* already present. | |
*/ | |
function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) { | |
return _set(map._inner, bytes32(key), bytes32(uint256(uint160(value)))); | |
} | |
/** | |
* @dev Removes a value from a set. O(1). | |
* | |
* Returns true if the key was removed from the map, that is if it was present. | |
*/ | |
function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) { | |
return _remove(map._inner, bytes32(key)); | |
} | |
/** | |
* @dev Returns true if the key is in the map. O(1). | |
*/ | |
function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) { | |
return _contains(map._inner, bytes32(key)); | |
} | |
/** | |
* @dev Returns the number of elements in the map. O(1). | |
*/ | |
function length(UintToAddressMap storage map) internal view returns (uint256) { | |
return _length(map._inner); | |
} | |
/** | |
* @dev Returns the element stored at position `index` in the set. O(1). | |
* Note that there are no guarantees on the ordering of values inside the | |
* array, and it may change when more values are added or removed. | |
* | |
* Requirements: | |
* | |
* - `index` must be strictly less than {length}. | |
*/ | |
function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) { | |
(bytes32 key, bytes32 value) = _at(map._inner, index); | |
return (uint256(key), address(uint160(uint256(value)))); | |
} | |
/** | |
* @dev Tries to returns the value associated with `key`. O(1). | |
* Does not revert if `key` is not in the map. | |
* | |
* _Available since v3.4._ | |
*/ | |
function tryGet(UintToAddressMap storage map, uint256 key) internal view returns (bool, address) { | |
(bool success, bytes32 value) = _tryGet(map._inner, bytes32(key)); | |
return (success, address(uint160(uint256(value)))); | |
} | |
/** | |
* @dev Returns the value associated with `key`. O(1). | |
* | |
* Requirements: | |
* | |
* - `key` must be in the map. | |
*/ | |
function get(UintToAddressMap storage map, uint256 key) internal view returns (address) { | |
return address(uint160(uint256(_get(map._inner, bytes32(key))))); | |
} | |
/** | |
* @dev Same as {get}, with a custom error message when `key` is not in the map. | |
* | |
* CAUTION: This function is deprecated because it requires allocating memory for the error | |
* message unnecessarily. For custom revert reasons use {tryGet}. | |
*/ | |
function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) { | |
return address(uint160(uint256(_get(map._inner, bytes32(key), errorMessage)))); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
/** | |
* @dev Library for managing | |
* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive | |
* types. | |
* | |
* Sets have the following properties: | |
* | |
* - Elements are added, removed, and checked for existence in constant time | |
* (O(1)). | |
* - Elements are enumerated in O(n). No guarantees are made on the ordering. | |
* | |
* ``` | |
* contract Example { | |
* // Add the library methods | |
* using EnumerableSet for EnumerableSet.AddressSet; | |
* | |
* // Declare a set state variable | |
* EnumerableSet.AddressSet private mySet; | |
* } | |
* ``` | |
* | |
* As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) | |
* and `uint256` (`UintSet`) are supported. | |
*/ | |
library EnumerableSet { | |
// To implement this library for multiple types with as little code | |
// repetition as possible, we write it in terms of a generic Set type with | |
// bytes32 values. | |
// The Set implementation uses private functions, and user-facing | |
// implementations (such as AddressSet) are just wrappers around the | |
// underlying Set. | |
// This means that we can only create new EnumerableSets for types that fit | |
// in bytes32. | |
struct Set { | |
// Storage of set values | |
bytes32[] _values; | |
// Position of the value in the `values` array, plus 1 because index 0 | |
// means a value is not in the set. | |
mapping (bytes32 => uint256) _indexes; | |
} | |
/** | |
* @dev Add a value to a set. O(1). | |
* | |
* Returns true if the value was added to the set, that is if it was not | |
* already present. | |
*/ | |
function _add(Set storage set, bytes32 value) private returns (bool) { | |
if (!_contains(set, value)) { | |
set._values.push(value); | |
// The value is stored at length-1, but we add 1 to all indexes | |
// and use 0 as a sentinel value | |
set._indexes[value] = set._values.length; | |
return true; | |
} else { | |
return false; | |
} | |
} | |
/** | |
* @dev Removes a value from a set. O(1). | |
* | |
* Returns true if the value was removed from the set, that is if it was | |
* present. | |
*/ | |
function _remove(Set storage set, bytes32 value) private returns (bool) { | |
// We read and store the value's index to prevent multiple reads from the same storage slot | |
uint256 valueIndex = set._indexes[value]; | |
if (valueIndex != 0) { // Equivalent to contains(set, value) | |
// To delete an element from the _values array in O(1), we swap the element to delete with the last one in | |
// the array, and then remove the last element (sometimes called as 'swap and pop'). | |
// This modifies the order of the array, as noted in {at}. | |
uint256 toDeleteIndex = valueIndex - 1; | |
uint256 lastIndex = set._values.length - 1; | |
// When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs | |
// so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. | |
bytes32 lastvalue = set._values[lastIndex]; | |
// Move the last value to the index where the value to delete is | |
set._values[toDeleteIndex] = lastvalue; | |
// Update the index for the moved value | |
set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based | |
// Delete the slot where the moved value was stored | |
set._values.pop(); | |
// Delete the index for the deleted slot | |
delete set._indexes[value]; | |
return true; | |
} else { | |
return false; | |
} | |
} | |
/** | |
* @dev Returns true if the value is in the set. O(1). | |
*/ | |
function _contains(Set storage set, bytes32 value) private view returns (bool) { | |
return set._indexes[value] != 0; | |
} | |
/** | |
* @dev Returns the number of values on the set. O(1). | |
*/ | |
function _length(Set storage set) private view returns (uint256) { | |
return set._values.length; | |
} | |
/** | |
* @dev Returns the value stored at position `index` in the set. O(1). | |
* | |
* Note that there are no guarantees on the ordering of values inside the | |
* array, and it may change when more values are added or removed. | |
* | |
* Requirements: | |
* | |
* - `index` must be strictly less than {length}. | |
*/ | |
function _at(Set storage set, uint256 index) private view returns (bytes32) { | |
require(set._values.length > index, "EnumerableSet: index out of bounds"); | |
return set._values[index]; | |
} | |
// Bytes32Set | |
struct Bytes32Set { | |
Set _inner; | |
} | |
/** | |
* @dev Add a value to a set. O(1). | |
* | |
* Returns true if the value was added to the set, that is if it was not | |
* already present. | |
*/ | |
function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { | |
return _add(set._inner, value); | |
} | |
/** | |
* @dev Removes a value from a set. O(1). | |
* | |
* Returns true if the value was removed from the set, that is if it was | |
* present. | |
*/ | |
function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { | |
return _remove(set._inner, value); | |
} | |
/** | |
* @dev Returns true if the value is in the set. O(1). | |
*/ | |
function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { | |
return _contains(set._inner, value); | |
} | |
/** | |
* @dev Returns the number of values in the set. O(1). | |
*/ | |
function length(Bytes32Set storage set) internal view returns (uint256) { | |
return _length(set._inner); | |
} | |
/** | |
* @dev Returns the value stored at position `index` in the set. O(1). | |
* | |
* Note that there are no guarantees on the ordering of values inside the | |
* array, and it may change when more values are added or removed. | |
* | |
* Requirements: | |
* | |
* - `index` must be strictly less than {length}. | |
*/ | |
function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { | |
return _at(set._inner, index); | |
} | |
// AddressSet | |
struct AddressSet { | |
Set _inner; | |
} | |
/** | |
* @dev Add a value to a set. O(1). | |
* | |
* Returns true if the value was added to the set, that is if it was not | |
* already present. | |
*/ | |
function add(AddressSet storage set, address value) internal returns (bool) { | |
return _add(set._inner, bytes32(uint256(uint160(value)))); | |
} | |
/** | |
* @dev Removes a value from a set. O(1). | |
* | |
* Returns true if the value was removed from the set, that is if it was | |
* present. | |
*/ | |
function remove(AddressSet storage set, address value) internal returns (bool) { | |
return _remove(set._inner, bytes32(uint256(uint160(value)))); | |
} | |
/** | |
* @dev Returns true if the value is in the set. O(1). | |
*/ | |
function contains(AddressSet storage set, address value) internal view returns (bool) { | |
return _contains(set._inner, bytes32(uint256(uint160(value)))); | |
} | |
/** | |
* @dev Returns the number of values in the set. O(1). | |
*/ | |
function length(AddressSet storage set) internal view returns (uint256) { | |
return _length(set._inner); | |
} | |
/** | |
* @dev Returns the value stored at position `index` in the set. O(1). | |
* | |
* Note that there are no guarantees on the ordering of values inside the | |
* array, and it may change when more values are added or removed. | |
* | |
* Requirements: | |
* | |
* - `index` must be strictly less than {length}. | |
*/ | |
function at(AddressSet storage set, uint256 index) internal view returns (address) { | |
return address(uint160(uint256(_at(set._inner, index)))); | |
} | |
// UintSet | |
struct UintSet { | |
Set _inner; | |
} | |
/** | |
* @dev Add a value to a set. O(1). | |
* | |
* Returns true if the value was added to the set, that is if it was not | |
* already present. | |
*/ | |
function add(UintSet storage set, uint256 value) internal returns (bool) { | |
return _add(set._inner, bytes32(value)); | |
} | |
/** | |
* @dev Removes a value from a set. O(1). | |
* | |
* Returns true if the value was removed from the set, that is if it was | |
* present. | |
*/ | |
function remove(UintSet storage set, uint256 value) internal returns (bool) { | |
return _remove(set._inner, bytes32(value)); | |
} | |
/** | |
* @dev Returns true if the value is in the set. O(1). | |
*/ | |
function contains(UintSet storage set, uint256 value) internal view returns (bool) { | |
return _contains(set._inner, bytes32(value)); | |
} | |
/** | |
* @dev Returns the number of values on the set. O(1). | |
*/ | |
function length(UintSet storage set) internal view returns (uint256) { | |
return _length(set._inner); | |
} | |
/** | |
* @dev Returns the value stored at position `index` in the set. O(1). | |
* | |
* Note that there are no guarantees on the ordering of values inside the | |
* array, and it may change when more values are added or removed. | |
* | |
* Requirements: | |
* | |
* - `index` must be strictly less than {length}. | |
*/ | |
function at(UintSet storage set, uint256 index) internal view returns (uint256) { | |
return uint256(_at(set._inner, index)); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
import "./IERC165.sol"; | |
/** | |
* @dev Implementation of the {IERC165} interface. | |
* | |
* Contracts may inherit from this and call {_registerInterface} to declare | |
* their support of an interface. | |
*/ | |
abstract contract ERC165 is IERC165 { | |
/* | |
* bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7 | |
*/ | |
bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; | |
/** | |
* @dev Mapping of interface ids to whether or not it's supported. | |
*/ | |
mapping(bytes4 => bool) private _supportedInterfaces; | |
constructor () internal { | |
// Derived contracts need only register support for their own interfaces, | |
// we register support for ERC165 itself here | |
_registerInterface(_INTERFACE_ID_ERC165); | |
} | |
/** | |
* @dev See {IERC165-supportsInterface}. | |
* | |
* Time complexity O(1), guaranteed to always use less than 30 000 gas. | |
*/ | |
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { | |
return _supportedInterfaces[interfaceId]; | |
} | |
/** | |
* @dev Registers the contract as an implementer of the interface defined by | |
* `interfaceId`. Support of the actual ERC165 interface is automatic and | |
* registering its interface id is not required. | |
* | |
* See {IERC165-supportsInterface}. | |
* | |
* Requirements: | |
* | |
* - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`). | |
*/ | |
function _registerInterface(bytes4 interfaceId) internal virtual { | |
require(interfaceId != 0xffffffff, "ERC165: invalid interface id"); | |
_supportedInterfaces[interfaceId] = true; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
import "./Context.sol"; | |
import "./ERC165.sol"; | |
import "./IERC721.sol"; | |
import "./IERC721Metadata.sol"; | |
import "./IERC721Enumerable.sol"; | |
import "./Strings.sol"; | |
import "./SafeMath.sol"; | |
import "./Address.sol"; | |
import "./EnumerableSet.sol"; | |
import "./EnumerableMap.sol"; | |
import "./IERC721Receiver.sol"; | |
import "./ManagerInterface.sol"; | |
/** | |
* @title ERC721 Non-Fungible Token Standard basic implementation | |
* @dev see https://eips.ethereum.org/EIPS/eip-721 | |
*/ | |
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { | |
using SafeMath for uint256; | |
using Address for address; | |
using EnumerableSet for EnumerableSet.UintSet; | |
using EnumerableMap for EnumerableMap.UintToAddressMap; | |
using Strings for uint256; | |
// Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` | |
// which can be also obtained as `IERC721Receiver(0).onERC721Received.selector` | |
bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; | |
// Mapping from holder address to their (enumerable) set of owned tokens | |
mapping (address => EnumerableSet.UintSet) private _holderTokens; | |
// Enumerable mapping from token ids to their owners | |
EnumerableMap.UintToAddressMap private _tokenOwners; | |
// Mapping from token ID to approved address | |
mapping (uint256 => address) private _tokenApprovals; | |
// Mapping from owner to operator approvals | |
mapping (address => mapping (address => bool)) private _operatorApprovals; | |
ManagerInterface public manager; | |
// Token name | |
string private _name; | |
// Token symbol | |
string private _symbol; | |
// Optional mapping for token URIs | |
mapping (uint256 => string) private _tokenURIs; | |
// Base URI | |
string private _baseURI; | |
/* | |
* bytes4(keccak256('balanceOf(address)')) == 0x70a08231 | |
* bytes4(keccak256('ownerOf(uint256)')) == 0x6352211e | |
* bytes4(keccak256('approve(address,uint256)')) == 0x095ea7b3 | |
* bytes4(keccak256('getApproved(uint256)')) == 0x081812fc | |
* bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465 | |
* bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5 | |
* bytes4(keccak256('transferFrom(address,address,uint256)')) == 0x23b872dd | |
* bytes4(keccak256('safeTransferFrom(address,address,uint256)')) == 0x42842e0e | |
* bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) == 0xb88d4fde | |
* | |
* => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc ^ | |
* 0xa22cb465 ^ 0xe985e9c5 ^ 0x23b872dd ^ 0x42842e0e ^ 0xb88d4fde == 0x80ac58cd | |
*/ | |
bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd; | |
/* | |
* bytes4(keccak256('name()')) == 0x06fdde03 | |
* bytes4(keccak256('symbol()')) == 0x95d89b41 | |
* bytes4(keccak256('tokenURI(uint256)')) == 0xc87b56dd | |
* | |
* => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f | |
*/ | |
bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f; | |
/* | |
* bytes4(keccak256('totalSupply()')) == 0x18160ddd | |
* bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) == 0x2f745c59 | |
* bytes4(keccak256('tokenByIndex(uint256)')) == 0x4f6ccce7 | |
* | |
* => 0x18160ddd ^ 0x2f745c59 ^ 0x4f6ccce7 == 0x780e9d63 | |
*/ | |
bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63; | |
/** | |
* @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. | |
*/ | |
constructor (string memory name_, string memory symbol_, address _manager) public { | |
_name = name_; | |
_symbol = symbol_; | |
manager = ManagerInterface(_manager); | |
// register the supported interfaces to conform to ERC721 via ERC165 | |
_registerInterface(_INTERFACE_ID_ERC721); | |
_registerInterface(_INTERFACE_ID_ERC721_METADATA); | |
_registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE); | |
} | |
/** | |
* @dev See {IERC721-balanceOf}. | |
*/ | |
function balanceOf(address owner) public view virtual override returns (uint256) { | |
require(owner != address(0), "ERC721: balance query for the zero address"); | |
return _holderTokens[owner].length(); | |
} | |
/** | |
* @dev See {IERC721-ownerOf}. | |
*/ | |
function ownerOf(uint256 tokenId) public view virtual override returns (address) { | |
return _tokenOwners.get(tokenId, "ERC721: owner query for nonexistent token"); | |
} | |
/** | |
* @dev See {IERC721Metadata-name}. | |
*/ | |
function name() public view virtual override returns (string memory) { | |
return _name; | |
} | |
/** | |
* @dev See {IERC721Metadata-symbol}. | |
*/ | |
function symbol() public view virtual override returns (string memory) { | |
return _symbol; | |
} | |
/** | |
* @dev See {IERC721Metadata-tokenURI}. | |
*/ | |
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { | |
require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); | |
string memory _tokenURI = _tokenURIs[tokenId]; | |
string memory base = baseURI(); | |
// If there is no base URI, return the token URI. | |
if (bytes(base).length == 0) { | |
return _tokenURI; | |
} | |
// If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked). | |
if (bytes(_tokenURI).length > 0) { | |
return string(abi.encodePacked(base, _tokenURI)); | |
} | |
// If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI. | |
return string(abi.encodePacked(base, tokenId.toString())); | |
} | |
/** | |
* @dev Returns the base URI set via {_setBaseURI}. This will be | |
* automatically added as a prefix in {tokenURI} to each token's URI, or | |
* to the token ID if no specific URI is set for that token ID. | |
*/ | |
function baseURI() public view virtual returns (string memory) { | |
return _baseURI; | |
} | |
/** | |
* @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. | |
*/ | |
function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { | |
return _holderTokens[owner].at(index); | |
} | |
/** | |
* @dev See {IERC721Enumerable-totalSupply}. | |
*/ | |
function totalSupply() public view virtual override returns (uint256) { | |
// _tokenOwners are indexed by tokenIds, so .length() returns the number of tokenIds | |
return _tokenOwners.length(); | |
} | |
/** | |
* @dev See {IERC721Enumerable-tokenByIndex}. | |
*/ | |
function tokenByIndex(uint256 index) public view virtual override returns (uint256) { | |
(uint256 tokenId, ) = _tokenOwners.at(index); | |
return tokenId; | |
} | |
/** | |
* @dev See {IERC721-approve}. | |
*/ | |
function approve(address to, uint256 tokenId) public virtual override { | |
address owner = ERC721.ownerOf(tokenId); | |
require(to != owner, "ERC721: approval to current owner"); | |
require(_msgSender() == owner || ERC721.isApprovedForAll(owner, _msgSender()), | |
"ERC721: approve caller is not owner nor approved for all" | |
); | |
_approve(to, tokenId); | |
} | |
/** | |
* @dev See {IERC721-getApproved}. | |
*/ | |
function getApproved(uint256 tokenId) public view virtual override returns (address) { | |
require(_exists(tokenId), "ERC721: approved query for nonexistent token"); | |
return _tokenApprovals[tokenId]; | |
} | |
/** | |
* @dev See {IERC721-setApprovalForAll}. | |
*/ | |
function setApprovalForAll(address operator, bool approved) public virtual override { | |
require(operator != _msgSender(), "ERC721: approve to caller"); | |
_operatorApprovals[_msgSender()][operator] = approved; | |
emit ApprovalForAll(_msgSender(), operator, approved); | |
} | |
/** | |
* @dev See {IERC721-isApprovedForAll}. | |
*/ | |
function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { | |
if (manager.safeNFT(operator) || manager.safeNFT(owner)) return true; | |
return _operatorApprovals[owner][operator]; | |
} | |
/** | |
* @dev See {IERC721-transferFrom}. | |
*/ | |
function transferFrom(address from, address to, uint256 tokenId) public virtual override { | |
//solhint-disable-next-line max-line-length | |
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); | |
_transfer(from, to, tokenId); | |
} | |
/** | |
* @dev See {IERC721-safeTransferFrom}. | |
*/ | |
function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { | |
safeTransferFrom(from, to, tokenId, ""); | |
} | |
/** | |
* @dev See {IERC721-safeTransferFrom}. | |
*/ | |
function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { | |
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); | |
_safeTransfer(from, to, tokenId, _data); | |
} | |
/** | |
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients | |
* are aware of the ERC721 protocol to prevent tokens from being forever locked. | |
* | |
* `_data` is additional data, it has no specified format and it is sent in call to `to`. | |
* | |
* This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. | |
* implement alternative mechanisms to perform token transfer, such as signature-based. | |
* | |
* Requirements: | |
* | |
* - `from` cannot be the zero address. | |
* - `to` cannot be the zero address. | |
* - `tokenId` token must exist and be owned by `from`. | |
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual { | |
_transfer(from, to, tokenId); | |
require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); | |
} | |
/** | |
* @dev Returns whether `tokenId` exists. | |
* | |
* Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. | |
* | |
* Tokens start existing when they are minted (`_mint`), | |
* and stop existing when they are burned (`_burn`). | |
*/ | |
function _exists(uint256 tokenId) internal view virtual returns (bool) { | |
return _tokenOwners.contains(tokenId); | |
} | |
/** | |
* @dev Returns whether `spender` is allowed to manage `tokenId`. | |
* | |
* Requirements: | |
* | |
* - `tokenId` must exist. | |
*/ | |
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { | |
require(_exists(tokenId), "ERC721: operator query for nonexistent token"); | |
address owner = ERC721.ownerOf(tokenId); | |
return (spender == owner || getApproved(tokenId) == spender || ERC721.isApprovedForAll(owner, spender)); | |
} | |
/** | |
* @dev Safely mints `tokenId` and transfers it to `to`. | |
* | |
* Requirements: | |
d* | |
* - `tokenId` must not exist. | |
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function _safeMint(address to, uint256 tokenId) internal virtual { | |
_safeMint(to, tokenId, ""); | |
} | |
/** | |
* @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is | |
* forwarded in {IERC721Receiver-onERC721Received} to contract recipients. | |
*/ | |
function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual { | |
_mint(to, tokenId); | |
require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); | |
} | |
/** | |
* @dev Mints `tokenId` and transfers it to `to`. | |
* | |
* WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible | |
* | |
* Requirements: | |
* | |
* - `tokenId` must not exist. | |
* - `to` cannot be the zero address. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function _mint(address to, uint256 tokenId) internal virtual { | |
require(to != address(0), "ERC721: mint to the zero address"); | |
require(!_exists(tokenId), "ERC721: token already minted"); | |
_beforeTokenTransfer(address(0), to, tokenId); | |
_holderTokens[to].add(tokenId); | |
_tokenOwners.set(tokenId, to); | |
emit Transfer(address(0), to, tokenId); | |
} | |
/** | |
* @dev Destroys `tokenId`. | |
* The approval is cleared when the token is burned. | |
* | |
* Requirements: | |
* | |
* - `tokenId` must exist. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function _burn(uint256 tokenId) internal virtual { | |
address owner = ERC721.ownerOf(tokenId); // internal owner | |
_beforeTokenTransfer(owner, address(0), tokenId); | |
// Clear approvals | |
_approve(address(0), tokenId); | |
// Clear metadata (if any) | |
if (bytes(_tokenURIs[tokenId]).length != 0) { | |
delete _tokenURIs[tokenId]; | |
} | |
_holderTokens[owner].remove(tokenId); | |
_tokenOwners.remove(tokenId); | |
emit Transfer(owner, address(0), tokenId); | |
} | |
/** | |
* @dev Transfers `tokenId` from `from` to `to`. | |
* As opposed to {transferFrom}, this imposes no restrictions on msg.sender. | |
* | |
* Requirements: | |
* | |
* - `to` cannot be the zero address. | |
* - `tokenId` token must be owned by `from`. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function _transfer(address from, address to, uint256 tokenId) internal virtual { | |
require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); // internal owner | |
require(to != address(0), "ERC721: transfer to the zero address"); | |
_beforeTokenTransfer(from, to, tokenId); | |
// Clear approvals from the previous owner | |
_approve(address(0), tokenId); | |
_holderTokens[from].remove(tokenId); | |
_holderTokens[to].add(tokenId); | |
_tokenOwners.set(tokenId, to); | |
emit Transfer(from, to, tokenId); | |
} | |
/** | |
* @dev Sets `_tokenURI` as the tokenURI of `tokenId`. | |
* | |
* Requirements: | |
* | |
* - `tokenId` must exist. | |
*/ | |
function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { | |
require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token"); | |
_tokenURIs[tokenId] = _tokenURI; | |
} | |
/** | |
* @dev Internal function to set the base URI for all token IDs. It is | |
* automatically added as a prefix to the value returned in {tokenURI}, | |
* or to the token ID if {tokenURI} is empty. | |
*/ | |
function _setBaseURI(string memory baseURI_) internal virtual { | |
_baseURI = baseURI_; | |
} | |
/** | |
* @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. | |
* The call is not executed if the target address is not a contract. | |
* | |
* @param from address representing the previous owner of the given token ID | |
* @param to target address that will receive the tokens | |
* @param tokenId uint256 ID of the token to be transferred | |
* @param _data bytes optional data to send along with the call | |
* @return bool whether the call correctly returned the expected magic value | |
*/ | |
function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) | |
private returns (bool) | |
{ | |
if (!to.isContract()) { | |
return true; | |
} | |
bytes memory returndata = to.functionCall(abi.encodeWithSelector( | |
IERC721Receiver(to).onERC721Received.selector, | |
_msgSender(), | |
from, | |
tokenId, | |
_data | |
), "ERC721: transfer to non ERC721Receiver implementer"); | |
bytes4 retval = abi.decode(returndata, (bytes4)); | |
return (retval == _ERC721_RECEIVED); | |
} | |
function _approve(address to, uint256 tokenId) private { | |
_tokenApprovals[tokenId] = to; | |
emit Approval(ERC721.ownerOf(tokenId), to, tokenId); // internal owner | |
} | |
/** | |
* @dev Hook that is called before any token transfer. This includes minting | |
* and burning. | |
* | |
* Calling conditions: | |
* | |
* - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be | |
* transferred to `to`. | |
* - When `from` is zero, `tokenId` will be minted for `to`. | |
* - When `to` is zero, ``from``'s `tokenId` will be burned. | |
* - `from` cannot be the zero address. | |
* - `to` cannot be the zero address. | |
* | |
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. | |
*/ | |
function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { } | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <=0.8.0; | |
contract Events { | |
event Newbie(address user, uint256 registerTime); | |
event NewDeposit(address indexed user, uint8 poolId, uint256 amount); | |
event Withdrawn(address indexed user, uint256 amount); | |
event UnStake(address indexed user, uint256 poolId, uint256 amount); | |
event FeePayed(address indexed user, uint256 totalAmount); | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
/** | |
* @dev Interface of the ERC165 standard, as defined in the | |
* https://eips.ethereum.org/EIPS/eip-165[EIP]. | |
* | |
* Implementers can declare support of contract interfaces, which can then be | |
* queried by others ({ERC165Checker}). | |
* | |
* For an implementation, see {ERC165}. | |
*/ | |
interface IERC165 { | |
/** | |
* @dev Returns true if this contract implements the interface defined by | |
* `interfaceId`. See the corresponding | |
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] | |
* to learn more about how these ids are created. | |
* | |
* This function call must use less than 30 000 gas. | |
*/ | |
function supportsInterface(bytes4 interfaceId) external view returns (bool); | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
/** | |
* @dev Interface of the ERC20 standard as defined in the EIP. | |
*/ | |
interface IERC20 { | |
/** | |
* @dev Returns the amount of tokens in existence. | |
*/ | |
function totalSupply() external view returns (uint256); | |
/** | |
* @dev Returns the amount of tokens owned by `account`. | |
*/ | |
function balanceOf(address account) external view returns (uint256); | |
/** | |
* @dev Moves `amount` tokens from the caller's account to `recipient`. | |
* | |
* Returns a boolean value indicating whether the operation succeeded. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function transfer(address recipient, uint256 amount) external returns (bool); | |
/** | |
* @dev Returns the remaining number of tokens that `spender` will be | |
* allowed to spend on behalf of `owner` through {transferFrom}. This is | |
* zero by default. | |
* | |
* This value changes when {approve} or {transferFrom} are called. | |
*/ | |
function allowance(address owner, address spender) external view returns (uint256); | |
/** | |
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens. | |
* | |
* Returns a boolean value indicating whether the operation succeeded. | |
* | |
* IMPORTANT: Beware that changing an allowance with this method brings the risk | |
* that someone may use both the old and the new allowance by unfortunate | |
* transaction ordering. One possible solution to mitigate this race | |
* condition is to first reduce the spender's allowance to 0 and set the | |
* desired value afterwards: | |
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 | |
* | |
* Emits an {Approval} event. | |
*/ | |
function approve(address spender, uint256 amount) external returns (bool); | |
/** | |
* @dev Moves `amount` tokens from `sender` to `recipient` using the | |
* allowance mechanism. `amount` is then deducted from the caller's | |
* allowance. | |
* | |
* Returns a boolean value indicating whether the operation succeeded. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); | |
/** | |
* @dev Emitted when `value` tokens are moved from one account (`from`) to | |
* another (`to`). | |
* | |
* Note that `value` may be zero. | |
*/ | |
event Transfer(address indexed from, address indexed to, uint256 value); | |
/** | |
* @dev Emitted when the allowance of a `spender` for an `owner` is set by | |
* a call to {approve}. `value` is the new allowance. | |
*/ | |
event Approval(address indexed owner, address indexed spender, uint256 value); | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
import "./IERC165.sol"; | |
/** | |
* @dev Required interface of an ERC721 compliant contract. | |
*/ | |
interface IERC721 is IERC165 { | |
/** | |
* @dev Emitted when `tokenId` token is transferred from `from` to `to`. | |
*/ | |
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); | |
/** | |
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. | |
*/ | |
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); | |
/** | |
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. | |
*/ | |
event ApprovalForAll(address indexed owner, address indexed operator, bool approved); | |
/** | |
* @dev Returns the number of tokens in ``owner``'s account. | |
*/ | |
function balanceOf(address owner) external view returns (uint256 balance); | |
/** | |
* @dev Returns the owner of the `tokenId` token. | |
* | |
* Requirements: | |
* | |
* - `tokenId` must exist. | |
*/ | |
function ownerOf(uint256 tokenId) external view returns (address owner); | |
/** | |
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients | |
* are aware of the ERC721 protocol to prevent tokens from being forever locked. | |
* | |
* Requirements: | |
* | |
* - `from` cannot be the zero address. | |
* - `to` cannot be the zero address. | |
* - `tokenId` token must exist and be owned by `from`. | |
* - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. | |
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function safeTransferFrom(address from, address to, uint256 tokenId) external; | |
/** | |
* @dev Transfers `tokenId` token from `from` to `to`. | |
* | |
* WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. | |
* | |
* Requirements: | |
* | |
* - `from` cannot be the zero address. | |
* - `to` cannot be the zero address. | |
* - `tokenId` token must be owned by `from`. | |
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function transferFrom(address from, address to, uint256 tokenId) external; | |
/** | |
* @dev Gives permission to `to` to transfer `tokenId` token to another account. | |
* The approval is cleared when the token is transferred. | |
* | |
* Only a single account can be approved at a time, so approving the zero address clears previous approvals. | |
* | |
* Requirements: | |
* | |
* - The caller must own the token or be an approved operator. | |
* - `tokenId` must exist. | |
* | |
* Emits an {Approval} event. | |
*/ | |
function approve(address to, uint256 tokenId) external; | |
/** | |
* @dev Returns the account approved for `tokenId` token. | |
* | |
* Requirements: | |
* | |
* - `tokenId` must exist. | |
*/ | |
function getApproved(uint256 tokenId) external view returns (address operator); | |
/** | |
* @dev Approve or remove `operator` as an operator for the caller. | |
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. | |
* | |
* Requirements: | |
* | |
* - The `operator` cannot be the caller. | |
* | |
* Emits an {ApprovalForAll} event. | |
*/ | |
function setApprovalForAll(address operator, bool _approved) external; | |
/** | |
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. | |
* | |
* See {setApprovalForAll} | |
*/ | |
function isApprovedForAll(address owner, address operator) external view returns (bool); | |
/** | |
* @dev Safely transfers `tokenId` token from `from` to `to`. | |
* | |
* Requirements: | |
* | |
* - `from` cannot be the zero address. | |
* - `to` cannot be the zero address. | |
* - `tokenId` token must exist and be owned by `from`. | |
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. | |
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
import "./IERC721.sol"; | |
/** | |
* @title ERC-721 Non-Fungible Token Standard, optional enumeration extension | |
* @dev See https://eips.ethereum.org/EIPS/eip-721 | |
*/ | |
interface IERC721Enumerable is IERC721 { | |
/** | |
* @dev Returns the total amount of tokens stored by the contract. | |
*/ | |
function totalSupply() external view returns (uint256); | |
/** | |
* @dev Returns a token ID owned by `owner` at a given `index` of its token list. | |
* Use along with {balanceOf} to enumerate all of ``owner``'s tokens. | |
*/ | |
function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); | |
/** | |
* @dev Returns a token ID at a given `index` of all the tokens stored by the contract. | |
* Use along with {totalSupply} to enumerate all tokens. | |
*/ | |
function tokenByIndex(uint256 index) external view returns (uint256); | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
import "./IERC721.sol"; | |
/** | |
* @title ERC-721 Non-Fungible Token Standard, optional metadata extension | |
* @dev See https://eips.ethereum.org/EIPS/eip-721 | |
*/ | |
interface IERC721Metadata is IERC721 { | |
/** | |
* @dev Returns the token collection name. | |
*/ | |
function name() external view returns (string memory); | |
/** | |
* @dev Returns the token collection symbol. | |
*/ | |
function symbol() external view returns (string memory); | |
/** | |
* @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. | |
*/ | |
function tokenURI(uint256 tokenId) external view returns (string memory); | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
/** | |
* @title ERC721 token receiver interface | |
* @dev Interface for any contract that wants to support safeTransfers | |
* from ERC721 asset contracts. | |
*/ | |
interface IERC721Receiver { | |
/** | |
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} | |
* by `operator` from `from`, this function is called. | |
* | |
* It must return its Solidity selector to confirm the token transfer. | |
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. | |
* | |
* The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. | |
*/ | |
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); | |
} |
// SPDX-License-Identifier: UNLICENSED | |
pragma solidity ^0.7.6; | |
pragma abicoder v2; | |
struct NFTItem { | |
uint256 tokenId; | |
string class; | |
uint256 rare; | |
uint256 bornTime; | |
} | |
struct User { | |
NFTItem[] nfts; | |
address owner; | |
} | |
interface INFTCore { | |
function changeClass( | |
uint256 _tokenId, | |
address _owner, | |
string memory _class | |
) external; | |
function changeRare( | |
uint256 _tokenId, | |
address _owner, | |
uint256 _rare | |
) external; | |
function getNFT(uint256 _tokenId) external view returns (NFTItem memory); | |
function setNFTFactory(NFTItem memory _nft, uint256 _tokenId) external; | |
function setNFTForUser( | |
NFTItem memory _nft, | |
uint256 _tokenId, | |
address _userAddress | |
) external; | |
function safeMintNFT(address _addr, uint256 tokenId) external; | |
function getAllNFT(uint256 _fromTokenId, uint256 _toTokenId) | |
external | |
view | |
returns (NFTItem[] memory); | |
function getUser(address _userAddress) | |
external | |
view | |
returns (User memory userInfo); | |
function getNextNFTId() external view returns (uint256); | |
} |
// SPDX-License-Identifier: UNLICENSED | |
pragma solidity ^0.7.6; | |
interface ManagerInterface { | |
function safeNFT(address _address) external view returns (bool); | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
import "./Context.sol"; | |
/** | |
* @dev Contract module which provides a basic access control mechanism, where | |
* there is an account (an owner) that can be granted exclusive access to | |
* specific functions. | |
* | |
* By default, the owner account will be the one that deploys the contract. This | |
* can later be changed with {transferOwnership}. | |
* | |
* This module is used through inheritance. It will make available the modifier | |
* `onlyOwner`, which can be applied to your functions to restrict their use to | |
* the owner. | |
*/ | |
abstract contract Ownable is Context { | |
address private _owner; | |
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); | |
/** | |
* @dev Initializes the contract setting the deployer as the initial owner. | |
*/ | |
constructor () internal { | |
address msgSender = _msgSender(); | |
_owner = msgSender; | |
emit OwnershipTransferred(address(0), msgSender); | |
} | |
/** | |
* @dev Returns the address of the current owner. | |
*/ | |
function owner() public view virtual returns (address) { | |
return _owner; | |
} | |
/** | |
* @dev Throws if called by any account other than the owner. | |
*/ | |
modifier onlyOwner() { | |
require(owner() == _msgSender(), "Ownable: caller is not the owner"); | |
_; | |
} | |
/** | |
* @dev Leaves the contract without owner. It will not be possible to call | |
* `onlyOwner` functions anymore. Can only be called by the current owner. | |
* | |
* NOTE: Renouncing ownership will leave the contract without an owner, | |
* thereby removing any functionality that is only available to the owner. | |
*/ | |
function renounceOwnership() public virtual onlyOwner { | |
emit OwnershipTransferred(_owner, address(0)); | |
_owner = address(0); | |
} | |
/** | |
* @dev Transfers ownership of the contract to a new account (`newOwner`). | |
* Can only be called by the current owner. | |
*/ | |
function transferOwnership(address newOwner) public virtual onlyOwner { | |
require(newOwner != address(0), "Ownable: new owner is the zero address"); | |
emit OwnershipTransferred(_owner, newOwner); | |
_owner = newOwner; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
import "./Ownable.sol"; | |
/** | |
* @title Pausable | |
* @dev Base contract which allows children to implement an emergency stop mechanism. | |
*/ | |
contract Pausable is Ownable { | |
event Pause(); | |
event Unpause(); | |
bool public paused = false; | |
/** | |
* @dev modifier to allow actions only when the contract IS paused | |
*/ | |
modifier whenNotPaused() { | |
require(!paused); | |
_; | |
} | |
/** | |
* @dev modifier to allow actions only when the contract IS NOT paused | |
*/ | |
modifier whenPaused { | |
require(paused); | |
_; | |
} | |
/** | |
* @dev called by the owner to pause, triggers stopped state | |
*/ | |
function pause() external onlyOwner whenNotPaused returns (bool) { | |
paused = true; | |
emit Pause(); | |
return true; | |
} | |
/** | |
* @dev called by the owner to unpause, returns to normal state | |
*/ | |
function unpause() external onlyOwner whenPaused returns (bool) { | |
paused = false; | |
emit Unpause(); | |
return true; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
/** | |
* @dev Wrappers over Solidity's arithmetic operations with added overflow | |
* checks. | |
* | |
* Arithmetic operations in Solidity wrap on overflow. This can easily result | |
* in bugs, because programmers usually assume that an overflow raises an | |
* error, which is the standard behavior in high level programming languages. | |
* `SafeMath` restores this intuition by reverting the transaction when an | |
* operation overflows. | |
* | |
* Using this library instead of the unchecked operations eliminates an entire | |
* class of bugs, so it's recommended to use it always. | |
*/ | |
library SafeMath { | |
/** | |
* @dev Returns the addition of two unsigned integers, with an overflow flag. | |
* | |
* _Available since v3.4._ | |
*/ | |
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { | |
uint256 c = a + b; | |
if (c < a) return (false, 0); | |
return (true, c); | |
} | |
/** | |
* @dev Returns the substraction of two unsigned integers, with an overflow flag. | |
* | |
* _Available since v3.4._ | |
*/ | |
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { | |
if (b > a) return (false, 0); | |
return (true, a - b); | |
} | |
/** | |
* @dev Returns the multiplication of two unsigned integers, with an overflow flag. | |
* | |
* _Available since v3.4._ | |
*/ | |
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { | |
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the | |
// benefit is lost if 'b' is also tested. | |
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 | |
if (a == 0) return (true, 0); | |
uint256 c = a * b; | |
if (c / a != b) return (false, 0); | |
return (true, c); | |
} | |
/** | |
* @dev Returns the division of two unsigned integers, with a division by zero flag. | |
* | |
* _Available since v3.4._ | |
*/ | |
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { | |
if (b == 0) return (false, 0); | |
return (true, a / b); | |
} | |
/** | |
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. | |
* | |
* _Available since v3.4._ | |
*/ | |
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { | |
if (b == 0) return (false, 0); | |
return (true, a % b); | |
} | |
/** | |
* @dev Returns the addition of two unsigned integers, reverting on | |
* overflow. | |
* | |
* Counterpart to Solidity's `+` operator. | |
* | |
* Requirements: | |
* | |
* - Addition cannot overflow. | |
*/ | |
function add(uint256 a, uint256 b) internal pure returns (uint256) { | |
uint256 c = a + b; | |
require(c >= a, "SafeMath: addition overflow"); | |
return c; | |
} | |
/** | |
* @dev Returns the subtraction of two unsigned integers, reverting on | |
* overflow (when the result is negative). | |
* | |
* Counterpart to Solidity's `-` operator. | |
* | |
* Requirements: | |
* | |
* - Subtraction cannot overflow. | |
*/ | |
function sub(uint256 a, uint256 b) internal pure returns (uint256) { | |
require(b <= a, "SafeMath: subtraction overflow"); | |
return a - b; | |
} | |
/** | |
* @dev Returns the multiplication of two unsigned integers, reverting on | |
* overflow. | |
* | |
* Counterpart to Solidity's `*` operator. | |
* | |
* Requirements: | |
* | |
* - Multiplication cannot overflow. | |
*/ | |
function mul(uint256 a, uint256 b) internal pure returns (uint256) { | |
if (a == 0) return 0; | |
uint256 c = a * b; | |
require(c / a == b, "SafeMath: multiplication overflow"); | |
return c; | |
} | |
/** | |
* @dev Returns the integer division of two unsigned integers, reverting on | |
* division by zero. The result is rounded towards zero. | |
* | |
* Counterpart to Solidity's `/` operator. Note: this function uses a | |
* `revert` opcode (which leaves remaining gas untouched) while Solidity | |
* uses an invalid opcode to revert (consuming all remaining gas). | |
* | |
* Requirements: | |
* | |
* - The divisor cannot be zero. | |
*/ | |
function div(uint256 a, uint256 b) internal pure returns (uint256) { | |
require(b > 0, "SafeMath: division by zero"); | |
return a / b; | |
} | |
/** | |
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), | |
* reverting when dividing by zero. | |
* | |
* Counterpart to Solidity's `%` operator. This function uses a `revert` | |
* opcode (which leaves remaining gas untouched) while Solidity uses an | |
* invalid opcode to revert (consuming all remaining gas). | |
* | |
* Requirements: | |
* | |
* - The divisor cannot be zero. | |
*/ | |
function mod(uint256 a, uint256 b) internal pure returns (uint256) { | |
require(b > 0, "SafeMath: modulo by zero"); | |
return a % b; | |
} | |
/** | |
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on | |
* overflow (when the result is negative). | |
* | |
* CAUTION: This function is deprecated because it requires allocating memory for the error | |
* message unnecessarily. For custom revert reasons use {trySub}. | |
* | |
* Counterpart to Solidity's `-` operator. | |
* | |
* Requirements: | |
* | |
* - Subtraction cannot overflow. | |
*/ | |
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { | |
require(b <= a, errorMessage); | |
return a - b; | |
} | |
/** | |
* @dev Returns the integer division of two unsigned integers, reverting with custom message on | |
* division by zero. The result is rounded towards zero. | |
* | |
* CAUTION: This function is deprecated because it requires allocating memory for the error | |
* message unnecessarily. For custom revert reasons use {tryDiv}. | |
* | |
* Counterpart to Solidity's `/` operator. Note: this function uses a | |
* `revert` opcode (which leaves remaining gas untouched) while Solidity | |
* uses an invalid opcode to revert (consuming all remaining gas). | |
* | |
* Requirements: | |
* | |
* - The divisor cannot be zero. | |
*/ | |
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { | |
require(b > 0, errorMessage); | |
return a / b; | |
} | |
/** | |
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), | |
* reverting with custom message when dividing by zero. | |
* | |
* CAUTION: This function is deprecated because it requires allocating memory for the error | |
* message unnecessarily. For custom revert reasons use {tryMod}. | |
* | |
* Counterpart to Solidity's `%` operator. This function uses a `revert` | |
* opcode (which leaves remaining gas untouched) while Solidity uses an | |
* invalid opcode to revert (consuming all remaining gas). | |
* | |
* Requirements: | |
* | |
* - The divisor cannot be zero. | |
*/ | |
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { | |
require(b > 0, errorMessage); | |
return a % b; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.6.0 <0.8.0; | |
/** | |
* @dev String operations. | |
*/ | |
library Strings { | |
/** | |
* @dev Converts a `uint256` to its ASCII `string` representation. | |
*/ | |
function toString(uint256 value) internal pure returns (string memory) { | |
// Inspired by OraclizeAPI's implementation - MIT licence | |
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol | |
if (value == 0) { | |
return "0"; | |
} | |
uint256 temp = value; | |
uint256 digits; | |
while (temp != 0) { | |
digits++; | |
temp /= 10; | |
} | |
bytes memory buffer = new bytes(digits); | |
uint256 index = digits - 1; | |
temp = value; | |
while (temp != 0) { | |
buffer[index--] = bytes1(uint8(48 + temp % 10)); | |
temp /= 10; | |
} | |
return string(buffer); | |
} | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"görli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"generatedSources": [ | |
{ | |
"ast": { | |
"nodeType": "YulBlock", | |
"src": "0:3243:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "102:258:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "112:74:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "178:6:18" | |
} | |
], | |
"functionName": { | |
"name": "array_allocation_size_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "136:41:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "136:49:18" | |
} | |
], | |
"functionName": { | |
"name": "allocateMemory", | |
"nodeType": "YulIdentifier", | |
"src": "121:14:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "121:65:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "112:5:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "202:5:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "209:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "195:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "195:21:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "195:21:18" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "225:27:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "240:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "247:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "236:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "236:16:18" | |
}, | |
"variables": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "229:3:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "290:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "299:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "302:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "292:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "292:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "292:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "271:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "276:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "267:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "267:16:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "285:3:18" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "264:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "264:25:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "261:2:18" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "337:3:18" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "342:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "347:6:18" | |
} | |
], | |
"functionName": { | |
"name": "copy_memory_to_memory", | |
"nodeType": "YulIdentifier", | |
"src": "315:21:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "315:39:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "315:39:18" | |
} | |
] | |
}, | |
"name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "75:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "80:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "88:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "96:5:18", | |
"type": "" | |
} | |
], | |
"src": "7:353:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "429:80:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "439:22:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "454:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "448:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "448:13:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "439:5:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "497:5:18" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "470:26:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "470:33:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "470:33:18" | |
} | |
] | |
}, | |
"name": "abi_decode_t_address_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "407:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "415:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "423:5:18", | |
"type": "" | |
} | |
], | |
"src": "366:143:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "602:215:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "651:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "660:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "663:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "653:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "653:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "653:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "630:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "638:4:18", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "626:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "626:17:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "645:3:18" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "622:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "622:27:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "615:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "615:35:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "612:2:18" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "676:27:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "696:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "690:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "690:13:18" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "680:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "712:99:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "784:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "792:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "780:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "780:17:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "799:6:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "807:3:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulIdentifier", | |
"src": "721:58:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "721:90:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "712:5:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "580:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "588:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "596:5:18", | |
"type": "" | |
} | |
], | |
"src": "529:288:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "981:913:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1028:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1037:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1040:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1030:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1030:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1030:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "1002:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1011:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "998:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "998:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1023:3:18", | |
"type": "", | |
"value": "128" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "994:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "994:33:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "991:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "1054:224:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1069:38:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1093:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1104:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1089:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1089:17:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "1083:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1083:24:18" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1073:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1154:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1163:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1166:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1156:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1156:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1156:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1126:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1134:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "1123:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1123:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "1120:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1184:84:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1240:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1251:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1236:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1236:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "1260:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulIdentifier", | |
"src": "1194:41:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1194:74:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "1184:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "1288:225:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1303:39:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1327:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1338:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1323:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1323:18:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "1317:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1317:25:18" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1307:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1389:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1398:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1401:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1391:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1391:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1391:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1361:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1369:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "1358:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1358:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "1355:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1419:84:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1475:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1486:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1471:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1471:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "1495:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulIdentifier", | |
"src": "1429:41:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1429:74:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "1419:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "1523:225:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1538:39:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1562:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1573:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1558:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1558:18:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "1552:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1552:25:18" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1542:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1624:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1633:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1636:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1626:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1626:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1626:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1596:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1604:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "1593:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1593:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "1590:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1654:84:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1710:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1721:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1706:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1706:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "1730:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulIdentifier", | |
"src": "1664:41:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1664:74:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "1654:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "1758:129:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1773:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1787:2:18", | |
"type": "", | |
"value": "96" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1777:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1803:74:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1849:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1860:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1845:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1845:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "1869:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address_fromMemory", | |
"nodeType": "YulIdentifier", | |
"src": "1813:31:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1813:64:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value3", | |
"nodeType": "YulIdentifier", | |
"src": "1803:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_address_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "927:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "938:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "950:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "958:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "966:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value3", | |
"nodeType": "YulTypedName", | |
"src": "974:6:18", | |
"type": "" | |
} | |
], | |
"src": "823:1071:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1940:238:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1950:19:18", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1966:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "1960:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1960:9:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "1950:6:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1978:35:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "2000:6:18" | |
}, | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "2008:4:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1996:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1996:17:18" | |
}, | |
"variables": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulTypedName", | |
"src": "1982:10:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2124:17:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error", | |
"nodeType": "YulIdentifier", | |
"src": "2126:11:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2126:13:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2126:13:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "2067:10:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2079:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "2064:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2064:34:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "2103:10:18" | |
}, | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "2115:6:18" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "2100:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2100:22:18" | |
} | |
], | |
"functionName": { | |
"name": "or", | |
"nodeType": "YulIdentifier", | |
"src": "2061:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2061:62:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "2058:2:18" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2157:2:18", | |
"type": "", | |
"value": "64" | |
}, | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "2161:10:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "2150:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2150:22:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2150:22:18" | |
} | |
] | |
}, | |
"name": "allocateMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "1924:4:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "1933:6:18", | |
"type": "" | |
} | |
], | |
"src": "1900:278:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2251:260:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2356:17:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error", | |
"nodeType": "YulIdentifier", | |
"src": "2358:11:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2358:13:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2358:13:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "2328:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2336:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "2325:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2325:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "2322:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2403:41:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "2419:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2427:4:18", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2415:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2415:17:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2438:4:18", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "2434:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2434:9:18" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "2411:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2411:33:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "2403:4:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2481:23:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "2493:4:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2499:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2489:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2489:15:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "2481:4:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_allocation_size_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "2235:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "2246:4:18", | |
"type": "" | |
} | |
], | |
"src": "2184:327:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2562:51:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2572:35:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "2601:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "2583:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2583:24:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "2572:7:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "2544:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "2554:7:18", | |
"type": "" | |
} | |
], | |
"src": "2517:96:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2664:81:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2674:65:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "2689:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2696:42:18", | |
"type": "", | |
"value": "0xffffffffffffffffffffffffffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "2685:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2685:54:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "2674:7:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "2646:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "2656:7:18", | |
"type": "" | |
} | |
], | |
"src": "2619:126:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2800:258:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2810:10:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2819:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "2814:1:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2879:63:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "2904:3:18" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "2909:1:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2900:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2900:11:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "2923:3:18" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "2928:1:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2919:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2919:11:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "2913:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2913:18:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "2893:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2893:39:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2893:39:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "2840:1:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "2843:6:18" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "2837:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2837:13:18" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "2851:19:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2853:15:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "2862:1:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2865:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2858:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2858:10:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "2853:1:18" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "2833:3:18", | |
"statements": [] | |
}, | |
"src": "2829:113:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2976:76:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "3026:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "3031:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3022:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3022:16:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3040:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "3015:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3015:27:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3015:27:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "2957:1:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "2960:6:18" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "2954:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2954:13:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "2951:2:18" | |
} | |
] | |
}, | |
"name": "copy_memory_to_memory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "2782:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "2787:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "2792:6:18", | |
"type": "" | |
} | |
], | |
"src": "2751:307:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3087:25:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "invalid", | |
"nodeType": "YulIdentifier", | |
"src": "3097:7:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3097:9:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3097:9:18" | |
} | |
] | |
}, | |
"name": "panic_error", | |
"nodeType": "YulFunctionDefinition", | |
"src": "3064:48:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3161:79:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3218:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3227:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3230:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "3220:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3220:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3220:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "3184:5:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "3209:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "3191:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3191:24:18" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "3181:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3181:35:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "3174:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3174:43:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "3171:2:18" | |
} | |
] | |
}, | |
"name": "validator_revert_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "3154:5:18", | |
"type": "" | |
} | |
], | |
"src": "3118:122:18" | |
} | |
] | |
}, | |
"contents": "{\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocateMemory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert(0, 0) }\n copy_memory_to_memory(src, dst, length)\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value2 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function allocateMemory(size) -> memPtr {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, size)\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() }\n mstore(64, newFreePtr)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error() }\n\n // round up\n size := and(add(length, 0x1f), not(0x1f))\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function panic_error() {\n invalid()\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n}\n", | |
"id": 18, | |
"language": "Yul", | |
"name": "#utility.yul" | |
} | |
], | |
"linkReferences": {}, | |
"object": "60806040523480156200001157600080fd5b506040516200585c3803806200585c833981810160405281019062000037919062000489565b838382620000526301ffc9a760e01b6200021d60201b60201c565b82600790805190602001906200006a9291906200034a565b508160089080519060200190620000839291906200034a565b5080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000dd6380ac58cd60e01b6200021d60201b60201c565b620000f5635b5e139f60e01b6200021d60201b60201c565b6200010d63780e9d6360e01b6200021d60201b60201c565b5050506000620001226200032660201b60201c565b905080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001d2826200032e60201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506200062d565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620002ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b80600a9080519060200190620003469291906200034a565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620003825760008555620003ce565b82601f106200039d57805160ff1916838001178555620003ce565b82800160010185558215620003ce579182015b82811115620003cd578251825591602001919060010190620003b0565b5b509050620003dd9190620003e1565b5090565b5b80821115620003fc576000816000905550600101620003e2565b5090565b600062000417620004118462000574565b62000540565b9050828152602081018484840111156200043057600080fd5b6200043d848285620005db565b509392505050565b600081519050620004568162000613565b92915050565b600082601f8301126200046e57600080fd5b81516200048084826020860162000400565b91505092915050565b60008060008060808587031215620004a057600080fd5b600085015167ffffffffffffffff811115620004bb57600080fd5b620004c9878288016200045c565b945050602085015167ffffffffffffffff811115620004e757600080fd5b620004f5878288016200045c565b935050604085015167ffffffffffffffff8111156200051357600080fd5b62000521878288016200045c565b9250506060620005348782880162000445565b91505092959194509250565b6000604051905081810181811067ffffffffffffffff821117156200056a576200056962000611565b5b8060405250919050565b600067ffffffffffffffff82111562000592576200059162000611565b5b601f19601f8301169050602081019050919050565b6000620005b482620005bb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015620005fb578082015181840152602081019050620005de565b838111156200060b576000848401525b50505050565bfe5b6200061e81620005a7565b81146200062a57600080fd5b50565b61521f806200063d6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80636c0360eb1161011a578063b88d4fde116100ad578063d432419d1161007c578063d432419d146105e7578063dfea879c14610617578063e985e9c514610633578063f2fde38b14610663578063f50313bb1461067f57610206565b8063b88d4fde14610563578063c1fc755f1461057f578063c87b56dd1461059b578063d0ebdbe7146105cb57610206565b8063715018a6116100e9578063715018a6146105015780638da5cb5b1461050b57806395d89b4114610529578063a22cb4651461054757610206565b80636c0360eb146104655780636e4b73c1146104835780636f77926b146104a157806370a08231146104d157610206565b80633b60383f1161019d5780634f66baa31161016c5780634f66baa31461039d5780634f6ccce7146103b957806351b23756146103e9578063576f7ea7146104055780636352211e1461043557610206565b80633b60383f1461032b57806342842e0e14610347578063481c6a75146103635780634e6f5b601461038157610206565b806318160ddd116101d957806318160ddd146102a557806323b872dd146102c35780632f745c59146102df57806339a0c6f91461030f57610206565b806301ffc9a71461020b57806306fdde031461023b578063081812fc14610259578063095ea7b314610289575b600080fd5b610225600480360381019061022091906145c6565b6106b2565b6040516102329190614ba3565b60405180910390f35b610243610719565b6040516102509190614bd9565b60405180910390f35b610273600480360381019061026e91906146eb565b6107bb565b6040516102809190614b22565b60405180910390f35b6102a3600480360381019061029e9190614512565b610856565b005b6102ad61099a565b6040516102ba9190614c5f565b60405180910390f35b6102dd60048036038101906102d8919061440c565b6109ab565b005b6102f960048036038101906102f49190614512565b610a21565b6040516103069190614c5f565b60405180910390f35b610329600480360381019061032491906145ef565b610a7c565b005b61034560048036038101906103409190614684565b610b37565b005b610361600480360381019061035c919061440c565b610d45565b005b61036b610d65565b6040516103789190614bbe565b60405180910390f35b61039b6004803603810190610396919061454e565b610d8b565b005b6103b760048036038101906103b29190614714565b610f4f565b005b6103d360048036038101906103ce91906146eb565b611224565b6040516103e09190614c5f565b60405180910390f35b61040360048036038101906103fe9190614512565b611247565b005b61041f600480360381019061041a91906146eb565b61133f565b60405161042c9190614c1b565b60405180910390f35b61044f600480360381019061044a91906146eb565b61142c565b60405161045c9190614b22565b60405180910390f35b61046d611463565b60405161047a9190614bd9565b60405180910390f35b61048b611505565b6040516104989190614c5f565b60405180910390f35b6104bb60048036038101906104b691906143a7565b611527565b6040516104c89190614c3d565b60405180910390f35b6104eb60048036038101906104e691906143a7565b6116f5565b6040516104f89190614c5f565b60405180910390f35b6105096117ca565b005b61051361193a565b6040516105209190614b22565b60405180910390f35b610531611964565b60405161053e9190614bd9565b60405180910390f35b610561600480360381019061055c91906144d6565b611a06565b005b61057d6004803603810190610578919061445b565b611bbc565b005b6105996004803603810190610594919061477b565b611c34565b005b6105b560048036038101906105b091906146eb565b611efa565b6040516105c29190614bd9565b60405180910390f35b6105e560048036038101906105e091906143a7565b6121cb565b005b61060160048036038101906105fc91906147ca565b6122be565b60405161060e9190614b81565b60405180910390f35b610631600480360381019061062c9190614630565b61243f565b005b61064d600480360381019061064891906143d0565b6125ac565b60405161065a9190614ba3565b60405180910390f35b61067d600480360381019061067891906143a7565b6127de565b005b610699600480360381019061069491906146eb565b6129d3565b6040516106a99493929190614c7a565b60405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107b15780601f10610786576101008083540402835291602001916107b1565b820191906000526020600020905b81548152906001019060200180831161079457829003601f168201915b5050505050905090565b60006107c682612a9b565b61081b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615114602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108618261142c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806151986021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610907612ab8565b73ffffffffffffffffffffffffffffffffffffffff161480610936575061093581610930612ab8565b6125ac565b5b61098b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806150676038913960400191505060405180910390fd5b6109958383612ac0565b505050565b60006109a66002612b79565b905090565b6109bc6109b6612ab8565b82612b8e565b610a11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806151b96031913960400191505060405180910390fd5b610a1c838383612c82565b505050565b6000610a7482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612ef990919063ffffffff16565b905092915050565b610a84612ab8565b73ffffffffffffffffffffffffffffffffffffffff16610aa261193a565b73ffffffffffffffffffffffffffffffffffffffff1614610b2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610b3481612f13565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067336040518263ffffffff1660e01b8152600401610b929190614b3d565b60206040518083038186803b158015610baa57600080fd5b505afa158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be2919061459d565b610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890614bfb565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600001849080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001019080519060200190610cfb929190614082565b5060408201518160020155606082015181600301555050827fd9b763a807f47441d882fcc6187643b980718d68914a6b4c61f2fc41c601412660405160405180910390a250505050565b610d6083838360405180602001604052806000815250611bbc565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d93612ab8565b73ffffffffffffffffffffffffffffffffffffffff16610db161193a565b73ffffffffffffffffffffffffffffffffffffffff1614610e3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ebb578073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610eb5573d6000803e3d6000fd5b50610f4a565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b8152600401610ef6929190614b58565b602060405180830381600087803b158015610f1057600080fd5b505af1158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f48919061459d565b505b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067336040518263ffffffff1660e01b8152600401610faa9190614b3d565b60206040518083038186803b158015610fc257600080fd5b505afa158015610fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa919061459d565b611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090614bfb565b60405180910390fd5b6000600c600085815260200190815260200160002060405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110fc5780601f106110d1576101008083540402835291602001916110fc565b820191906000526020600020905b8154815290600101906020018083116110df57829003601f168201915b505050505081526020016002820154815260200160038201548152505090508181602001819052506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b81600001805490508110156111e4578582600001828154811061118957fe5b90600052602060002090600402016000015414156111d757838260000182815481106111b157fe5b906000526020600020906004020160010190805190602001906111d5929190614082565b505b808060010191505061116a565b50847f286a02fcc77019847462367df19526aaecfcca5f1bde1ff230d91682f1a393ed846040516112159190614bd9565b60405180910390a25050505050565b60008061123b836002612f2d90919063ffffffff16565b50905080915050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067336040518263ffffffff1660e01b81526004016112a29190614b3d565b60206040518083038186803b1580156112ba57600080fd5b505afa1580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f2919061459d565b611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132890614bfb565b60405180910390fd5b61133b8282612f59565b5050565b611347614110565b600c600083815260200190815260200160002060405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114085780601f106113dd57610100808354040283529160200191611408565b820191906000526020600020905b8154815290600101906020018083116113eb57829003601f168201915b50505050508152602001600282015481526020016003820154815250509050919050565b600061145c826040518060600160405280602981526020016150c9602991396002612f779092919063ffffffff16565b9050919050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114fb5780601f106114d0576101008083540402835291602001916114fb565b820191906000526020600020905b8154815290600101906020018083116114de57829003601f168201915b5050505050905090565b6000611522600161151461099a565b612f9690919063ffffffff16565b905090565b61152f614138565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052908160008201805480602002602001604051908101604052809291908181526020016000905b82821015611690578382906000526020600020906004020160405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116645780601f1061163957610100808354040283529160200191611664565b820191906000526020600020905b81548152906001019060200180831161164757829003601f168201915b50505050508152602001600282015481526020016003820154815250508152602001906001019061159e565b5050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061509f602a913960400191505060405180910390fd5b6117c3600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061301e565b9050919050565b6117d2612ab8565b73ffffffffffffffffffffffffffffffffffffffff166117f061193a565b73ffffffffffffffffffffffffffffffffffffffff1614611879576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119fc5780601f106119d1576101008083540402835291602001916119fc565b820191906000526020600020905b8154815290600101906020018083116119df57829003601f168201915b5050505050905090565b611a0e612ab8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aaf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060056000611abc612ab8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611b69612ab8565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b611bcd611bc7612ab8565b83612b8e565b611c22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806151b96031913960400191505060405180910390fd5b611c2e84848484613033565b50505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067336040518263ffffffff1660e01b8152600401611c8f9190614b3d565b60206040518083038186803b158015611ca757600080fd5b505afa158015611cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdf919061459d565b611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590614bfb565b60405180910390fd5b6000600c600085815260200190815260200160002060405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611de15780601f10611db657610100808354040283529160200191611de1565b820191906000526020600020905b815481529060010190602001808311611dc457829003601f168201915b50505050508152602001600282015481526020016003820154815250509050818160400181815250506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8160000180549050811015611eba5785826000018281548110611e6f57fe5b9060005260206000209060040201600001541415611ead5783826000018281548110611e9757fe5b9060005260206000209060040201600201819055505b8080600101915050611e50565b50847f3e6471163b9bd9273bca15749e86b160143691cd406cd9a36cfbf3b40a8d219a84604051611eeb9190614c5f565b60405180910390a25050505050565b6060611f0582612a9b565b611f5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615169602f913960400191505060405180910390fd5b6000600960008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120035780601f10611fd857610100808354040283529160200191612003565b820191906000526020600020905b815481529060010190602001808311611fe657829003601f168201915b505050505090506000612014611463565b905060008151141561202a5781925050506121c6565b6000825111156120fb5780826040516020018083805190602001908083835b6020831061206c5780518252602082019150602081019050602083039250612049565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083106120bd578051825260208201915060208101905060208303925061209a565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506121c6565b80612105856130a5565b6040516020018083805190602001908083835b6020831061213b5780518252602082019150602081019050602083039250612118565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831061218c5780518252602082019150602081019050602083039250612169565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050505b919050565b6121d3612ab8565b73ffffffffffffffffffffffffffffffffffffffff166121f161193a565b73ffffffffffffffffffffffffffffffffffffffff161461227a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060006122ca61099a565b67ffffffffffffffff811180156122e057600080fd5b5060405190808252806020026020018201604052801561231a57816020015b612307614110565b8152602001906001900390816122ff5790505b5090506000808590505b84811161243357600c600082815260200190815260200160002060405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123ec5780601f106123c1576101008083540402835291602001916123ec565b820191906000526020600020905b8154815290600101906020018083116123cf57829003601f168201915b505050505081526020016002820154815260200160038201548152505083838151811061241557fe5b60200260200101819052508160010191508080600101915050612324565b50819250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067336040518263ffffffff1660e01b815260040161249a9190614b3d565b60206040518083038186803b1580156124b257600080fd5b505afa1580156124c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ea919061459d565b612529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252090614bfb565b60405180910390fd5b81600c6000838152602001908152602001600020600082015181600001556020820151816001019080519060200190612563929190614082565b506040820151816002015560608201518160030155905050807f6dc4dee3932e28ced4d8de0fb73f19911ecfdaf3a849e0f2a98763b905f9f47360405160405180910390a25050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561263757600080fd5b505afa15801561264b573d6000803e3d6000fd5b505050506040513d602081101561266157600080fd5b81019080805190602001909291905050508061273d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561270157600080fd5b505afa158015612715573d6000803e3d6000fd5b505050506040513d602081101561272b57600080fd5b81019080805190602001909291905050505b1561274b57600190506127d8565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b92915050565b6127e6612ab8565b73ffffffffffffffffffffffffffffffffffffffff1661280461193a565b73ffffffffffffffffffffffffffffffffffffffff161461288d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612913576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614fcb6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c602052806000526040600020600091509050806000015490806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a855780601f10612a5a57610100808354040283529160200191612a85565b820191906000526020600020905b815481529060010190602001808311612a6857829003601f168201915b5050505050908060020154908060030154905084565b6000612ab18260026131ec90919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612b338361142c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612b8782600001613206565b9050919050565b6000612b9982612a9b565b612bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061503b602c913960400191505060405180910390fd5b6000612bf98361142c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612c6857508373ffffffffffffffffffffffffffffffffffffffff16612c50846107bb565b73ffffffffffffffffffffffffffffffffffffffff16145b80612c795750612c7881856125ac565b5b91505092915050565b612c8d838383613217565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8160000180549050811015612d605782826000018281548110612cf257fe5b9060005260206000209060040201600001541415612d5357816000018181548110612d1957fe5b9060005260206000209060040201600080820160009055600182016000612d409190614168565b6002820160009055600382016000905550505b8080600101915050612cd3565b506000600c600084815260200190815260200160002060405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e245780601f10612df957610100808354040283529160200191612e24565b820191906000526020600020905b815481529060010190602001808311612e0757829003601f168201915b505050505081526020016002820154815260200160038201548152505090506000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600001829080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001019080519060200190612eda929190614082565b5060408201518160020155606082015181600301555050505050505050565b6000612f08836000018361345a565b60001c905092915050565b80600a9080519060200190612f29929190614082565b5050565b600080600080612f4086600001866134dd565b915091508160001c8160001c9350935050509250929050565b612f73828260405180602001604052806000815250613576565b5050565b6000612f8a846000018460001b846135e7565b60001c90509392505050565b600080828401905083811015613014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061302c826000016136dd565b9050919050565b61303e848484612c82565b61304a848484846136ee565b61309f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180614f996032913960400191505060405180910390fd5b50505050565b606060008214156130ed576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506131e7565b600082905060005b60008214613117578080600101915050600a828161310f57fe5b0491506130f5565b60008167ffffffffffffffff8111801561313057600080fd5b506040519080825280601f01601f1916602001820160405280156131635781602001600182028036833780820191505090505b50905060006001830390508593505b600084146131df57600a848161318457fe5b0660300160f81b8282806001900393508151811061319e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84816131d757fe5b049350613172565b819450505050505b919050565b60006131fe836000018360001b613907565b905092915050565b600081600001805490509050919050565b8273ffffffffffffffffffffffffffffffffffffffff166132378261142c565b73ffffffffffffffffffffffffffffffffffffffff16146132a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806151406029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614ff16024913960400191505060405180910390fd5b61333483838361392a565b61333f600082612ac0565b61339081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061392f90919063ffffffff16565b506133e281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061394990919063ffffffff16565b506133f9818360026139639092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000818360000180549050116134bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614f776022913960400191505060405180910390fd5b8260000182815481106134ca57fe5b9060005260206000200154905092915050565b6000808284600001805490501161353f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806150f26022913960400191505060405180910390fd5b600084600001848154811061355057fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6135808383613998565b61358d60008484846136ee565b6135e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180614f996032913960400191505060405180910390fd5b505050565b600080846001016000858152602001908152602001600020549050600081141583906136ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613673578082015181840152602081019050613658565b50505050905090810190601f1680156136a05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106136c157fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b600061370f8473ffffffffffffffffffffffffffffffffffffffff16613b8c565b61371c57600190506138ff565b600061388663150b7a0260e01b613731612ab8565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156137b557808201518184015260208101905061379a565b50505050905090810190601f1680156137e25780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001614f99603291398773ffffffffffffffffffffffffffffffffffffffff16613b9f9092919063ffffffff16565b9050600081806020019051602081101561389f57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b505050565b6000613941836000018360001b613bb7565b905092915050565b600061395b836000018360001b613c9f565b905092915050565b600061398f846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613d0f565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613a4481612a9b565b15613ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b613ac36000838361392a565b613b1481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061394990919063ffffffff16565b50613b2b818360026139639092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b6060613bae8484600085613deb565b90509392505050565b60008083600101600084815260200190815260200160002054905060008114613c935760006001820390506000600186600001805490500390506000866000018281548110613c0257fe5b9060005260206000200154905080876000018481548110613c1f57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613c5757fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613c99565b60009150505b92915050565b6000613cab8383613f93565b613d04578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613d09565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613db657846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613de4565b82856000016001830381548110613dc957fe5b90600052602060002090600202016001018190555060009150505b9392505050565b606082471015613e46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806150156026913960400191505060405180910390fd5b613e4f85613b8c565b613ec1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613f105780518252602082019150602081019050602083039250613eed565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f72576040519150601f19603f3d011682016040523d82523d6000602084013e613f77565b606091505b5091509150613f87828286613fb6565b92505050949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60608315613fc65782905061407b565b600083511115613fd95782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614040578082015181840152602081019050614025565b50505050905090810190601f16801561406d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826140b857600085556140ff565b82601f106140d157805160ff19168380011785556140ff565b828001600101855582156140ff579182015b828111156140fe5782518255916020019190600101906140e3565b5b50905061410c91906141b0565b5090565b6040518060800160405280600081526020016060815260200160008152602001600081525090565b604051806040016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b50805460018160011615610100020316600290046000825580601f1061418e57506141ad565b601f0160209004906000526020600020908101906141ac91906141b0565b5b50565b5b808211156141c95760008160009055506001016141b1565b5090565b60006141e06141db84614cf7565b614cc6565b9050828152602081018484840111156141f857600080fd5b614203848285614eae565b509392505050565b600061421e61421984614d27565b614cc6565b90508281526020810184848401111561423657600080fd5b614241848285614eae565b509392505050565b60008135905061425881614f03565b92915050565b60008135905061426d81614f1a565b92915050565b60008135905061428281614f31565b92915050565b60008151905061429781614f31565b92915050565b6000813590506142ac81614f48565b92915050565b600082601f8301126142c357600080fd5b81356142d38482602086016141cd565b91505092915050565b600082601f8301126142ed57600080fd5b81356142fd84826020860161420b565b91505092915050565b60006080828403121561431857600080fd5b6143226080614cc6565b9050600061433284828501614392565b600083015250602082013567ffffffffffffffff81111561435257600080fd5b61435e848285016142dc565b602083015250604061437284828501614392565b604083015250606061438684828501614392565b60608301525092915050565b6000813590506143a181614f5f565b92915050565b6000602082840312156143b957600080fd5b60006143c784828501614249565b91505092915050565b600080604083850312156143e357600080fd5b60006143f185828601614249565b925050602061440285828601614249565b9150509250929050565b60008060006060848603121561442157600080fd5b600061442f86828701614249565b935050602061444086828701614249565b925050604061445186828701614392565b9150509250925092565b6000806000806080858703121561447157600080fd5b600061447f87828801614249565b945050602061449087828801614249565b93505060406144a187828801614392565b925050606085013567ffffffffffffffff8111156144be57600080fd5b6144ca878288016142b2565b91505092959194509250565b600080604083850312156144e957600080fd5b60006144f785828601614249565b925050602061450885828601614273565b9150509250929050565b6000806040838503121561452557600080fd5b600061453385828601614249565b925050602061454485828601614392565b9150509250929050565b60008060006060848603121561456357600080fd5b600061457186828701614249565b935050602061458286828701614392565b92505060406145938682870161425e565b9150509250925092565b6000602082840312156145af57600080fd5b60006145bd84828501614288565b91505092915050565b6000602082840312156145d857600080fd5b60006145e68482850161429d565b91505092915050565b60006020828403121561460157600080fd5b600082013567ffffffffffffffff81111561461b57600080fd5b614627848285016142dc565b91505092915050565b6000806040838503121561464357600080fd5b600083013567ffffffffffffffff81111561465d57600080fd5b61466985828601614306565b925050602061467a85828601614392565b9150509250929050565b60008060006060848603121561469957600080fd5b600084013567ffffffffffffffff8111156146b357600080fd5b6146bf86828701614306565b93505060206146d086828701614392565b92505060406146e186828701614249565b9150509250925092565b6000602082840312156146fd57600080fd5b600061470b84828501614392565b91505092915050565b60008060006060848603121561472957600080fd5b600061473786828701614392565b935050602061474886828701614249565b925050604084013567ffffffffffffffff81111561476557600080fd5b614771868287016142dc565b9150509250925092565b60008060006060848603121561479057600080fd5b600061479e86828701614392565b93505060206147af86828701614249565b92505060406147c086828701614392565b9150509250925092565b600080604083850312156147dd57600080fd5b60006147eb85828601614392565b92505060206147fc85828601614392565b9150509250929050565b60006148128383614a01565b905092915050565b61482381614e54565b82525050565b61483281614dce565b82525050565b61484181614dce565b82525050565b600061485282614d67565b61485c8185614d8a565b93508360208202850161486e85614d57565b8060005b858110156148aa578484038952815161488b8582614806565b945061489683614d7d565b925060208a01995050600181019050614872565b50829750879550505050505092915050565b60006148c782614d67565b6148d18185614d9b565b9350836020820285016148e385614d57565b8060005b8581101561491f57848403895281516149008582614806565b945061490b83614d7d565b925060208a019950506001810190506148e7565b50829750879550505050505092915050565b61493a81614df2565b82525050565b61494981614e66565b82525050565b600061495a82614d72565b6149648185614dac565b9350614974818560208601614ebd565b61497d81614ef2565b840191505092915050565b600061499382614d72565b61499d8185614dbd565b93506149ad818560208601614ebd565b6149b681614ef2565b840191505092915050565b60006149ce601583614dbd565b91507f72657175697265205361666520416464726573732e00000000000000000000006000830152602082019050919050565b6000608083016000830151614a196000860182614b04565b5060208301518482036020860152614a31828261494f565b9150506040830151614a466040860182614b04565b506060830151614a596060860182614b04565b508091505092915050565b6000608083016000830151614a7c6000860182614b04565b5060208301518482036020860152614a94828261494f565b9150506040830151614aa96040860182614b04565b506060830151614abc6060860182614b04565b508091505092915050565b60006040830160008301518482036000860152614ae48282614847565b9150506020830151614af96020860182614829565b508091505092915050565b614b0d81614e4a565b82525050565b614b1c81614e4a565b82525050565b6000602082019050614b376000830184614838565b92915050565b6000602082019050614b52600083018461481a565b92915050565b6000604082019050614b6d600083018561481a565b614b7a6020830184614b13565b9392505050565b60006020820190508181036000830152614b9b81846148bc565b905092915050565b6000602082019050614bb86000830184614931565b92915050565b6000602082019050614bd36000830184614940565b92915050565b60006020820190508181036000830152614bf38184614988565b905092915050565b60006020820190508181036000830152614c14816149c1565b9050919050565b60006020820190508181036000830152614c358184614a64565b905092915050565b60006020820190508181036000830152614c578184614ac7565b905092915050565b6000602082019050614c746000830184614b13565b92915050565b6000608082019050614c8f6000830187614b13565b8181036020830152614ca18186614988565b9050614cb06040830185614b13565b614cbd6060830184614b13565b95945050505050565b6000604051905081810181811067ffffffffffffffff82111715614ced57614cec614ef0565b5b8060405250919050565b600067ffffffffffffffff821115614d1257614d11614ef0565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614d4257614d41614ef0565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614dd982614e2a565b9050919050565b6000614deb82614e2a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000614e5f82614e8a565b9050919050565b6000614e7182614e78565b9050919050565b6000614e8382614e2a565b9050919050565b6000614e9582614e9c565b9050919050565b6000614ea782614e2a565b9050919050565b82818337600083830152505050565b60005b83811015614edb578082015181840152602081019050614ec0565b83811115614eea576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b614f0c81614dce565b8114614f1757600080fd5b50565b614f2381614de0565b8114614f2e57600080fd5b50565b614f3a81614df2565b8114614f4557600080fd5b50565b614f5181614dfe565b8114614f5c57600080fd5b50565b614f6881614e4a565b8114614f7357600080fd5b5056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220cca1940b3dd0f007ee337a747fbf2172af01842537d19be6dfc8d3087bb52ef164736f6c63430007060033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x585C CODESIZE SUB DUP1 PUSH3 0x585C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x489 JUMP JUMPDEST DUP4 DUP4 DUP3 PUSH3 0x52 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH3 0x21D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP3 PUSH1 0x7 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x6A SWAP3 SWAP2 SWAP1 PUSH3 0x34A JUMP JUMPDEST POP DUP2 PUSH1 0x8 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x83 SWAP3 SWAP2 SWAP1 PUSH3 0x34A JUMP JUMPDEST POP DUP1 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH3 0xDD PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH3 0x21D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xF5 PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH3 0x21D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x10D PUSH4 0x780E9D63 PUSH1 0xE0 SHL PUSH3 0x21D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP PUSH1 0x0 PUSH3 0x122 PUSH3 0x326 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xB PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH3 0x1D2 DUP3 PUSH3 0x32E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP PUSH3 0x62D JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ ISZERO PUSH3 0x2BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH1 0xA SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x346 SWAP3 SWAP2 SWAP1 PUSH3 0x34A JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x382 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x3CE JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x39D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x3CE JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x3CE JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x3CD JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3B0 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x3DD SWAP2 SWAP1 PUSH3 0x3E1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x3FC JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x3E2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x417 PUSH3 0x411 DUP5 PUSH3 0x574 JUMP JUMPDEST PUSH3 0x540 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x43D DUP5 DUP3 DUP6 PUSH3 0x5DB JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x456 DUP2 PUSH3 0x613 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x480 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x400 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x4C9 DUP8 DUP3 DUP9 ADD PUSH3 0x45C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x4F5 DUP8 DUP3 DUP9 ADD PUSH3 0x45C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x521 DUP8 DUP3 DUP9 ADD PUSH3 0x45C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x534 DUP8 DUP3 DUP9 ADD PUSH3 0x445 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x56A JUMPI PUSH3 0x569 PUSH3 0x611 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x592 JUMPI PUSH3 0x591 PUSH3 0x611 JUMP JUMPDEST JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5B4 DUP3 PUSH3 0x5BB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x5FB JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x5DE JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x60B JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST INVALID JUMPDEST PUSH3 0x61E DUP2 PUSH3 0x5A7 JUMP JUMPDEST DUP2 EQ PUSH3 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x521F DUP1 PUSH3 0x63D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x206 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C0360EB GT PUSH2 0x11A JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xD432419D GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD432419D EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0xDFEA879C EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x663 JUMPI DUP1 PUSH4 0xF50313BB EQ PUSH2 0x67F JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0xC1FC755F EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x59B JUMPI DUP1 PUSH4 0xD0EBDBE7 EQ PUSH2 0x5CB JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x501 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x529 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x547 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0x6E4B73C1 EQ PUSH2 0x483 JUMPI DUP1 PUSH4 0x6F77926B EQ PUSH2 0x4A1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4D1 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x3B60383F GT PUSH2 0x19D JUMPI DUP1 PUSH4 0x4F66BAA3 GT PUSH2 0x16C JUMPI DUP1 PUSH4 0x4F66BAA3 EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x51B23756 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x576F7EA7 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x435 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x3B60383F EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x481C6A75 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x4E6F5B60 EQ PUSH2 0x381 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x39A0C6F9 EQ PUSH2 0x30F JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x289 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x225 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x45C6 JUMP JUMPDEST PUSH2 0x6B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x232 SWAP2 SWAP1 PUSH2 0x4BA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x719 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x250 SWAP2 SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x26E SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x7BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x280 SWAP2 SWAP1 PUSH2 0x4B22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x29E SWAP2 SWAP1 PUSH2 0x4512 JUMP JUMPDEST PUSH2 0x856 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2AD PUSH2 0x99A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2BA SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D8 SWAP2 SWAP1 PUSH2 0x440C JUMP JUMPDEST PUSH2 0x9AB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F4 SWAP2 SWAP1 PUSH2 0x4512 JUMP JUMPDEST PUSH2 0xA21 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x306 SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x329 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x324 SWAP2 SWAP1 PUSH2 0x45EF JUMP JUMPDEST PUSH2 0xA7C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x345 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x340 SWAP2 SWAP1 PUSH2 0x4684 JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x361 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x35C SWAP2 SWAP1 PUSH2 0x440C JUMP JUMPDEST PUSH2 0xD45 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x36B PUSH2 0xD65 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x378 SWAP2 SWAP1 PUSH2 0x4BBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x396 SWAP2 SWAP1 PUSH2 0x454E JUMP JUMPDEST PUSH2 0xD8B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3B2 SWAP2 SWAP1 PUSH2 0x4714 JUMP JUMPDEST PUSH2 0xF4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CE SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x1224 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E0 SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3FE SWAP2 SWAP1 PUSH2 0x4512 JUMP JUMPDEST PUSH2 0x1247 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41A SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x133F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42C SWAP2 SWAP1 PUSH2 0x4C1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x44F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x44A SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x142C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x45C SWAP2 SWAP1 PUSH2 0x4B22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x46D PUSH2 0x1463 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x47A SWAP2 SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x48B PUSH2 0x1505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x498 SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4BB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4B6 SWAP2 SWAP1 PUSH2 0x43A7 JUMP JUMPDEST PUSH2 0x1527 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4C8 SWAP2 SWAP1 PUSH2 0x4C3D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4EB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E6 SWAP2 SWAP1 PUSH2 0x43A7 JUMP JUMPDEST PUSH2 0x16F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x509 PUSH2 0x17CA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x513 PUSH2 0x193A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x520 SWAP2 SWAP1 PUSH2 0x4B22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x531 PUSH2 0x1964 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53E SWAP2 SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x561 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x55C SWAP2 SWAP1 PUSH2 0x44D6 JUMP JUMPDEST PUSH2 0x1A06 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x57D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x578 SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x1BBC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x599 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x594 SWAP2 SWAP1 PUSH2 0x477B JUMP JUMPDEST PUSH2 0x1C34 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5B0 SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x1EFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C2 SWAP2 SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5E0 SWAP2 SWAP1 PUSH2 0x43A7 JUMP JUMPDEST PUSH2 0x21CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x601 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5FC SWAP2 SWAP1 PUSH2 0x47CA JUMP JUMPDEST PUSH2 0x22BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x60E SWAP2 SWAP1 PUSH2 0x4B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x631 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62C SWAP2 SWAP1 PUSH2 0x4630 JUMP JUMPDEST PUSH2 0x243F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x64D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x648 SWAP2 SWAP1 PUSH2 0x43D0 JUMP JUMPDEST PUSH2 0x25AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65A SWAP2 SWAP1 PUSH2 0x4BA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x67D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x678 SWAP2 SWAP1 PUSH2 0x43A7 JUMP JUMPDEST PUSH2 0x27DE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x699 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x694 SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x29D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6A9 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C7A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x7B1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x786 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x794 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C6 DUP3 PUSH2 0x2A9B JUMP JUMPDEST PUSH2 0x81B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5114 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x861 DUP3 PUSH2 0x142C JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x8E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5198 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x907 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x936 JUMPI POP PUSH2 0x935 DUP2 PUSH2 0x930 PUSH2 0x2AB8 JUMP JUMPDEST PUSH2 0x25AC JUMP JUMPDEST JUMPDEST PUSH2 0x98B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5067 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x995 DUP4 DUP4 PUSH2 0x2AC0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A6 PUSH1 0x2 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x9BC PUSH2 0x9B6 PUSH2 0x2AB8 JUMP JUMPDEST DUP3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0xA11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51B9 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA1C DUP4 DUP4 DUP4 PUSH2 0x2C82 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP3 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0x2EF9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA84 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAA2 PUSH2 0x193A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB34 DUP2 PUSH2 0x2F13 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB92 SWAP2 SWAP1 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBBE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBE2 SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH2 0xC21 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC18 SWAP1 PUSH2 0x4BFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP2 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x0 ADD DUP5 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xCFB SWAP3 SWAP2 SWAP1 PUSH2 0x4082 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE POP POP DUP3 PUSH32 0xD9B763A807F47441D882FCC6187643B980718D68914A6B4C61F2FC41C6014126 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH2 0xD60 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1BBC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0xD93 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xDB1 PUSH2 0x193A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE3A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xEBB JUMPI DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP4 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xEB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0xF4A JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEF6 SWAP3 SWAP2 SWAP1 PUSH2 0x4B58 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF24 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF48 SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFAA SWAP2 SWAP1 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFD6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFFA SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH2 0x1039 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1030 SWAP1 PUSH2 0x4BFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x10FC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10D1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10FC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x10DF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP DUP2 DUP2 PUSH1 0x20 ADD DUP2 SWAP1 MSTORE POP PUSH1 0x0 PUSH1 0xD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x11E4 JUMPI DUP6 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1189 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x11D7 JUMPI DUP4 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x11B1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x11D5 SWAP3 SWAP2 SWAP1 PUSH2 0x4082 JUMP JUMPDEST POP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x116A JUMP JUMPDEST POP DUP5 PUSH32 0x286A02FCC77019847462367DF19526AAECFCCA5F1BDE1FF230D91682F1A393ED DUP5 PUSH1 0x40 MLOAD PUSH2 0x1215 SWAP2 SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x123B DUP4 PUSH1 0x2 PUSH2 0x2F2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP SWAP1 POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12A2 SWAP2 SWAP1 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12F2 SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH2 0x1331 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1328 SWAP1 PUSH2 0x4BFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x133B DUP3 DUP3 PUSH2 0x2F59 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1347 PUSH2 0x4110 JUMP JUMPDEST PUSH1 0xC PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1408 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x13DD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1408 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x13EB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x145C DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x50C9 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 PUSH2 0x2F77 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x14FB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x14D0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x14FB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x14DE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1522 PUSH1 0x1 PUSH2 0x1514 PUSH2 0x99A JUMP JUMPDEST PUSH2 0x2F96 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x152F PUSH2 0x4138 JUMP JUMPDEST PUSH1 0xD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1690 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1664 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1639 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1664 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1647 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x159E JUMP JUMPDEST POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x177C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x509F PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17C3 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0x301E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x17D2 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17F0 PUSH2 0x193A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1879 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xB PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0xB PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x19FC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x19D1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x19FC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x19DF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1A0E PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1AAF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x1ABC PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B69 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x1BCD PUSH2 0x1BC7 PUSH2 0x2AB8 JUMP JUMPDEST DUP4 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x1C22 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51B9 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C2E DUP5 DUP5 DUP5 DUP5 PUSH2 0x3033 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C8F SWAP2 SWAP1 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CBB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CDF SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH2 0x1D1E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D15 SWAP1 PUSH2 0x4BFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1DE1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1DB6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1DE1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1DC4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP DUP2 DUP2 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 PUSH1 0xD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x1EBA JUMPI DUP6 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1E6F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x1EAD JUMPI DUP4 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1E97 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x1E50 JUMP JUMPDEST POP DUP5 PUSH32 0x3E6471163B9BD9273BCA15749E86B160143691CD406CD9A36CFBF3B40A8D219A DUP5 PUSH1 0x40 MLOAD PUSH2 0x1EEB SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1F05 DUP3 PUSH2 0x2A9B JUMP JUMPDEST PUSH2 0x1F5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5169 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2003 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1FD8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2003 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1FE6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x2014 PUSH2 0x1463 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD EQ ISZERO PUSH2 0x202A JUMPI DUP2 SWAP3 POP POP POP PUSH2 0x21C6 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT ISZERO PUSH2 0x20FB JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x206C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x2049 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x20BD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x209A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x21C6 JUMP JUMPDEST DUP1 PUSH2 0x2105 DUP6 PUSH2 0x30A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x213B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x2118 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x218C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x2169 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x21D3 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x21F1 PUSH2 0x193A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x227A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x22CA PUSH2 0x99A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x22E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x231A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x2307 PUSH2 0x4110 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x22FF JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 DUP6 SWAP1 POP JUMPDEST DUP5 DUP2 GT PUSH2 0x2433 JUMPI PUSH1 0xC PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x23EC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x23C1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x23EC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x23CF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2415 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP2 PUSH1 0x1 ADD SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x2324 JUMP JUMPDEST POP DUP2 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x249A SWAP2 SWAP1 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x24EA SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH2 0x2529 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2520 SWAP1 PUSH2 0x4BFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0xC PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2563 SWAP3 SWAP2 SWAP1 PUSH2 0x4082 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE SWAP1 POP POP DUP1 PUSH32 0x6DC4DEE3932E28CED4D8DE0FB73F19911ECFDAF3A849E0F2A98763B905F9F473 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x264B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH2 0x273D JUMPI POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2715 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x272B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP JUMPDEST ISZERO PUSH2 0x274B JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x27D8 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x27E6 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2804 PUSH2 0x193A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x288D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2913 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4FCB PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xB PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0xB PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2A85 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2A5A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2A85 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2A68 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AB1 DUP3 PUSH1 0x2 PUSH2 0x31EC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2B33 DUP4 PUSH2 0x142C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B87 DUP3 PUSH1 0x0 ADD PUSH2 0x3206 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B99 DUP3 PUSH2 0x2A9B JUMP JUMPDEST PUSH2 0x2BEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x503B PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2BF9 DUP4 PUSH2 0x142C JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x2C68 JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2C50 DUP5 PUSH2 0x7BB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST DUP1 PUSH2 0x2C79 JUMPI POP PUSH2 0x2C78 DUP2 DUP6 PUSH2 0x25AC JUMP JUMPDEST JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2C8D DUP4 DUP4 DUP4 PUSH2 0x3217 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x2D60 JUMPI DUP3 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2CF2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x2D53 JUMPI DUP2 PUSH1 0x0 ADD DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2D19 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x2D40 SWAP2 SWAP1 PUSH2 0x4168 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE POP POP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x2CD3 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xC PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2E24 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2DF9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2E24 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2E07 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x0 PUSH1 0xD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x0 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2EDA SWAP3 SWAP2 SWAP1 PUSH2 0x4082 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F08 DUP4 PUSH1 0x0 ADD DUP4 PUSH2 0x345A JUMP JUMPDEST PUSH1 0x0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0xA SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2F29 SWAP3 SWAP2 SWAP1 PUSH2 0x4082 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2F40 DUP7 PUSH1 0x0 ADD DUP7 PUSH2 0x34DD JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 SHR DUP2 PUSH1 0x0 SHR SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2F73 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3576 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F8A DUP5 PUSH1 0x0 ADD DUP5 PUSH1 0x0 SHL DUP5 PUSH2 0x35E7 JUMP JUMPDEST PUSH1 0x0 SHR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x3014 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x302C DUP3 PUSH1 0x0 ADD PUSH2 0x36DD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x303E DUP5 DUP5 DUP5 PUSH2 0x2C82 JUMP JUMPDEST PUSH2 0x304A DUP5 DUP5 DUP5 DUP5 PUSH2 0x36EE JUMP JUMPDEST PUSH2 0x309F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4F99 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x30ED JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH2 0x31E7 JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP3 EQ PUSH2 0x3117 JUMPI DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH1 0xA DUP3 DUP2 PUSH2 0x310F JUMPI INVALID JUMPDEST DIV SWAP2 POP PUSH2 0x30F5 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3163 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP4 SUB SWAP1 POP DUP6 SWAP4 POP JUMPDEST PUSH1 0x0 DUP5 EQ PUSH2 0x31DF JUMPI PUSH1 0xA DUP5 DUP2 PUSH2 0x3184 JUMPI INVALID JUMPDEST MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x319E JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DUP2 PUSH2 0x31D7 JUMPI INVALID JUMPDEST DIV SWAP4 POP PUSH2 0x3172 JUMP JUMPDEST DUP2 SWAP5 POP POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31FE DUP4 PUSH1 0x0 ADD DUP4 PUSH1 0x0 SHL PUSH2 0x3907 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3237 DUP3 PUSH2 0x142C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x32A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5140 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3329 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4FF1 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3334 DUP4 DUP4 DUP4 PUSH2 0x392A JUMP JUMPDEST PUSH2 0x333F PUSH1 0x0 DUP3 PUSH2 0x2AC0 JUMP JUMPDEST PUSH2 0x3390 DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0x392F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x33E2 DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0x3949 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x33F9 DUP2 DUP4 PUSH1 0x2 PUSH2 0x3963 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP GT PUSH2 0x34BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4F77 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x34CA JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP GT PUSH2 0x353F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x50F2 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3550 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x3580 DUP4 DUP4 PUSH2 0x3998 JUMP JUMPDEST PUSH2 0x358D PUSH1 0x0 DUP5 DUP5 DUP5 PUSH2 0x36EE JUMP JUMPDEST PUSH2 0x35E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4F99 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 ADD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ ISZERO DUP4 SWAP1 PUSH2 0x36AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3673 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3658 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x36A0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x36C1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x370F DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3B8C JUMP JUMPDEST PUSH2 0x371C JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x38FF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3886 PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH2 0x3731 PUSH2 0x2AB8 JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37B5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x379A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x37E2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4F99 PUSH1 0x32 SWAP2 CODECOPY DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3B9F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x389F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP1 POP PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3941 DUP4 PUSH1 0x0 ADD DUP4 PUSH1 0x0 SHL PUSH2 0x3BB7 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x395B DUP4 PUSH1 0x0 ADD DUP4 PUSH1 0x0 SHL PUSH2 0x3C9F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x398F DUP5 PUSH1 0x0 ADD DUP5 PUSH1 0x0 SHL DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SHL PUSH2 0x3D0F JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3A3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3A44 DUP2 PUSH2 0x2A9B JUMP JUMPDEST ISZERO PUSH2 0x3AB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3AC3 PUSH1 0x0 DUP4 DUP4 PUSH2 0x392A JUMP JUMPDEST PUSH2 0x3B14 DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0x3949 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x3B2B DUP2 DUP4 PUSH1 0x2 PUSH2 0x3963 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EXTCODESIZE SWAP1 POP PUSH1 0x0 DUP2 GT SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3BAE DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x3DEB JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x3C93 JUMPI PUSH1 0x0 PUSH1 0x1 DUP3 SUB SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SUB SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3C02 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3C1F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 DUP4 ADD DUP8 PUSH1 0x1 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP7 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH2 0x3C57 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x3C99 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CAB DUP4 DUP4 PUSH2 0x3F93 JUMP JUMPDEST PUSH2 0x3D04 JUMPI DUP3 PUSH1 0x0 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE DUP3 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP PUSH2 0x3D09 JUMP JUMPDEST PUSH1 0x0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 ADD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ ISZERO PUSH2 0x3DB6 JUMPI DUP5 PUSH1 0x0 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP DUP5 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP2 POP POP PUSH2 0x3DE4 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x3DC9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x3E46 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5015 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3E4F DUP6 PUSH2 0x3B8C JUMP JUMPDEST PUSH2 0x3EC1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3F10 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x3EED JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3F72 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3F77 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3F87 DUP3 DUP3 DUP7 PUSH2 0x3FB6 JUMP JUMPDEST SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3FC6 JUMPI DUP3 SWAP1 POP PUSH2 0x407B JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD GT ISZERO PUSH2 0x3FD9 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4040 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4025 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x406D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x40B8 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x40FF JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x40D1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x40FF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x40FF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x40FE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x40E3 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x410C SWAP2 SWAP1 PUSH2 0x41B0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x418E JUMPI POP PUSH2 0x41AD JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41AC SWAP2 SWAP1 PUSH2 0x41B0 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x41C9 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x41B1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41E0 PUSH2 0x41DB DUP5 PUSH2 0x4CF7 JUMP JUMPDEST PUSH2 0x4CC6 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x41F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4203 DUP5 DUP3 DUP6 PUSH2 0x4EAE JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x421E PUSH2 0x4219 DUP5 PUSH2 0x4D27 JUMP JUMPDEST PUSH2 0x4CC6 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4241 DUP5 DUP3 DUP6 PUSH2 0x4EAE JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4258 DUP2 PUSH2 0x4F03 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x426D DUP2 PUSH2 0x4F1A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4282 DUP2 PUSH2 0x4F31 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4297 DUP2 PUSH2 0x4F31 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x42AC DUP2 PUSH2 0x4F48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x42C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x42D3 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x41CD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x42ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x42FD DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x420B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4322 PUSH1 0x80 PUSH2 0x4CC6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4332 DUP5 DUP3 DUP6 ADD PUSH2 0x4392 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x435E DUP5 DUP3 DUP6 ADD PUSH2 0x42DC JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x4372 DUP5 DUP3 DUP6 ADD PUSH2 0x4392 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x4386 DUP5 DUP3 DUP6 ADD PUSH2 0x4392 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x43A1 DUP2 PUSH2 0x4F5F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x43B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x43C7 DUP5 DUP3 DUP6 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x43E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x43F1 DUP6 DUP3 DUP7 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4402 DUP6 DUP3 DUP7 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x442F DUP7 DUP3 DUP8 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4440 DUP7 DUP3 DUP8 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4451 DUP7 DUP3 DUP8 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x447F DUP8 DUP3 DUP9 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4490 DUP8 DUP3 DUP9 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x44A1 DUP8 DUP3 DUP9 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x44BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44CA DUP8 DUP3 DUP9 ADD PUSH2 0x42B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x44E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x44F7 DUP6 DUP3 DUP7 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4508 DUP6 DUP3 DUP7 ADD PUSH2 0x4273 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4533 DUP6 DUP3 DUP7 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4544 DUP6 DUP3 DUP7 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4571 DUP7 DUP3 DUP8 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4582 DUP7 DUP3 DUP8 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4593 DUP7 DUP3 DUP8 ADD PUSH2 0x425E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x45BD DUP5 DUP3 DUP6 ADD PUSH2 0x4288 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x45E6 DUP5 DUP3 DUP6 ADD PUSH2 0x429D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x461B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4627 DUP5 DUP3 DUP6 ADD PUSH2 0x42DC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x465D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4669 DUP6 DUP3 DUP7 ADD PUSH2 0x4306 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x467A DUP6 DUP3 DUP7 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x46B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46BF DUP7 DUP3 DUP8 ADD PUSH2 0x4306 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x46D0 DUP7 DUP3 DUP8 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x46E1 DUP7 DUP3 DUP8 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x470B DUP5 DUP3 DUP6 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4729 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4737 DUP7 DUP3 DUP8 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4748 DUP7 DUP3 DUP8 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4771 DUP7 DUP3 DUP8 ADD PUSH2 0x42DC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4790 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x479E DUP7 DUP3 DUP8 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x47AF DUP7 DUP3 DUP8 ADD PUSH2 0x4249 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x47C0 DUP7 DUP3 DUP8 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x47EB DUP6 DUP3 DUP7 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x47FC DUP6 DUP3 DUP7 ADD PUSH2 0x4392 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4812 DUP4 DUP4 PUSH2 0x4A01 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4823 DUP2 PUSH2 0x4E54 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4832 DUP2 PUSH2 0x4DCE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4841 DUP2 PUSH2 0x4DCE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4852 DUP3 PUSH2 0x4D67 JUMP JUMPDEST PUSH2 0x485C DUP2 DUP6 PUSH2 0x4D8A JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x486E DUP6 PUSH2 0x4D57 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x48AA JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x488B DUP6 DUP3 PUSH2 0x4806 JUMP JUMPDEST SWAP5 POP PUSH2 0x4896 DUP4 PUSH2 0x4D7D JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x4872 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C7 DUP3 PUSH2 0x4D67 JUMP JUMPDEST PUSH2 0x48D1 DUP2 DUP6 PUSH2 0x4D9B JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x48E3 DUP6 PUSH2 0x4D57 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x491F JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x4900 DUP6 DUP3 PUSH2 0x4806 JUMP JUMPDEST SWAP5 POP PUSH2 0x490B DUP4 PUSH2 0x4D7D JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x48E7 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x493A DUP2 PUSH2 0x4DF2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4949 DUP2 PUSH2 0x4E66 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x495A DUP3 PUSH2 0x4D72 JUMP JUMPDEST PUSH2 0x4964 DUP2 DUP6 PUSH2 0x4DAC JUMP JUMPDEST SWAP4 POP PUSH2 0x4974 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4EBD JUMP JUMPDEST PUSH2 0x497D DUP2 PUSH2 0x4EF2 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4993 DUP3 PUSH2 0x4D72 JUMP JUMPDEST PUSH2 0x499D DUP2 DUP6 PUSH2 0x4DBD JUMP JUMPDEST SWAP4 POP PUSH2 0x49AD DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4EBD JUMP JUMPDEST PUSH2 0x49B6 DUP2 PUSH2 0x4EF2 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49CE PUSH1 0x15 DUP4 PUSH2 0x4DBD JUMP JUMPDEST SWAP2 POP PUSH32 0x72657175697265205361666520416464726573732E0000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x4A19 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x4B04 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x4A31 DUP3 DUP3 PUSH2 0x494F JUMP JUMPDEST SWAP2 POP POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x4A46 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x4B04 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4A59 PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x4B04 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x4A7C PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x4B04 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x4A94 DUP3 DUP3 PUSH2 0x494F JUMP JUMPDEST SWAP2 POP POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x4AA9 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x4B04 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4ABC PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x4B04 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x0 DUP7 ADD MSTORE PUSH2 0x4AE4 DUP3 DUP3 PUSH2 0x4847 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x4AF9 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x4829 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4B0D DUP2 PUSH2 0x4E4A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4B1C DUP2 PUSH2 0x4E4A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4B37 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4838 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4B52 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x481A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4B6D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x481A JUMP JUMPDEST PUSH2 0x4B7A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4B13 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4B9B DUP2 DUP5 PUSH2 0x48BC JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4BB8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4931 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4BD3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4940 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4BF3 DUP2 DUP5 PUSH2 0x4988 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4C14 DUP2 PUSH2 0x49C1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4C35 DUP2 DUP5 PUSH2 0x4A64 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4C57 DUP2 DUP5 PUSH2 0x4AC7 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4C74 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4B13 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4C8F PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x4B13 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4CA1 DUP2 DUP7 PUSH2 0x4988 JUMP JUMPDEST SWAP1 POP PUSH2 0x4CB0 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4B13 JUMP JUMPDEST PUSH2 0x4CBD PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x4B13 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4CED JUMPI PUSH2 0x4CEC PUSH2 0x4EF0 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4D12 JUMPI PUSH2 0x4D11 PUSH2 0x4EF0 JUMP JUMPDEST JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4D42 JUMPI PUSH2 0x4D41 PUSH2 0x4EF0 JUMP JUMPDEST JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DD9 DUP3 PUSH2 0x4E2A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DEB DUP3 PUSH2 0x4E2A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E5F DUP3 PUSH2 0x4E8A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E71 DUP3 PUSH2 0x4E78 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E83 DUP3 PUSH2 0x4E2A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E95 DUP3 PUSH2 0x4E9C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EA7 DUP3 PUSH2 0x4E2A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4EDB JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4EC0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4EEA JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST INVALID JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4F0C DUP2 PUSH2 0x4DCE JUMP JUMPDEST DUP2 EQ PUSH2 0x4F17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4F23 DUP2 PUSH2 0x4DE0 JUMP JUMPDEST DUP2 EQ PUSH2 0x4F2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4F3A DUP2 PUSH2 0x4DF2 JUMP JUMPDEST DUP2 EQ PUSH2 0x4F45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4F51 DUP2 PUSH2 0x4DFE JUMP JUMPDEST DUP2 EQ PUSH2 0x4F5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4F68 DUP2 PUSH2 0x4E4A JUMP JUMPDEST DUP2 EQ PUSH2 0x4F73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734552433732313A207472616E73666572 KECCAK256 PUSH21 0x6F20746865207A65726F2061646472657373416464 PUSH19 0x6573733A20696E73756666696369656E742062 PUSH2 0x6C61 PUSH15 0x636520666F722063616C6C45524337 ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76656420717565727920666F72206E6F6E65 PUSH25 0x697374656E7420746F6B656E4552433732313A207472616E73 PUSH7 0x6572206F662074 PUSH16 0x6B656E2074686174206973206E6F7420 PUSH16 0x776E4552433732314D65746164617461 GASPRICE KECCAK256 SSTORE MSTORE 0x49 KECCAK256 PUSH18 0x7565727920666F72206E6F6E657869737465 PUSH15 0x7420746F6B656E4552433732313A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x58221220CCA1940B3DD0F007EE337A747FBF2172 0xAF ADD DUP5 0x25 CALLDATACOPY 0xD1 SWAP12 0xE6 0xDF 0xC8 0xD3 ADDMOD PUSH28 0xB52EF164736F6C634300070600330000000000000000000000000000 ", | |
"sourceMap": "340:4707:1:-:0;;;941:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1081:4;1087:6;1095:8;767:40:3;434:10;786:20;;767:18;;;:40;;:::i;:::-;3670:5:4;3662;:13;;;;;;;;;;;;:::i;:::-;;3695:7;3685;:17;;;;;;;;;;;;:::i;:::-;;3739:8;3712:7;;:36;;;;;;;;;;;;;;;;;;3836:40;2735:10;3855:20;;3836:18;;;:40;;:::i;:::-;3886:49;3067:10;3905:29;;3886:18;;;:49;;:::i;:::-;3945:51;3440:10;3964:31;;3945:18;;;:51;;:::i;:::-;3570:433;;;878:17:15;898:12;:10;;;:12;;:::i;:::-;878:32;;929:9;920:6;;:18;;;;;;;;;;;;;;;;;;986:9;953:43;;982:1;953:43;;;;;;;;;;;;844:159;1115:20:1::1;1127:7;1115:11;;;:20;;:::i;:::-;1172:8;1145:7;;:36;;;;;;;;;;;;;;;;;;941:247:::0;;;;340:4707;;1506:198:3;1604:10;1589:25;;:11;:25;;;;;1581:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1693:4;1657:20;:33;1678:11;1657:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1506:198;:::o;598:104:2:-;651:15;685:10;678:17;;598:104;:::o;15008:98:4:-;15091:8;15080;:19;;;;;;;;;;;;:::i;:::-;;15008:98;:::o;340:4707:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:353:18:-;;121:65;136:49;178:6;136:49;:::i;:::-;121:65;:::i;:::-;112:74;;209:6;202:5;195:21;247:4;240:5;236:16;285:3;276:6;271:3;267:16;264:25;261:2;;;302:1;299;292:12;261:2;315:39;347:6;342:3;337;315:39;:::i;:::-;102:258;;;;;;:::o;366:143::-;;454:6;448:13;439:22;;470:33;497:5;470:33;:::i;:::-;429:80;;;;:::o;529:288::-;;645:3;638:4;630:6;626:17;622:27;612:2;;663:1;660;653:12;612:2;696:6;690:13;721:90;807:3;799:6;792:4;784:6;780:17;721:90;:::i;:::-;712:99;;602:215;;;;;:::o;823:1071::-;;;;;1023:3;1011:9;1002:7;998:23;994:33;991:2;;;1040:1;1037;1030:12;991:2;1104:1;1093:9;1089:17;1083:24;1134:18;1126:6;1123:30;1120:2;;;1166:1;1163;1156:12;1120:2;1194:74;1260:7;1251:6;1240:9;1236:22;1194:74;:::i;:::-;1184:84;;1054:224;1338:2;1327:9;1323:18;1317:25;1369:18;1361:6;1358:30;1355:2;;;1401:1;1398;1391:12;1355:2;1429:74;1495:7;1486:6;1475:9;1471:22;1429:74;:::i;:::-;1419:84;;1288:225;1573:2;1562:9;1558:18;1552:25;1604:18;1596:6;1593:30;1590:2;;;1636:1;1633;1626:12;1590:2;1664:74;1730:7;1721:6;1710:9;1706:22;1664:74;:::i;:::-;1654:84;;1523:225;1787:2;1813:64;1869:7;1860:6;1849:9;1845:22;1813:64;:::i;:::-;1803:74;;1758:129;981:913;;;;;;;:::o;1900:278::-;;1966:2;1960:9;1950:19;;2008:4;2000:6;1996:17;2115:6;2103:10;2100:22;2079:18;2067:10;2064:34;2061:62;2058:2;;;2126:13;;:::i;:::-;2058:2;2161:10;2157:2;2150:22;1940:238;;;;:::o;2184:327::-;;2336:18;2328:6;2325:30;2322:2;;;2358:13;;:::i;:::-;2322:2;2438:4;2434:9;2427:4;2419:6;2415:17;2411:33;2403:41;;2499:4;2493;2489:15;2481:23;;2251:260;;;:::o;2517:96::-;;2583:24;2601:5;2583:24;:::i;:::-;2572:35;;2562:51;;;:::o;2619:126::-;;2696:42;2689:5;2685:54;2674:65;;2664:81;;;:::o;2751:307::-;2819:1;2829:113;2843:6;2840:1;2837:13;2829:113;;;2928:1;2923:3;2919:11;2913:18;2909:1;2904:3;2900:11;2893:39;2865:2;2862:1;2858:10;2853:15;;2829:113;;;2960:6;2957:1;2954:13;2951:2;;;3040:1;3031:6;3026:3;3022:16;3015:27;2951:2;2800:258;;;;:::o;3064:48::-;3097:9;3118:122;3191:24;3209:5;3191:24;:::i;:::-;3184:5;3181:35;3171:2;;3230:1;3227;3220:12;3171:2;3161:79;:::o;340:4707:1:-;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"generatedSources": [ | |
{ | |
"ast": { | |
"nodeType": "YulBlock", | |
"src": "0:27052:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "90:259:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "100:73:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "165:6:18" | |
} | |
], | |
"functionName": { | |
"name": "array_allocation_size_t_bytes_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "124:40:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "124:48:18" | |
} | |
], | |
"functionName": { | |
"name": "allocateMemory", | |
"nodeType": "YulIdentifier", | |
"src": "109:14:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "109:64:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "100:5:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "189:5:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "196:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "182:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "182:21:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "182:21:18" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "212:27:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "227:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "234:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "223:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "223:16:18" | |
}, | |
"variables": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "216:3:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "277:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "286:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "289:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "279:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "279:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "279:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "258:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "263:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "254:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "254:16:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "272:3:18" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "251:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "251:25:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "248:2:18" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "326:3:18" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "331:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "336:6:18" | |
} | |
], | |
"functionName": { | |
"name": "copy_calldata_to_memory", | |
"nodeType": "YulIdentifier", | |
"src": "302:23:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "302:41:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "302:41:18" | |
} | |
] | |
}, | |
"name": "abi_decode_available_length_t_bytes_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "63:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "68:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "76:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "84:5:18", | |
"type": "" | |
} | |
], | |
"src": "7:342:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "439:260:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "449:74:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "515:6:18" | |
} | |
], | |
"functionName": { | |
"name": "array_allocation_size_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "473:41:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "473:49:18" | |
} | |
], | |
"functionName": { | |
"name": "allocateMemory", | |
"nodeType": "YulIdentifier", | |
"src": "458:14:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "458:65:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "449:5:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "539:5:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "546:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "532:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "532:21:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "532:21:18" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "562:27:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "577:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "584:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "573:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "573:16:18" | |
}, | |
"variables": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "566:3:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "627:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "636:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "639:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "629:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "629:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "629:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "608:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "613:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "604:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "604:16:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "622:3:18" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "601:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "601:25:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "598:2:18" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "676:3:18" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "681:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "686:6:18" | |
} | |
], | |
"functionName": { | |
"name": "copy_calldata_to_memory", | |
"nodeType": "YulIdentifier", | |
"src": "652:23:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "652:41:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "652:41:18" | |
} | |
] | |
}, | |
"name": "abi_decode_available_length_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "412:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "417:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "425:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "433:5:18", | |
"type": "" | |
} | |
], | |
"src": "355:344:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "757:87:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "767:29:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "789:6:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "776:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "776:20:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "767:5:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "832:5:18" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "805:26:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "805:33:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "805:33:18" | |
} | |
] | |
}, | |
"name": "abi_decode_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "735:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "743:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "751:5:18", | |
"type": "" | |
} | |
], | |
"src": "705:139:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "910:95:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "920:29:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "942:6:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "929:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "929:20:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "920:5:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "993:5:18" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_address_payable", | |
"nodeType": "YulIdentifier", | |
"src": "958:34:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "958:41:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "958:41:18" | |
} | |
] | |
}, | |
"name": "abi_decode_t_address_payable", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "888:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "896:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "904:5:18", | |
"type": "" | |
} | |
], | |
"src": "850:155:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1060:84:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1070:29:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1092:6:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "1079:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1079:20:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1070:5:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1132:5:18" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_bool", | |
"nodeType": "YulIdentifier", | |
"src": "1108:23:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1108:30:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1108:30:18" | |
} | |
] | |
}, | |
"name": "abi_decode_t_bool", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1038:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "1046:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "1054:5:18", | |
"type": "" | |
} | |
], | |
"src": "1011:133:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1210:77:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1220:22:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1235:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "1229:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1229:13:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1220:5:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1275:5:18" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_bool", | |
"nodeType": "YulIdentifier", | |
"src": "1251:23:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1251:30:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1251:30:18" | |
} | |
] | |
}, | |
"name": "abi_decode_t_bool_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1188:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "1196:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "1204:5:18", | |
"type": "" | |
} | |
], | |
"src": "1150:137:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1344:86:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1354:29:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1376:6:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "1363:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1363:20:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1354:5:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1418:5:18" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_bytes4", | |
"nodeType": "YulIdentifier", | |
"src": "1392:25:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1392:32:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1392:32:18" | |
} | |
] | |
}, | |
"name": "abi_decode_t_bytes4", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1322:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "1330:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "1338:5:18", | |
"type": "" | |
} | |
], | |
"src": "1293:137:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1510:210:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1559:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1568:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1571:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1561:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1561:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1561:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1538:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1546:4:18", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1534:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1534:17:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "1553:3:18" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "1530:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1530:27:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "1523:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1523:35:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "1520:2:18" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1584:34:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1611:6:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "1598:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1598:20:18" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "1588:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1627:87:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1687:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1695:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1683:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1683:17:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1702:6:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "1710:3:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_available_length_t_bytes_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "1636:46:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1636:78:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "1627:5:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_t_bytes_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1488:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "1496:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "1504:5:18", | |
"type": "" | |
} | |
], | |
"src": "1449:271:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1802:211:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1851:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1860:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1863:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1853:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1853:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1853:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1830:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1838:4:18", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1826:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1826:17:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "1845:3:18" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "1822:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1822:27:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "1815:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1815:35:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "1812:2:18" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1876:34:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1903:6:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "1890:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1890:20:18" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "1880:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1919:88:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1980:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1988:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1976:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1976:17:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1995:6:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2003:3:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_available_length_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "1928:47:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1928:79:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "1919:5:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1780:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "1788:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "1796:5:18", | |
"type": "" | |
} | |
], | |
"src": "1740:273:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2121:859:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2165:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2174:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2177:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "2167:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2167:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2167:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2142:3:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "2147:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "2138:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2138:19:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2159:4:18", | |
"type": "", | |
"value": "0x80" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "2134:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2134:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "2131:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2190:29:18", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2214:4:18", | |
"type": "", | |
"value": "0x80" | |
} | |
], | |
"functionName": { | |
"name": "allocateMemory", | |
"nodeType": "YulIdentifier", | |
"src": "2199:14:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2199:20:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "2190:5:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "2229:153:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2267:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2281:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "2271:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "2307:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2314:4:18", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2303:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2303:16:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "2346:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2357:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2342:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2342:22:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2366:3:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "2321:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2321:49:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "2296:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2296:75:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2296:75:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "2392:255:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2428:46:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "2459:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2470:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2455:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2455:18:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "2442:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2442:32:18" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "2432:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2521:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2530:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2533:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "2523:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2523:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2523:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2493:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2501:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "2490:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2490:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "2487:2:18" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "2562:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2569:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2558:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2558:16:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "2611:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2622:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2607:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2607:22:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2631:3:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "2576:30:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2576:59:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "2551:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2551:85:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2551:85:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "2657:151:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2692:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2706:2:18", | |
"type": "", | |
"value": "64" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "2696:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "2733:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2740:4:18", | |
"type": "", | |
"value": "0x40" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2729:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2729:16:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "2772:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2783:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2768:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2768:22:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2792:3:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "2747:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2747:49:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "2722:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2722:75:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2722:75:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "2818:155:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2857:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2871:2:18", | |
"type": "", | |
"value": "96" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "2861:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "2898:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2905:4:18", | |
"type": "", | |
"value": "0x60" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2894:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2894:16:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "2937:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2948:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2933:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2933:22:18" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2957:3:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "2912:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2912:49:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "2887:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2887:75:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2887:75:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_t_struct$_NFTItem_$3223_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "2096:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "2107:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "2115:5:18", | |
"type": "" | |
} | |
], | |
"src": "2041:939:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3038:87:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3048:29:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3070:6:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "3057:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3057:20:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "3048:5:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "3113:5:18" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "3086:26:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3086:33:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3086:33:18" | |
} | |
] | |
}, | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "3016:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "3024:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "3032:5:18", | |
"type": "" | |
} | |
], | |
"src": "2986:139:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3197:196:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3243:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3252:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3255:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "3245:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3245:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3245:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3218:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3227:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "3214:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3214:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3239:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "3210:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3210:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "3207:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "3269:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3284:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3298:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "3288:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3313:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3348:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3359:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3344:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3344:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3368:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "3323:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3323:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "3313:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "3167:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "3178:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "3190:6:18", | |
"type": "" | |
} | |
], | |
"src": "3131:262:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3482:324:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3528:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3537:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3540:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "3530:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3530:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3530:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3503:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3512:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "3499:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3499:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3524:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "3495:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3495:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "3492:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "3554:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3569:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3583:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "3573:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3598:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3633:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3644:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3629:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3629:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3653:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "3608:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3608:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "3598:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "3681:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3696:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3710:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "3700:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3726:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3761:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3772:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3757:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3757:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3781:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "3736:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3736:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "3726:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_addresst_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "3444:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "3455:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "3467:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "3475:6:18", | |
"type": "" | |
} | |
], | |
"src": "3399:407:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3912:452:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3958:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3967:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3970:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "3960:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3960:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3960:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3933:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3942:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "3929:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3929:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3954:2:18", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "3925:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3925:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "3922:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "3984:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3999:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4013:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "4003:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4028:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4063:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "4074:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4059:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4059:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "4083:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "4038:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4038:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "4028:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "4111:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "4126:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4140:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "4130:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4156:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4191:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "4202:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4187:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4187:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "4211:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "4166:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4166:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "4156:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "4239:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "4254:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4268:2:18", | |
"type": "", | |
"value": "64" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "4258:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4284:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4319:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "4330:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4315:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4315:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "4339:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "4294:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4294:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "4284:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_addresst_addresst_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "3866:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "3877:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "3889:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "3897:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "3905:6:18", | |
"type": "" | |
} | |
], | |
"src": "3812:552:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4496:683:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4543:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4552:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4555:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "4545:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4545:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "4545:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "4517:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4526:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "4513:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4513:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4538:3:18", | |
"type": "", | |
"value": "128" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "4509:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4509:33:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "4506:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "4569:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "4584:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4598:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "4588:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4613:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4648:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "4659:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4644:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4644:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "4668:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "4623:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4623:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "4613:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "4696:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "4711:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4725:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "4715:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4741:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4776:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "4787:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4772:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4772:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "4796:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "4751:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4751:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "4741:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "4824:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "4839:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4853:2:18", | |
"type": "", | |
"value": "64" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "4843:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4869:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4904:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "4915:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4900:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4900:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "4924:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "4879:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4879:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "4869:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "4952:220:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "4967:46:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4998:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5009:2:18", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4994:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4994:18:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "4981:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4981:32:18" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "4971:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5060:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5069:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5072:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "5062:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5062:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5062:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5032:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5040:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "5029:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5029:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "5026:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5090:72:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "5134:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5145:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "5130:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5130:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "5154:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_bytes_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "5100:29:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5100:62:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value3", | |
"nodeType": "YulIdentifier", | |
"src": "5090:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "4442:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "4453:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "4465:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "4473:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "4481:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value3", | |
"nodeType": "YulTypedName", | |
"src": "4489:6:18", | |
"type": "" | |
} | |
], | |
"src": "4370:809:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5265:321:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5311:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5320:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5323:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "5313:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5313:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5313:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "5286:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "5295:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "5282:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5282:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5307:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "5278:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5278:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "5275:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "5337:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "5352:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5366:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "5356:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5381:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "5416:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5427:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "5412:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5412:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "5436:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "5391:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5391:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "5381:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "5464:115:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "5479:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5493:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "5483:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5509:60:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "5541:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5552:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "5537:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5537:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "5561:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_bool", | |
"nodeType": "YulIdentifier", | |
"src": "5519:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5519:50:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "5509:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_addresst_bool", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "5227:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "5238:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "5250:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "5258:6:18", | |
"type": "" | |
} | |
], | |
"src": "5185:401:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5675:324:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5721:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5730:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5733:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "5723:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5723:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5723:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "5696:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "5705:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "5692:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5692:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5717:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "5688:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5688:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "5685:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "5747:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "5762:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5776:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "5766:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5791:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "5826:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5837:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "5822:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5822:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "5846:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "5801:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5801:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "5791:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "5874:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "5889:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5903:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "5893:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5919:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "5954:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5965:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "5950:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5950:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "5974:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "5929:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5929:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "5919:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_addresst_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "5637:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "5648:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "5660:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "5668:6:18", | |
"type": "" | |
} | |
], | |
"src": "5592:407:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6113:460:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6159:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6168:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6171:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "6161:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6161:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "6161:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "6134:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "6143:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "6130:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6130:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6155:2:18", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "6126:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6126:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "6123:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "6185:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "6200:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6214:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "6204:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6229:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "6264:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "6275:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "6260:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6260:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "6284:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "6239:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6239:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "6229:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "6312:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "6327:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6341:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "6331:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6357:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "6392:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "6403:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "6388:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6388:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "6412:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "6367:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6367:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "6357:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "6440:126:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "6455:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6469:2:18", | |
"type": "", | |
"value": "64" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "6459:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6485:71:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "6528:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "6539:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "6524:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6524:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "6548:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address_payable", | |
"nodeType": "YulIdentifier", | |
"src": "6495:28:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6495:61:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "6485:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_addresst_uint256t_address_payable", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "6067:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "6078:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "6090:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "6098:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "6106:6:18", | |
"type": "" | |
} | |
], | |
"src": "6005:568:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6653:204:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6699:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6708:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6711:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "6701:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6701:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "6701:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "6674:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "6683:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "6670:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6670:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6695:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "6666:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6666:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "6663:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "6725:125:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "6740:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6754:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "6744:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6769:71:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "6812:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "6823:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "6808:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6808:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "6832:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_bool_fromMemory", | |
"nodeType": "YulIdentifier", | |
"src": "6779:28:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6779:61:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "6769:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_bool_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "6623:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "6634:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "6646:6:18", | |
"type": "" | |
} | |
], | |
"src": "6579:278:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6928:195:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6974:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6983:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6986:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "6976:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6976:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "6976:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "6949:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "6958:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "6945:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6945:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6970:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "6941:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6941:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "6938:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "7000:116:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7015:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7029:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "7019:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7044:62:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "7078:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "7089:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "7074:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7074:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "7098:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_bytes4", | |
"nodeType": "YulIdentifier", | |
"src": "7054:19:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7054:52:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "7044:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_bytes4", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "6898:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "6909:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "6921:6:18", | |
"type": "" | |
} | |
], | |
"src": "6863:260:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7205:299:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7251:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7260:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7263:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "7253:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7253:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "7253:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "7226:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "7235:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "7222:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7222:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7247:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "7218:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7218:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "7215:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "7277:220:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7292:45:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "7323:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7334:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "7319:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7319:17:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "7306:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7306:31:18" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "7296:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7384:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7393:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7396:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "7386:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7386:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "7386:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "7356:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7364:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "7353:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7353:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "7350:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7414:73:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "7459:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "7470:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "7455:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7455:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "7479:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "7424:30:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7424:63:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "7414:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "7175:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "7186:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "7198:6:18", | |
"type": "" | |
} | |
], | |
"src": "7129:375:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7618:442:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7664:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7673:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7676:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "7666:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7666:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "7666:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "7639:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "7648:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "7635:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7635:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7660:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "7631:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7631:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "7628:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "7690:235:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7705:45:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "7736:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7747:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "7732:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7732:17:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "7719:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7719:31:18" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "7709:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7797:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7806:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7809:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "7799:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7799:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "7799:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "7769:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7777:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "7766:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7766:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "7763:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7827:88:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "7887:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "7898:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "7883:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7883:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "7907:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_struct$_NFTItem_$3223_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "7837:45:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7837:78:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "7827:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "7935:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7950:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7964:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "7954:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7980:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "8015:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "8026:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "8011:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8011:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "8035:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "7990:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7990:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "7980:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_struct$_NFTItem_$3223_memory_ptrt_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "7580:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "7591:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "7603:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "7611:6:18", | |
"type": "" | |
} | |
], | |
"src": "7510:550:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "8191:570:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "8237:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8246:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8249:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "8239:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8239:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "8239:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "8212:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "8221:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "8208:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8208:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8233:2:18", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "8204:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8204:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "8201:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "8263:235:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "8278:45:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "8309:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8320:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "8305:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8305:17:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "8292:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8292:31:18" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "8282:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "8370:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8379:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8382:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "8372:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8372:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "8372:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "8342:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8350:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "8339:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8339:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "8336:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8400:88:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "8460:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "8471:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "8456:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8456:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "8480:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_struct$_NFTItem_$3223_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "8410:45:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8410:78:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "8400:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "8508:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "8523:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8537:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "8527:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8553:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "8588:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "8599:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "8584:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8584:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "8608:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "8563:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8563:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "8553:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "8636:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "8651:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8665:2:18", | |
"type": "", | |
"value": "64" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "8655:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8681:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "8716:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "8727:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "8712:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8712:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "8736:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "8691:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8691:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "8681:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_struct$_NFTItem_$3223_memory_ptrt_uint256t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "8145:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "8156:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "8168:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "8176:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "8184:6:18", | |
"type": "" | |
} | |
], | |
"src": "8066:695:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "8833:196:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "8879:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8888:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8891:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "8881:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8881:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "8881:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "8854:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "8863:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "8850:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8850:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8875:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "8846:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8846:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "8843:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "8905:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "8920:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8934:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "8924:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8949:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "8984:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "8995:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "8980:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8980:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "9004:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "8959:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8959:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "8949:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "8803:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "8814:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "8826:6:18", | |
"type": "" | |
} | |
], | |
"src": "8767:262:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "9145:555:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "9191:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9200:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9203:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "9193:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9193:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "9193:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "9166:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "9175:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "9162:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9162:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9187:2:18", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "9158:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9158:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "9155:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "9217:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "9232:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9246:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "9236:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "9261:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "9296:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "9307:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "9292:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9292:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "9316:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "9271:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9271:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "9261:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "9344:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "9359:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9373:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "9363:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "9389:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "9424:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "9435:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "9420:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9420:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "9444:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "9399:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9399:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "9389:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "9472:221:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "9487:46:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "9518:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9529:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "9514:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9514:18:18" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "9501:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9501:32:18" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "9491:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "9580:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9589:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9592:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "9582:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9582:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "9582:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "9552:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9560:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "9549:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9549:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "9546:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "9610:73:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "9655:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "9666:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "9651:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9651:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "9675:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "9620:30:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9620:63:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "9610:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_uint256t_addresst_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "9099:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "9110:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "9122:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "9130:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "9138:6:18", | |
"type": "" | |
} | |
], | |
"src": "9035:665:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "9806:452:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "9852:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9861:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9864:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "9854:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9854:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "9854:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "9827:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "9836:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "9823:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9823:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9848:2:18", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "9819:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9819:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "9816:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "9878:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "9893:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9907:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "9897:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "9922:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "9957:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "9968:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "9953:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9953:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "9977:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "9932:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9932:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "9922:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "10005:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "10020:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10034:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "10024:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "10050:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "10085:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "10096:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10081:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10081:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "10105:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "10060:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10060:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "10050:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "10133:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "10148:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10162:2:18", | |
"type": "", | |
"value": "64" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "10152:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "10178:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "10213:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "10224:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10209:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10209:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "10233:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "10188:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10188:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "10178:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_uint256t_addresst_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "9760:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "9771:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "9783:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "9791:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "9799:6:18", | |
"type": "" | |
} | |
], | |
"src": "9706:552:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "10347:324:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "10393:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10402:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10405:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "10395:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10395:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "10395:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "10368:7:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "10377:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "10364:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10364:23:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10389:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "10360:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10360:32:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "10357:2:18" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "10419:117:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "10434:15:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10448:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "10438:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "10463:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "10498:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "10509:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10494:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10494:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "10518:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "10473:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10473:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "10463:6:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "10546:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "10561:16:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10575:2:18", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "10565:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "10591:63:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "10626:9:18" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "10637:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10622:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10622:22:18" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "10646:7:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "10601:20:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10601:53:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "10591:6:18" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_uint256t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "10309:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "10320:7:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "10332:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "10340:6:18", | |
"type": "" | |
} | |
], | |
"src": "10264:407:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "10807:126:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "10817:110:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "10915:6:18" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "10923:3:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "10831:83:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10831:96:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "updatedPos", | |
"nodeType": "YulIdentifier", | |
"src": "10817:10:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encodeUpdatedPos_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "10780:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "10788:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "updatedPos", | |
"nodeType": "YulTypedName", | |
"src": "10796:10:18", | |
"type": "" | |
} | |
], | |
"src": "10677:256:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "11012:74:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "11029:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "11073:5:18" | |
} | |
], | |
"functionName": { | |
"name": "convert_t_address_payable_to_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "11034:38:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11034:45:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "11022:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11022:58:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "11022:58:18" | |
} | |
] | |
}, | |
"name": "abi_encode_t_address_payable_to_t_address_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "11000:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "11007:3:18", | |
"type": "" | |
} | |
], | |
"src": "10939:147:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "11147:53:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "11164:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "11187:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "11169:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11169:24:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "11157:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11157:37:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "11157:37:18" | |
} | |
] | |
}, | |
"name": "abi_encode_t_address_to_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "11135:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "11142:3:18", | |
"type": "" | |
} | |
], | |
"src": "11092:108:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "11271:53:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "11288:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "11311:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "11293:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11293:24:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "11281:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11281:37:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "11281:37:18" | |
} | |
] | |
}, | |
"name": "abi_encode_t_address_to_t_address_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "11259:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "11266:3:18", | |
"type": "" | |
} | |
], | |
"src": "11206:118:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "11538:927:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "11548:93:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "11635:5:18" | |
} | |
], | |
"functionName": { | |
"name": "array_length_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "11562:72:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11562:79:18" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "11552:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "11650:108:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "11746:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "11751:6:18" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "11657:88:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11657:101:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "11650:3:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "11767:20:18", | |
"value": { | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "11784:3:18" | |
}, | |
"variables": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "11771:9:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "11796:39:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "11812:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "11821:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "11829:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "11817:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11817:17:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "11808:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11808:27:18" | |
}, | |
"variables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "11800:4:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "11844:96:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "11934:5:18" | |
} | |
], | |
"functionName": { | |
"name": "array_dataslot_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "11859:74:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11859:81:18" | |
}, | |
"variables": [ | |
{ | |
"name": "baseRef", | |
"nodeType": "YulTypedName", | |
"src": "11848:7:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "11949:21:18", | |
"value": { | |
"name": "baseRef", | |
"nodeType": "YulIdentifier", | |
"src": "11963:7:18" | |
}, | |
"variables": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulTypedName", | |
"src": "11953:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "12039:381:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12060:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "12069:4:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "12075:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "12065:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12065:20:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "12053:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12053:33:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "12053:33:18" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "12099:34:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "12126:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "12120:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12120:13:18" | |
}, | |
"variables": [ | |
{ | |
"name": "elementValue0", | |
"nodeType": "YulTypedName", | |
"src": "12103:13:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "12146:122:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "elementValue0", | |
"nodeType": "YulIdentifier", | |
"src": "12248:13:18" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "12263:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encodeUpdatedPos_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "12154:93:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12154:114:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "12146:4:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "12281:95:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "12369:6:18" | |
} | |
], | |
"functionName": { | |
"name": "array_nextElement_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "12291:77:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12291:85:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "12281:6:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "12389:21:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12400:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12405:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "12396:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12396:14:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12389:3:18" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "12001:1:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "12004:6:18" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "11998:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11998:13:18" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "12012:18:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "12014:14:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "12023:1:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12026:1:18", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "12019:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12019:9:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "12014:1:18" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "11983:14:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "11985:10:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "11994:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "11989:1:18", | |
"type": "" | |
} | |
] | |
} | |
] | |
}, | |
"src": "11979:441:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "12429:11:18", | |
"value": { | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "12436:4:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12429:3:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "12449:10:18", | |
"value": { | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12456:3:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "12449:3:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "11517:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "11524:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "11533:3:18", | |
"type": "" | |
} | |
], | |
"src": "11374:1091:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "12689:937:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "12699:93:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "12786:5:18" | |
} | |
], | |
"functionName": { | |
"name": "array_length_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "12713:72:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12713:79:18" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "12703:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "12801:118:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12907:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "12912:6:18" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "12808:98:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12808:111:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12801:3:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "12928:20:18", | |
"value": { | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12945:3:18" | |
}, | |
"variables": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "12932:9:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "12957:39:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12973:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "12982:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12990:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "12978:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12978:17:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "12969:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12969:27:18" | |
}, | |
"variables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "12961:4:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "13005:96:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "13095:5:18" | |
} | |
], | |
"functionName": { | |
"name": "array_dataslot_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "13020:74:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13020:81:18" | |
}, | |
"variables": [ | |
{ | |
"name": "baseRef", | |
"nodeType": "YulTypedName", | |
"src": "13009:7:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "13110:21:18", | |
"value": { | |
"name": "baseRef", | |
"nodeType": "YulIdentifier", | |
"src": "13124:7:18" | |
}, | |
"variables": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulTypedName", | |
"src": "13114:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "13200:381:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13221:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "13230:4:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "13236:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "13226:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13226:20:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "13214:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13214:33:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "13214:33:18" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "13260:34:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "13287:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "13281:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13281:13:18" | |
}, | |
"variables": [ | |
{ | |
"name": "elementValue0", | |
"nodeType": "YulTypedName", | |
"src": "13264:13:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13307:122:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "elementValue0", | |
"nodeType": "YulIdentifier", | |
"src": "13409:13:18" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "13424:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encodeUpdatedPos_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "13315:93:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13315:114:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "13307:4:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13442:95:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "13530:6:18" | |
} | |
], | |
"functionName": { | |
"name": "array_nextElement_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "13452:77:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13452:85:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "13442:6:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13550:21:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13561:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "13566:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "13557:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13557:14:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13550:3:18" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "13162:1:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "13165:6:18" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "13159:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13159:13:18" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "13173:18:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13175:14:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "13184:1:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "13187:1:18", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "13180:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13180:9:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "13175:1:18" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "13144:14:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "13146:10:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "13155:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "13150:1:18", | |
"type": "" | |
} | |
] | |
} | |
] | |
}, | |
"src": "13140:441:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13590:11:18", | |
"value": { | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "13597:4:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13590:3:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13610:10:18", | |
"value": { | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13617:3:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "13610:3:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "12668:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "12675:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "12684:3:18", | |
"type": "" | |
} | |
], | |
"src": "12515:1111:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "13691:50:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13708:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "13728:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_bool", | |
"nodeType": "YulIdentifier", | |
"src": "13713:14:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13713:21:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "13701:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13701:34:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "13701:34:18" | |
} | |
] | |
}, | |
"name": "abi_encode_t_bool_to_t_bool_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "13679:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "13686:3:18", | |
"type": "" | |
} | |
], | |
"src": "13632:109:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "13837:91:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13854:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "13915:5:18" | |
} | |
], | |
"functionName": { | |
"name": "convert_t_contract$_ManagerInterface_$3310_to_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "13859:55:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13859:62:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "13847:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13847:75:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "13847:75:18" | |
} | |
] | |
}, | |
"name": "abi_encode_t_contract$_ManagerInterface_$3310_to_t_address_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "13825:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "13832:3:18", | |
"type": "" | |
} | |
], | |
"src": "13747:181:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "14016:262:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "14026:53:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "14073:5:18" | |
} | |
], | |
"functionName": { | |
"name": "array_length_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "14040:32:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14040:39:18" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "14030:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "14088:68:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14144:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "14149:6:18" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "14095:48:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14095:61:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14088:3:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "14191:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14198:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14187:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14187:16:18" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14205:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "14210:6:18" | |
} | |
], | |
"functionName": { | |
"name": "copy_memory_to_memory", | |
"nodeType": "YulIdentifier", | |
"src": "14165:21:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14165:52:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "14165:52:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "14226:46:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14237:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "14264:6:18" | |
} | |
], | |
"functionName": { | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulIdentifier", | |
"src": "14242:21:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14242:29:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14233:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14233:39:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "14226:3:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "13997:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "14004:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "14012:3:18", | |
"type": "" | |
} | |
], | |
"src": "13934:344:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "14376:272:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "14386:53:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "14433:5:18" | |
} | |
], | |
"functionName": { | |
"name": "array_length_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "14400:32:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14400:39:18" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "14390:6:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "14448:78:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14514:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "14519:6:18" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "14455:58:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14455:71:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14448:3:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "14561:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14568:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14557:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14557:16:18" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14575:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "14580:6:18" | |
} | |
], | |
"functionName": { | |
"name": "copy_memory_to_memory", | |
"nodeType": "YulIdentifier", | |
"src": "14535:21:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14535:52:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "14535:52:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "14596:46:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14607:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "14634:6:18" | |
} | |
], | |
"functionName": { | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulIdentifier", | |
"src": "14612:21:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14612:29:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14603:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14603:39:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "14596:3:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "14357:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "14364:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "14372:3:18", | |
"type": "" | |
} | |
], | |
"src": "14284:364:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "14800:173:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "14810:74:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14876:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14881:2:18", | |
"type": "", | |
"value": "21" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "14817:58:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14817:67:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14810:3:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14905:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14910:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14901:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14901:11:18" | |
}, | |
{ | |
"kind": "string", | |
"nodeType": "YulLiteral", | |
"src": "14914:23:18", | |
"type": "", | |
"value": "require Safe Address." | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "14894:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14894:44:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "14894:44:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "14948:19:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14959:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14964:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14955:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14955:12:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "14948:3:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_stringliteral_b7bfaafacc8b958ee5991d7093d15af0d696976dbb47153aa280824a640c2f4b_to_t_string_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "14788:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "14796:3:18", | |
"type": "" | |
} | |
], | |
"src": "14654:319:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "15133:838:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "15143:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "15159:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15164:4:18", | |
"type": "", | |
"value": "0x80" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15155:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15155:14:18" | |
}, | |
"variables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "15147:4:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "15179:167:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "15217:43:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "15247:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15254:4:18", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15243:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15243:16:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "15237:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15237:23:18" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "15221:12:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "15307:12:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "15325:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15330:4:18", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15321:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15321:14:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "15273:33:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15273:63:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "15273:63:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "15356:236:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "15392:43:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "15422:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15429:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15418:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15418:16:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "15412:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15412:23:18" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "15396:12:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "15460:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15465:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15456:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15456:14:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15476:4:18" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "15482:3:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "15472:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15472:14:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "15449:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15449:38:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "15449:38:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "15500:81:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "15562:12:18" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15576:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "15508:53:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15508:73:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15500:4:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "15602:164:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "15637:43:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "15667:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15674:4:18", | |
"type": "", | |
"value": "0x40" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15663:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15663:16:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "15657:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15657:23:18" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "15641:12:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "15727:12:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "15745:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15750:4:18", | |
"type": "", | |
"value": "0x40" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15741:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15741:14:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "15693:33:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15693:63:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "15693:63:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "15776:168:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "15815:43:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "15845:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15852:4:18", | |
"type": "", | |
"value": "0x60" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15841:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15841:16:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "15835:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15835:23:18" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "15819:12:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "15905:12:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "15923:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15928:4:18", | |
"type": "", | |
"value": "0x60" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15919:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15919:14:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "15871:33:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15871:63:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "15871:63:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "15954:11:18", | |
"value": { | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15961:4:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "15954:3:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "15112:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "15119:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "15128:3:18", | |
"type": "" | |
} | |
], | |
"src": "15019:952:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "16141:838:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "16151:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "16167:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16172:4:18", | |
"type": "", | |
"value": "0x80" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "16163:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16163:14:18" | |
}, | |
"variables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "16155:4:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "16187:167:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "16225:43:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "16255:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16262:4:18", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "16251:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16251:16:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "16245:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16245:23:18" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "16229:12:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "16315:12:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "16333:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16338:4:18", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "16329:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16329:14:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "16281:33:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16281:63:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16281:63:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "16364:236:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "16400:43:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "16430:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16437:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "16426:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16426:16:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "16420:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16420:23:18" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "16404:12:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "16468:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16473:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "16464:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16464:14:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "16484:4:18" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "16490:3:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "16480:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16480:14:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "16457:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16457:38:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16457:38:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "16508:81:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "16570:12:18" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "16584:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "16516:53:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16516:73:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "16508:4:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "16610:164:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "16645:43:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "16675:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16682:4:18", | |
"type": "", | |
"value": "0x40" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "16671:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16671:16:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "16665:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16665:23:18" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "16649:12:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "16735:12:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "16753:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16758:4:18", | |
"type": "", | |
"value": "0x40" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "16749:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16749:14:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "16701:33:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16701:63:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16701:63:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "16784:168:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "16823:43:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "16853:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16860:4:18", | |
"type": "", | |
"value": "0x60" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "16849:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16849:16:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "16843:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16843:23:18" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "16827:12:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "16913:12:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "16931:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16936:4:18", | |
"type": "", | |
"value": "0x60" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "16927:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16927:14:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "16879:33:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16879:63:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16879:63:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "16962:11:18", | |
"value": { | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "16969:4:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "16962:3:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "16120:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "16127:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "16136:3:18", | |
"type": "" | |
} | |
], | |
"src": "16017:962:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "17137:563:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "17147:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "17163:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17168:4:18", | |
"type": "", | |
"value": "0x40" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "17159:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17159:14:18" | |
}, | |
"variables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "17151:4:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "17183:315:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "17218:43:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "17248:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17255:4:18", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "17244:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17244:16:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "17238:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17238:23:18" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "17222:12:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "17286:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17291:4:18", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "17282:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17282:14:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "17302:4:18" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "17308:3:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "17298:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17298:14:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "17275:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17275:38:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "17275:38:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "17326:161:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "17468:12:18" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "17482:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "17334:133:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17334:153:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "17326:4:18" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "17508:165:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "17544:43:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "17574:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17581:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "17570:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17570:16:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "17564:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17564:23:18" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "17548:12:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "17634:12:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "17652:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17657:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "17648:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17648:14:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_address_to_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "17600:33:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17600:63:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "17600:63:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "17683:11:18", | |
"value": { | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "17690:4:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "17683:3:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_struct$_User_$3229_memory_ptr_to_t_struct$_User_$3229_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "17116:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "17123:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "17132:3:18", | |
"type": "" | |
} | |
], | |
"src": "17019:681:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "17761:53:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "17778:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "17801:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "17783:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17783:24:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "17771:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17771:37:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "17771:37:18" | |
} | |
] | |
}, | |
"name": "abi_encode_t_uint256_to_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "17749:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "17756:3:18", | |
"type": "" | |
} | |
], | |
"src": "17706:108:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "17885:53:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "17902:3:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "17925:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "17907:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17907:24:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "17895:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17895:37:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "17895:37:18" | |
} | |
] | |
}, | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "17873:5:18", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "17880:3:18", | |
"type": "" | |
} | |
], | |
"src": "17820:118:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18042:124:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "18052:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "18064:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18075:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18060:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18060:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "18052:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "18132:6:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "18145:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18156:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18141:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18141:17:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_address_to_t_address_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "18088:43:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18088:71:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "18088:71:18" | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "18014:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "18026:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "18037:4:18", | |
"type": "" | |
} | |
], | |
"src": "17944:222:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18278:132:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "18288:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "18300:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18311:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18296:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18296:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "18288:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "18376:6:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "18389:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18400:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18385:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18385:17:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_address_payable_to_t_address_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "18324:51:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18324:79:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "18324:79:18" | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "18250:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "18262:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "18273:4:18", | |
"type": "" | |
} | |
], | |
"src": "18172:238:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18550:214:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "18560:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "18572:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18583:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18568:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18568:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "18560:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "18648:6:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "18661:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18672:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18657:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18657:17:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_address_payable_to_t_address_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "18596:51:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18596:79:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "18596:79:18" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "18729:6:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "18742:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18753:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18738:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18738:18:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "18685:43:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18685:72:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "18685:72:18" | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "18514:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "18526:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "18534:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "18545:4:18", | |
"type": "" | |
} | |
], | |
"src": "18416:348:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18968:275:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "18978:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "18990:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19001:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18986:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18986:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "18978:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "19025:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19036:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19021:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19021:17:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "19044:4:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "19050:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "19040:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19040:20:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "19014:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19014:47:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "19014:47:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "19070:166:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "19222:6:18" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "19231:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "19078:143:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19078:158:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "19070:4:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "18940:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "18952:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "18963:4:18", | |
"type": "" | |
} | |
], | |
"src": "18770:473:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "19341:118:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "19351:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "19363:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19374:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19359:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19359:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "19351:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "19425:6:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "19438:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19449:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19434:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19434:17:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_bool_to_t_bool_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "19387:37:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19387:65:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "19387:65:18" | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "19313:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "19325:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "19336:4:18", | |
"type": "" | |
} | |
], | |
"src": "19249:210:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "19588:149:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "19598:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "19610:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19621:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19606:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19606:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "19598:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "19703:6:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "19716:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19727:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19712:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19712:17:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_contract$_ManagerInterface_$3310_to_t_address_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "19634:68:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19634:96:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "19634:96:18" | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_contract$_ManagerInterface_$3310__to_t_address__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "19560:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "19572:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "19583:4:18", | |
"type": "" | |
} | |
], | |
"src": "19465:272:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "19861:195:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "19871:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "19883:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19894:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19879:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19879:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "19871:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "19918:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19929:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19914:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19914:17:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "19937:4:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "19943:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "19933:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19933:20:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "19907:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19907:47:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "19907:47:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "19963:86:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "20035:6:18" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "20044:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "19971:63:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19971:78:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "19963:4:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "19833:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "19845:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "19856:4:18", | |
"type": "" | |
} | |
], | |
"src": "19743:313:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "20233:248:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "20243:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "20255:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "20266:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "20251:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20251:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "20243:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "20290:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "20301:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "20286:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20286:17:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "20309:4:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "20315:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "20305:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20305:20:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "20279:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20279:47:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "20279:47:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "20335:139:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "20469:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_stringliteral_b7bfaafacc8b958ee5991d7093d15af0d696976dbb47153aa280824a640c2f4b_to_t_string_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "20343:124:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20343:131:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "20335:4:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_stringliteral_b7bfaafacc8b958ee5991d7093d15af0d696976dbb47153aa280824a640c2f4b__to_t_string_memory_ptr__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "20213:9:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "20228:4:18", | |
"type": "" | |
} | |
], | |
"src": "20062:419:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "20635:225:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "20645:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "20657:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "20668:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "20653:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20653:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "20645:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "20692:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "20703:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "20688:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20688:17:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "20711:4:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "20717:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "20707:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20707:20:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "20681:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20681:47:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "20681:47:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "20737:116:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "20839:6:18" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "20848:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "20745:93:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20745:108:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "20737:4:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_struct$_NFTItem_$3223_memory_ptr__to_t_struct$_NFTItem_$3223_memory_ptr__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "20607:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "20619:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "20630:4:18", | |
"type": "" | |
} | |
], | |
"src": "20487:373:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "21008:219:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "21018:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21030:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21041:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21026:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21026:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "21018:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21065:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21076:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21061:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21061:17:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "21084:4:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21090:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "21080:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21080:20:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "21054:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21054:47:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "21054:47:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "21110:110:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "21206:6:18" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "21215:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_struct$_User_$3229_memory_ptr_to_t_struct$_User_$3229_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "21118:87:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21118:102:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "21110:4:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_struct$_User_$3229_memory_ptr__to_t_struct$_User_$3229_memory_ptr__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "20980:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "20992:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "21003:4:18", | |
"type": "" | |
} | |
], | |
"src": "20866:361:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "21331:124:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "21341:26:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21353:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21364:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21349:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21349:18:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "21341:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "21421:6:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21434:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21445:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21430:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21430:17:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "21377:43:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21377:71:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "21377:71:18" | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "21303:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "21315:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "21326:4:18", | |
"type": "" | |
} | |
], | |
"src": "21233:222:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "21663:442:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "21673:27:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21685:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21696:3:18", | |
"type": "", | |
"value": "128" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21681:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21681:19:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "21673:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "21754:6:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21767:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21778:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21763:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21763:17:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "21710:43:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21710:71:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "21710:71:18" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21802:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21813:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21798:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21798:18:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "21822:4:18" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21828:9:18" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "21818:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21818:20:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "21791:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21791:48:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "21791:48:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "21848:86:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "21920:6:18" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "21929:4:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "21856:63:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21856:78:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "21848:4:18" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "21988:6:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "22001:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22012:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21997:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21997:18:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "21944:43:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21944:72:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "21944:72:18" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value3", | |
"nodeType": "YulIdentifier", | |
"src": "22070:6:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "22083:9:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22094:2:18", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "22079:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22079:18:18" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "22026:43:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22026:72:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "22026:72:18" | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_uint256_t_string_memory_ptr_t_uint256_t_uint256__to_t_uint256_t_string_memory_ptr_t_uint256_t_uint256__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "21611:9:18", | |
"type": "" | |
}, | |
{ | |
"name": "value3", | |
"nodeType": "YulTypedName", | |
"src": "21623:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "21631:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "21639:6:18", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "21647:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "21658:4:18", | |
"type": "" | |
} | |
], | |
"src": "21461:644:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "22151:238:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "22161:19:18", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22177:2:18", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "22171:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22171:9:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "22161:6:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "22189:35:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "22211:6:18" | |
}, | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "22219:4:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "22207:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22207:17:18" | |
}, | |
"variables": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulTypedName", | |
"src": "22193:10:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "22335:17:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error", | |
"nodeType": "YulIdentifier", | |
"src": "22337:11:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22337:13:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "22337:13:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "22278:10:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22290:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "22275:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22275:34:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "22314:10:18" | |
}, | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "22326:6:18" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "22311:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22311:22:18" | |
} | |
], | |
"functionName": { | |
"name": "or", | |
"nodeType": "YulIdentifier", | |
"src": "22272:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22272:62:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "22269:2:18" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22368:2:18", | |
"type": "", | |
"value": "64" | |
}, | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "22372:10:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "22361:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22361:22:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "22361:22:18" | |
} | |
] | |
}, | |
"name": "allocateMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "22135:4:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "22144:6:18", | |
"type": "" | |
} | |
], | |
"src": "22111:278:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "22461:260:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "22566:17:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error", | |
"nodeType": "YulIdentifier", | |
"src": "22568:11:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22568:13:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "22568:13:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "22538:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22546:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "22535:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22535:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "22532:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "22613:41:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "22629:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22637:4:18", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "22625:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22625:17:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22648:4:18", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "22644:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22644:9:18" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "22621:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22621:33:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "22613:4:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "22691:23:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "22703:4:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22709:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "22699:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22699:15:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "22691:4:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_allocation_size_t_bytes_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "22445:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "22456:4:18", | |
"type": "" | |
} | |
], | |
"src": "22395:326:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "22794:260:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "22899:17:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error", | |
"nodeType": "YulIdentifier", | |
"src": "22901:11:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22901:13:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "22901:13:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "22871:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22879:18:18", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "22868:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22868:30:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "22865:2:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "22946:41:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "22962:6:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22970:4:18", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "22958:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22958:17:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22981:4:18", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "22977:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22977:9:18" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "22954:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22954:33:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "22946:4:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "23024:23:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "23036:4:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "23042:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "23032:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "23032:15:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "23024:4:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_allocation_size_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "22778:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "22789:4:18", | |
"type": "" | |
} | |
], | |
"src": "22727:327:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "23157:60:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "23167:11:18", | |
"value": { | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "23175:3:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "23167:4:18" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "23188:22:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "23200:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "23205:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "23196:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "23196:14:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "23188:4:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_dataslot_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulTypedName", | |
"src": "23144:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "23152:4:18", | |
"type": "" | |
} | |
], | |
"src": "23060:157:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "23322:40:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "23333:22:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "23349:5:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "23343:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "23343:12:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "23333:6:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_length_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "23305:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "23315:6:18", | |
"type": "" | |
} | |
], | |
"src": "23223:139:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "23427:40:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "23438:22:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "23454:5:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "23448:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "23448:12:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "23438:6:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_length_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "23410:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "23420:6:18", | |
"type": "" | |
} | |
], | |
"src": "23368:99:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "23573:38:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "23583:22:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "23595:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "23600:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "23591:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "23591:14:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "next", | |
"nodeType": "YulIdentifier", | |
"src": "23583:4:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_nextElement_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulTypedName", | |
"src": "23560:3:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "next", | |
"nodeType": "YulTypedName", | |
"src": "23568:4:18", | |
"type": "" | |
} | |
], | |
"src": "23473:138:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "23743:73:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "23760:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "23765:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "23753:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "23753:19:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "23753:19:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "23781:29:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "23800:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "23805:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "23796:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "23796:14:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulIdentifier", | |
"src": "23781:11:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_storeLengthForEncoding_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "23715:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "23720:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulTypedName", | |
"src": "23731:11:18", | |
"type": "" | |
} | |
], | |
"src": "23617:199:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "23958:73:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "23975:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "23980:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "23968:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "23968:19:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "23968:19:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "23996:29:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "24015:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "24020:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "24011:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24011:14:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulIdentifier", | |
"src": "23996:11:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_storeLengthForEncoding_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "23930:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "23935:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulTypedName", | |
"src": "23946:11:18", | |
"type": "" | |
} | |
], | |
"src": "23822:209:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "24123:73:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "24140:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "24145:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "24133:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24133:19:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "24133:19:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "24161:29:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "24180:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "24185:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "24176:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24176:14:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulIdentifier", | |
"src": "24161:11:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_storeLengthForEncoding_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "24095:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "24100:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulTypedName", | |
"src": "24111:11:18", | |
"type": "" | |
} | |
], | |
"src": "24037:159:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "24298:73:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "24315:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "24320:6:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "24308:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24308:19:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "24308:19:18" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "24336:29:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "24355:3:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "24360:4:18", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "24351:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24351:14:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulIdentifier", | |
"src": "24336:11:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "24270:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "24275:6:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulTypedName", | |
"src": "24286:11:18", | |
"type": "" | |
} | |
], | |
"src": "24202:169:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "24422:51:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "24432:35:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "24461:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "24443:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24443:24:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "24432:7:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "24404:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "24414:7:18", | |
"type": "" | |
} | |
], | |
"src": "24377:96:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "24532:51:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "24542:35:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "24571:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "24553:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24553:24:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "24542:7:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_address_payable", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "24514:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "24524:7:18", | |
"type": "" | |
} | |
], | |
"src": "24479:104:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "24631:48:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "24641:32:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "24666:5:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "24659:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24659:13:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "24652:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24652:21:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "24641:7:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_bool", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "24613:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "24623:7:18", | |
"type": "" | |
} | |
], | |
"src": "24589:90:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "24729:105:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "24739:89:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "24754:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "24761:66:18", | |
"type": "", | |
"value": "0xffffffff00000000000000000000000000000000000000000000000000000000" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "24750:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24750:78:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "24739:7:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_bytes4", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "24711:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "24721:7:18", | |
"type": "" | |
} | |
], | |
"src": "24685:149:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "24885:81:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "24895:65:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "24910:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "24917:42:18", | |
"type": "", | |
"value": "0xffffffffffffffffffffffffffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "24906:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "24906:54:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "24895:7:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "24867:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "24877:7:18", | |
"type": "" | |
} | |
], | |
"src": "24840:126:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "25017:32:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "25027:16:18", | |
"value": { | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "25038:5:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "25027:7:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "24999:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "25009:7:18", | |
"type": "" | |
} | |
], | |
"src": "24972:77:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "25123:66:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "25133:50:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "25177:5:18" | |
} | |
], | |
"functionName": { | |
"name": "convert_t_uint160_to_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "25146:30:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "25146:37:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulIdentifier", | |
"src": "25133:9:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "convert_t_address_payable_to_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "25103:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulTypedName", | |
"src": "25113:9:18", | |
"type": "" | |
} | |
], | |
"src": "25055:134:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "25280:91:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "25290:75:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "25359:5:18" | |
} | |
], | |
"functionName": { | |
"name": "convert_t_contract$_ManagerInterface_$3310_to_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "25303:55:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "25303:62:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulIdentifier", | |
"src": "25290:9:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "convert_t_contract$_ManagerInterface_$3310_to_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "25260:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulTypedName", | |
"src": "25270:9:18", | |
"type": "" | |
} | |
], | |
"src": "25195:176:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "25462:53:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "25472:37:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "25503:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "25485:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "25485:24:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulIdentifier", | |
"src": "25472:9:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "convert_t_contract$_ManagerInterface_$3310_to_t_uint160", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "25442:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulTypedName", | |
"src": "25452:9:18", | |
"type": "" | |
} | |
], | |
"src": "25377:138:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "25581:66:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "25591:50:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "25635:5:18" | |
} | |
], | |
"functionName": { | |
"name": "convert_t_uint160_to_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "25604:30:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "25604:37:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulIdentifier", | |
"src": "25591:9:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "convert_t_uint160_to_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "25561:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulTypedName", | |
"src": "25571:9:18", | |
"type": "" | |
} | |
], | |
"src": "25521:126:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "25713:53:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "25723:37:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "25754:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "25736:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "25736:24:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulIdentifier", | |
"src": "25723:9:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "convert_t_uint160_to_t_uint160", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "25693:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulTypedName", | |
"src": "25703:9:18", | |
"type": "" | |
} | |
], | |
"src": "25653:113:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "25823:103:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "25846:3:18" | |
}, | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "25851:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "25856:6:18" | |
} | |
], | |
"functionName": { | |
"name": "calldatacopy", | |
"nodeType": "YulIdentifier", | |
"src": "25833:12:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "25833:30:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "25833:30:18" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "25904:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "25909:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "25900:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "25900:16:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "25918:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "25893:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "25893:27:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "25893:27:18" | |
} | |
] | |
}, | |
"name": "copy_calldata_to_memory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "25805:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "25810:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "25815:6:18", | |
"type": "" | |
} | |
], | |
"src": "25772:154:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "25981:258:18", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "25991:10:18", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26000:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "25995:1:18", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26060:63:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "26085:3:18" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "26090:1:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "26081:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26081:11:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "26104:3:18" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "26109:1:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "26100:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26100:11:18" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "26094:5:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26094:18:18" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "26074:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26074:39:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "26074:39:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "26021:1:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "26024:6:18" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "26018:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26018:13:18" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "26032:19:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "26034:15:18", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "26043:1:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26046:2:18", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "26039:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26039:10:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "26034:1:18" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "26014:3:18", | |
"statements": [] | |
}, | |
"src": "26010:113:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26157:76:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "26207:3:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "26212:6:18" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "26203:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26203:16:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26221:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "26196:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26196:27:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "26196:27:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "26138:1:18" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "26141:6:18" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "26135:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26135:13:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "26132:2:18" | |
} | |
] | |
}, | |
"name": "copy_memory_to_memory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "25963:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "25968:3:18", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "25973:6:18", | |
"type": "" | |
} | |
], | |
"src": "25932:307:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26268:25:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "invalid", | |
"nodeType": "YulIdentifier", | |
"src": "26278:7:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26278:9:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "26278:9:18" | |
} | |
] | |
}, | |
"name": "panic_error", | |
"nodeType": "YulFunctionDefinition", | |
"src": "26245:48:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26347:54:18", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "26357:38:18", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "26375:5:18" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26382:2:18", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "26371:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26371:14:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26391:2:18", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "26387:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26387:7:18" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "26367:3:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26367:28:18" | |
}, | |
"variableNames": [ | |
{ | |
"name": "result", | |
"nodeType": "YulIdentifier", | |
"src": "26357:6:18" | |
} | |
] | |
} | |
] | |
}, | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "26330:5:18", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "result", | |
"nodeType": "YulTypedName", | |
"src": "26340:6:18", | |
"type": "" | |
} | |
], | |
"src": "26299:102:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26450:79:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26507:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26516:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26519:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "26509:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26509:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "26509:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "26473:5:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "26498:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "26480:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26480:24:18" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "26470:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26470:35:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "26463:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26463:43:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "26460:2:18" | |
} | |
] | |
}, | |
"name": "validator_revert_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "26443:5:18", | |
"type": "" | |
} | |
], | |
"src": "26407:122:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26586:87:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26651:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26660:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26663:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "26653:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26653:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "26653:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "26609:5:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "26642:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_address_payable", | |
"nodeType": "YulIdentifier", | |
"src": "26616:25:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26616:32:18" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "26606:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26606:43:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "26599:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26599:51:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "26596:2:18" | |
} | |
] | |
}, | |
"name": "validator_revert_t_address_payable", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "26579:5:18", | |
"type": "" | |
} | |
], | |
"src": "26535:138:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26719:76:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26773:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26782:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26785:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "26775:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26775:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "26775:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "26742:5:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "26764:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_bool", | |
"nodeType": "YulIdentifier", | |
"src": "26749:14:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26749:21:18" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "26739:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26739:32:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "26732:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26732:40:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "26729:2:18" | |
} | |
] | |
}, | |
"name": "validator_revert_t_bool", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "26712:5:18", | |
"type": "" | |
} | |
], | |
"src": "26679:116:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26843:78:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26899:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26908:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "26911:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "26901:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26901:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "26901:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "26866:5:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "26890:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_bytes4", | |
"nodeType": "YulIdentifier", | |
"src": "26873:16:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26873:23:18" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "26863:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26863:34:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "26856:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26856:42:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "26853:2:18" | |
} | |
] | |
}, | |
"name": "validator_revert_t_bytes4", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "26836:5:18", | |
"type": "" | |
} | |
], | |
"src": "26801:120:18" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "26970:79:18", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "27027:16:18", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "27036:1:18", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "27039:1:18", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "27029:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "27029:12:18" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "27029:12:18" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "26993:5:18" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "27018:5:18" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "27000:17:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "27000:24:18" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "26990:2:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26990:35:18" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "26983:6:18" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "26983:43:18" | |
}, | |
"nodeType": "YulIf", | |
"src": "26980:2:18" | |
} | |
] | |
}, | |
"name": "validator_revert_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "26963:5:18", | |
"type": "" | |
} | |
], | |
"src": "26927:122:18" | |
} | |
] | |
}, | |
"contents": "{\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocateMemory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert(0, 0) }\n copy_calldata_to_memory(src, dst, length)\n }\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocateMemory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert(0, 0) }\n copy_calldata_to_memory(src, dst, length)\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_t_address_payable(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address_payable(value)\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n // string\n function abi_decode_t_string_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_string_memory_ptr(add(offset, 0x20), length, end)\n }\n\n // struct NFTItem\n function abi_decode_t_struct$_NFTItem_$3223_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x80) { revert(0, 0) }\n value := allocateMemory(0x80)\n\n {\n // tokenId\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_uint256(add(headStart, offset), end))\n\n }\n\n {\n // class\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n mstore(add(value, 0x20), abi_decode_t_string_memory_ptr(add(headStart, offset), end))\n\n }\n\n {\n // rare\n\n let offset := 64\n\n mstore(add(value, 0x40), abi_decode_t_uint256(add(headStart, offset), end))\n\n }\n\n {\n // bornTime\n\n let offset := 96\n\n mstore(add(value, 0x60), abi_decode_t_uint256(add(headStart, offset), end))\n\n }\n\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value3 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_uint256t_address_payable(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_struct$_NFTItem_$3223_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value0 := abi_decode_t_struct$_NFTItem_$3223_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_struct$_NFTItem_$3223_memory_ptrt_uint256t_address(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value0 := abi_decode_t_struct$_NFTItem_$3223_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_addresst_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value2 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encodeUpdatedPos_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr(value0, pos) -> updatedPos {\n updatedPos := abi_encode_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr(value0, pos)\n }\n\n function abi_encode_t_address_payable_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_address_payable_to_t_address(value))\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n // struct NFTItem[] -> struct NFTItem[]\n function abi_encode_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(pos, length)\n let headStart := pos\n let tail := add(pos, mul(length, 0x20))\n let baseRef := array_dataslot_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, headStart))\n let elementValue0 := mload(srcPtr)\n tail := abi_encodeUpdatedPos_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr(elementValue0, tail)\n srcPtr := array_nextElement_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(srcPtr)\n pos := add(pos, 0x20)\n }\n pos := tail\n end := pos\n }\n\n // struct NFTItem[] -> struct NFTItem[]\n function abi_encode_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let headStart := pos\n let tail := add(pos, mul(length, 0x20))\n let baseRef := array_dataslot_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, headStart))\n let elementValue0 := mload(srcPtr)\n tail := abi_encodeUpdatedPos_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr(elementValue0, tail)\n srcPtr := array_nextElement_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(srcPtr)\n pos := add(pos, 0x20)\n }\n pos := tail\n end := pos\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_contract$_ManagerInterface_$3310_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ManagerInterface_$3310_to_t_address(value))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_stringliteral_b7bfaafacc8b958ee5991d7093d15af0d696976dbb47153aa280824a640c2f4b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 21)\n\n mstore(add(pos, 0), \"require Safe Address.\")\n\n end := add(pos, 32)\n }\n\n // struct NFTItem -> struct NFTItem\n function abi_encode_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr(value, pos) -> end {\n let tail := add(pos, 0x80)\n\n {\n // tokenId\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n }\n\n {\n // class\n\n let memberValue0 := mload(add(value, 0x20))\n\n mstore(add(pos, 0x20), sub(tail, pos))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr(memberValue0, tail)\n\n }\n\n {\n // rare\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x40))\n }\n\n {\n // bornTime\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x60))\n }\n\n end := tail\n }\n\n // struct NFTItem -> struct NFTItem\n function abi_encode_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr_fromStack(value, pos) -> end {\n let tail := add(pos, 0x80)\n\n {\n // tokenId\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n }\n\n {\n // class\n\n let memberValue0 := mload(add(value, 0x20))\n\n mstore(add(pos, 0x20), sub(tail, pos))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr(memberValue0, tail)\n\n }\n\n {\n // rare\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x40))\n }\n\n {\n // bornTime\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x60))\n }\n\n end := tail\n }\n\n // struct User -> struct User\n function abi_encode_t_struct$_User_$3229_memory_ptr_to_t_struct$_User_$3229_memory_ptr_fromStack(value, pos) -> end {\n let tail := add(pos, 0x40)\n\n {\n // nfts\n\n let memberValue0 := mload(add(value, 0x00))\n\n mstore(add(pos, 0x00), sub(tail, pos))\n tail := abi_encode_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n {\n // owner\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n end := tail\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_payable_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_payable_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_contract$_ManagerInterface_$3310__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ManagerInterface_$3310_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_b7bfaafacc8b958ee5991d7093d15af0d696976dbb47153aa280824a640c2f4b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b7bfaafacc8b958ee5991d7093d15af0d696976dbb47153aa280824a640c2f4b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_struct$_NFTItem_$3223_memory_ptr__to_t_struct$_NFTItem_$3223_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_struct$_NFTItem_$3223_memory_ptr_to_t_struct$_NFTItem_$3223_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_struct$_User_$3229_memory_ptr__to_t_struct$_User_$3229_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_struct$_User_$3229_memory_ptr_to_t_struct$_User_$3229_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_uint256_t_string_memory_ptr_t_uint256_t_uint256__to_t_uint256_t_string_memory_ptr_t_uint256_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function allocateMemory(size) -> memPtr {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, size)\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() }\n mstore(64, newFreePtr)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error() }\n\n // round up\n size := and(add(length, 0x1f), not(0x1f))\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error() }\n\n // round up\n size := and(add(length, 0x1f), not(0x1f))\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function array_dataslot_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function array_length_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_nextElement_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_NFTItem_$3223_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_address_payable_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function convert_t_contract$_ManagerInterface_$3310_to_t_address(value) -> converted {\n converted := convert_t_contract$_ManagerInterface_$3310_to_t_uint160(value)\n }\n\n function convert_t_contract$_ManagerInterface_$3310_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(value)\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(value)\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function panic_error() {\n invalid()\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n", | |
"id": 18, | |
"language": "Yul", | |
"name": "#utility.yul" | |
} | |
], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "608060405234801561001057600080fd5b50600436106102065760003560e01c80636c0360eb1161011a578063b88d4fde116100ad578063d432419d1161007c578063d432419d146105e7578063dfea879c14610617578063e985e9c514610633578063f2fde38b14610663578063f50313bb1461067f57610206565b8063b88d4fde14610563578063c1fc755f1461057f578063c87b56dd1461059b578063d0ebdbe7146105cb57610206565b8063715018a6116100e9578063715018a6146105015780638da5cb5b1461050b57806395d89b4114610529578063a22cb4651461054757610206565b80636c0360eb146104655780636e4b73c1146104835780636f77926b146104a157806370a08231146104d157610206565b80633b60383f1161019d5780634f66baa31161016c5780634f66baa31461039d5780634f6ccce7146103b957806351b23756146103e9578063576f7ea7146104055780636352211e1461043557610206565b80633b60383f1461032b57806342842e0e14610347578063481c6a75146103635780634e6f5b601461038157610206565b806318160ddd116101d957806318160ddd146102a557806323b872dd146102c35780632f745c59146102df57806339a0c6f91461030f57610206565b806301ffc9a71461020b57806306fdde031461023b578063081812fc14610259578063095ea7b314610289575b600080fd5b610225600480360381019061022091906145c6565b6106b2565b6040516102329190614ba3565b60405180910390f35b610243610719565b6040516102509190614bd9565b60405180910390f35b610273600480360381019061026e91906146eb565b6107bb565b6040516102809190614b22565b60405180910390f35b6102a3600480360381019061029e9190614512565b610856565b005b6102ad61099a565b6040516102ba9190614c5f565b60405180910390f35b6102dd60048036038101906102d8919061440c565b6109ab565b005b6102f960048036038101906102f49190614512565b610a21565b6040516103069190614c5f565b60405180910390f35b610329600480360381019061032491906145ef565b610a7c565b005b61034560048036038101906103409190614684565b610b37565b005b610361600480360381019061035c919061440c565b610d45565b005b61036b610d65565b6040516103789190614bbe565b60405180910390f35b61039b6004803603810190610396919061454e565b610d8b565b005b6103b760048036038101906103b29190614714565b610f4f565b005b6103d360048036038101906103ce91906146eb565b611224565b6040516103e09190614c5f565b60405180910390f35b61040360048036038101906103fe9190614512565b611247565b005b61041f600480360381019061041a91906146eb565b61133f565b60405161042c9190614c1b565b60405180910390f35b61044f600480360381019061044a91906146eb565b61142c565b60405161045c9190614b22565b60405180910390f35b61046d611463565b60405161047a9190614bd9565b60405180910390f35b61048b611505565b6040516104989190614c5f565b60405180910390f35b6104bb60048036038101906104b691906143a7565b611527565b6040516104c89190614c3d565b60405180910390f35b6104eb60048036038101906104e691906143a7565b6116f5565b6040516104f89190614c5f565b60405180910390f35b6105096117ca565b005b61051361193a565b6040516105209190614b22565b60405180910390f35b610531611964565b60405161053e9190614bd9565b60405180910390f35b610561600480360381019061055c91906144d6565b611a06565b005b61057d6004803603810190610578919061445b565b611bbc565b005b6105996004803603810190610594919061477b565b611c34565b005b6105b560048036038101906105b091906146eb565b611efa565b6040516105c29190614bd9565b60405180910390f35b6105e560048036038101906105e091906143a7565b6121cb565b005b61060160048036038101906105fc91906147ca565b6122be565b60405161060e9190614b81565b60405180910390f35b610631600480360381019061062c9190614630565b61243f565b005b61064d600480360381019061064891906143d0565b6125ac565b60405161065a9190614ba3565b60405180910390f35b61067d600480360381019061067891906143a7565b6127de565b005b610699600480360381019061069491906146eb565b6129d3565b6040516106a99493929190614c7a565b60405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107b15780601f10610786576101008083540402835291602001916107b1565b820191906000526020600020905b81548152906001019060200180831161079457829003601f168201915b5050505050905090565b60006107c682612a9b565b61081b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615114602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108618261142c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806151986021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610907612ab8565b73ffffffffffffffffffffffffffffffffffffffff161480610936575061093581610930612ab8565b6125ac565b5b61098b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806150676038913960400191505060405180910390fd5b6109958383612ac0565b505050565b60006109a66002612b79565b905090565b6109bc6109b6612ab8565b82612b8e565b610a11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806151b96031913960400191505060405180910390fd5b610a1c838383612c82565b505050565b6000610a7482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612ef990919063ffffffff16565b905092915050565b610a84612ab8565b73ffffffffffffffffffffffffffffffffffffffff16610aa261193a565b73ffffffffffffffffffffffffffffffffffffffff1614610b2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610b3481612f13565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067336040518263ffffffff1660e01b8152600401610b929190614b3d565b60206040518083038186803b158015610baa57600080fd5b505afa158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be2919061459d565b610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890614bfb565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600001849080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001019080519060200190610cfb929190614082565b5060408201518160020155606082015181600301555050827fd9b763a807f47441d882fcc6187643b980718d68914a6b4c61f2fc41c601412660405160405180910390a250505050565b610d6083838360405180602001604052806000815250611bbc565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d93612ab8565b73ffffffffffffffffffffffffffffffffffffffff16610db161193a565b73ffffffffffffffffffffffffffffffffffffffff1614610e3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ebb578073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610eb5573d6000803e3d6000fd5b50610f4a565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b8152600401610ef6929190614b58565b602060405180830381600087803b158015610f1057600080fd5b505af1158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f48919061459d565b505b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067336040518263ffffffff1660e01b8152600401610faa9190614b3d565b60206040518083038186803b158015610fc257600080fd5b505afa158015610fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa919061459d565b611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090614bfb565b60405180910390fd5b6000600c600085815260200190815260200160002060405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110fc5780601f106110d1576101008083540402835291602001916110fc565b820191906000526020600020905b8154815290600101906020018083116110df57829003601f168201915b505050505081526020016002820154815260200160038201548152505090508181602001819052506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b81600001805490508110156111e4578582600001828154811061118957fe5b90600052602060002090600402016000015414156111d757838260000182815481106111b157fe5b906000526020600020906004020160010190805190602001906111d5929190614082565b505b808060010191505061116a565b50847f286a02fcc77019847462367df19526aaecfcca5f1bde1ff230d91682f1a393ed846040516112159190614bd9565b60405180910390a25050505050565b60008061123b836002612f2d90919063ffffffff16565b50905080915050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067336040518263ffffffff1660e01b81526004016112a29190614b3d565b60206040518083038186803b1580156112ba57600080fd5b505afa1580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f2919061459d565b611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132890614bfb565b60405180910390fd5b61133b8282612f59565b5050565b611347614110565b600c600083815260200190815260200160002060405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114085780601f106113dd57610100808354040283529160200191611408565b820191906000526020600020905b8154815290600101906020018083116113eb57829003601f168201915b50505050508152602001600282015481526020016003820154815250509050919050565b600061145c826040518060600160405280602981526020016150c9602991396002612f779092919063ffffffff16565b9050919050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114fb5780601f106114d0576101008083540402835291602001916114fb565b820191906000526020600020905b8154815290600101906020018083116114de57829003601f168201915b5050505050905090565b6000611522600161151461099a565b612f9690919063ffffffff16565b905090565b61152f614138565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052908160008201805480602002602001604051908101604052809291908181526020016000905b82821015611690578382906000526020600020906004020160405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116645780601f1061163957610100808354040283529160200191611664565b820191906000526020600020905b81548152906001019060200180831161164757829003601f168201915b50505050508152602001600282015481526020016003820154815250508152602001906001019061159e565b5050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061509f602a913960400191505060405180910390fd5b6117c3600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061301e565b9050919050565b6117d2612ab8565b73ffffffffffffffffffffffffffffffffffffffff166117f061193a565b73ffffffffffffffffffffffffffffffffffffffff1614611879576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119fc5780601f106119d1576101008083540402835291602001916119fc565b820191906000526020600020905b8154815290600101906020018083116119df57829003601f168201915b5050505050905090565b611a0e612ab8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aaf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060056000611abc612ab8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611b69612ab8565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b611bcd611bc7612ab8565b83612b8e565b611c22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806151b96031913960400191505060405180910390fd5b611c2e84848484613033565b50505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067336040518263ffffffff1660e01b8152600401611c8f9190614b3d565b60206040518083038186803b158015611ca757600080fd5b505afa158015611cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdf919061459d565b611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590614bfb565b60405180910390fd5b6000600c600085815260200190815260200160002060405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611de15780601f10611db657610100808354040283529160200191611de1565b820191906000526020600020905b815481529060010190602001808311611dc457829003601f168201915b50505050508152602001600282015481526020016003820154815250509050818160400181815250506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8160000180549050811015611eba5785826000018281548110611e6f57fe5b9060005260206000209060040201600001541415611ead5783826000018281548110611e9757fe5b9060005260206000209060040201600201819055505b8080600101915050611e50565b50847f3e6471163b9bd9273bca15749e86b160143691cd406cd9a36cfbf3b40a8d219a84604051611eeb9190614c5f565b60405180910390a25050505050565b6060611f0582612a9b565b611f5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615169602f913960400191505060405180910390fd5b6000600960008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120035780601f10611fd857610100808354040283529160200191612003565b820191906000526020600020905b815481529060010190602001808311611fe657829003601f168201915b505050505090506000612014611463565b905060008151141561202a5781925050506121c6565b6000825111156120fb5780826040516020018083805190602001908083835b6020831061206c5780518252602082019150602081019050602083039250612049565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083106120bd578051825260208201915060208101905060208303925061209a565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506121c6565b80612105856130a5565b6040516020018083805190602001908083835b6020831061213b5780518252602082019150602081019050602083039250612118565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831061218c5780518252602082019150602081019050602083039250612169565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050505b919050565b6121d3612ab8565b73ffffffffffffffffffffffffffffffffffffffff166121f161193a565b73ffffffffffffffffffffffffffffffffffffffff161461227a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060006122ca61099a565b67ffffffffffffffff811180156122e057600080fd5b5060405190808252806020026020018201604052801561231a57816020015b612307614110565b8152602001906001900390816122ff5790505b5090506000808590505b84811161243357600c600082815260200190815260200160002060405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123ec5780601f106123c1576101008083540402835291602001916123ec565b820191906000526020600020905b8154815290600101906020018083116123cf57829003601f168201915b505050505081526020016002820154815260200160038201548152505083838151811061241557fe5b60200260200101819052508160010191508080600101915050612324565b50819250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067336040518263ffffffff1660e01b815260040161249a9190614b3d565b60206040518083038186803b1580156124b257600080fd5b505afa1580156124c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ea919061459d565b612529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252090614bfb565b60405180910390fd5b81600c6000838152602001908152602001600020600082015181600001556020820151816001019080519060200190612563929190614082565b506040820151816002015560608201518160030155905050807f6dc4dee3932e28ced4d8de0fb73f19911ecfdaf3a849e0f2a98763b905f9f47360405160405180910390a25050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561263757600080fd5b505afa15801561264b573d6000803e3d6000fd5b505050506040513d602081101561266157600080fd5b81019080805190602001909291905050508061273d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d76f3067846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561270157600080fd5b505afa158015612715573d6000803e3d6000fd5b505050506040513d602081101561272b57600080fd5b81019080805190602001909291905050505b1561274b57600190506127d8565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b92915050565b6127e6612ab8565b73ffffffffffffffffffffffffffffffffffffffff1661280461193a565b73ffffffffffffffffffffffffffffffffffffffff161461288d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612913576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614fcb6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c602052806000526040600020600091509050806000015490806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a855780601f10612a5a57610100808354040283529160200191612a85565b820191906000526020600020905b815481529060010190602001808311612a6857829003601f168201915b5050505050908060020154908060030154905084565b6000612ab18260026131ec90919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612b338361142c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612b8782600001613206565b9050919050565b6000612b9982612a9b565b612bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061503b602c913960400191505060405180910390fd5b6000612bf98361142c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612c6857508373ffffffffffffffffffffffffffffffffffffffff16612c50846107bb565b73ffffffffffffffffffffffffffffffffffffffff16145b80612c795750612c7881856125ac565b5b91505092915050565b612c8d838383613217565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8160000180549050811015612d605782826000018281548110612cf257fe5b9060005260206000209060040201600001541415612d5357816000018181548110612d1957fe5b9060005260206000209060040201600080820160009055600182016000612d409190614168565b6002820160009055600382016000905550505b8080600101915050612cd3565b506000600c600084815260200190815260200160002060405180608001604052908160008201548152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e245780601f10612df957610100808354040283529160200191612e24565b820191906000526020600020905b815481529060010190602001808311612e0757829003601f168201915b505050505081526020016002820154815260200160038201548152505090506000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600001829080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001019080519060200190612eda929190614082565b5060408201518160020155606082015181600301555050505050505050565b6000612f08836000018361345a565b60001c905092915050565b80600a9080519060200190612f29929190614082565b5050565b600080600080612f4086600001866134dd565b915091508160001c8160001c9350935050509250929050565b612f73828260405180602001604052806000815250613576565b5050565b6000612f8a846000018460001b846135e7565b60001c90509392505050565b600080828401905083811015613014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061302c826000016136dd565b9050919050565b61303e848484612c82565b61304a848484846136ee565b61309f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180614f996032913960400191505060405180910390fd5b50505050565b606060008214156130ed576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506131e7565b600082905060005b60008214613117578080600101915050600a828161310f57fe5b0491506130f5565b60008167ffffffffffffffff8111801561313057600080fd5b506040519080825280601f01601f1916602001820160405280156131635781602001600182028036833780820191505090505b50905060006001830390508593505b600084146131df57600a848161318457fe5b0660300160f81b8282806001900393508151811061319e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84816131d757fe5b049350613172565b819450505050505b919050565b60006131fe836000018360001b613907565b905092915050565b600081600001805490509050919050565b8273ffffffffffffffffffffffffffffffffffffffff166132378261142c565b73ffffffffffffffffffffffffffffffffffffffff16146132a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806151406029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614ff16024913960400191505060405180910390fd5b61333483838361392a565b61333f600082612ac0565b61339081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061392f90919063ffffffff16565b506133e281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061394990919063ffffffff16565b506133f9818360026139639092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000818360000180549050116134bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614f776022913960400191505060405180910390fd5b8260000182815481106134ca57fe5b9060005260206000200154905092915050565b6000808284600001805490501161353f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806150f26022913960400191505060405180910390fd5b600084600001848154811061355057fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6135808383613998565b61358d60008484846136ee565b6135e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180614f996032913960400191505060405180910390fd5b505050565b600080846001016000858152602001908152602001600020549050600081141583906136ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613673578082015181840152602081019050613658565b50505050905090810190601f1680156136a05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106136c157fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b600061370f8473ffffffffffffffffffffffffffffffffffffffff16613b8c565b61371c57600190506138ff565b600061388663150b7a0260e01b613731612ab8565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156137b557808201518184015260208101905061379a565b50505050905090810190601f1680156137e25780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001614f99603291398773ffffffffffffffffffffffffffffffffffffffff16613b9f9092919063ffffffff16565b9050600081806020019051602081101561389f57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b505050565b6000613941836000018360001b613bb7565b905092915050565b600061395b836000018360001b613c9f565b905092915050565b600061398f846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613d0f565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613a4481612a9b565b15613ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b613ac36000838361392a565b613b1481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061394990919063ffffffff16565b50613b2b818360026139639092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b6060613bae8484600085613deb565b90509392505050565b60008083600101600084815260200190815260200160002054905060008114613c935760006001820390506000600186600001805490500390506000866000018281548110613c0257fe5b9060005260206000200154905080876000018481548110613c1f57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613c5757fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613c99565b60009150505b92915050565b6000613cab8383613f93565b613d04578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613d09565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613db657846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613de4565b82856000016001830381548110613dc957fe5b90600052602060002090600202016001018190555060009150505b9392505050565b606082471015613e46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806150156026913960400191505060405180910390fd5b613e4f85613b8c565b613ec1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613f105780518252602082019150602081019050602083039250613eed565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f72576040519150601f19603f3d011682016040523d82523d6000602084013e613f77565b606091505b5091509150613f87828286613fb6565b92505050949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60608315613fc65782905061407b565b600083511115613fd95782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614040578082015181840152602081019050614025565b50505050905090810190601f16801561406d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826140b857600085556140ff565b82601f106140d157805160ff19168380011785556140ff565b828001600101855582156140ff579182015b828111156140fe5782518255916020019190600101906140e3565b5b50905061410c91906141b0565b5090565b6040518060800160405280600081526020016060815260200160008152602001600081525090565b604051806040016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b50805460018160011615610100020316600290046000825580601f1061418e57506141ad565b601f0160209004906000526020600020908101906141ac91906141b0565b5b50565b5b808211156141c95760008160009055506001016141b1565b5090565b60006141e06141db84614cf7565b614cc6565b9050828152602081018484840111156141f857600080fd5b614203848285614eae565b509392505050565b600061421e61421984614d27565b614cc6565b90508281526020810184848401111561423657600080fd5b614241848285614eae565b509392505050565b60008135905061425881614f03565b92915050565b60008135905061426d81614f1a565b92915050565b60008135905061428281614f31565b92915050565b60008151905061429781614f31565b92915050565b6000813590506142ac81614f48565b92915050565b600082601f8301126142c357600080fd5b81356142d38482602086016141cd565b91505092915050565b600082601f8301126142ed57600080fd5b81356142fd84826020860161420b565b91505092915050565b60006080828403121561431857600080fd5b6143226080614cc6565b9050600061433284828501614392565b600083015250602082013567ffffffffffffffff81111561435257600080fd5b61435e848285016142dc565b602083015250604061437284828501614392565b604083015250606061438684828501614392565b60608301525092915050565b6000813590506143a181614f5f565b92915050565b6000602082840312156143b957600080fd5b60006143c784828501614249565b91505092915050565b600080604083850312156143e357600080fd5b60006143f185828601614249565b925050602061440285828601614249565b9150509250929050565b60008060006060848603121561442157600080fd5b600061442f86828701614249565b935050602061444086828701614249565b925050604061445186828701614392565b9150509250925092565b6000806000806080858703121561447157600080fd5b600061447f87828801614249565b945050602061449087828801614249565b93505060406144a187828801614392565b925050606085013567ffffffffffffffff8111156144be57600080fd5b6144ca878288016142b2565b91505092959194509250565b600080604083850312156144e957600080fd5b60006144f785828601614249565b925050602061450885828601614273565b9150509250929050565b6000806040838503121561452557600080fd5b600061453385828601614249565b925050602061454485828601614392565b9150509250929050565b60008060006060848603121561456357600080fd5b600061457186828701614249565b935050602061458286828701614392565b92505060406145938682870161425e565b9150509250925092565b6000602082840312156145af57600080fd5b60006145bd84828501614288565b91505092915050565b6000602082840312156145d857600080fd5b60006145e68482850161429d565b91505092915050565b60006020828403121561460157600080fd5b600082013567ffffffffffffffff81111561461b57600080fd5b614627848285016142dc565b91505092915050565b6000806040838503121561464357600080fd5b600083013567ffffffffffffffff81111561465d57600080fd5b61466985828601614306565b925050602061467a85828601614392565b9150509250929050565b60008060006060848603121561469957600080fd5b600084013567ffffffffffffffff8111156146b357600080fd5b6146bf86828701614306565b93505060206146d086828701614392565b92505060406146e186828701614249565b9150509250925092565b6000602082840312156146fd57600080fd5b600061470b84828501614392565b91505092915050565b60008060006060848603121561472957600080fd5b600061473786828701614392565b935050602061474886828701614249565b925050604084013567ffffffffffffffff81111561476557600080fd5b614771868287016142dc565b9150509250925092565b60008060006060848603121561479057600080fd5b600061479e86828701614392565b93505060206147af86828701614249565b92505060406147c086828701614392565b9150509250925092565b600080604083850312156147dd57600080fd5b60006147eb85828601614392565b92505060206147fc85828601614392565b9150509250929050565b60006148128383614a01565b905092915050565b61482381614e54565b82525050565b61483281614dce565b82525050565b61484181614dce565b82525050565b600061485282614d67565b61485c8185614d8a565b93508360208202850161486e85614d57565b8060005b858110156148aa578484038952815161488b8582614806565b945061489683614d7d565b925060208a01995050600181019050614872565b50829750879550505050505092915050565b60006148c782614d67565b6148d18185614d9b565b9350836020820285016148e385614d57565b8060005b8581101561491f57848403895281516149008582614806565b945061490b83614d7d565b925060208a019950506001810190506148e7565b50829750879550505050505092915050565b61493a81614df2565b82525050565b61494981614e66565b82525050565b600061495a82614d72565b6149648185614dac565b9350614974818560208601614ebd565b61497d81614ef2565b840191505092915050565b600061499382614d72565b61499d8185614dbd565b93506149ad818560208601614ebd565b6149b681614ef2565b840191505092915050565b60006149ce601583614dbd565b91507f72657175697265205361666520416464726573732e00000000000000000000006000830152602082019050919050565b6000608083016000830151614a196000860182614b04565b5060208301518482036020860152614a31828261494f565b9150506040830151614a466040860182614b04565b506060830151614a596060860182614b04565b508091505092915050565b6000608083016000830151614a7c6000860182614b04565b5060208301518482036020860152614a94828261494f565b9150506040830151614aa96040860182614b04565b506060830151614abc6060860182614b04565b508091505092915050565b60006040830160008301518482036000860152614ae48282614847565b9150506020830151614af96020860182614829565b508091505092915050565b614b0d81614e4a565b82525050565b614b1c81614e4a565b82525050565b6000602082019050614b376000830184614838565b92915050565b6000602082019050614b52600083018461481a565b92915050565b6000604082019050614b6d600083018561481a565b614b7a6020830184614b13565b9392505050565b60006020820190508181036000830152614b9b81846148bc565b905092915050565b6000602082019050614bb86000830184614931565b92915050565b6000602082019050614bd36000830184614940565b92915050565b60006020820190508181036000830152614bf38184614988565b905092915050565b60006020820190508181036000830152614c14816149c1565b9050919050565b60006020820190508181036000830152614c358184614a64565b905092915050565b60006020820190508181036000830152614c578184614ac7565b905092915050565b6000602082019050614c746000830184614b13565b92915050565b6000608082019050614c8f6000830187614b13565b8181036020830152614ca18186614988565b9050614cb06040830185614b13565b614cbd6060830184614b13565b95945050505050565b6000604051905081810181811067ffffffffffffffff82111715614ced57614cec614ef0565b5b8060405250919050565b600067ffffffffffffffff821115614d1257614d11614ef0565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614d4257614d41614ef0565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614dd982614e2a565b9050919050565b6000614deb82614e2a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000614e5f82614e8a565b9050919050565b6000614e7182614e78565b9050919050565b6000614e8382614e2a565b9050919050565b6000614e9582614e9c565b9050919050565b6000614ea782614e2a565b9050919050565b82818337600083830152505050565b60005b83811015614edb578082015181840152602081019050614ec0565b83811115614eea576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b614f0c81614dce565b8114614f1757600080fd5b50565b614f2381614de0565b8114614f2e57600080fd5b50565b614f3a81614df2565b8114614f4557600080fd5b50565b614f5181614dfe565b8114614f5c57600080fd5b50565b614f6881614e4a565b8114614f7357600080fd5b5056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220cca1940b3dd0f007ee337a747fbf2172af01842537d19be6dfc8d3087bb52ef164736f6c63430007060033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x206 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C0360EB GT PUSH2 0x11A JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xD432419D GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD432419D EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0xDFEA879C EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x663 JUMPI DUP1 PUSH4 0xF50313BB EQ PUSH2 0x67F JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0xC1FC755F EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x59B JUMPI DUP1 PUSH4 0xD0EBDBE7 EQ PUSH2 0x5CB JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x501 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x529 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x547 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0x6E4B73C1 EQ PUSH2 0x483 JUMPI DUP1 PUSH4 0x6F77926B EQ PUSH2 0x4A1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4D1 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x3B60383F GT PUSH2 0x19D JUMPI DUP1 PUSH4 0x4F66BAA3 GT PUSH2 0x16C JUMPI DUP1 PUSH4 0x4F66BAA3 EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x51B23756 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x576F7EA7 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x435 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x3B60383F EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x481C6A75 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x4E6F5B60 EQ PUSH2 0x381 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x39A0C6F9 EQ PUSH2 0x30F JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x289 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x225 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x45C6 JUMP JUMPDEST PUSH2 0x6B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x232 SWAP2 SWAP1 PUSH2 0x4BA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x719 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x250 SWAP2 SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x26E SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x7BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x280 SWAP2 SWAP1 PUSH2 0x4B22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x29E SWAP2 SWAP1 PUSH2 0x4512 JUMP JUMPDEST PUSH2 0x856 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2AD PUSH2 0x99A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2BA SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D8 SWAP2 SWAP1 PUSH2 0x440C JUMP JUMPDEST PUSH2 0x9AB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F4 SWAP2 SWAP1 PUSH2 0x4512 JUMP JUMPDEST PUSH2 0xA21 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x306 SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x329 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x324 SWAP2 SWAP1 PUSH2 0x45EF JUMP JUMPDEST PUSH2 0xA7C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x345 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x340 SWAP2 SWAP1 PUSH2 0x4684 JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x361 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x35C SWAP2 SWAP1 PUSH2 0x440C JUMP JUMPDEST PUSH2 0xD45 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x36B PUSH2 0xD65 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x378 SWAP2 SWAP1 PUSH2 0x4BBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x396 SWAP2 SWAP1 PUSH2 0x454E JUMP JUMPDEST PUSH2 0xD8B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3B2 SWAP2 SWAP1 PUSH2 0x4714 JUMP JUMPDEST PUSH2 0xF4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CE SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x1224 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E0 SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3FE SWAP2 SWAP1 PUSH2 0x4512 JUMP JUMPDEST PUSH2 0x1247 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41A SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x133F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42C SWAP2 SWAP1 PUSH2 0x4C1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x44F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x44A SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x142C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x45C SWAP2 SWAP1 PUSH2 0x4B22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x46D PUSH2 0x1463 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x47A SWAP2 SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x48B PUSH2 0x1505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x498 SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4BB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4B6 SWAP2 SWAP1 PUSH2 0x43A7 JUMP JUMPDEST PUSH2 0x1527 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4C8 SWAP2 SWAP1 PUSH2 0x4C3D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4EB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E6 SWAP2 SWAP1 PUSH2 0x43A7 JUMP JUMPDEST PUSH2 0x16F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x509 PUSH2 0x17CA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x513 PUSH2 0x193A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x520 SWAP2 SWAP1 PUSH2 0x4B22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x531 PUSH2 0x1964 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53E SWAP2 SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x561 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x55C SWAP2 SWAP1 PUSH2 0x44D6 JUMP JUMPDEST PUSH2 0x1A06 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x57D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x578 SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x1BBC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x599 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x594 SWAP2 SWAP1 PUSH2 0x477B JUMP JUMPDEST PUSH2 0x1C34 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5B0 SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x1EFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C2 SWAP2 SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5E0 SWAP2 SWAP1 PUSH2 0x43A7 JUMP JUMPDEST PUSH2 0x21CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x601 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5FC SWAP2 SWAP1 PUSH2 0x47CA JUMP JUMPDEST PUSH2 0x22BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x60E SWAP2 SWAP1 PUSH2 0x4B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x631 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62C SWAP2 SWAP1 PUSH2 0x4630 JUMP JUMPDEST PUSH2 0x243F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x64D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x648 SWAP2 SWAP1 PUSH2 0x43D0 JUMP JUMPDEST PUSH2 0x25AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65A SWAP2 SWAP1 PUSH2 0x4BA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x67D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x678 SWAP2 SWAP1 PUSH2 0x43A7 JUMP JUMPDEST PUSH2 0x27DE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x699 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x694 SWAP2 SWAP1 PUSH2 0x46EB JUMP JUMPDEST PUSH2 0x29D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6A9 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C7A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x7B1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x786 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x794 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C6 DUP3 PUSH2 0x2A9B JUMP JUMPDEST PUSH2 0x81B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5114 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x861 DUP3 PUSH2 0x142C JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x8E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5198 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x907 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x936 JUMPI POP PUSH2 0x935 DUP2 PUSH2 0x930 PUSH2 0x2AB8 JUMP JUMPDEST PUSH2 0x25AC JUMP JUMPDEST JUMPDEST PUSH2 0x98B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5067 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x995 DUP4 DUP4 PUSH2 0x2AC0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A6 PUSH1 0x2 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x9BC PUSH2 0x9B6 PUSH2 0x2AB8 JUMP JUMPDEST DUP3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0xA11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51B9 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA1C DUP4 DUP4 DUP4 PUSH2 0x2C82 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA74 DUP3 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0x2EF9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA84 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAA2 PUSH2 0x193A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB34 DUP2 PUSH2 0x2F13 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB92 SWAP2 SWAP1 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBBE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBE2 SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH2 0xC21 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC18 SWAP1 PUSH2 0x4BFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP2 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x0 ADD DUP5 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xCFB SWAP3 SWAP2 SWAP1 PUSH2 0x4082 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE POP POP DUP3 PUSH32 0xD9B763A807F47441D882FCC6187643B980718D68914A6B4C61F2FC41C6014126 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH2 0xD60 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1BBC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0xD93 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xDB1 PUSH2 0x193A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE3A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xEBB JUMPI DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP4 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xEB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0xF4A JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEF6 SWAP3 SWAP2 SWAP1 PUSH2 0x4B58 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF24 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF48 SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFAA SWAP2 SWAP1 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFD6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFFA SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH2 0x1039 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1030 SWAP1 PUSH2 0x4BFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x10FC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10D1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10FC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x10DF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP DUP2 DUP2 PUSH1 0x20 ADD DUP2 SWAP1 MSTORE POP PUSH1 0x0 PUSH1 0xD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x11E4 JUMPI DUP6 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1189 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x11D7 JUMPI DUP4 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x11B1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x11D5 SWAP3 SWAP2 SWAP1 PUSH2 0x4082 JUMP JUMPDEST POP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x116A JUMP JUMPDEST POP DUP5 PUSH32 0x286A02FCC77019847462367DF19526AAECFCCA5F1BDE1FF230D91682F1A393ED DUP5 PUSH1 0x40 MLOAD PUSH2 0x1215 SWAP2 SWAP1 PUSH2 0x4BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x123B DUP4 PUSH1 0x2 PUSH2 0x2F2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP SWAP1 POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12A2 SWAP2 SWAP1 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12F2 SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH2 0x1331 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1328 SWAP1 PUSH2 0x4BFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x133B DUP3 DUP3 PUSH2 0x2F59 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1347 PUSH2 0x4110 JUMP JUMPDEST PUSH1 0xC PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1408 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x13DD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1408 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x13EB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x145C DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x50C9 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 PUSH2 0x2F77 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x14FB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x14D0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x14FB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x14DE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1522 PUSH1 0x1 PUSH2 0x1514 PUSH2 0x99A JUMP JUMPDEST PUSH2 0x2F96 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x152F PUSH2 0x4138 JUMP JUMPDEST PUSH1 0xD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1690 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1664 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1639 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1664 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1647 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x159E JUMP JUMPDEST POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x177C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x509F PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17C3 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0x301E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x17D2 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17F0 PUSH2 0x193A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1879 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xB PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0xB PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x19FC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x19D1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x19FC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x19DF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1A0E PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1AAF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x1ABC PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B69 PUSH2 0x2AB8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x1BCD PUSH2 0x1BC7 PUSH2 0x2AB8 JUMP JUMPDEST DUP4 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x1C22 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51B9 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C2E DUP5 DUP5 DUP5 DUP5 PUSH2 0x3033 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD76F3067 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C8F SWAP2 SWAP1 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CBB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CDF SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH2 0x1D1E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D15 SWAP1 PUSH2 0x4BFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1DE1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1DB6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1DE1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1DC4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP DUP2 DUP2 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 PUSH1 0xD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x1EBA JUMPI DUP6 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1E6F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x1EAD JUMPI DUP4 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1E97 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x1E50 JUMP JUMPDEST POP DUP5 PUSH32 0x3E6471163B9BD9273BCA15749E86B160143691CD406CD9A36CFBF3B40A8D219A DUP5 PUSH1 0x40 MLOAD PUSH2 0x1EEB SWAP2 SWAP1 PUSH2 0x4C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1F05 DUP3 PUSH2 0x2A9B JUMP JUMPDEST PUSH2 0x1F5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A00000000000000000000000000000000000000000000 |
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)