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 kunalgoyal9/69dd49c643c319d4cc622c9853de2cf3 to your computer and use it in GitHub Desktop.
Save kunalgoyal9/69dd49c643c319d4cc622c9853de2cf3 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=soljson-v0.6.4+commit.1dca32f3.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b > a) return (false, 0);
return (true, a - b);
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a / b);
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a % b);
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) return 0;
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: modulo by zero");
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
return a - b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryDiv}.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a % b;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
import "../../utils/Context.sol";
import "./IERC20.sol";
import "../../math/SafeMath.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin guidelines: functions revert instead
* of returning `false` on failure. This behavior is nonetheless conventional
* and does not conflict with the expectations of ERC20 applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20 {
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
uint8 private _decimals;
/**
* @dev Sets the values for {name} and {symbol}, initializes {decimals} with
* a default value of 18.
*
* To select a different value for {decimals}, use {_setupDecimals}.
*
* All three of these values are immutable: they can only be set once during
* construction.
*/
constructor (string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
_decimals = 18;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5,05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
* called.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual returns (uint8) {
return _decimals;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(address sender, address recipient, uint256 amount) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `to` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Sets {decimals} to a value other than the default one of 18.
*
* WARNING: This function should only be called from the constructor. Most
* applications that interact with token contracts will not expect
* {decimals} to ever change, and may work incorrectly if it does.
*/
function _setupDecimals(uint8 decimals_) internal virtual {
_decimals = decimals_;
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be to transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
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.
{
"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": "60806040526000805534801561001457600080fd5b506101a5806100246000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806306661abd14610046578063a87d942c14610064578063d09de08a14610082575b600080fd5b61004e61008c565b60405161005b91906100c5565b60405180910390f35b61006c610092565b60405161007991906100c5565b60405180910390f35b61008a61009b565b005b60005481565b60008054905090565b60016000808282546100ad91906100e0565b92505081905550565b6100bf81610136565b82525050565b60006020820190506100da60008301846100b6565b92915050565b60006100eb82610136565b91506100f683610136565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561012b5761012a610140565b5b828201905092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205e500411d01a7f2d339e2a3c9c79cd28fda557912a6f7d9fef41ef5451cb372f64736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 DUP1 PUSH2 0x24 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 0x6661ABD EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xA87D942C EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0xD09DE08A EQ PUSH2 0x82 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0xC5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x79 SWAP2 SWAP1 PUSH2 0xC5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x9B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0xE0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0xBF DUP2 PUSH2 0x136 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB DUP3 PUSH2 0x136 JUMP JUMPDEST SWAP2 POP PUSH2 0xF6 DUP4 PUSH2 0x136 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x12B JUMPI PUSH2 0x12A PUSH2 0x140 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP 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 INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5E POP DIV GT 0xD0 BYTE PUSH32 0x2D339E2A3C9C79CD28FDA557912A6F7D9FEF41EF5451CB372F64736F6C634300 ADDMOD SMOD STOP CALLER ",
"sourceMap": "59:366:0:-:0;;;179:1;156:24;;59:366;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@count_4": {
"entryPoint": 140,
"id": 4,
"parameterSlots": 0,
"returnSlots": 0
},
"@getCount_20": {
"entryPoint": 146,
"id": 20,
"parameterSlots": 0,
"returnSlots": 1
},
"@increment_12": {
"entryPoint": 155,
"id": 12,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 182,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 197,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 224,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 310,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 320,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:936: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_uint256",
"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_uint256_to_t_uint256_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_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "275:43:1"
},
"nodeType": "YulFunctionCall",
"src": "275:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "275:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__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": "403:261:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "413:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "436:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "418:17:1"
},
"nodeType": "YulFunctionCall",
"src": "418:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "413:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "447:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "470:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "452:17:1"
},
"nodeType": "YulFunctionCall",
"src": "452:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "447:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "610:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "612:16:1"
},
"nodeType": "YulFunctionCall",
"src": "612:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "612:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "531:1:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "538:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "606:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "534:3:1"
},
"nodeType": "YulFunctionCall",
"src": "534:74:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "528:2:1"
},
"nodeType": "YulFunctionCall",
"src": "528:81:1"
},
"nodeType": "YulIf",
"src": "525:107:1"
},
{
"nodeType": "YulAssignment",
"src": "642:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "653:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "656:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "649:3:1"
},
"nodeType": "YulFunctionCall",
"src": "649:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "642:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "390:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "393:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "399:3:1",
"type": ""
}
],
"src": "359:305:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "715:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "725:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "736:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "725:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "697:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "707:7:1",
"type": ""
}
],
"src": "670:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "781:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "798:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "801:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "791:6:1"
},
"nodeType": "YulFunctionCall",
"src": "791:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "791:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "895:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "898:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "888:6:1"
},
"nodeType": "YulFunctionCall",
"src": "888:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "888:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "919:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "922:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "912:6:1"
},
"nodeType": "YulFunctionCall",
"src": "912:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "912:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "753:180:1"
}
]
},
"contents": "{\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 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 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}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100415760003560e01c806306661abd14610046578063a87d942c14610064578063d09de08a14610082575b600080fd5b61004e61008c565b60405161005b91906100c5565b60405180910390f35b61006c610092565b60405161007991906100c5565b60405180910390f35b61008a61009b565b005b60005481565b60008054905090565b60016000808282546100ad91906100e0565b92505081905550565b6100bf81610136565b82525050565b60006020820190506100da60008301846100b6565b92915050565b60006100eb82610136565b91506100f683610136565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561012b5761012a610140565b5b828201905092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205e500411d01a7f2d339e2a3c9c79cd28fda557912a6f7d9fef41ef5451cb372f64736f6c63430008070033",
"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 0x6661ABD EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xA87D942C EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0xD09DE08A EQ PUSH2 0x82 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0xC5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x79 SWAP2 SWAP1 PUSH2 0xC5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x9B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0xE0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0xBF DUP2 PUSH2 0x136 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB DUP3 PUSH2 0x136 JUMP JUMPDEST SWAP2 POP PUSH2 0xF6 DUP4 PUSH2 0x136 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x12B JUMPI PUSH2 0x12A PUSH2 0x140 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP 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 INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5E POP DIV GT 0xD0 BYTE PUSH32 0x2D339E2A3C9C79CD28FDA557912A6F7D9FEF41EF5451CB372F64736F6C634300 ADDMOD SMOD STOP CALLER ",
"sourceMap": "59:366:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;343:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;231:55;;;:::i;:::-;;156:24;;;;:::o;343:79::-;384:7;410:5;;403:12;;343:79;:::o;231:55::-;278:1;269:5;;:10;;;;;;;:::i;:::-;;;;;;;;231:55::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:305::-;399:3;418:20;436:1;418:20;:::i;:::-;413:25;;452:20;470:1;452:20;:::i;:::-;447:25;;606:1;538:66;534:74;531:1;528:81;525:107;;;612:18;;:::i;:::-;525:107;656:1;653;649:9;642:16;;359:305;;;;:::o;670:77::-;707:7;736:5;725:16;;670:77;;;:::o;753:180::-;801:77;798:1;791:88;898:4;895:1;888:15;922:4;919:1;912:15"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "84200",
"executionCost": "5141",
"totalCost": "89341"
},
"external": {
"count()": "2407",
"getCount()": "2437",
"increment()": "infinite"
}
},
"methodIdentifiers": {
"count()": "06661abd",
"getCount()": "a87d942c",
"increment()": "d09de08a"
}
},
"abi": [
{
"inputs": [],
"name": "count",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "increment",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "count",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "increment",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"kunal_contract.sol": "Counter"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"kunal_contract.sol": {
"keccak256": "0x0e1b2b150460ef5aa19b7a354ebeeaa88f83bfcb6e39b356ae1a7d04f8d7ff55",
"license": "MIT",
"urls": [
"bzz-raw://65e1a9b7411f25099cfeee2d051d9124cba6c168b29a19db508df36e6181a5ba",
"dweb:/ipfs/QmeYDaPYbGCw1d6Nhe8x6CuoYNjTr9UimD1jVzh4iesLDn"
]
}
},
"version": 1
}
// 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": {
"@_71": {
"entryPoint": null,
"id": 71,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": {
"entryPoint": 382,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": {
"entryPoint": 505,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32_fromMemory": {
"entryPoint": 556,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": {
"entryPoint": 579,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 660,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 691,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr": {
"entryPoint": 701,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 748,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 758,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 768,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"increment_t_uint256": {
"entryPoint": 822,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 900,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 947,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 994,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 1041,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": {
"entryPoint": 1046,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 1051,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 1056,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 1061,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"validator_revert_t_bytes32": {
"entryPoint": 1078,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:4399:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "137:631:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "147:90:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "229:6:1"
}
],
"functionName": {
"name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "172:56:1"
},
"nodeType": "YulFunctionCall",
"src": "172:64:1"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "156:15:1"
},
"nodeType": "YulFunctionCall",
"src": "156:81:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "147:5:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "246:16:1",
"value": {
"name": "array",
"nodeType": "YulIdentifier",
"src": "257:5:1"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "250:3:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "279:5:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "286:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "272:6:1"
},
"nodeType": "YulFunctionCall",
"src": "272:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "272:21:1"
},
{
"nodeType": "YulAssignment",
"src": "302:23:1",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "313:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "309:3:1"
},
"nodeType": "YulFunctionCall",
"src": "309:16:1"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "302:3:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "335:17:1",
"value": {
"name": "offset",
"nodeType": "YulIdentifier",
"src": "346:6:1"
},
"variables": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "339:3:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "401:103:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulIdentifier",
"src": "415:77:1"
},
"nodeType": "YulFunctionCall",
"src": "415:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "415:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "371:3:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "380:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "388:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "376:3:1"
},
"nodeType": "YulFunctionCall",
"src": "376:17:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "367:3:1"
},
"nodeType": "YulFunctionCall",
"src": "367:27:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "396:3:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "364:2:1"
},
"nodeType": "YulFunctionCall",
"src": "364:36:1"
},
"nodeType": "YulIf",
"src": "361:143:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "573:189:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "588:21:1",
"value": {
"name": "src",
"nodeType": "YulIdentifier",
"src": "606:3:1"
},
"variables": [
{
"name": "elementPos",
"nodeType": "YulTypedName",
"src": "592:10:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "630:3:1"
},
{
"arguments": [
{
"name": "elementPos",
"nodeType": "YulIdentifier",
"src": "667:10:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "679:3:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulIdentifier",
"src": "635:31:1"
},
"nodeType": "YulFunctionCall",
"src": "635:48:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "623:6:1"
},
"nodeType": "YulFunctionCall",
"src": "623:61:1"
},
"nodeType": "YulExpressionStatement",
"src": "623:61:1"
},
{
"nodeType": "YulAssignment",
"src": "697:21:1",
"value": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "708:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "713:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "704:3:1"
},
"nodeType": "YulFunctionCall",
"src": "704:14:1"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "697:3:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "731:21:1",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "742:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "747:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "738:3:1"
},
"nodeType": "YulFunctionCall",
"src": "738:14:1"
},
"variableNames": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "731:3:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "535:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "538:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "532:2:1"
},
"nodeType": "YulFunctionCall",
"src": "532:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "546:18:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "548:14:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "557:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "560:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "553:3:1"
},
"nodeType": "YulFunctionCall",
"src": "553:9:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "548:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "517:14:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "519:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "528:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "523:1:1",
"type": ""
}
]
}
]
},
"src": "513:249:1"
}
]
},
"name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "107:6:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "115:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "123:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "131:5:1",
"type": ""
}
],
"src": "24:744:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "879:297:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "928:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "930:77:1"
},
"nodeType": "YulFunctionCall",
"src": "930:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "930:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "907:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "915:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "903:3:1"
},
"nodeType": "YulFunctionCall",
"src": "903:17:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "922:3:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "899:3:1"
},
"nodeType": "YulFunctionCall",
"src": "899:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "892:6:1"
},
"nodeType": "YulFunctionCall",
"src": "892:35:1"
},
"nodeType": "YulIf",
"src": "889:122:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1020:27:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1040:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1034:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1034:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1024:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1056:114:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1143:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1151:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1139:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1139:17:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1158:6:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1166:3:1"
}
],
"functionName": {
"name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "1065:73:1"
},
"nodeType": "YulFunctionCall",
"src": "1065:105:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "1056:5:1"
}
]
}
]
},
"name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "857:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "865:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "873:5:1",
"type": ""
}
],
"src": "791:385:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1245:80:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1255:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1270:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1264:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1264:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1255:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1313:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "1286:26:1"
},
"nodeType": "YulFunctionCall",
"src": "1286:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "1286:33:1"
}
]
},
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1223:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1231:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1239:5:1",
"type": ""
}
],
"src": "1182:143:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1433:452:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1479:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1481:77:1"
},
"nodeType": "YulFunctionCall",
"src": "1481:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "1481:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1454:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1463:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1450:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1450:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1475:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1446:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1446:32:1"
},
"nodeType": "YulIf",
"src": "1443:119:1"
},
{
"nodeType": "YulBlock",
"src": "1572:306:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1587:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1611:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1622:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1607:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1607:17:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1601:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1601:24:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1591:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1672:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "1674:77:1"
},
"nodeType": "YulFunctionCall",
"src": "1674:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "1674:79:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1644:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1652:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1641:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1641:30:1"
},
"nodeType": "YulIf",
"src": "1638:117:1"
},
{
"nodeType": "YulAssignment",
"src": "1769:99:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1840:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1851:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1836:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1836:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1860:7:1"
}
],
"functionName": {
"name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "1779:56:1"
},
"nodeType": "YulFunctionCall",
"src": "1779:89:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1769:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1403:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1414:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1426:6:1",
"type": ""
}
],
"src": "1331:554:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1932:88:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1942:30:1",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "1952:18:1"
},
"nodeType": "YulFunctionCall",
"src": "1952:20:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1942:6:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2001:6:1"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2009:4:1"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "1981:19:1"
},
"nodeType": "YulFunctionCall",
"src": "1981:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "1981:33:1"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1916:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1925:6:1",
"type": ""
}
],
"src": "1891:129:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2066:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2076:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2092:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2086:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2086:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2076:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "2059:6:1",
"type": ""
}
],
"src": "2026:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2189:229:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2294:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "2296:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2296:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2296:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2266:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2274:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2263:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2263:30:1"
},
"nodeType": "YulIf",
"src": "2260:56:1"
},
{
"nodeType": "YulAssignment",
"src": "2326:25:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2338:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2346:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "2334:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2334:17:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2326:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2388:23:1",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2400:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2406:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2396:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2396:15:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2388:4:1"
}
]
}
]
},
"name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2173:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "2184:4:1",
"type": ""
}
],
"src": "2107:311:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2469:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2479:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2490:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2479:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2451:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2461:7:1",
"type": ""
}
],
"src": "2424:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2552:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2562:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2573:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2562:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2534:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2544:7:1",
"type": ""
}
],
"src": "2507:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2633:238:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2643:58:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2665:6:1"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2695:4:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "2673:21:1"
},
"nodeType": "YulFunctionCall",
"src": "2673:27:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2661:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2661:40:1"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "2647:10:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2812:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "2814:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2814:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2814:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2755:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2767:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2752:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2752:34:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2791:10:1"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2803:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2788:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2788:22:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "2749:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2749:62:1"
},
"nodeType": "YulIf",
"src": "2746:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2850:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2854:10:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2843:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2843:22:1"
},
"nodeType": "YulExpressionStatement",
"src": "2843:22:1"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "2619:6:1",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "2627:4:1",
"type": ""
}
],
"src": "2590:281:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2920:190:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2930:33:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2957:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2939:17:1"
},
"nodeType": "YulFunctionCall",
"src": "2939:24:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2930:5:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3053:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3055:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3055:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3055:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2978:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2985:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2975:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2975:77:1"
},
"nodeType": "YulIf",
"src": "2972:103:1"
},
{
"nodeType": "YulAssignment",
"src": "3084:20:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3095:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3102:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3091:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3091:13:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "3084:3:1"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2906:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "2916:3:1",
"type": ""
}
],
"src": "2877:233:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3144:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3161:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3164:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3154:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3154:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "3154:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3258:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3261:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3251:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3251:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3251:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3282:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3285:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3275:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3275:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3275:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "3116:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3330:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3347:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3350:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3340:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3340:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "3340:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3444:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3447:4:1",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3437:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3437:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3437:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3468:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3471:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3461:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3461:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3461:15:1"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "3302:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3516:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3533:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3536:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3526:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3526:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "3526:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3630:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3633:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3623:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3623:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3623:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3654:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3657:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3647:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3647:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3647:15:1"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "3488:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3763:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3780:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3783:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3773:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3773:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "3773:12:1"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulFunctionDefinition",
"src": "3674:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3886:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3903:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3906:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3896:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3896:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "3896:12:1"
}
]
},
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulFunctionDefinition",
"src": "3797:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4009:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4026:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4029:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4019:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4019:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "4019:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "3920:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4132:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4149:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4152:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4142:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4142:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "4142:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "4043:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4214:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4224:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4242:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4249:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4238:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4238:14:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4258:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4254:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4254:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4234:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4234:28:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "4224:6:1"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4197:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "4207:6:1",
"type": ""
}
],
"src": "4166:102:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4317:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4374:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4383:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4386:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4376:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4376:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "4376:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4340:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4365:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4347:17:1"
},
"nodeType": "YulFunctionCall",
"src": "4347:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "4337:2:1"
},
"nodeType": "YulFunctionCall",
"src": "4337:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4330:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4330:43:1"
},
"nodeType": "YulIf",
"src": "4327:63:1"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4310:5:1",
"type": ""
}
],
"src": "4274:122:1"
}
]
},
"contents": "{\n\n // bytes32[]\n function abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let src := offset\n if gt(add(src, mul(length, 0x20)), end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_bytes32_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n src := add(src, 0x20)\n }\n }\n\n // bytes32[]\n function abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\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_array$_t_bytes32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\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_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\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 round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\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"
}
],
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b506040516200146c3803806200146c833981810160405281019062000037919062000243565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060005b81518110156200017657600260405180604001604052808484815181106200010f576200010e620003b3565b5b60200260200101518152602001600081525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505080806200016d9062000336565b915050620000e2565b505062000450565b6000620001956200018f84620002bd565b62000294565b90508083825260208201905082856020860282011115620001bb57620001ba62000416565b5b60005b85811015620001ef5781620001d488826200022c565b845260208401935060208301925050600181019050620001be565b5050509392505050565b600082601f83011262000211576200021062000411565b5b8151620002238482602086016200017e565b91505092915050565b6000815190506200023d8162000436565b92915050565b6000602082840312156200025c576200025b62000420565b5b600082015167ffffffffffffffff8111156200027d576200027c6200041b565b5b6200028b84828501620001f9565b91505092915050565b6000620002a0620002b3565b9050620002ae828262000300565b919050565b6000604051905090565b600067ffffffffffffffff821115620002db57620002da620003e2565b5b602082029050602081019050919050565b6000819050919050565b6000819050919050565b6200030b8262000425565b810181811067ffffffffffffffff821117156200032d576200032c620003e2565b5b80604052505050565b60006200034382620002f6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000379576200037862000384565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200044181620002ec565b81146200044d57600080fd5b50565b61100c80620004606000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063609ff1bd1161005b578063609ff1bd146101145780639e7b8d6114610132578063a3ec138d1461014e578063e2ba53f01461018157610088565b80630121b93f1461008d578063013cf08b146100a95780632e4176cf146100da5780635c19a95c146100f8575b600080fd5b6100a760048036038101906100a29190610a01565b61019f565b005b6100c360048036038101906100be9190610a01565b6102e6565b6040516100d1929190610b95565b60405180910390f35b6100e261031a565b6040516100ef9190610b5f565b60405180910390f35b610112600480360381019061010d91906109d4565b61033e565b005b61011c6106da565b6040516101299190610c9e565b60405180910390f35b61014c600480360381019061014791906109d4565b610762565b005b610168600480360381019061016391906109d4565b610919565b6040516101789493929190610cb9565b60405180910390f35b610189610976565b6040516101969190610b7a565b60405180910390f35b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154141561022a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022190610bbe565b60405180910390fd5b8060010160009054906101000a900460ff161561027c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027390610bde565b60405180910390fd5b60018160010160006101000a81548160ff0219169083151502179055508181600201819055508060000154600283815481106102bb576102ba610e2f565b5b906000526020600020906002020160010160008282546102db9190610d0f565b925050819055505050565b600281815481106102f657600080fd5b90600052602060002090600202016000915090508060000154908060010154905082565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff16156103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca90610bfe565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043990610c7e565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105b257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156105ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a490610c3e565b60405180910390fd5b610443565b60018160010160006101000a81548160ff021916908315150217905550818160010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff16156106b5578160000154600282600201548154811061068957610688610e2f565b5b906000526020600020906002020160010160008282546106a99190610d0f565b925050819055506106d5565b81600001548160000160008282546106cd9190610d0f565b925050819055505b505050565b6000806000905060005b60028054905081101561075d57816002828154811061070657610705610e2f565b5b906000526020600020906002020160010154111561074a576002818154811061073257610731610e2f565b5b90600052602060002090600202016001015491508092505b808061075590610db7565b9150506106e4565b505090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e790610c1e565b60405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087790610c5e565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154146108cf57600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b600060026109826106da565b8154811061099357610992610e2f565b5b906000526020600020906002020160000154905090565b6000813590506109b981610fa8565b92915050565b6000813590506109ce81610fbf565b92915050565b6000602082840312156109ea576109e9610e5e565b5b60006109f8848285016109aa565b91505092915050565b600060208284031215610a1757610a16610e5e565b5b6000610a25848285016109bf565b91505092915050565b610a3781610d65565b82525050565b610a4681610d77565b82525050565b610a5581610d83565b82525050565b6000610a68601483610cfe565b9150610a7382610e63565b602082019050919050565b6000610a8b600e83610cfe565b9150610a9682610e8c565b602082019050919050565b6000610aae601283610cfe565b9150610ab982610eb5565b602082019050919050565b6000610ad1602883610cfe565b9150610adc82610ede565b604082019050919050565b6000610af4601983610cfe565b9150610aff82610f2d565b602082019050919050565b6000610b17601883610cfe565b9150610b2282610f56565b602082019050919050565b6000610b3a601e83610cfe565b9150610b4582610f7f565b602082019050919050565b610b5981610dad565b82525050565b6000602082019050610b746000830184610a2e565b92915050565b6000602082019050610b8f6000830184610a4c565b92915050565b6000604082019050610baa6000830185610a4c565b610bb76020830184610b50565b9392505050565b60006020820190508181036000830152610bd781610a5b565b9050919050565b60006020820190508181036000830152610bf781610a7e565b9050919050565b60006020820190508181036000830152610c1781610aa1565b9050919050565b60006020820190508181036000830152610c3781610ac4565b9050919050565b60006020820190508181036000830152610c5781610ae7565b9050919050565b60006020820190508181036000830152610c7781610b0a565b9050919050565b60006020820190508181036000830152610c9781610b2d565b9050919050565b6000602082019050610cb36000830184610b50565b92915050565b6000608082019050610cce6000830187610b50565b610cdb6020830186610a3d565b610ce86040830185610a2e565b610cf56060830184610b50565b95945050505050565b600082825260208201905092915050565b6000610d1a82610dad565b9150610d2583610dad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d5a57610d59610e00565b5b828201905092915050565b6000610d7082610d8d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610dc282610dad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610df557610df4610e00565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b7f486173206e6f20726967687420746f20766f7465000000000000000000000000600082015250565b7f416c726561647920766f7465642e000000000000000000000000000000000000600082015250565b7f596f7520616c726561647920766f7465642e0000000000000000000000000000600082015250565b7f4f6e6c79206368616972706572736f6e2063616e20676976652072696768742060008201527f746f20766f74652e000000000000000000000000000000000000000000000000602082015250565b7f466f756e64206c6f6f7020696e2064656c65676174696f6e2e00000000000000600082015250565b7f54686520766f74657220616c726561647920766f7465642e0000000000000000600082015250565b7f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e0000600082015250565b610fb181610d65565b8114610fbc57600080fd5b50565b610fc881610dad565b8114610fd357600080fd5b5056fea2646970667358221220fac26fe5b2932c5882a6eadf9dcf85d62e21d2fee932a1f87214a86d3b675fc164736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x146C CODESIZE SUB DUP1 PUSH3 0x146C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x243 JUMP JUMPDEST CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH3 0x176 JUMPI PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x10F JUMPI PUSH3 0x10E PUSH3 0x3B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP DUP1 DUP1 PUSH3 0x16D SWAP1 PUSH3 0x336 JUMP JUMPDEST SWAP2 POP POP PUSH3 0xE2 JUMP JUMPDEST POP POP PUSH3 0x450 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x195 PUSH3 0x18F DUP5 PUSH3 0x2BD JUMP JUMPDEST PUSH3 0x294 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP DUP3 DUP6 PUSH1 0x20 DUP7 MUL DUP3 ADD GT ISZERO PUSH3 0x1BB JUMPI PUSH3 0x1BA PUSH3 0x416 JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH3 0x1EF JUMPI DUP2 PUSH3 0x1D4 DUP9 DUP3 PUSH3 0x22C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x1BE JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x211 JUMPI PUSH3 0x210 PUSH3 0x411 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0x223 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x17E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x23D DUP2 PUSH3 0x436 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x25C JUMPI PUSH3 0x25B PUSH3 0x420 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x27D JUMPI PUSH3 0x27C PUSH3 0x41B JUMP JUMPDEST JUMPDEST PUSH3 0x28B DUP5 DUP3 DUP6 ADD PUSH3 0x1F9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2A0 PUSH3 0x2B3 JUMP JUMPDEST SWAP1 POP PUSH3 0x2AE DUP3 DUP3 PUSH3 0x300 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x2DB JUMPI PUSH3 0x2DA PUSH3 0x3E2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x30B DUP3 PUSH3 0x425 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x32D JUMPI PUSH3 0x32C PUSH3 0x3E2 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x343 DUP3 PUSH3 0x2F6 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0x379 JUMPI PUSH3 0x378 PUSH3 0x384 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD 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 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x441 DUP2 PUSH3 0x2EC JUMP JUMPDEST DUP2 EQ PUSH3 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x100C DUP1 PUSH3 0x460 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x609FF1BD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x609FF1BD EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x9E7B8D61 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xA3EC138D EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xE2BA53F0 EQ PUSH2 0x181 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x121B93F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x13CF08B EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x2E4176CF EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x19F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xBE SWAP2 SWAP1 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x2E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD1 SWAP3 SWAP2 SWAP1 PUSH2 0xB95 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x31A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0xB5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10D SWAP2 SWAP1 PUSH2 0x9D4 JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11C PUSH2 0x6DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x129 SWAP2 SWAP1 PUSH2 0xC9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x147 SWAP2 SWAP1 PUSH2 0x9D4 JUMP JUMPDEST PUSH2 0x762 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x9D4 JUMP JUMPDEST PUSH2 0x919 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x178 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xCB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x189 PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x196 SWAP2 SWAP1 PUSH2 0xB7A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x22A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x221 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x273 SWAP1 PUSH2 0xBDE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2BB JUMPI PUSH2 0x2BA PUSH2 0xE2F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2DB SWAP2 SWAP1 PUSH2 0xD0F JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CA SWAP1 PUSH2 0xBFE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x442 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x439 SWAP1 PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5B2 JUMPI PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x5AD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A4 SWAP1 PUSH2 0xC3E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x443 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x1 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6B5 JUMPI DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP3 PUSH1 0x2 ADD SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x689 JUMPI PUSH2 0x688 PUSH2 0xE2F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6A9 SWAP2 SWAP1 PUSH2 0xD0F JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x6D5 JUMP JUMPDEST DUP2 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6CD SWAP2 SWAP1 PUSH2 0xD0F JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x75D JUMPI DUP2 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x706 JUMPI PUSH2 0x705 PUSH2 0xE2F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD GT ISZERO PUSH2 0x74A JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x732 JUMPI PUSH2 0x731 PUSH2 0xE2F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP DUP1 SWAP3 POP JUMPDEST DUP1 DUP1 PUSH2 0x755 SWAP1 PUSH2 0xDB7 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x6E4 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7E7 SWAP1 PUSH2 0xC1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x880 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x877 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD EQ PUSH2 0x8CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH2 0x982 PUSH2 0x6DA JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x993 JUMPI PUSH2 0x992 PUSH2 0xE2F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9B9 DUP2 PUSH2 0xFA8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9CE DUP2 PUSH2 0xFBF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9EA JUMPI PUSH2 0x9E9 PUSH2 0xE5E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x9F8 DUP5 DUP3 DUP6 ADD PUSH2 0x9AA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA17 JUMPI PUSH2 0xA16 PUSH2 0xE5E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA25 DUP5 DUP3 DUP6 ADD PUSH2 0x9BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xD65 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xA46 DUP2 PUSH2 0xD77 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xA55 DUP2 PUSH2 0xD83 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA68 PUSH1 0x14 DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xA73 DUP3 PUSH2 0xE63 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8B PUSH1 0xE DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xA96 DUP3 PUSH2 0xE8C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAE PUSH1 0x12 DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xAB9 DUP3 PUSH2 0xEB5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD1 PUSH1 0x28 DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xADC DUP3 PUSH2 0xEDE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF4 PUSH1 0x19 DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xAFF DUP3 PUSH2 0xF2D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB17 PUSH1 0x18 DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xB22 DUP3 PUSH2 0xF56 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB3A PUSH1 0x1E DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xB45 DUP3 PUSH2 0xF7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB59 DUP2 PUSH2 0xDAD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB74 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xA2E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB8F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xA4C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBAA PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xA4C JUMP JUMPDEST PUSH2 0xBB7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xB50 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBD7 DUP2 PUSH2 0xA5B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBF7 DUP2 PUSH2 0xA7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC17 DUP2 PUSH2 0xAA1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC37 DUP2 PUSH2 0xAC4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC57 DUP2 PUSH2 0xAE7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC77 DUP2 PUSH2 0xB0A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC97 DUP2 PUSH2 0xB2D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xCB3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB50 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0xCCE PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0xB50 JUMP JUMPDEST PUSH2 0xCDB PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0xCE8 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA2E JUMP JUMPDEST PUSH2 0xCF5 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0xB50 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD1A DUP3 PUSH2 0xDAD JUMP JUMPDEST SWAP2 POP PUSH2 0xD25 DUP4 PUSH2 0xDAD JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xD5A JUMPI PUSH2 0xD59 PUSH2 0xE00 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD70 DUP3 PUSH2 0xD8D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 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 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDC2 DUP3 PUSH2 0xDAD JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xDF5 JUMPI PUSH2 0xDF4 PUSH2 0xE00 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD 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 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x486173206E6F20726967687420746F20766F7465000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x416C726561647920766F7465642E000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F7520616C726561647920766F7465642E0000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4F6E6C79206368616972706572736F6E2063616E206769766520726967687420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x746F20766F74652E000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x54686520766F74657220616C726561647920766F7465642E0000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xFB1 DUP2 PUSH2 0xD65 JUMP JUMPDEST DUP2 EQ PUSH2 0xFBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xFC8 DUP2 PUSH2 0xDAD JUMP JUMPDEST DUP2 EQ PUSH2 0xFD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL 0xC2 PUSH16 0xE5B2932C5882A6EADF9DCF85D62E21D2 INVALID 0xE9 ORIGIN LOG1 0xF8 PUSH19 0x14A86D3B675FC164736F6C6343000807003300 ",
"sourceMap": "157:4362:0:-:0;;;958:481;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1026:10;1012:11;;:24;;;;;;;;;;;;;;;;;;1075:1;1046:6;:19;1053:11;;;;;;;;;;;1046:19;;;;;;;;;;;;;;;:26;;:30;;;;1092:6;1087:346;1108:13;:20;1104:1;:24;1087:346;;;1312:9;1327:94;;;;;;;;1360:13;1374:1;1360:16;;;;;;;;:::i;:::-;;;;;;;;1327:94;;;;1405:1;1327:94;;;1312:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1130:3;;;;;:::i;:::-;;;;1087:346;;;;958:481;157:4362;;24:744:1;131:5;156:81;172:64;229:6;172:64;:::i;:::-;156:81;:::i;:::-;147:90;;257:5;286:6;279:5;272:21;320:4;313:5;309:16;302:23;;346:6;396:3;388:4;380:6;376:17;371:3;367:27;364:36;361:143;;;415:79;;:::i;:::-;361:143;528:1;513:249;538:6;535:1;532:13;513:249;;;606:3;635:48;679:3;667:10;635:48;:::i;:::-;630:3;623:61;713:4;708:3;704:14;697:21;;747:4;742:3;738:14;731:21;;573:189;560:1;557;553:9;548:14;;513:249;;;517:14;137:631;;24:744;;;;;:::o;791:385::-;873:5;922:3;915:4;907:6;903:17;899:27;889:122;;930:79;;:::i;:::-;889:122;1040:6;1034:13;1065:105;1166:3;1158:6;1151:4;1143:6;1139:17;1065:105;:::i;:::-;1056:114;;879:297;791:385;;;;:::o;1182:143::-;1239:5;1270:6;1264:13;1255:22;;1286:33;1313:5;1286:33;:::i;:::-;1182:143;;;;:::o;1331:554::-;1426:6;1475:2;1463:9;1454:7;1450:23;1446:32;1443:119;;;1481:79;;:::i;:::-;1443:119;1622:1;1611:9;1607:17;1601:24;1652:18;1644:6;1641:30;1638:117;;;1674:79;;:::i;:::-;1638:117;1779:89;1860:7;1851:6;1840:9;1836:22;1779:89;:::i;:::-;1769:99;;1572:306;1331:554;;;;:::o;1891:129::-;1925:6;1952:20;;:::i;:::-;1942:30;;1981:33;2009:4;2001:6;1981:33;:::i;:::-;1891:129;;;:::o;2026:75::-;2059:6;2092:2;2086:9;2076:19;;2026:75;:::o;2107:311::-;2184:4;2274:18;2266:6;2263:30;2260:56;;;2296:18;;:::i;:::-;2260:56;2346:4;2338:6;2334:17;2326:25;;2406:4;2400;2396:15;2388:23;;2107:311;;;:::o;2424:77::-;2461:7;2490:5;2479:16;;2424:77;;;:::o;2507:::-;2544:7;2573:5;2562:16;;2507:77;;;:::o;2590:281::-;2673:27;2695:4;2673:27;:::i;:::-;2665:6;2661:40;2803:6;2791:10;2788:22;2767:18;2755:10;2752:34;2749:62;2746:88;;;2814:18;;:::i;:::-;2746:88;2854:10;2850:2;2843:22;2633:238;2590:281;;:::o;2877:233::-;2916:3;2939:24;2957:5;2939:24;:::i;:::-;2930:33;;2985:66;2978:5;2975:77;2972:103;;;3055:18;;:::i;:::-;2972:103;3102:1;3095:5;3091:13;3084:20;;2877:233;;;:::o;3116:180::-;3164:77;3161:1;3154:88;3261:4;3258:1;3251:15;3285:4;3282:1;3275:15;3302:180;3350:77;3347:1;3340:88;3447:4;3444:1;3437:15;3471:4;3468:1;3461:15;3488:180;3536:77;3533:1;3526:88;3633:4;3630:1;3623:15;3657:4;3654:1;3647:15;3674:117;3783:1;3780;3773:12;3797:117;3906:1;3903;3896:12;3920:117;4029:1;4026;4019:12;4043:117;4152:1;4149;4142:12;4166:102;4207:6;4258:2;4254:7;4249:2;4242:5;4238:14;4234:28;4224:38;;4166:102;;;:::o;4274:122::-;4347:24;4365:5;4347:24;:::i;:::-;4340:5;4337:35;4327:63;;4386:1;4383;4376:12;4327:63;4274:122;:::o;157:4362:0:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@chairperson_18": {
"entryPoint": 794,
"id": 18,
"parameterSlots": 0,
"returnSlots": 0
},
"@delegate_207": {
"entryPoint": 830,
"id": 207,
"parameterSlots": 1,
"returnSlots": 0
},
"@giveRightToVote_111": {
"entryPoint": 1890,
"id": 111,
"parameterSlots": 1,
"returnSlots": 0
},
"@proposals_27": {
"entryPoint": 742,
"id": 27,
"parameterSlots": 0,
"returnSlots": 0
},
"@vote_257": {
"entryPoint": 415,
"id": 257,
"parameterSlots": 1,
"returnSlots": 0
},
"@voters_23": {
"entryPoint": 2329,
"id": 23,
"parameterSlots": 0,
"returnSlots": 0
},
"@winnerName_315": {
"entryPoint": 2422,
"id": 315,
"parameterSlots": 0,
"returnSlots": 1
},
"@winningProposal_300": {
"entryPoint": 1754,
"id": 300,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 2474,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 2495,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 2516,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 2561,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 2606,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 2621,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 2636,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2651,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2686,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2721,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2756,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2791,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2826,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2861,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 2896,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 2911,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 2938,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
"entryPoint": 2965,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3006,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3038,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3070,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3102,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3134,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3166,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3198,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 3230,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_bool_t_address_t_uint256__to_t_uint256_t_bool_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 3257,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 3326,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 3343,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 3429,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 3447,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 3459,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 3469,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 3501,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"increment_t_uint256": {
"entryPoint": 3511,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 3584,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 3631,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 3678,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"store_literal_in_memory_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e": {
"entryPoint": 3683,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84": {
"entryPoint": 3724,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f": {
"entryPoint": 3765,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95": {
"entryPoint": 3806,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c": {
"entryPoint": 3885,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d": {
"entryPoint": 3926,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947": {
"entryPoint": 3967,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 4008,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 4031,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:12075: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_address",
"nodeType": "YulIdentifier",
"src": "107:26:1"
},
"nodeType": "YulFunctionCall",
"src": "107:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "107:33:1"
}
]
},
"name": "abi_decode_t_address",
"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": "204:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "214:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "236:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "223:12:1"
},
"nodeType": "YulFunctionCall",
"src": "223:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "214:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "279:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "252:26:1"
},
"nodeType": "YulFunctionCall",
"src": "252:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "252:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "182:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "190:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "198:5:1",
"type": ""
}
],
"src": "152:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "363:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "409:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "411:77:1"
},
"nodeType": "YulFunctionCall",
"src": "411:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "411:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "384:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "393:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "380:3:1"
},
"nodeType": "YulFunctionCall",
"src": "380:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "405:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "376:3:1"
},
"nodeType": "YulFunctionCall",
"src": "376:32:1"
},
"nodeType": "YulIf",
"src": "373:119:1"
},
{
"nodeType": "YulBlock",
"src": "502:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "517:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "531:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "521:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "546:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "581:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "592:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "577:3:1"
},
"nodeType": "YulFunctionCall",
"src": "577:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "601:7:1"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "556:20:1"
},
"nodeType": "YulFunctionCall",
"src": "556:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "546:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "333:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "344:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "356:6:1",
"type": ""
}
],
"src": "297:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "698:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "744:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "746:77:1"
},
"nodeType": "YulFunctionCall",
"src": "746:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "746:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "719:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "728:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "715:3:1"
},
"nodeType": "YulFunctionCall",
"src": "715:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "740:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "711:3:1"
},
"nodeType": "YulFunctionCall",
"src": "711:32:1"
},
"nodeType": "YulIf",
"src": "708:119:1"
},
{
"nodeType": "YulBlock",
"src": "837:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "852:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "866:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "856:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "881:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "916:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "927:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "912:3:1"
},
"nodeType": "YulFunctionCall",
"src": "912:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "936:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "891:20:1"
},
"nodeType": "YulFunctionCall",
"src": "891:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "881:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "668:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "679:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "691:6:1",
"type": ""
}
],
"src": "632:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1032:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1049:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1072:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1054:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1054:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1042:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1042:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "1042:37:1"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1020:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1027:3:1",
"type": ""
}
],
"src": "967:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1150:50:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1167:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1187:5:1"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "1172:14:1"
},
"nodeType": "YulFunctionCall",
"src": "1172:21:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1160:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "1160:34:1"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1138:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1145:3:1",
"type": ""
}
],
"src": "1091:109:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1271:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1288:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1311:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "1293:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1293:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1281:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1281:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "1281:37:1"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1259:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1266:3:1",
"type": ""
}
],
"src": "1206:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1476:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1486:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1552:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1557:2:1",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "1493:58:1"
},
"nodeType": "YulFunctionCall",
"src": "1493:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1486:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1658:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e",
"nodeType": "YulIdentifier",
"src": "1569:88:1"
},
"nodeType": "YulFunctionCall",
"src": "1569:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "1569:93:1"
},
{
"nodeType": "YulAssignment",
"src": "1671:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1682:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1687:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1678:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1678:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1671:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1464:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1472:3:1",
"type": ""
}
],
"src": "1330:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1848:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1858:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1924:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1929:2:1",
"type": "",
"value": "14"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "1865:58:1"
},
"nodeType": "YulFunctionCall",
"src": "1865:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1858:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2030:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84",
"nodeType": "YulIdentifier",
"src": "1941:88:1"
},
"nodeType": "YulFunctionCall",
"src": "1941:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "1941:93:1"
},
{
"nodeType": "YulAssignment",
"src": "2043:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2054:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2059:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2050:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2050:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2043:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1836:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1844:3:1",
"type": ""
}
],
"src": "1702:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2220:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2230:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2296:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2301:2:1",
"type": "",
"value": "18"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2237:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2237:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2230:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2402:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f",
"nodeType": "YulIdentifier",
"src": "2313:88:1"
},
"nodeType": "YulFunctionCall",
"src": "2313:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "2313:93:1"
},
{
"nodeType": "YulAssignment",
"src": "2415:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2426:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2431:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2422:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2422:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2415:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2208:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2216:3:1",
"type": ""
}
],
"src": "2074:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2592:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2602:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2668:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2673:2:1",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2609:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2609:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2602:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2774:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95",
"nodeType": "YulIdentifier",
"src": "2685:88:1"
},
"nodeType": "YulFunctionCall",
"src": "2685:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "2685:93:1"
},
{
"nodeType": "YulAssignment",
"src": "2787:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2798:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2803:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2794:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2794:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2787:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2580:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2588:3:1",
"type": ""
}
],
"src": "2446:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2964:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2974:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3040:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3045:2:1",
"type": "",
"value": "25"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2981:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2981:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2974:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3146:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c",
"nodeType": "YulIdentifier",
"src": "3057:88:1"
},
"nodeType": "YulFunctionCall",
"src": "3057:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "3057:93:1"
},
{
"nodeType": "YulAssignment",
"src": "3159:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3170:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3175:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3166:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3166:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3159:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2952:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2960:3:1",
"type": ""
}
],
"src": "2818:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3336:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3346:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3412:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3417:2:1",
"type": "",
"value": "24"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3353:58:1"
},
"nodeType": "YulFunctionCall",
"src": "3353:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3346:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3518:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d",
"nodeType": "YulIdentifier",
"src": "3429:88:1"
},
"nodeType": "YulFunctionCall",
"src": "3429:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "3429:93:1"
},
{
"nodeType": "YulAssignment",
"src": "3531:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3542:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3547:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3538:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3538:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3531:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3324:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3332:3:1",
"type": ""
}
],
"src": "3190:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3708:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3718:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3784:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3789:2:1",
"type": "",
"value": "30"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3725:58:1"
},
"nodeType": "YulFunctionCall",
"src": "3725:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3718:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3890:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947",
"nodeType": "YulIdentifier",
"src": "3801:88:1"
},
"nodeType": "YulFunctionCall",
"src": "3801:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "3801:93:1"
},
{
"nodeType": "YulAssignment",
"src": "3903:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3914:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3919:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3910:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3910:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3903:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3696:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3704:3:1",
"type": ""
}
],
"src": "3562:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3999:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4016:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4039:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "4021:17:1"
},
"nodeType": "YulFunctionCall",
"src": "4021:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4009:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4009:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "4009:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3987:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3994:3:1",
"type": ""
}
],
"src": "3934:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4156:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4166:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4178:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4189:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4174:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4174:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4166:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4246:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4259:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4270:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4255:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4255:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "4202:43:1"
},
"nodeType": "YulFunctionCall",
"src": "4202:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "4202:71:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4128:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4140:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4151:4:1",
"type": ""
}
],
"src": "4058:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4384:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4394:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4406:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4417:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4402:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4402:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4394:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4474:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4487:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4498:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4483:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4483:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "4430:43:1"
},
"nodeType": "YulFunctionCall",
"src": "4430:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "4430:71:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4356:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4368:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4379:4:1",
"type": ""
}
],
"src": "4286:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4640:206:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4650:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4662:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4673:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4658:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4658:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4650:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4730:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4743:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4754:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4739:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4739:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "4686:43:1"
},
"nodeType": "YulFunctionCall",
"src": "4686:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "4686:71:1"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "4811:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4824:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4835:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4820:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4820:18:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "4767:43:1"
},
"nodeType": "YulFunctionCall",
"src": "4767:72:1"
},
"nodeType": "YulExpressionStatement",
"src": "4767:72:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4604:9:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "4616:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4624:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4635:4:1",
"type": ""
}
],
"src": "4514:332:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5023:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5033:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5045:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5056:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5041:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5041:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5033:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5080:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5091:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5076:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5076:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5099:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5105:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5095:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5095:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5069:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5069:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "5069:47:1"
},
{
"nodeType": "YulAssignment",
"src": "5125:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5259:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5133:124:1"
},
"nodeType": "YulFunctionCall",
"src": "5133:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5125:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5003:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5018:4:1",
"type": ""
}
],
"src": "4852:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5448:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5458:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5470:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5481:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5466:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5466:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5458:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5505:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5516:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5501:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5501:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5524:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5530:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5520:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5520:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5494:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5494:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "5494:47:1"
},
{
"nodeType": "YulAssignment",
"src": "5550:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5684:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5558:124:1"
},
"nodeType": "YulFunctionCall",
"src": "5558:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5550:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5428:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5443:4:1",
"type": ""
}
],
"src": "5277:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5873:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5883:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5895:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5906:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5891:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5891:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5883:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5930:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5941:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5926:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5926:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5949:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5955:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5945:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5945:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5919:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5919:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "5919:47:1"
},
{
"nodeType": "YulAssignment",
"src": "5975:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6109:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5983:124:1"
},
"nodeType": "YulFunctionCall",
"src": "5983:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5975:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5853:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5868:4:1",
"type": ""
}
],
"src": "5702:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6298:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6308:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6320:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6331:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6316:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6316:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6308:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6355:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6366:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6351:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6351:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6374:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6380:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6370:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6370:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6344:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6344:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "6344:47:1"
},
{
"nodeType": "YulAssignment",
"src": "6400:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6534:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6408:124:1"
},
"nodeType": "YulFunctionCall",
"src": "6408:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6400:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6278:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6293:4:1",
"type": ""
}
],
"src": "6127:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6723:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6733:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6745:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6756:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6741:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6741:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6733:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6780:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6791:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6776:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6776:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6799:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6805:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6795:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6795:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6769:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6769:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "6769:47:1"
},
{
"nodeType": "YulAssignment",
"src": "6825:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6959:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6833:124:1"
},
"nodeType": "YulFunctionCall",
"src": "6833:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6825:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6703:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6718:4:1",
"type": ""
}
],
"src": "6552:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7148:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7158:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7170:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7181:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7166:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7166:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7158:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7205:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7216:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7201:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7201:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7224:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7230:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "7220:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7220:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7194:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7194:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "7194:47:1"
},
{
"nodeType": "YulAssignment",
"src": "7250:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7384:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7258:124:1"
},
"nodeType": "YulFunctionCall",
"src": "7258:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7250:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7128:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7143:4:1",
"type": ""
}
],
"src": "6977:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7573:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7583:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7595:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7606:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7591:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7591:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7583:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7630:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7641:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7626:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7626:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7649:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7655:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "7645:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7645:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7619:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7619:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "7619:47:1"
},
{
"nodeType": "YulAssignment",
"src": "7675:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7809:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7683:124:1"
},
"nodeType": "YulFunctionCall",
"src": "7683:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7675:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7553:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7568:4:1",
"type": ""
}
],
"src": "7402:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7925:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7935:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7947:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7958:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7943:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7943:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7935:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8015:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8028:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8039:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8024:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8024:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "7971:43:1"
},
"nodeType": "YulFunctionCall",
"src": "7971:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "7971:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7897:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7909:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7920:4:1",
"type": ""
}
],
"src": "7827:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8231:365:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8241:27:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8253:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8264:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8249:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8249:19:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8241:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8322:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8335:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8346:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8331:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8331:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "8278:43:1"
},
"nodeType": "YulFunctionCall",
"src": "8278:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "8278:71:1"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "8397:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8410:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8421:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8406:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8406:18:1"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "8359:37:1"
},
"nodeType": "YulFunctionCall",
"src": "8359:66:1"
},
"nodeType": "YulExpressionStatement",
"src": "8359:66:1"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "8479:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8492:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8503:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8488:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8488:18:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "8435:43:1"
},
"nodeType": "YulFunctionCall",
"src": "8435:72:1"
},
"nodeType": "YulExpressionStatement",
"src": "8435:72:1"
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "8561:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8574:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8585:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8570:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8570:18:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "8517:43:1"
},
"nodeType": "YulFunctionCall",
"src": "8517:72:1"
},
"nodeType": "YulExpressionStatement",
"src": "8517:72:1"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_bool_t_address_t_uint256__to_t_uint256_t_bool_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8179:9:1",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "8191:6:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "8199:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "8207:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8215:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8226:4:1",
"type": ""
}
],
"src": "8055:541:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8642:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8652:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8668:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "8662:5:1"
},
"nodeType": "YulFunctionCall",
"src": "8662:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "8652:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "8635:6:1",
"type": ""
}
],
"src": "8602:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8779:73:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8796:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8801:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8789:6:1"
},
"nodeType": "YulFunctionCall",
"src": "8789:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "8789:19:1"
},
{
"nodeType": "YulAssignment",
"src": "8817:29:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8836:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8841:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8832:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8832:14:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "8817:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8751:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "8756:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "8767:11:1",
"type": ""
}
],
"src": "8683:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8902:261:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8912:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8935:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8917:17:1"
},
"nodeType": "YulFunctionCall",
"src": "8917:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8912:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8946:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8969:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8951:17:1"
},
"nodeType": "YulFunctionCall",
"src": "8951:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8946:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9109:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9111:16:1"
},
"nodeType": "YulFunctionCall",
"src": "9111:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "9111:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9030:1:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9037:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9105:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9033:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9033:74:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "9027:2:1"
},
"nodeType": "YulFunctionCall",
"src": "9027:81:1"
},
"nodeType": "YulIf",
"src": "9024:107:1"
},
{
"nodeType": "YulAssignment",
"src": "9141:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9152:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9155:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9148:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9148:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "9141:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "8889:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "8892:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "8898:3:1",
"type": ""
}
],
"src": "8858:305:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9214:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9224:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9253:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "9235:17:1"
},
"nodeType": "YulFunctionCall",
"src": "9235:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9224:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9196:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9206:7:1",
"type": ""
}
],
"src": "9169:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9313:48:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9323:32:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9348:5:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9341:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9341:13:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9334:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9334:21:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9323:7:1"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9295:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9305:7:1",
"type": ""
}
],
"src": "9271:90:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9412:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9422:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "9433:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9422:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9394:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9404:7:1",
"type": ""
}
],
"src": "9367:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9495:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9505:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9520:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9527:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9516:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9516:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9505:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9477:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9487:7:1",
"type": ""
}
],
"src": "9450:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9627:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9637:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "9648:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9637:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9609:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9619:7:1",
"type": ""
}
],
"src": "9582:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9708:190:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9718:33:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9745:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "9727:17:1"
},
"nodeType": "YulFunctionCall",
"src": "9727:24:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9718:5:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9841:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9843:16:1"
},
"nodeType": "YulFunctionCall",
"src": "9843:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "9843:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9766:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9773:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "9763:2:1"
},
"nodeType": "YulFunctionCall",
"src": "9763:77:1"
},
"nodeType": "YulIf",
"src": "9760:103:1"
},
{
"nodeType": "YulAssignment",
"src": "9872:20:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9883:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9890:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9879:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9879:13:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "9872:3:1"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9694:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "9704:3:1",
"type": ""
}
],
"src": "9665:233:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9932:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9949:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9952:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9942:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9942:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "9942:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10046:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10049:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10039:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10039:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "10039:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10070:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10073:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "10063:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10063:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "10063:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "9904:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10118:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10135:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10138:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10128:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10128:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "10128:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10232:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10235:4:1",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10225:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10225:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "10225:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10256:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10259:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "10249:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10249:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "10249:15:1"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "10090:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10365:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10382:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10385:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "10375:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10375:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "10375:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "10276:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10488:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10505:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10508:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "10498:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10498:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "10498:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "10399:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10628:64:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10650:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10658:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10646:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10646:14:1"
},
{
"hexValue": "486173206e6f20726967687420746f20766f7465",
"kind": "string",
"nodeType": "YulLiteral",
"src": "10662:22:1",
"type": "",
"value": "Has no right to vote"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10639:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10639:46:1"
},
"nodeType": "YulExpressionStatement",
"src": "10639:46:1"
}
]
},
"name": "store_literal_in_memory_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "10620:6:1",
"type": ""
}
],
"src": "10522:170:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10804:58:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10826:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10834:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10822:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10822:14:1"
},
{
"hexValue": "416c726561647920766f7465642e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "10838:16:1",
"type": "",
"value": "Already voted."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10815:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10815:40:1"
},
"nodeType": "YulExpressionStatement",
"src": "10815:40:1"
}
]
},
"name": "store_literal_in_memory_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "10796:6:1",
"type": ""
}
],
"src": "10698:164:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10974:62:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10996:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11004:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10992:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10992:14:1"
},
{
"hexValue": "596f7520616c726561647920766f7465642e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "11008:20:1",
"type": "",
"value": "You already voted."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10985:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10985:44:1"
},
"nodeType": "YulExpressionStatement",
"src": "10985:44:1"
}
]
},
"name": "store_literal_in_memory_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "10966:6:1",
"type": ""
}
],
"src": "10868:168:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11148:121:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11170:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11178:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11166:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11166:14:1"
},
{
"hexValue": "4f6e6c79206368616972706572736f6e2063616e206769766520726967687420",
"kind": "string",
"nodeType": "YulLiteral",
"src": "11182:34:1",
"type": "",
"value": "Only chairperson can give right "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11159:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11159:58:1"
},
"nodeType": "YulExpressionStatement",
"src": "11159:58:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11238:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11246:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11234:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11234:15:1"
},
{
"hexValue": "746f20766f74652e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "11251:10:1",
"type": "",
"value": "to vote."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11227:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11227:35:1"
},
"nodeType": "YulExpressionStatement",
"src": "11227:35:1"
}
]
},
"name": "store_literal_in_memory_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "11140:6:1",
"type": ""
}
],
"src": "11042:227:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11381:69:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11403:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11411:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11399:14:1"
},
{
"hexValue": "466f756e64206c6f6f7020696e2064656c65676174696f6e2e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "11415:27:1",
"type": "",
"value": "Found loop in delegation."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11392:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11392:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "11392:51:1"
}
]
},
"name": "store_literal_in_memory_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "11373:6:1",
"type": ""
}
],
"src": "11275:175:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11562:68:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11584:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11592:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11580:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11580:14:1"
},
{
"hexValue": "54686520766f74657220616c726561647920766f7465642e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "11596:26:1",
"type": "",
"value": "The voter already voted."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11573:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11573:50:1"
},
"nodeType": "YulExpressionStatement",
"src": "11573:50:1"
}
]
},
"name": "store_literal_in_memory_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "11554:6:1",
"type": ""
}
],
"src": "11456:174:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11742:74:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11764:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11772:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11760:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11760:14:1"
},
{
"hexValue": "53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "11776:32:1",
"type": "",
"value": "Self-delegation is disallowed."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11753:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11753:56:1"
},
"nodeType": "YulExpressionStatement",
"src": "11753:56:1"
}
]
},
"name": "store_literal_in_memory_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "11734:6:1",
"type": ""
}
],
"src": "11636:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11865:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11922:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11931:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11934:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11924:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11924:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "11924:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11888:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11913:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "11895:17:1"
},
"nodeType": "YulFunctionCall",
"src": "11895:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11885:2:1"
},
"nodeType": "YulFunctionCall",
"src": "11885:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11878:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11878:43:1"
},
"nodeType": "YulIf",
"src": "11875:63:1"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11858:5:1",
"type": ""
}
],
"src": "11822:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11993:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "12050:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12059:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12062:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "12052:6:1"
},
"nodeType": "YulFunctionCall",
"src": "12052:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "12052:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12016:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12041:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "12023:17:1"
},
"nodeType": "YulFunctionCall",
"src": "12023:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "12013:2:1"
},
"nodeType": "YulFunctionCall",
"src": "12013:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "12006:6:1"
},
"nodeType": "YulFunctionCall",
"src": "12006:43:1"
},
"nodeType": "YulIf",
"src": "12003:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11986:5:1",
"type": ""
}
],
"src": "11950:122:1"
}
]
},
"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_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\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_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 18)\n store_literal_in_memory_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n store_literal_in_memory_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947(pos)\n end := add(pos, 32)\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_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 abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_uint256_t_bool_t_address_t_uint256__to_t_uint256_t_bool_t_address_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bool_to_t_bool_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function 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 cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := 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 increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\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_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\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_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e(memPtr) {\n\n mstore(add(memPtr, 0), \"Has no right to vote\")\n\n }\n\n function store_literal_in_memory_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84(memPtr) {\n\n mstore(add(memPtr, 0), \"Already voted.\")\n\n }\n\n function store_literal_in_memory_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f(memPtr) {\n\n mstore(add(memPtr, 0), \"You already voted.\")\n\n }\n\n function store_literal_in_memory_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95(memPtr) {\n\n mstore(add(memPtr, 0), \"Only chairperson can give right \")\n\n mstore(add(memPtr, 32), \"to vote.\")\n\n }\n\n function store_literal_in_memory_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c(memPtr) {\n\n mstore(add(memPtr, 0), \"Found loop in delegation.\")\n\n }\n\n function store_literal_in_memory_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d(memPtr) {\n\n mstore(add(memPtr, 0), \"The voter already voted.\")\n\n }\n\n function store_literal_in_memory_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947(memPtr) {\n\n mstore(add(memPtr, 0), \"Self-delegation is disallowed.\")\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": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063609ff1bd1161005b578063609ff1bd146101145780639e7b8d6114610132578063a3ec138d1461014e578063e2ba53f01461018157610088565b80630121b93f1461008d578063013cf08b146100a95780632e4176cf146100da5780635c19a95c146100f8575b600080fd5b6100a760048036038101906100a29190610a01565b61019f565b005b6100c360048036038101906100be9190610a01565b6102e6565b6040516100d1929190610b95565b60405180910390f35b6100e261031a565b6040516100ef9190610b5f565b60405180910390f35b610112600480360381019061010d91906109d4565b61033e565b005b61011c6106da565b6040516101299190610c9e565b60405180910390f35b61014c600480360381019061014791906109d4565b610762565b005b610168600480360381019061016391906109d4565b610919565b6040516101789493929190610cb9565b60405180910390f35b610189610976565b6040516101969190610b7a565b60405180910390f35b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154141561022a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022190610bbe565b60405180910390fd5b8060010160009054906101000a900460ff161561027c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027390610bde565b60405180910390fd5b60018160010160006101000a81548160ff0219169083151502179055508181600201819055508060000154600283815481106102bb576102ba610e2f565b5b906000526020600020906002020160010160008282546102db9190610d0f565b925050819055505050565b600281815481106102f657600080fd5b90600052602060002090600202016000915090508060000154908060010154905082565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff16156103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca90610bfe565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043990610c7e565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105b257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156105ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a490610c3e565b60405180910390fd5b610443565b60018160010160006101000a81548160ff021916908315150217905550818160010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff16156106b5578160000154600282600201548154811061068957610688610e2f565b5b906000526020600020906002020160010160008282546106a99190610d0f565b925050819055506106d5565b81600001548160000160008282546106cd9190610d0f565b925050819055505b505050565b6000806000905060005b60028054905081101561075d57816002828154811061070657610705610e2f565b5b906000526020600020906002020160010154111561074a576002818154811061073257610731610e2f565b5b90600052602060002090600202016001015491508092505b808061075590610db7565b9150506106e4565b505090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e790610c1e565b60405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087790610c5e565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154146108cf57600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b600060026109826106da565b8154811061099357610992610e2f565b5b906000526020600020906002020160000154905090565b6000813590506109b981610fa8565b92915050565b6000813590506109ce81610fbf565b92915050565b6000602082840312156109ea576109e9610e5e565b5b60006109f8848285016109aa565b91505092915050565b600060208284031215610a1757610a16610e5e565b5b6000610a25848285016109bf565b91505092915050565b610a3781610d65565b82525050565b610a4681610d77565b82525050565b610a5581610d83565b82525050565b6000610a68601483610cfe565b9150610a7382610e63565b602082019050919050565b6000610a8b600e83610cfe565b9150610a9682610e8c565b602082019050919050565b6000610aae601283610cfe565b9150610ab982610eb5565b602082019050919050565b6000610ad1602883610cfe565b9150610adc82610ede565b604082019050919050565b6000610af4601983610cfe565b9150610aff82610f2d565b602082019050919050565b6000610b17601883610cfe565b9150610b2282610f56565b602082019050919050565b6000610b3a601e83610cfe565b9150610b4582610f7f565b602082019050919050565b610b5981610dad565b82525050565b6000602082019050610b746000830184610a2e565b92915050565b6000602082019050610b8f6000830184610a4c565b92915050565b6000604082019050610baa6000830185610a4c565b610bb76020830184610b50565b9392505050565b60006020820190508181036000830152610bd781610a5b565b9050919050565b60006020820190508181036000830152610bf781610a7e565b9050919050565b60006020820190508181036000830152610c1781610aa1565b9050919050565b60006020820190508181036000830152610c3781610ac4565b9050919050565b60006020820190508181036000830152610c5781610ae7565b9050919050565b60006020820190508181036000830152610c7781610b0a565b9050919050565b60006020820190508181036000830152610c9781610b2d565b9050919050565b6000602082019050610cb36000830184610b50565b92915050565b6000608082019050610cce6000830187610b50565b610cdb6020830186610a3d565b610ce86040830185610a2e565b610cf56060830184610b50565b95945050505050565b600082825260208201905092915050565b6000610d1a82610dad565b9150610d2583610dad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d5a57610d59610e00565b5b828201905092915050565b6000610d7082610d8d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610dc282610dad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610df557610df4610e00565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b7f486173206e6f20726967687420746f20766f7465000000000000000000000000600082015250565b7f416c726561647920766f7465642e000000000000000000000000000000000000600082015250565b7f596f7520616c726561647920766f7465642e0000000000000000000000000000600082015250565b7f4f6e6c79206368616972706572736f6e2063616e20676976652072696768742060008201527f746f20766f74652e000000000000000000000000000000000000000000000000602082015250565b7f466f756e64206c6f6f7020696e2064656c65676174696f6e2e00000000000000600082015250565b7f54686520766f74657220616c726561647920766f7465642e0000000000000000600082015250565b7f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e0000600082015250565b610fb181610d65565b8114610fbc57600080fd5b50565b610fc881610dad565b8114610fd357600080fd5b5056fea2646970667358221220fac26fe5b2932c5882a6eadf9dcf85d62e21d2fee932a1f87214a86d3b675fc164736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x609FF1BD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x609FF1BD EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x9E7B8D61 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xA3EC138D EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xE2BA53F0 EQ PUSH2 0x181 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x121B93F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x13CF08B EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x2E4176CF EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x19F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xBE SWAP2 SWAP1 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0x2E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD1 SWAP3 SWAP2 SWAP1 PUSH2 0xB95 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x31A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0xB5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10D SWAP2 SWAP1 PUSH2 0x9D4 JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11C PUSH2 0x6DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x129 SWAP2 SWAP1 PUSH2 0xC9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x147 SWAP2 SWAP1 PUSH2 0x9D4 JUMP JUMPDEST PUSH2 0x762 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x9D4 JUMP JUMPDEST PUSH2 0x919 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x178 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xCB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x189 PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x196 SWAP2 SWAP1 PUSH2 0xB7A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x22A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x221 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x273 SWAP1 PUSH2 0xBDE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2BB JUMPI PUSH2 0x2BA PUSH2 0xE2F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2DB SWAP2 SWAP1 PUSH2 0xD0F JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CA SWAP1 PUSH2 0xBFE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x442 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x439 SWAP1 PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5B2 JUMPI PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x5AD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A4 SWAP1 PUSH2 0xC3E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x443 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x1 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6B5 JUMPI DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP3 PUSH1 0x2 ADD SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x689 JUMPI PUSH2 0x688 PUSH2 0xE2F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6A9 SWAP2 SWAP1 PUSH2 0xD0F JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x6D5 JUMP JUMPDEST DUP2 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6CD SWAP2 SWAP1 PUSH2 0xD0F JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x75D JUMPI DUP2 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x706 JUMPI PUSH2 0x705 PUSH2 0xE2F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD GT ISZERO PUSH2 0x74A JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x732 JUMPI PUSH2 0x731 PUSH2 0xE2F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP DUP1 SWAP3 POP JUMPDEST DUP1 DUP1 PUSH2 0x755 SWAP1 PUSH2 0xDB7 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x6E4 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7E7 SWAP1 PUSH2 0xC1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x880 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x877 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD EQ PUSH2 0x8CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH2 0x982 PUSH2 0x6DA JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x993 JUMPI PUSH2 0x992 PUSH2 0xE2F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9B9 DUP2 PUSH2 0xFA8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9CE DUP2 PUSH2 0xFBF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9EA JUMPI PUSH2 0x9E9 PUSH2 0xE5E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x9F8 DUP5 DUP3 DUP6 ADD PUSH2 0x9AA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA17 JUMPI PUSH2 0xA16 PUSH2 0xE5E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA25 DUP5 DUP3 DUP6 ADD PUSH2 0x9BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA37 DUP2 PUSH2 0xD65 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xA46 DUP2 PUSH2 0xD77 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xA55 DUP2 PUSH2 0xD83 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA68 PUSH1 0x14 DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xA73 DUP3 PUSH2 0xE63 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8B PUSH1 0xE DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xA96 DUP3 PUSH2 0xE8C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAE PUSH1 0x12 DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xAB9 DUP3 PUSH2 0xEB5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD1 PUSH1 0x28 DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xADC DUP3 PUSH2 0xEDE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF4 PUSH1 0x19 DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xAFF DUP3 PUSH2 0xF2D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB17 PUSH1 0x18 DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xB22 DUP3 PUSH2 0xF56 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB3A PUSH1 0x1E DUP4 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP PUSH2 0xB45 DUP3 PUSH2 0xF7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB59 DUP2 PUSH2 0xDAD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB74 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xA2E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB8F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xA4C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBAA PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xA4C JUMP JUMPDEST PUSH2 0xBB7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xB50 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBD7 DUP2 PUSH2 0xA5B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBF7 DUP2 PUSH2 0xA7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC17 DUP2 PUSH2 0xAA1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC37 DUP2 PUSH2 0xAC4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC57 DUP2 PUSH2 0xAE7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC77 DUP2 PUSH2 0xB0A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC97 DUP2 PUSH2 0xB2D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xCB3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB50 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0xCCE PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0xB50 JUMP JUMPDEST PUSH2 0xCDB PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0xCE8 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA2E JUMP JUMPDEST PUSH2 0xCF5 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0xB50 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD1A DUP3 PUSH2 0xDAD JUMP JUMPDEST SWAP2 POP PUSH2 0xD25 DUP4 PUSH2 0xDAD JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xD5A JUMPI PUSH2 0xD59 PUSH2 0xE00 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD70 DUP3 PUSH2 0xD8D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 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 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDC2 DUP3 PUSH2 0xDAD JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xDF5 JUMPI PUSH2 0xDF4 PUSH2 0xE00 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD 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 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x486173206E6F20726967687420746F20766F7465000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x416C726561647920766F7465642E000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F7520616C726561647920766F7465642E0000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4F6E6C79206368616972706572736F6E2063616E206769766520726967687420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x746F20766F74652E000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x54686520766F74657220616C726561647920766F7465642E0000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xFB1 DUP2 PUSH2 0xD65 JUMP JUMPDEST DUP2 EQ PUSH2 0xFBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xFC8 DUP2 PUSH2 0xDAD JUMP JUMPDEST DUP2 EQ PUSH2 0xFD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL 0xC2 PUSH16 0xE5B2932C5882A6EADF9DCF85D62E21D2 INVALID 0xE9 ORIGIN LOG1 0xF8 PUSH19 0x14A86D3B675FC164736F6C6343000807003300 ",
"sourceMap": "157:4362:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3173:458;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;794:27;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;715:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2078:907;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3817:365;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1599:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;748:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;4373:144;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3173:458;3219:20;3242:6;:18;3249:10;3242:18;;;;;;;;;;;;;;;3219:41;;3295:1;3278:6;:13;;;:18;;3270:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;3340:6;:12;;;;;;;;;;;;3339:13;3331:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;3396:4;3381:6;:12;;;:19;;;;;;;;;;;;;;;;;;3424:8;3410:6;:11;;:22;;;;3611:6;:13;;;3578:9;3588:8;3578:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:29;;;:46;;;;;;;:::i;:::-;;;;;;;;3209:422;3173:458;:::o;794:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;715:26::-;;;;;;;;;;;;:::o;2078:907::-;2125:20;2148:6;:18;2155:10;2148:18;;;;;;;;;;;;;;;2125:41;;2185:6;:12;;;;;;;;;;;;2184:13;2176:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2244:10;2238:16;;:2;:16;;;;2230:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;2300:223;2338:1;2307:33;;:6;:10;2314:2;2307:10;;;;;;;;;;;;;;;:19;;;;;;;;;;;;:33;;;2300:223;;2361:6;:10;2368:2;2361:10;;;;;;;;;;;;;;;:19;;;;;;;;;;;;2356:24;;2472:10;2466:16;;:2;:16;;;;2458:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;2300:223;;;2547:4;2532:6;:12;;;:19;;;;;;;;;;;;;;;;;;2579:2;2561:6;:15;;;:20;;;;;;;;;;;;;;;;;;2591:23;2617:6;:10;2624:2;2617:10;;;;;;;;;;;;;;;2591:36;;2641:9;:15;;;;;;;;;;;;2637:342;;;2808:6;:13;;;2769:9;2779;:14;;;2769:25;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;:52;;;;;;;:::i;:::-;;;;;;;;2637:342;;;2955:6;:13;;;2935:9;:16;;;:33;;;;;;;:::i;:::-;;;;;;;;2637:342;2115:870;;2078:907;:::o;3817:365::-;3877:21;3914;3938:1;3914:25;;3954:6;3949:227;3970:9;:16;;;;3966:1;:20;3949:227;;;4036:16;4011:9;4021:1;4011:12;;;;;;;;:::i;:::-;;;;;;;;;;;;:22;;;:41;4007:159;;;4091:9;4101:1;4091:12;;;;;;;;:::i;:::-;;;;;;;;;;;;:22;;;4072:41;;4150:1;4131:20;;4007:159;3988:3;;;;;:::i;:::-;;;;3949:227;;;;3904:278;3817:365;:::o;1599:355::-;1691:11;;;;;;;;;;1677:25;;:10;:25;;;1656:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;1800:6;:13;1807:5;1800:13;;;;;;;;;;;;;;;:19;;;;;;;;;;;;1799:20;1778:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;1911:1;1887:6;:13;1894:5;1887:13;;;;;;;;;;;;;;;:20;;;:25;1879:34;;;;;;1946:1;1923:6;:13;1930:5;1923:13;;;;;;;;;;;;;;;:20;;:24;;;;1599:355;:::o;748:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4373:144::-;4428:19;4477:9;4487:17;:15;:17::i;:::-;4477:28;;;;;;;;:::i;:::-;;;;;;;;;;;;:33;;;4463:47;;4373:144;:::o;7:139:1:-;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:118::-;1054:24;1072:5;1054:24;:::i;:::-;1049:3;1042:37;967:118;;:::o;1091:109::-;1172:21;1187:5;1172:21;:::i;:::-;1167:3;1160:34;1091:109;;:::o;1206:118::-;1293:24;1311:5;1293:24;:::i;:::-;1288:3;1281:37;1206:118;;:::o;1330:366::-;1472:3;1493:67;1557:2;1552:3;1493:67;:::i;:::-;1486:74;;1569:93;1658:3;1569:93;:::i;:::-;1687:2;1682:3;1678:12;1671:19;;1330:366;;;:::o;1702:::-;1844:3;1865:67;1929:2;1924:3;1865:67;:::i;:::-;1858:74;;1941:93;2030:3;1941:93;:::i;:::-;2059:2;2054:3;2050:12;2043:19;;1702:366;;;:::o;2074:::-;2216:3;2237:67;2301:2;2296:3;2237:67;:::i;:::-;2230:74;;2313:93;2402:3;2313:93;:::i;:::-;2431:2;2426:3;2422:12;2415:19;;2074:366;;;:::o;2446:::-;2588:3;2609:67;2673:2;2668:3;2609:67;:::i;:::-;2602:74;;2685:93;2774:3;2685:93;:::i;:::-;2803:2;2798:3;2794:12;2787:19;;2446:366;;;:::o;2818:::-;2960:3;2981:67;3045:2;3040:3;2981:67;:::i;:::-;2974:74;;3057:93;3146:3;3057:93;:::i;:::-;3175:2;3170:3;3166:12;3159:19;;2818:366;;;:::o;3190:::-;3332:3;3353:67;3417:2;3412:3;3353:67;:::i;:::-;3346:74;;3429:93;3518:3;3429:93;:::i;:::-;3547:2;3542:3;3538:12;3531:19;;3190:366;;;:::o;3562:::-;3704:3;3725:67;3789:2;3784:3;3725:67;:::i;:::-;3718:74;;3801:93;3890:3;3801:93;:::i;:::-;3919:2;3914:3;3910:12;3903:19;;3562:366;;;:::o;3934:118::-;4021:24;4039:5;4021:24;:::i;:::-;4016:3;4009:37;3934:118;;:::o;4058:222::-;4151:4;4189:2;4178:9;4174:18;4166:26;;4202:71;4270:1;4259:9;4255:17;4246:6;4202:71;:::i;:::-;4058:222;;;;:::o;4286:::-;4379:4;4417:2;4406:9;4402:18;4394:26;;4430:71;4498:1;4487:9;4483:17;4474:6;4430:71;:::i;:::-;4286:222;;;;:::o;4514:332::-;4635:4;4673:2;4662:9;4658:18;4650:26;;4686:71;4754:1;4743:9;4739:17;4730:6;4686:71;:::i;:::-;4767:72;4835:2;4824:9;4820:18;4811:6;4767:72;:::i;:::-;4514:332;;;;;:::o;4852:419::-;5018:4;5056:2;5045:9;5041:18;5033:26;;5105:9;5099:4;5095:20;5091:1;5080:9;5076:17;5069:47;5133:131;5259:4;5133:131;:::i;:::-;5125:139;;4852:419;;;:::o;5277:::-;5443:4;5481:2;5470:9;5466:18;5458:26;;5530:9;5524:4;5520:20;5516:1;5505:9;5501:17;5494:47;5558:131;5684:4;5558:131;:::i;:::-;5550:139;;5277:419;;;:::o;5702:::-;5868:4;5906:2;5895:9;5891:18;5883:26;;5955:9;5949:4;5945:20;5941:1;5930:9;5926:17;5919:47;5983:131;6109:4;5983:131;:::i;:::-;5975:139;;5702:419;;;:::o;6127:::-;6293:4;6331:2;6320:9;6316:18;6308:26;;6380:9;6374:4;6370:20;6366:1;6355:9;6351:17;6344:47;6408:131;6534:4;6408:131;:::i;:::-;6400:139;;6127:419;;;:::o;6552:::-;6718:4;6756:2;6745:9;6741:18;6733:26;;6805:9;6799:4;6795:20;6791:1;6780:9;6776:17;6769:47;6833:131;6959:4;6833:131;:::i;:::-;6825:139;;6552:419;;;:::o;6977:::-;7143:4;7181:2;7170:9;7166:18;7158:26;;7230:9;7224:4;7220:20;7216:1;7205:9;7201:17;7194:47;7258:131;7384:4;7258:131;:::i;:::-;7250:139;;6977:419;;;:::o;7402:::-;7568:4;7606:2;7595:9;7591:18;7583:26;;7655:9;7649:4;7645:20;7641:1;7630:9;7626:17;7619:47;7683:131;7809:4;7683:131;:::i;:::-;7675:139;;7402:419;;;:::o;7827:222::-;7920:4;7958:2;7947:9;7943:18;7935:26;;7971:71;8039:1;8028:9;8024:17;8015:6;7971:71;:::i;:::-;7827:222;;;;:::o;8055:541::-;8226:4;8264:3;8253:9;8249:19;8241:27;;8278:71;8346:1;8335:9;8331:17;8322:6;8278:71;:::i;:::-;8359:66;8421:2;8410:9;8406:18;8397:6;8359:66;:::i;:::-;8435:72;8503:2;8492:9;8488:18;8479:6;8435:72;:::i;:::-;8517;8585:2;8574:9;8570:18;8561:6;8517:72;:::i;:::-;8055:541;;;;;;;:::o;8683:169::-;8767:11;8801:6;8796:3;8789:19;8841:4;8836:3;8832:14;8817:29;;8683:169;;;;:::o;8858:305::-;8898:3;8917:20;8935:1;8917:20;:::i;:::-;8912:25;;8951:20;8969:1;8951:20;:::i;:::-;8946:25;;9105:1;9037:66;9033:74;9030:1;9027:81;9024:107;;;9111:18;;:::i;:::-;9024:107;9155:1;9152;9148:9;9141:16;;8858:305;;;;:::o;9169:96::-;9206:7;9235:24;9253:5;9235:24;:::i;:::-;9224:35;;9169:96;;;:::o;9271:90::-;9305:7;9348:5;9341:13;9334:21;9323:32;;9271:90;;;:::o;9367:77::-;9404:7;9433:5;9422:16;;9367:77;;;:::o;9450:126::-;9487:7;9527:42;9520:5;9516:54;9505:65;;9450:126;;;:::o;9582:77::-;9619:7;9648:5;9637:16;;9582:77;;;:::o;9665:233::-;9704:3;9727:24;9745:5;9727:24;:::i;:::-;9718:33;;9773:66;9766:5;9763:77;9760:103;;;9843:18;;:::i;:::-;9760:103;9890:1;9883:5;9879:13;9872:20;;9665:233;;;:::o;9904:180::-;9952:77;9949:1;9942:88;10049:4;10046:1;10039:15;10073:4;10070:1;10063:15;10090:180;10138:77;10135:1;10128:88;10235:4;10232:1;10225:15;10259:4;10256:1;10249:15;10399:117;10508:1;10505;10498:12;10522:170;10662:22;10658:1;10650:6;10646:14;10639:46;10522:170;:::o;10698:164::-;10838:16;10834:1;10826:6;10822:14;10815:40;10698:164;:::o;10868:168::-;11008:20;11004:1;10996:6;10992:14;10985:44;10868:168;:::o;11042:227::-;11182:34;11178:1;11170:6;11166:14;11159:58;11251:10;11246:2;11238:6;11234:15;11227:35;11042:227;:::o;11275:175::-;11415:27;11411:1;11403:6;11399:14;11392:51;11275:175;:::o;11456:174::-;11596:26;11592:1;11584:6;11580:14;11573:50;11456:174;:::o;11636:180::-;11776:32;11772:1;11764:6;11760:14;11753:56;11636:180;:::o;11822:122::-;11895:24;11913:5;11895:24;:::i;:::-;11888:5;11885:35;11875:63;;11934:1;11931;11924:12;11875:63;11822:122;:::o;11950:::-;12023:24;12041:5;12023:24;:::i;:::-;12016:5;12013:35;12003:63;;12062:1;12059;12052:12;12003:63;11950:122;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "821600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"chairperson()": "2556",
"delegate(address)": "infinite",
"giveRightToVote(address)": "29325",
"proposals(uint256)": "infinite",
"vote(uint256)": "infinite",
"voters(address)": "infinite",
"winnerName()": "infinite",
"winningProposal()": "infinite"
}
},
"methodIdentifiers": {
"chairperson()": "2e4176cf",
"delegate(address)": "5c19a95c",
"giveRightToVote(address)": "9e7b8d61",
"proposals(uint256)": "013cf08b",
"vote(uint256)": "0121b93f",
"voters(address)": "a3ec138d",
"winnerName()": "e2ba53f0",
"winningProposal()": "609ff1bd"
}
},
"abi": [
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "proposalNames",
"type": "bytes32[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "chairperson",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "delegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "giveRightToVote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "bytes32",
"name": "name",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "voteCount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposal",
"type": "uint256"
}
],
"name": "vote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "voters",
"outputs": [
{
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"internalType": "bool",
"name": "voted",
"type": "bool"
},
{
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"internalType": "uint256",
"name": "vote",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winnerName",
"outputs": [
{
"internalType": "bytes32",
"name": "winnerName_",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winningProposal",
"outputs": [
{
"internalType": "uint256",
"name": "winningProposal_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "proposalNames",
"type": "bytes32[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "chairperson",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "delegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "giveRightToVote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "bytes32",
"name": "name",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "voteCount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposal",
"type": "uint256"
}
],
"name": "vote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "voters",
"outputs": [
{
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"internalType": "bool",
"name": "voted",
"type": "bool"
},
{
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"internalType": "uint256",
"name": "vote",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winnerName",
"outputs": [
{
"internalType": "bytes32",
"name": "winnerName_",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winningProposal",
"outputs": [
{
"internalType": "uint256",
"name": "winningProposal_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"details": "Implements voting process along with vote delegation",
"kind": "dev",
"methods": {
"constructor": {
"details": "Create a new ballot to choose one of 'proposalNames'.",
"params": {
"proposalNames": "names of proposals"
}
},
"delegate(address)": {
"details": "Delegate your vote to the voter 'to'.",
"params": {
"to": "address to which vote is delegated"
}
},
"giveRightToVote(address)": {
"details": "Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.",
"params": {
"voter": "address of voter"
}
},
"vote(uint256)": {
"details": "Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.",
"params": {
"proposal": "index of proposal in the proposals array"
}
},
"winnerName()": {
"details": "Calls winningProposal() function to get the index of the winner contained in the proposals array and then",
"returns": {
"winnerName_": "the name of the winner"
}
},
"winningProposal()": {
"details": "Computes the winning proposal taking all previous votes into account.",
"returns": {
"winningProposal_": "index of winning proposal in the proposals array"
}
}
},
"title": "Ballot",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/3_Ballot.sol": "Ballot"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/3_Ballot.sol": {
"keccak256": "0xdd897b48a563d1d32369fdb327187dfcd2660159cfcd3787196bb6be6a312c8d",
"license": "GPL-3.0",
"urls": [
"bzz-raw://551d7a6d3e2abc66a7b37fbd8b0e4c07b43c72c3b55958e66ac421348311fed4",
"dweb:/ipfs/Qmd4XV9j79GPfv5cgVsg62vKzaLuf6igx7VSW2BKaUyF3w"
]
}
},
"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": "6060604052341561000f57600080fd5b6115af8061001e6000396000f30060606040526004361061008d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806281d6e5146100925780631d4f2c6d146100ef578063359c1f721461010457806388d0d39114610222578063a5ac363414610285578063b18588fb146102d2578063cdb3344a1461032f578063d5ce24ed146103cf575b600080fd5b341561009d57600080fd5b6100ed600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061050a565b005b34156100fa57600080fd5b61010261080f565b005b341561010f57600080fd5b61013b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109a9565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561017f578082015181840152602081019050610164565b50505050905090810190601f1680156101ac5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561022d57600080fd5b6102436004808035906020019091905050610b7f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561029057600080fd5b6102bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bb2565b6040518082815260200191505060405180910390f35b34156102dd57600080fd5b61032d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610bca565b005b341561033a57600080fd5b6103cd600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610ecf565b005b34156103da57600080fd5b6103f060048080359060200190919050506111e1565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561046657808201518184015260208101905061044b565b50505050905090810190601f1680156104935780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156104cc5780820151818401526020810190506104b1565b50505050905090810190601f1680156104f95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415151561055a57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811015156105a857fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561061357600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508160008281548110151561066557fe5b9060005260206000209060030201600201908051906020019061068992919061136a565b507f76571b7a897a1509c641587568218a290018fbdc8b9a724f17b77ff0eec22c0c81336000848154811015156106bc57fe5b906000526020600020906003020160010185604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156107935780601f1061076857610100808354040283529160200191610793565b820191906000526020600020905b81548152906001019060200180831161077657829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b838110156107cd5780820151818401526020810190506107b2565b50505050905090810190601f1680156107fa5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15050565b738d3e809fbd258083a5ba004a527159da535c8aba73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561085d57600080fd5b6000805480600101828161087191906113ea565b91600052602060002090600302016000606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016040805190810160405280600181526020017f200000000000000000000000000000000000000000000000000000000000000081525081526020016040805190810160405280600181526020017f2000000000000000000000000000000000000000000000000000000000000000815250815250909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908051906020019061098692919061141c565b5060408201518160020190805190602001906109a392919061141c565b50505050565b6109b161149c565b6109b961149c565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081815481101515610a0c57fe5b9060005260206000209060030201600101600082815481101515610a2c57fe5b9060005260206000209060030201600201818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b50505050509150808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b820191906000526020600020905b815481529060010190602001808311610b5157829003601f168201915b505050505090509250925050915091565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090505481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151515610c1a57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481101515610c6857fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cd357600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081600082815481101515610d2557fe5b90600052602060002090600302016001019080519060200190610d4992919061136a565b507f76571b7a897a1509c641587568218a290018fbdc8b9a724f17b77ff0eec22c0c813384600085815481101515610d7d57fe5b9060005260206000209060030201600201604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610e0a578082015181840152602081019050610def565b50505050905090810190601f168015610e375780820380516001836020036101000a031916815260200191505b50838103825284818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610eb95780601f10610e8e57610100808354040283529160200191610eb9565b820191906000526020600020905b815481529060010190602001808311610e9c57829003601f168201915b5050965050505050505060405180910390a15050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610f1e57600080fd5b600160008054806001018281610f3491906113ea565b916000526020600020906003020160006060604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187815250909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610fde92919061141c565b506040820151816002019080519060200190610ffb92919061141c565b505050039050336001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9ab3aefb2ba6dc12910ac1bce4692cf5c3c0d06cff16327c64a3ef78228b130b81338585604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561113857808201518184015260208101905061111d565b50505050905090810190601f1680156111655780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561119e578082015181840152602081019050611183565b50505050905090810190601f1680156111cb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1505050565b6000818154811015156111f057fe5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112c25780601f10611297576101008083540402835291602001916112c2565b820191906000526020600020905b8154815290600101906020018083116112a557829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113605780601f1061133557610100808354040283529160200191611360565b820191906000526020600020905b81548152906001019060200180831161134357829003601f168201915b5050505050905083565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106113ab57805160ff19168380011785556113d9565b828001600101855582156113d9579182015b828111156113d85782518255916020019190600101906113bd565b5b5090506113e691906114b0565b5090565b8154818355818115116114175760030281600302836000526020600020918201910161141691906114d5565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061145d57805160ff191683800117855561148b565b8280016001018555821561148b579182015b8281111561148a57825182559160200191906001019061146f565b5b50905061149891906114b0565b5090565b602060405190810160405280600081525090565b6114d291905b808211156114ce5760008160009055506001016114b6565b5090565b90565b61153891905b8082111561153457600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061151b919061153b565b60028201600061152b919061153b565b506003016114db565b5090565b90565b50805460018160011615610100020316600290046000825580601f106115615750611580565b601f01602090049060005260206000209081019061157f91906114b0565b5b505600a165627a7a72305820ef47857c062f7b832246aa987e433a5e6ed7fd4b4dc017f1d407a246392d56a80029",
"opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE CALLVALUE ISZERO PUSH2 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15AF DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x60 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x8D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH3 0x81D6E5 EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0x1D4F2C6D EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x359C1F72 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x88D0D391 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0xA5AC3634 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xB18588FB EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0xCDB3344A EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0xD5CE24ED EQ PUSH2 0x3CF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0x50A JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0x80F JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13B PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x9A9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x17F JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x164 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1CA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x212 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xBB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0xBCA JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0xECF JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F0 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x466 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x44B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x493 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CC JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4F9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO ISZERO PUSH2 0x55A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x5A8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x665 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x689 SWAP3 SWAP2 SWAP1 PUSH2 0x136A JUMP JUMPDEST POP PUSH32 0x76571B7A897A1509C641587568218A290018FBDC8B9A724F17B77FF0EEC22C0C DUP2 CALLER PUSH1 0x0 DUP5 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x6BC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD DUP6 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x793 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x768 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x793 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x776 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7CD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7FA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH20 0x8D3E809FBD258083A5BA004A527159DA535C8ABA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP1 PUSH1 0x1 ADD DUP3 DUP2 PUSH2 0x871 SWAP2 SWAP1 PUSH2 0x13EA JUMP JUMPDEST SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x2000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x2000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 MSTORE POP SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x986 SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x9A3 SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x9B1 PUSH2 0x149C JUMP JUMPDEST PUSH2 0x9B9 PUSH2 0x149C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA0C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA2C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD DUP2 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xAD2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAA7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAD2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xAB5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xB6E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB43 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB6E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB51 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP3 POP SWAP3 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO ISZERO PUSH2 0xC1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xC68 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0xCD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xD25 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xD49 SWAP3 SWAP2 SWAP1 PUSH2 0x136A JUMP JUMPDEST POP PUSH32 0x76571B7A897A1509C641587568218A290018FBDC8B9A724F17B77FF0EEC22C0C DUP2 CALLER DUP5 PUSH1 0x0 DUP6 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xD7D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE0A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDEF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE37 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xEB9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE8E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xEB9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE9C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO PUSH2 0xF1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD DUP1 PUSH1 0x1 ADD DUP3 DUP2 PUSH2 0xF34 SWAP2 SWAP1 PUSH2 0x13EA JUMP JUMPDEST SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE POP SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xFDE SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xFFB SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP POP POP SUB SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x9AB3AEFB2BA6DC12910AC1BCE4692CF5C3C0D06CFF16327C64A3EF78228B130B DUP2 CALLER DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1138 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x111D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1165 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x119E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1183 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11CB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x11F0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x12C2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1297 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12C2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12A5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1360 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1335 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1360 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1343 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x13AB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x13D9 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x13D9 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x13D8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x13BD JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x13E6 SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 ISZERO GT PUSH2 0x1417 JUMPI PUSH1 0x3 MUL DUP2 PUSH1 0x3 MUL DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1416 SWAP2 SWAP1 PUSH2 0x14D5 JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x145D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x148B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x148B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x148A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x146F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1498 SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x14D2 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x14CE JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x14B6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1538 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1534 JUMPI PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x151B SWAP2 SWAP1 PUSH2 0x153B JUMP JUMPDEST PUSH1 0x2 DUP3 ADD PUSH1 0x0 PUSH2 0x152B SWAP2 SWAP1 PUSH2 0x153B JUMP JUMPDEST POP PUSH1 0x3 ADD PUSH2 0x14DB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x1561 JUMPI POP PUSH2 0x1580 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x157F SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST JUMPDEST POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xef 0x47 DUP6 PUSH29 0x62F7B832246AA987E433A5E6ED7FD4B4DC017F1D407A246392D56A800 0x29 ",
"sourceMap": "26:2038:0:-;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "60606040526004361061008d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806281d6e5146100925780631d4f2c6d146100ef578063359c1f721461010457806388d0d39114610222578063a5ac363414610285578063b18588fb146102d2578063cdb3344a1461032f578063d5ce24ed146103cf575b600080fd5b341561009d57600080fd5b6100ed600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061050a565b005b34156100fa57600080fd5b61010261080f565b005b341561010f57600080fd5b61013b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109a9565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561017f578082015181840152602081019050610164565b50505050905090810190601f1680156101ac5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561022d57600080fd5b6102436004808035906020019091905050610b7f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561029057600080fd5b6102bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bb2565b6040518082815260200191505060405180910390f35b34156102dd57600080fd5b61032d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610bca565b005b341561033a57600080fd5b6103cd600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610ecf565b005b34156103da57600080fd5b6103f060048080359060200190919050506111e1565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561046657808201518184015260208101905061044b565b50505050905090810190601f1680156104935780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156104cc5780820151818401526020810190506104b1565b50505050905090810190601f1680156104f95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415151561055a57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811015156105a857fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561061357600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508160008281548110151561066557fe5b9060005260206000209060030201600201908051906020019061068992919061136a565b507f76571b7a897a1509c641587568218a290018fbdc8b9a724f17b77ff0eec22c0c81336000848154811015156106bc57fe5b906000526020600020906003020160010185604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156107935780601f1061076857610100808354040283529160200191610793565b820191906000526020600020905b81548152906001019060200180831161077657829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b838110156107cd5780820151818401526020810190506107b2565b50505050905090810190601f1680156107fa5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15050565b738d3e809fbd258083a5ba004a527159da535c8aba73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561085d57600080fd5b6000805480600101828161087191906113ea565b91600052602060002090600302016000606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016040805190810160405280600181526020017f200000000000000000000000000000000000000000000000000000000000000081525081526020016040805190810160405280600181526020017f2000000000000000000000000000000000000000000000000000000000000000815250815250909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908051906020019061098692919061141c565b5060408201518160020190805190602001906109a392919061141c565b50505050565b6109b161149c565b6109b961149c565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081815481101515610a0c57fe5b9060005260206000209060030201600101600082815481101515610a2c57fe5b9060005260206000209060030201600201818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b50505050509150808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b820191906000526020600020905b815481529060010190602001808311610b5157829003601f168201915b505050505090509250925050915091565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090505481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151515610c1a57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481101515610c6857fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cd357600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081600082815481101515610d2557fe5b90600052602060002090600302016001019080519060200190610d4992919061136a565b507f76571b7a897a1509c641587568218a290018fbdc8b9a724f17b77ff0eec22c0c813384600085815481101515610d7d57fe5b9060005260206000209060030201600201604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610e0a578082015181840152602081019050610def565b50505050905090810190601f168015610e375780820380516001836020036101000a031916815260200191505b50838103825284818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610eb95780601f10610e8e57610100808354040283529160200191610eb9565b820191906000526020600020905b815481529060010190602001808311610e9c57829003601f168201915b5050965050505050505060405180910390a15050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610f1e57600080fd5b600160008054806001018281610f3491906113ea565b916000526020600020906003020160006060604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187815250909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610fde92919061141c565b506040820151816002019080519060200190610ffb92919061141c565b505050039050336001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9ab3aefb2ba6dc12910ac1bce4692cf5c3c0d06cff16327c64a3ef78228b130b81338585604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561113857808201518184015260208101905061111d565b50505050905090810190601f1680156111655780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561119e578082015181840152602081019050611183565b50505050905090810190601f1680156111cb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1505050565b6000818154811015156111f057fe5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112c25780601f10611297576101008083540402835291602001916112c2565b820191906000526020600020905b8154815290600101906020018083116112a557829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113605780601f1061133557610100808354040283529160200191611360565b820191906000526020600020905b81548152906001019060200180831161134357829003601f168201915b5050505050905083565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106113ab57805160ff19168380011785556113d9565b828001600101855582156113d9579182015b828111156113d85782518255916020019190600101906113bd565b5b5090506113e691906114b0565b5090565b8154818355818115116114175760030281600302836000526020600020918201910161141691906114d5565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061145d57805160ff191683800117855561148b565b8280016001018555821561148b579182015b8281111561148a57825182559160200191906001019061146f565b5b50905061149891906114b0565b5090565b602060405190810160405280600081525090565b6114d291905b808211156114ce5760008160009055506001016114b6565b5090565b90565b61153891905b8082111561153457600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061151b919061153b565b60028201600061152b919061153b565b506003016114db565b5090565b90565b50805460018160011615610100020316600290046000825580601f106115615750611580565b601f01602090049060005260206000209081019061157f91906114b0565b5b505600a165627a7a72305820ef47857c062f7b832246aa987e433a5e6ed7fd4b4dc017f1d407a246392d56a80029",
"opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x8D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH3 0x81D6E5 EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0x1D4F2C6D EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x359C1F72 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x88D0D391 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0xA5AC3634 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xB18588FB EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0xCDB3344A EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0xD5CE24ED EQ PUSH2 0x3CF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0x50A JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0x80F JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13B PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x9A9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x17F JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x164 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1CA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x212 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xBB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0xBCA JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0xECF JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F0 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x466 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x44B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x493 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CC JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4F9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO ISZERO PUSH2 0x55A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x5A8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x665 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x689 SWAP3 SWAP2 SWAP1 PUSH2 0x136A JUMP JUMPDEST POP PUSH32 0x76571B7A897A1509C641587568218A290018FBDC8B9A724F17B77FF0EEC22C0C DUP2 CALLER PUSH1 0x0 DUP5 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x6BC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD DUP6 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x793 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x768 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x793 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x776 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7CD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7FA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH20 0x8D3E809FBD258083A5BA004A527159DA535C8ABA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP1 PUSH1 0x1 ADD DUP3 DUP2 PUSH2 0x871 SWAP2 SWAP1 PUSH2 0x13EA JUMP JUMPDEST SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x2000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x2000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 MSTORE POP SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x986 SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x9A3 SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x9B1 PUSH2 0x149C JUMP JUMPDEST PUSH2 0x9B9 PUSH2 0x149C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA0C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA2C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD DUP2 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xAD2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAA7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAD2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xAB5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xB6E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB43 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB6E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB51 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP3 POP SWAP3 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO ISZERO PUSH2 0xC1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xC68 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0xCD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xD25 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xD49 SWAP3 SWAP2 SWAP1 PUSH2 0x136A JUMP JUMPDEST POP PUSH32 0x76571B7A897A1509C641587568218A290018FBDC8B9A724F17B77FF0EEC22C0C DUP2 CALLER DUP5 PUSH1 0x0 DUP6 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xD7D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE0A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDEF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE37 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xEB9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE8E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xEB9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE9C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO PUSH2 0xF1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD DUP1 PUSH1 0x1 ADD DUP3 DUP2 PUSH2 0xF34 SWAP2 SWAP1 PUSH2 0x13EA JUMP JUMPDEST SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE POP SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xFDE SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xFFB SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP POP POP SUB SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x9AB3AEFB2BA6DC12910AC1BCE4692CF5C3C0D06CFF16327C64A3EF78228B130B DUP2 CALLER DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1138 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x111D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1165 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x119E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1183 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11CB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x11F0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x12C2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1297 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12C2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12A5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1360 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1335 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1360 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1343 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x13AB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x13D9 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x13D9 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x13D8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x13BD JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x13E6 SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 ISZERO GT PUSH2 0x1417 JUMPI PUSH1 0x3 MUL DUP2 PUSH1 0x3 MUL DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1416 SWAP2 SWAP1 PUSH2 0x14D5 JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x145D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x148B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x148B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x148A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x146F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1498 SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x14D2 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x14CE JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x14B6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1538 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1534 JUMPI PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x151B SWAP2 SWAP1 PUSH2 0x153B JUMP JUMPDEST PUSH1 0x2 DUP3 ADD PUSH1 0x0 PUSH2 0x152B SWAP2 SWAP1 PUSH2 0x153B JUMP JUMPDEST POP PUSH1 0x3 ADD PUSH2 0x14DB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x1561 JUMPI POP PUSH2 0x1580 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x157F SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST JUMPDEST POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xef 0x47 DUP6 PUSH29 0x62F7B832246AA987E433A5E6ED7FD4B4DC017F1D407A246392D56A800 0x29 ",
"sourceMap": "26:2038:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1339:345;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1903:159;;;;;;;;;;;;;;799:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;799:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;799:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;346:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;398;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;983:352;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;451:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;314:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;314:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1339:345;1520:7;1438:1;1407:15;:27;1423:10;1407:27;;;;;;;;;;;;;;;;:32;;1399:41;;;;;;;;1468:9;1478:15;:27;1494:10;1478:27;;;;;;;;;;;;;;;;1468:38;;;;;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;1454:58;;:10;:58;;;1446:67;;;;;;;;1530:15;:27;1546:10;1530:27;;;;;;;;;;;;;;;;1520:37;;1590:9;1564;1574:2;1564:13;;;;;;;;;;;;;;;;;;;;:22;;:35;;;;;;;;;;;;:::i;:::-;;1610:69;1626:2;1630:10;1642:9;1652:2;1642:13;;;;;;;;;;;;;;;;;;;;:25;;1669:9;1610:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1610:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1339:345;;:::o;1903:159::-;1969:42;1955:56;;:10;:56;;;1947:65;;;;;;;;2018:9;:39;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;2033:23;;;;;;;;;2042:3;2033:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2018:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;1903:159::o;799:180::-;856:6;;:::i;:::-;864;;:::i;:::-;878:7;888:15;:22;904:5;888:22;;;;;;;;;;;;;;;;878:32;;924:9;934:2;924:13;;;;;;;;;;;;;;;;;;;;:25;;951:9;961:2;951:13;;;;;;;;;;;;;;;;;;;;:22;;916:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;799:180;;;;:::o;346:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;398:::-;;;;;;;;;;;;;;;;;:::o;983:352::-;1166:7;1084:1;1053:15;:27;1069:10;1053:27;;;;;;;;;;;;;;;;:32;;1045:41;;;;;;;;1114:9;1124:15;:27;1140:10;1124:27;;;;;;;;;;;;;;;;1114:38;;;;;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;1100:58;;:10;:58;;;1092:67;;;;;;;;1176:15;:27;1192:10;1176:27;;;;;;;;;;;;;;;;1166:37;;1238:12;1210:9;1220:2;1210:13;;;;;;;;;;;;;;;;;;;;:25;;:40;;;;;;;;;;;;:::i;:::-;;1261:69;1277:2;1281:10;1293:12;1307:9;1317:2;1307:13;;;;;;;;;;;;;;;;;;;;:22;;1261:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1261:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;983:352;;:::o;451:344::-;574:7;566:1;535:15;:27;551:10;535:27;;;;;;;;;;;;;;;;:32;527:41;;;;;;;;648:1;584:9;:61;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;599:45;;;;;;;;;608:10;599:45;;;;;;620:12;599:45;;;;634:9;599:45;;;584:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:65;574:75;;678:10;656:15;:19;672:2;656:19;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;724:2;694:15;:27;710:10;694:27;;;;;;;;;;;;;;;:32;;;;738:52;750:2;754:10;766:12;780:9;738:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;738:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;738:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;451:344;;;:::o;314:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26:2038::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "1110200",
"executionCost": "1149",
"totalCost": "1111349"
},
"external": {
"createGravatar(string,string)": "infinite",
"getGravatar(address)": "infinite",
"gravatarToOwner(uint256)": "599",
"gravatars(uint256)": "infinite",
"ownerToGravatar(address)": "590",
"setMythicalGravatar()": "infinite",
"updateGravatarImage(string)": "infinite",
"updateGravatarName(string)": "infinite"
}
},
"methodIdentifiers": {
"createGravatar(string,string)": "cdb3344a",
"getGravatar(address)": "359c1f72",
"gravatarToOwner(uint256)": "88d0d391",
"gravatars(uint256)": "d5ce24ed",
"ownerToGravatar(address)": "a5ac3634",
"setMythicalGravatar()": "1d4f2c6d",
"updateGravatarImage(string)": "0081d6e5",
"updateGravatarName(string)": "b18588fb"
}
},
"abi": [
{
"constant": false,
"inputs": [
{
"name": "_imageUrl",
"type": "string"
}
],
"name": "updateGravatarImage",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "setMythicalGravatar",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
}
],
"name": "getGravatar",
"outputs": [
{
"name": "",
"type": "string"
},
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "gravatarToOwner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "ownerToGravatar",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_displayName",
"type": "string"
}
],
"name": "updateGravatarName",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_displayName",
"type": "string"
},
{
"name": "_imageUrl",
"type": "string"
}
],
"name": "createGravatar",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "gravatars",
"outputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "displayName",
"type": "string"
},
{
"name": "imageUrl",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"name": "owner",
"type": "address"
},
{
"indexed": false,
"name": "displayName",
"type": "string"
},
{
"indexed": false,
"name": "imageUrl",
"type": "string"
}
],
"name": "NewGravatar",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"name": "owner",
"type": "address"
},
{
"indexed": false,
"name": "displayName",
"type": "string"
},
{
"indexed": false,
"name": "imageUrl",
"type": "string"
}
],
"name": "UpdatedGravatar",
"type": "event"
}
]
}
{
"compiler": {
"version": "0.4.21+commit.dfe3193c"
},
"language": "Solidity",
"output": {
"abi": [
{
"constant": false,
"inputs": [
{
"name": "_imageUrl",
"type": "string"
}
],
"name": "updateGravatarImage",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "setMythicalGravatar",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
}
],
"name": "getGravatar",
"outputs": [
{
"name": "",
"type": "string"
},
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "gravatarToOwner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "ownerToGravatar",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_displayName",
"type": "string"
}
],
"name": "updateGravatarName",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_displayName",
"type": "string"
},
{
"name": "_imageUrl",
"type": "string"
}
],
"name": "createGravatar",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "gravatars",
"outputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "displayName",
"type": "string"
},
{
"name": "imageUrl",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"name": "owner",
"type": "address"
},
{
"indexed": false,
"name": "displayName",
"type": "string"
},
{
"indexed": false,
"name": "imageUrl",
"type": "string"
}
],
"name": "NewGravatar",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"name": "owner",
"type": "address"
},
{
"indexed": false,
"name": "displayName",
"type": "string"
},
{
"indexed": false,
"name": "imageUrl",
"type": "string"
}
],
"name": "UpdatedGravatar",
"type": "event"
}
],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"contracts/Gravity.sol": "GravatarRegistry"
},
"evmVersion": "byzantium",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Gravity.sol": {
"keccak256": "0x8f06afa16ad8f9fbf453575f074dcdaca1cfadc4fb25ba724b4520ca9554ab03",
"urls": [
"bzzr://0971ab5e5d620b2fecb1931886185e41129c7511c7a3b74c7f37f31128dceb77"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b506040518060400160405280600981526020017f4b75676f73436f696e00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4b4753000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000383565b508060049080519060200190620000af92919062000383565b506012600560006101000a81548160ff021916908360ff1602179055505050620000fa33620000e36200010060201b60201c565b60ff16600a0a620f4240026200011760201b60201c565b62000439565b6000600560009054906101000a900460ff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620001cf60008383620002f560201b60201c565b620001eb81600254620002fa60201b620009a01790919060201c565b60028190555062000249816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002fa60201b620009a01790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b60008082840190508381101562000379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620003bb576000855562000407565b82601f10620003d657805160ff191683800117855562000407565b8280016001018555821562000407579182015b8281111562000406578251825591602001919060010190620003e9565b5b5090506200041691906200041a565b5090565b5b80821115620004355760008160009055506001016200041b565b5090565b6110de80620004496000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025857806370a08231146102bc57806395d89b4114610314578063a457c2d714610397578063a9059cbb146103fb578063dd62ed3e1461045f576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019557806323b872dd146101b3578063313ce56714610237575b600080fd5b6100b66104d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610579565b60405180821515815260200191505060405180910390f35b61019d610597565b6040518082815260200191505060405180910390f35b61021f600480360360608110156101c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105a1565b60405180821515815260200191505060405180910390f35b61023f61067a565b604051808260ff16815260200191505060405180910390f35b6102a46004803603604081101561026e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610691565b60405180821515815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610744565b6040518082815260200191505060405180910390f35b61031c61078c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035c578082015181840152602081019050610341565b50505050905090810190601f1680156103895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103e3600480360360408110156103ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061082e565b60405180821515815260200191505060405180910390f35b6104476004803603604081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108fb565b60405180821515815260200191505060405180910390f35b6104c16004803603604081101561047557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610919565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561056f5780601f106105445761010080835404028352916020019161056f565b820191906000526020600020905b81548152906001019060200180831161055257829003601f168201915b5050505050905090565b600061058d610586610a28565b8484610a30565b6001905092915050565b6000600254905090565b60006105ae848484610c27565b61066f846105ba610a28565b61066a8560405180606001604052806028815260200161101360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610620610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b610a30565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061073a61069e610a28565b8461073585600160006106af610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109a090919063ffffffff16565b610a30565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108245780601f106107f957610100808354040283529160200191610824565b820191906000526020600020905b81548152906001019060200180831161080757829003601f168201915b5050505050905090565b60006108f161083b610a28565b846108ec856040518060600160405280602581526020016110846025913960016000610865610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b610a30565b6001905092915050565b600061090f610908610a28565b8484610c27565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828401905083811015610a1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fcb6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061103b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fa86023913960400191505060405180910390fd5b610d3e838383610fa2565b610da981604051806060016040528060268152602001610fed602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e3c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109a090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f5a578082015181840152602081019050610f3f565b50505050905090810190601f168015610f875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203f32c4ee5ab8539a208cb5b5463a8071dbd7c86572c74284125a6de9a766489164736f6c63430007060033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4B75676F73436F696E0000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4B47530000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x96 SWAP3 SWAP2 SWAP1 PUSH3 0x383 JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xAF SWAP3 SWAP2 SWAP1 PUSH3 0x383 JUMP JUMPDEST POP PUSH1 0x12 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP POP POP PUSH3 0xFA CALLER PUSH3 0xE3 PUSH3 0x100 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0xA EXP PUSH3 0xF4240 MUL PUSH3 0x117 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x439 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH3 0x1BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1CF PUSH1 0x0 DUP4 DUP4 PUSH3 0x2F5 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1EB DUP2 PUSH1 0x2 SLOAD PUSH3 0x2FA PUSH1 0x20 SHL PUSH3 0x9A0 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH3 0x249 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH3 0x2FA PUSH1 0x20 SHL PUSH3 0x9A0 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH3 0x379 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x3BB JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x407 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x3D6 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x407 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x407 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x406 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3E9 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x416 SWAP2 SWAP1 PUSH3 0x41A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x435 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x41B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x10DE DUP1 PUSH3 0x449 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 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x45F JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x237 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x123 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x579 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x597 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23F PUSH2 0x67A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x691 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x744 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x31C PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x35C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x341 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x389 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x82E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x8FB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x919 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x56F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x544 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x56F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x552 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x58D PUSH2 0x586 PUSH2 0xA28 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5AE DUP5 DUP5 DUP5 PUSH2 0xC27 JUMP JUMPDEST PUSH2 0x66F DUP5 PUSH2 0x5BA PUSH2 0xA28 JUMP JUMPDEST PUSH2 0x66A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1013 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x620 PUSH2 0xA28 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEE8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x73A PUSH2 0x69E PUSH2 0xA28 JUMP JUMPDEST DUP5 PUSH2 0x735 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x6AF PUSH2 0xA28 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x9A0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP 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 0x60 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x824 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7F9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x824 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x807 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F1 PUSH2 0x83B PUSH2 0xA28 JUMP JUMPDEST DUP5 PUSH2 0x8EC DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1084 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x865 PUSH2 0xA28 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEE8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90F PUSH2 0x908 PUSH2 0xA28 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xC27 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xA1E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1060 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFCB PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xCAD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x103B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xD33 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFA8 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD3E DUP4 DUP4 DUP4 PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0xDA9 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xFED PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEE8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xE3C DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x9A0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xF95 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xF3F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF87 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP3 DUP5 SUB SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212203F32 0xC4 0xEE GAS 0xB8 MSTORE8 SWAP11 KECCAK256 DUP13 0xB5 0xB5 CHAINID GASPRICE DUP1 PUSH18 0xDBD7C86572C74284125A6DE9A76648916473 PUSH16 0x6C634300070600330000000000000000 ",
"sourceMap": "176:147:0:-:0;;;207:114;;;;;;;;;;1950:138:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:5;2017;:13;;;;;;;;;;;;:::i;:::-;;2050:7;2040;:17;;;;;;;;;;;;:::i;:::-;;2079:2;2067:9;;:14;;;;;;;;;;;;;;;;;;1950:138;;258:56:0::1;264:10;301;:8;;;:10;;:::i;:::-;293:19;;287:2;:25;276:7;:37;258:5;;;:56;;:::i;:::-;176:147:::0;;3071:89:2;3120:5;3144:9;;;;;;;;;;;3137:16;;3071:89;:::o;7817:370::-;7919:1;7900:21;;:7;:21;;;;7892:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7968:49;7997:1;8001:7;8010:6;7968:20;;;:49;;:::i;:::-;8043:24;8060:6;8043:12;;:16;;;;;;:24;;;;:::i;:::-;8028:12;:39;;;;8098:30;8121:6;8098:9;:18;8108:7;8098:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;8077:9;:18;8087:7;8077:18;;;;;;;;;;;;;;;:51;;;;8164:7;8143:37;;8160:1;8143:37;;;8173:6;8143:37;;;;;;;;;;;;;;;;;;7817:370;;:::o;10686:92::-;;;;:::o;2682:175:1:-;2740:7;2759:9;2775:1;2771;:5;2759:17;;2799:1;2794;:6;;2786:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:1;2842:8;;;2682:175;;;;:::o;176:147:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025857806370a08231146102bc57806395d89b4114610314578063a457c2d714610397578063a9059cbb146103fb578063dd62ed3e1461045f576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019557806323b872dd146101b3578063313ce56714610237575b600080fd5b6100b66104d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610579565b60405180821515815260200191505060405180910390f35b61019d610597565b6040518082815260200191505060405180910390f35b61021f600480360360608110156101c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105a1565b60405180821515815260200191505060405180910390f35b61023f61067a565b604051808260ff16815260200191505060405180910390f35b6102a46004803603604081101561026e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610691565b60405180821515815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610744565b6040518082815260200191505060405180910390f35b61031c61078c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035c578082015181840152602081019050610341565b50505050905090810190601f1680156103895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103e3600480360360408110156103ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061082e565b60405180821515815260200191505060405180910390f35b6104476004803603604081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108fb565b60405180821515815260200191505060405180910390f35b6104c16004803603604081101561047557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610919565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561056f5780601f106105445761010080835404028352916020019161056f565b820191906000526020600020905b81548152906001019060200180831161055257829003601f168201915b5050505050905090565b600061058d610586610a28565b8484610a30565b6001905092915050565b6000600254905090565b60006105ae848484610c27565b61066f846105ba610a28565b61066a8560405180606001604052806028815260200161101360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610620610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b610a30565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061073a61069e610a28565b8461073585600160006106af610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109a090919063ffffffff16565b610a30565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108245780601f106107f957610100808354040283529160200191610824565b820191906000526020600020905b81548152906001019060200180831161080757829003601f168201915b5050505050905090565b60006108f161083b610a28565b846108ec856040518060600160405280602581526020016110846025913960016000610865610a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b610a30565b6001905092915050565b600061090f610908610a28565b8484610c27565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828401905083811015610a1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fcb6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061103b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fa86023913960400191505060405180910390fd5b610d3e838383610fa2565b610da981604051806060016040528060268152602001610fed602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e3c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109a090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f5a578082015181840152602081019050610f3f565b50505050905090810190601f168015610f875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203f32c4ee5ab8539a208cb5b5463a8071dbd7c86572c74284125a6de9a766489164736f6c63430007060033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x45F JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x237 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x123 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x579 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x597 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23F PUSH2 0x67A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x691 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x744 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x31C PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x35C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x341 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x389 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x82E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x8FB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x919 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x56F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x544 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x56F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x552 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x58D PUSH2 0x586 PUSH2 0xA28 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5AE DUP5 DUP5 DUP5 PUSH2 0xC27 JUMP JUMPDEST PUSH2 0x66F DUP5 PUSH2 0x5BA PUSH2 0xA28 JUMP JUMPDEST PUSH2 0x66A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1013 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x620 PUSH2 0xA28 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEE8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x73A PUSH2 0x69E PUSH2 0xA28 JUMP JUMPDEST DUP5 PUSH2 0x735 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x6AF PUSH2 0xA28 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x9A0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP 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 0x60 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x824 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7F9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x824 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x807 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F1 PUSH2 0x83B PUSH2 0xA28 JUMP JUMPDEST DUP5 PUSH2 0x8EC DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1084 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x865 PUSH2 0xA28 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEE8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90F PUSH2 0x908 PUSH2 0xA28 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xC27 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xA1E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1060 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFCB PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xCAD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x103B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xD33 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFA8 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD3E DUP4 DUP4 DUP4 PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0xDA9 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xFED PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEE8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xE3C DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x9A0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xF95 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xF3F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF87 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP3 DUP5 SUB SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212203F32 0xC4 0xEE GAS 0xB8 MSTORE8 SWAP11 KECCAK256 DUP13 0xB5 0xB5 CHAINID GASPRICE DUP1 PUSH18 0xDBD7C86572C74284125A6DE9A76648916473 PUSH16 0x6C634300070600330000000000000000 ",
"sourceMap": "176:147:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:89:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4229:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3220:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4862:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3071:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5574:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3384:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2355:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6276:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3712:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3942:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2153:89;2198:13;2230:5;2223:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:89;:::o;4229:166::-;4312:4;4328:39;4337:12;:10;:12::i;:::-;4351:7;4360:6;4328:8;:39::i;:::-;4384:4;4377:11;;4229:166;;;;:::o;3220:106::-;3281:7;3307:12;;3300:19;;3220:106;:::o;4862:317::-;4968:4;4984:36;4994:6;5002:9;5013:6;4984:9;:36::i;:::-;5030:121;5039:6;5047:12;:10;:12::i;:::-;5061:89;5099:6;5061:89;;;;;;;;;;;;;;;;;:11;:19;5073:6;5061:19;;;;;;;;;;;;;;;:33;5081:12;:10;:12::i;:::-;5061:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5030:8;:121::i;:::-;5168:4;5161:11;;4862:317;;;;;:::o;3071:89::-;3120:5;3144:9;;;;;;;;;;;3137:16;;3071:89;:::o;5574:215::-;5662:4;5678:83;5687:12;:10;:12::i;:::-;5701:7;5710:50;5749:10;5710:11;:25;5722:12;:10;:12::i;:::-;5710:25;;;;;;;;;;;;;;;:34;5736:7;5710:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5678:8;:83::i;:::-;5778:4;5771:11;;5574:215;;;;:::o;3384:125::-;3458:7;3484:9;:18;3494:7;3484:18;;;;;;;;;;;;;;;;3477:25;;3384:125;;;:::o;2355:93::-;2402:13;2434:7;2427:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2355:93;:::o;6276:266::-;6369:4;6385:129;6394:12;:10;:12::i;:::-;6408:7;6417:96;6456:15;6417:96;;;;;;;;;;;;;;;;;:11;:25;6429:12;:10;:12::i;:::-;6417:25;;;;;;;;;;;;;;;:34;6443:7;6417:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6385:8;:129::i;:::-;6531:4;6524:11;;6276:266;;;;:::o;3712:172::-;3798:4;3814:42;3824:12;:10;:12::i;:::-;3838:9;3849:6;3814:9;:42::i;:::-;3873:4;3866:11;;3712:172;;;;:::o;3942:149::-;4031:7;4057:11;:18;4069:5;4057:18;;;;;;;;;;;;;;;:27;4076:7;4057:27;;;;;;;;;;;;;;;;4050:34;;3942:149;;;;:::o;2682:175:1:-;2740:7;2759:9;2775:1;2771;:5;2759:17;;2799:1;2794;:6;;2786:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:1;2842:8;;;2682:175;;;;:::o;598:104:4:-;651:15;685:10;678:17;;598:104;:::o;9340:340:2:-;9458:1;9441:19;;:5;:19;;;;9433:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9538:1;9519:21;;:7;:21;;;;9511:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9620:6;9590:11;:18;9602:5;9590:18;;;;;;;;;;;;;;;:27;9609:7;9590:27;;;;;;;;;;;;;;;:36;;;;9657:7;9641:32;;9650:5;9641:32;;;9666:6;9641:32;;;;;;;;;;;;;;;;;;9340:340;;;:::o;7016:530::-;7139:1;7121:20;;:6;:20;;;;7113:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7222:1;7201:23;;:9;:23;;;;7193:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7275:47;7296:6;7304:9;7315:6;7275:20;:47::i;:::-;7353:71;7375:6;7353:71;;;;;;;;;;;;;;;;;:9;:17;7363:6;7353:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7333:9;:17;7343:6;7333:17;;;;;;;;;;;;;;;:91;;;;7457:32;7482:6;7457:9;:20;7467:9;7457:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7434:9;:20;7444:9;7434:20;;;;;;;;;;;;;;;:55;;;;7521:9;7504:35;;7513:6;7504:35;;;7532:6;7504:35;;;;;;;;;;;;;;;;;;7016:530;;;:::o;5424:163:1:-;5510:7;5542:1;5537;:6;;5545:12;5529:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5579:1;5575;:5;5568:12;;5424:163;;;;;:::o;10686:92:2:-;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "863600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"allowance(address,address)": "1431",
"approve(address,uint256)": "infinite",
"balanceOf(address)": "1218",
"decimals()": "1144",
"decreaseAllowance(address,uint256)": "infinite",
"increaseAllowance(address,uint256)": "infinite",
"name()": "infinite",
"symbol()": "infinite",
"totalSupply()": "1058",
"transfer(address,uint256)": "infinite",
"transferFrom(address,address,uint256)": "infinite"
}
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"decreaseAllowance(address,uint256)": "a457c2d7",
"increaseAllowance(address,uint256)": "39509351",
"name()": "06fdde03",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.7.6+commit.7338295f"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "See {IERC20-balanceOf}."
},
"decimals()": {
"details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
},
"decreaseAllowance(address,uint256)": {
"details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
},
"increaseAllowance(address,uint256)": {
"details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
},
"name()": {
"details": "Returns the name of the token."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "See {IERC20-totalSupply}."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Token.sol": "Token"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Token.sol": {
"keccak256": "0xcc181514697938cb6877e5fc16210b9f2a06bd7f1c0224b3c95d2a337c2617aa",
"license": "MIT",
"urls": [
"bzz-raw://1e3d4f9fee483a8a3de1b77b228bbfe75feddcc85e3057c8135ada4cd2ddff62",
"dweb:/ipfs/QmWG2XiW5SdrKCyjY55Yt3NCFUhW2KU2qWVMbfvyv1VoSi"
]
},
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0-solc-0.7/contracts/math/SafeMath.sol": {
"keccak256": "0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f",
"license": "MIT",
"urls": [
"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f",
"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K"
]
},
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0-solc-0.7/contracts/token/ERC20/ERC20.sol": {
"keccak256": "0x36b5ca4eabe888b39b10973621ca0dcc9b1508f8d06db9ddf045d7aa7c867d4a",
"license": "MIT",
"urls": [
"bzz-raw://ccbd79e8d556aa7011babb0e5d1e55a966add74853e7ba0274ff184bd96ef002",
"dweb:/ipfs/QmV28ozNRUFDiDUMvCwcFmLTQPG6nfvgeKr4cmbHWoegtH"
]
},
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0-solc-0.7/contracts/token/ERC20/IERC20.sol": {
"keccak256": "0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76",
"license": "MIT",
"urls": [
"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b",
"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU"
]
},
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0-solc-0.7/contracts/utils/Context.sol": {
"keccak256": "0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0",
"license": "MIT",
"urls": [
"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f",
"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96"
]
}
},
"version": 1
}
pragma solidity 0.6.4;
pragma experimental ABIEncoderV2;
import "../libraries/Babylonian.sol";
import "../interfaces/IDepositExecute.sol";
import "../interfaces/IERC20.sol";
import "../interfaces/IUniswapV2Pair.sol";
import "../interfaces/IUniswapV2Router.sol";
import "../interfaces/IUniswapV2RouterWrapper.sol";
import "../interfaces/IWrappedTokensUnwrapper.sol";
import "../interfaces/IBridge.sol";
import "./HandlerHelpers.sol";
import "../ERC20Safe.sol";
import "../utils/UpgradableOwnable.sol";
interface IBeefyVault is IERC20 {
function deposit(uint256 amount) external;
function withdraw(uint256 shares) external;
function want() external pure returns (address); // Beefy Vault V6
function token() external pure returns (address); // Beefy Vault V5
function native() external pure returns (address); // Beefy Vault Native
}
/**
@title Handles Beefy deposits and withdrawals.
@notice This contract is intended to be used with the Bridge contract.
*/
contract BeefyHandler is
IDepositExecute,
HandlerHelpers,
UpgradableOwnable,
ERC20Safe
{
using SafeMath for uint256;
address public WETH;
uint256 public constant minimumAmount = 1000;
bytes8 public lachainChainID;
address public routerWrapper;
// token => tokenHandler
mapping(address => address) public tokenHandlers;
// factory => router
mapping(address => IUniswapV2Router) public routers;
// unwrapper for WBNB
address public wrappedTokensUnwrapper;
/**
@param bridgeAddress Contract address of previously deployed Bridge.
*/
function initialize(bytes8 _lachainChainID, address _WETH, address bridgeAddress) public {
WETH = _WETH;
_bridgeAddress = bridgeAddress;
lachainChainID = _lachainChainID;
routerWrapper = address(0);
ownableInit(msg.sender);
}
receive() external payable {
if (wrappedTokensUnwrapper == address(0)) {
assert(msg.sender == WETH);
} else {
assert(msg.sender == wrappedTokensUnwrapper);
}
}
function setBridgeAddress(address bridgeAddress) external onlyOwner isInitisalised {
_bridgeAddress = bridgeAddress;
}
function setLachainID(bytes8 _lachainChainID) external onlyOwner isInitisalised {
lachainChainID = _lachainChainID;
}
function setRouterWrapper(address _routerWrapper) external onlyOwner isInitisalised {
routerWrapper = _routerWrapper;
}
function setTokenHandler(address _token, address _tokenHandler) external onlyOwner isInitisalised {
tokenHandlers[_token] = _tokenHandler;
}
function setRouter(address _factory, address _router) external onlyOwner {
routers[_factory] = IUniswapV2Router(_router);
}
function setWrappedTokensUnwrapper(address _wrappedTokensUnwrapper) external onlyOwner {
wrappedTokensUnwrapper = _wrappedTokensUnwrapper;
}
/**
@notice A deposit is initiatied by making a deposit in the Bridge contract.
@param destinationChainID Chain ID of chain tokens are expected to be bridged to.
@param depositNonce This value is generated as an ID by the Bridge contract.
@param depositer Address of account making the deposit in the Bridge contract.
@notice Data passed into the function should be constructed as follows:
amount uint256 bytes 0 - 32
recipientAddress length uint256 bytes 32 - 64
recipientAddress bytes bytes 64 - END
@dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is
marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.
*/
function deposit(
bytes32 resourceID,
bytes8 destinationChainID,
uint64 depositNonce,
address depositer,
address recipientAddress,
uint256 amount,
bytes calldata params
) external override onlyBridge isInitisalised returns (address) {
revert();
}
/**
@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.
by a relayer on the deposit's destination chain.
@notice Data passed into the function should be constructed as follows:
amount uint256 bytes 0 - 32
destinationRecipientAddress length uint256 bytes 32 - 64
destinationRecipientAddress bytes bytes 64 - END
*/
function executeProposal(
bytes32 resourceID,
address recipientAddress,
uint256 amount,
bytes calldata params
) external override onlyBridge isInitisalised {
// ends with 0 => deposit
// ends with 1 => withdrawal
bool isDeposit = (uint256(resourceID) % 2 == 0);
(bytes32 wantResourceID, bytes32 vaultResourceID) = isDeposit ?
(resourceID, bytes32(uint256(resourceID) + 1)) :
(bytes32(uint256(resourceID) - 1), resourceID)
;
_handleBeefy(wantResourceID, vaultResourceID, recipientAddress, amount, isDeposit);
}
function _handleBeefy(
bytes32 wantResourceID,
bytes32 vaultResourceID,
address recipientAddress,
uint256 amount,
bool isDeposit
) private {
address wantAddress = _resourceIDToTokenContractAddress[wantResourceID];
address vaultAddress = _resourceIDToTokenContractAddress[vaultResourceID];
IBridge bridge = IBridge(_bridgeAddress);
IBeefyVault vault = IBeefyVault(vaultAddress);
// handle deposit/withdraw
uint256 beforeWantBalance;
uint256 beforeVaultBalance;
if (isDeposit) {
if (wantAddress == WETH) {
// get wrapped native tokens from bridge
bridge.depositNativeToken(wantResourceID, amount);
} else {
// get erc20 tokens from erc20handler
lockERC20(wantAddress, tokenHandlers[wantAddress], address(this), amount);
}
beforeWantBalance = IERC20(wantAddress).balanceOf(address(this)).sub(amount);
beforeVaultBalance = vault.balanceOf(address(this));
} else {
beforeWantBalance = IERC20(wantAddress).balanceOf(address(this));
}
// if vault doesn't accept want token, swapping and adding liquidity is needed
if (wantAddress == _getVaultWant(vault)) {
_handleDirectBeefy(wantAddress, vaultAddress, amount, isDeposit);
} else {
_handleZapBeefy(wantAddress, vaultAddress, amount, isDeposit);
}
// return leftover want token back to user
_returnAsset(wantAddress, IERC20(wantAddress).balanceOf(address(this)).sub(beforeWantBalance), recipientAddress);
if (isDeposit) {
bridge.internalDeposit(
lachainChainID,
vaultResourceID,
vault.balanceOf(address(this)).sub(beforeVaultBalance),
recipientAddress
);
}
}
function _handleDirectBeefy(
address wantAddress,
address vaultAddress,
uint256 amount,
bool isDeposit
) private {
IBeefyVault vault = IBeefyVault(vaultAddress);
if (isDeposit) {
approveERC20(wantAddress, vaultAddress, amount);
vault.deposit(amount);
} else {
vault.withdraw(amount);
}
}
function _handleZapBeefy(
address wantAddress,
address vaultAddress,
uint256 amount,
bool isDeposit
) private {
(IBeefyVault vault, IUniswapV2Pair pair, IUniswapV2Router router) = _getVaultPair(vaultAddress);
bool isWant0 = pair.token0() == wantAddress;
require(isWant0 || pair.token1() == wantAddress, 'Desired token not present in liquidity pair');
address[] memory path = new address[](2);
if (isDeposit) {
(path[0], path[1]) = (wantAddress, isWant0 ? pair.token1() : pair.token0());
// swap the want token for the second token and add liquidity
uint256 amountLiquidity = _swapAndAddLiquidity(pair, router, path, amount, isWant0);
// deposit LP tokens into the vault
approveERC20(address(pair), vaultAddress, amountLiquidity);
vault.deposit(amountLiquidity);
} else {
(path[0], path[1]) = (isWant0 ? pair.token1() : pair.token0(), wantAddress);
// withdraw LP tokens from the vault
uint256 beforeLpBalance = IERC20(address(pair)).balanceOf(address(this));
vault.withdraw(amount);
// burn LP tokens
(uint256 amount0, uint256 amount1) = _removeLiquidity(
address(pair),
IERC20(address(pair)).balanceOf(address(this)).sub(beforeLpBalance),
address(this)
);
// swap the second pair token for the want token
_swapExactTokensForTokens(router, isWant0 ? amount1 : amount0, 1, path, address(this), block.timestamp);
}
}
function _swapAndAddLiquidity(
IUniswapV2Pair pair,
IUniswapV2Router router,
address[] memory path,
uint256 amount,
bool isWant0
) private returns (uint256) {
(uint256 reserveA, uint256 reserveB,) = pair.getReserves();
require(reserveA > minimumAmount && reserveB > minimumAmount, 'Liquidity pair reserves too low');
uint256 swapAmountIn;
if (isWant0) {
swapAmountIn = _getSwapAmount(router, amount, reserveA, reserveB);
} else {
swapAmountIn = _getSwapAmount(router, amount, reserveB, reserveA);
}
// swap the want token for the second pair token
uint256[] memory swappedAmounts = _swapExactTokensForTokens(router, swapAmountIn, 1, path, address(this), block.timestamp);
// get LP tokens
approveERC20(path[0], address(router), amount.sub(swappedAmounts[0]));
approveERC20(path[1], address(router), swappedAmounts[1]);
(,, uint256 amountLiquidity) = router
.addLiquidity(path[0], path[1], amount.sub(swappedAmounts[0]), swappedAmounts[1], 1, 1, address(this), block.timestamp);
return amountLiquidity;
}
function _swapExactTokensForTokens(
IUniswapV2Router router,
uint amountIn,
uint amountOutMin,
address[] memory path,
address to,
uint deadline
) private returns (uint[] memory amounts) {
if (routerWrapper == address(0)) {
approveERC20(path[0], address(router), amountIn);
return router.swapExactTokensForTokens(amountIn, amountOutMin, path, to, deadline);
}
approveERC20(path[0], routerWrapper, amountIn);
return IUniswapV2RouterWrapper(routerWrapper)
.wrappedSwapExactTokensForTokens(address(router), amountIn, amountOutMin, path, to, deadline);
}
function _removeLiquidity(address pair, uint256 amount, address to) private returns (uint256 amount0, uint256 amount1) {
releaseERC20(pair, pair, amount);
(amount0, amount1) = IUniswapV2Pair(pair).burn(to);
require(amount0 >= minimumAmount, 'INSUFFICIENT_A_AMOUNT');
require(amount1 >= minimumAmount, 'INSUFFICIENT_B_AMOUNT');
}
function _returnAsset(address token, uint256 amount, address recipientAddress) private {
IBridge bridge = IBridge(_bridgeAddress);
if (amount > 0) {
bytes32 tokenResourceID = _tokenContractAddressToResourceID[token];
if (token == WETH) {
// send native tokens to bridge
if (wrappedTokensUnwrapper == address(0)) {
IWETH(WETH).withdraw(amount);
} else {
IWETH(WETH).transfer(wrappedTokensUnwrapper, amount);
IWrappedTokensUnwrapper(wrappedTokensUnwrapper).unwrap(WETH);
}
bridge.depositNativeToken{value: amount}(tokenResourceID, amount);
} else {
// send erc20 tokens to erc20handler
releaseERC20(token, tokenHandlers[token], amount);
}
// bridge tokens to Lachain
bridge.internalDeposit(lachainChainID, tokenResourceID, amount, recipientAddress);
}
}
function _getVaultPair (
address beefyVault
) private view returns (
IBeefyVault vault,
IUniswapV2Pair pair,
IUniswapV2Router router
) {
vault = IBeefyVault(beefyVault);
pair = IUniswapV2Pair(_getVaultWant(vault));
router = routers[pair.factory()];
require(address(router) != address(0), 'Unknown liquidity pair router');
}
function _getVaultWant(IBeefyVault vault) private view returns (address) {
try vault.native() returns (address native) {
require(native == WETH, "Unknown native token wrapper");
// Vault Native
return native;
} catch {
try vault.want() returns (address want) {
// Vault V6
return want;
} catch {
// Vault V5
return vault.token();
}
}
}
function _getSwapAmount(
IUniswapV2Router router,
uint256 investmentA,
uint256 reserveA,
uint256 reserveB
) private view returns (uint256 swapAmount) {
uint256 halfInvestment = investmentA / 2;
uint256 nominator;
try router.getAmountOut(halfInvestment, reserveA, reserveB) returns (uint256 amountOut) {
nominator = amountOut;
} catch {
nominator = router.getAmountOut(halfInvestment, reserveA, reserveB, 1);
}
uint256 denominator = router.quote(halfInvestment, reserveA.add(halfInvestment), reserveB.sub(nominator));
swapAmount = investmentA.sub(Babylonian.sqrt(halfInvestment * halfInvestment * nominator / denominator));
}
/**
@notice Used to manually release ERC20 tokens from ERC20Safe.
@param tokenAddress Address of token contract to release.
@param recipient Address to release tokens to.
@param amount The amount of ERC20 tokens to release.
*/
function withdraw(
address tokenAddress,
address recipient,
uint256 amount
) external override onlyBridge isInitisalised {
releaseERC20(tokenAddress, recipient, amount);
}
function getAddressFromResourceId(bytes32 resourceID)
external
view
override
returns (address)
{
return _resourceIDToTokenContractAddress[resourceID];
}
/**
@notice Used to approve spending tokens.
@param resourceID ResourceID to be used for approval.
@param spender Spender address.
@param amount Amount to approve.
*/
function approve(
bytes32 resourceID,
address spender,
uint256 amount
) external override onlyBridge isInitisalised {
address tokenAddress = _resourceIDToTokenContractAddress[resourceID];
require(
_contractWhitelist[tokenAddress],
"provided tokenAddress is not whitelisted"
);
approveERC20(tokenAddress, spender, amount);
}
}
pragma solidity ^0.4.21;
contract GravatarRegistry {
event NewGravatar(uint id, address owner, string displayName, string imageUrl);
event UpdatedGravatar(uint id, address owner, string displayName, string imageUrl);
struct Gravatar {
address owner;
string displayName;
string imageUrl;
}
Gravatar[] public gravatars;
mapping (uint => address) public gravatarToOwner;
mapping (address => uint) public ownerToGravatar;
function createGravatar(string _displayName, string _imageUrl) public {
require(ownerToGravatar[msg.sender] == 0);
uint id = gravatars.push(Gravatar(msg.sender, _displayName, _imageUrl)) - 1;
gravatarToOwner[id] = msg.sender;
ownerToGravatar[msg.sender] = id;
emit NewGravatar(id, msg.sender, _displayName, _imageUrl);
}
function getGravatar(address owner) public view returns (string, string) {
uint id = ownerToGravatar[owner];
return (gravatars[id].displayName, gravatars[id].imageUrl);
}
function updateGravatarName(string _displayName) public {
require(ownerToGravatar[msg.sender] != 0);
require(msg.sender == gravatars[ownerToGravatar[msg.sender]].owner);
uint id = ownerToGravatar[msg.sender];
gravatars[id].displayName = _displayName;
emit UpdatedGravatar(id, msg.sender, _displayName, gravatars[id].imageUrl);
}
function updateGravatarImage(string _imageUrl) public {
require(ownerToGravatar[msg.sender] != 0);
require(msg.sender == gravatars[ownerToGravatar[msg.sender]].owner);
uint id = ownerToGravatar[msg.sender];
gravatars[id].imageUrl = _imageUrl;
emit UpdatedGravatar(id, msg.sender, gravatars[id].displayName, _imageUrl);
}
// the gravatar at position 0 of gravatars[]
// is fake
// it's a mythical gravatar
// that doesn't really exist
// dani will invoke this function once when this contract is deployed
// but then no more
function setMythicalGravatar() public {
require(msg.sender == 0x8d3e809Fbd258083a5Ba004a527159Da535c8abA);
gravatars.push(Gravatar(0x0, " ", " "));
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0-solc-0.7/contracts/token/ERC20/ERC20.sol";
contract Token is ERC20 {
constructor () ERC20("KugosCoin", "KGS") {
_mint(msg.sender, 1000000 * (10 ** uint256(decimals())));
}
}
This file has been truncated, but you can view the full file.
{
"id": "901ae80c1ad1e07cbedc2333beac820e",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.4.21",
"solcLongVersion": "0.4.21+commit.dfe3193c",
"input": {
"language": "Solidity",
"sources": {
"contracts/Gravity.sol": {
"content": "pragma solidity ^0.4.21;\n\ncontract GravatarRegistry {\n event NewGravatar(uint id, address owner, string displayName, string imageUrl);\n event UpdatedGravatar(uint id, address owner, string displayName, string imageUrl);\n\n struct Gravatar {\n address owner;\n string displayName;\n string imageUrl;\n }\n\n Gravatar[] public gravatars;\n\n mapping (uint => address) public gravatarToOwner;\n mapping (address => uint) public ownerToGravatar;\n\n function createGravatar(string _displayName, string _imageUrl) public {\n require(ownerToGravatar[msg.sender] == 0);\n uint id = gravatars.push(Gravatar(msg.sender, _displayName, _imageUrl)) - 1;\n\n gravatarToOwner[id] = msg.sender;\n ownerToGravatar[msg.sender] = id;\n\n emit NewGravatar(id, msg.sender, _displayName, _imageUrl);\n }\n\n function getGravatar(address owner) public view returns (string, string) {\n uint id = ownerToGravatar[owner];\n return (gravatars[id].displayName, gravatars[id].imageUrl);\n }\n\n function updateGravatarName(string _displayName) public {\n require(ownerToGravatar[msg.sender] != 0);\n require(msg.sender == gravatars[ownerToGravatar[msg.sender]].owner);\n\n uint id = ownerToGravatar[msg.sender];\n\n gravatars[id].displayName = _displayName;\n emit UpdatedGravatar(id, msg.sender, _displayName, gravatars[id].imageUrl);\n }\n\n function updateGravatarImage(string _imageUrl) public {\n require(ownerToGravatar[msg.sender] != 0);\n require(msg.sender == gravatars[ownerToGravatar[msg.sender]].owner);\n\n uint id = ownerToGravatar[msg.sender];\n\n gravatars[id].imageUrl = _imageUrl;\n emit UpdatedGravatar(id, msg.sender, gravatars[id].displayName, _imageUrl);\n }\n\n // the gravatar at position 0 of gravatars[]\n // is fake\n // it's a mythical gravatar\n // that doesn't really exist\n // dani will invoke this function once when this contract is deployed\n // but then no more\n function setMythicalGravatar() public {\n require(msg.sender == 0x8d3e809Fbd258083a5Ba004a527159Da535c8abA);\n gravatars.push(Gravatar(0x0, \" \", \" \"));\n }\n}"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"contracts/Gravity.sol": {
"GravatarRegistry": {
"abi": [
{
"constant": false,
"inputs": [
{
"name": "_imageUrl",
"type": "string"
}
],
"name": "updateGravatarImage",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "setMythicalGravatar",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
}
],
"name": "getGravatar",
"outputs": [
{
"name": "",
"type": "string"
},
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "gravatarToOwner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "ownerToGravatar",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_displayName",
"type": "string"
}
],
"name": "updateGravatarName",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_displayName",
"type": "string"
},
{
"name": "_imageUrl",
"type": "string"
}
],
"name": "createGravatar",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "gravatars",
"outputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "displayName",
"type": "string"
},
{
"name": "imageUrl",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"name": "owner",
"type": "address"
},
{
"indexed": false,
"name": "displayName",
"type": "string"
},
{
"indexed": false,
"name": "imageUrl",
"type": "string"
}
],
"name": "NewGravatar",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"name": "owner",
"type": "address"
},
{
"indexed": false,
"name": "displayName",
"type": "string"
},
{
"indexed": false,
"name": "imageUrl",
"type": "string"
}
],
"name": "UpdatedGravatar",
"type": "event"
}
],
"devdoc": {
"methods": {}
},
"evm": {
"assembly": " /* \"contracts/Gravity.sol\":26:2064 contract GravatarRegistry {... */\n mstore(0x40, 0x60)\n jumpi(tag_1, iszero(callvalue))\n 0x0\n dup1\n revert\ntag_1:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x0\n codecopy\n 0x0\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Gravity.sol\":26:2064 contract GravatarRegistry {... */\n mstore(0x40, 0x60)\n jumpi(tag_1, lt(calldatasize, 0x4))\n calldataload(0x0)\n 0x100000000000000000000000000000000000000000000000000000000\n swap1\n div\n 0xffffffff\n and\n dup1\n 0x81d6e5\n eq\n tag_2\n jumpi\n dup1\n 0x1d4f2c6d\n eq\n tag_3\n jumpi\n dup1\n 0x359c1f72\n eq\n tag_4\n jumpi\n dup1\n 0x88d0d391\n eq\n tag_5\n jumpi\n dup1\n 0xa5ac3634\n eq\n tag_6\n jumpi\n dup1\n 0xb18588fb\n eq\n tag_7\n jumpi\n dup1\n 0xcdb3344a\n eq\n tag_8\n jumpi\n dup1\n 0xd5ce24ed\n eq\n tag_9\n jumpi\n tag_1:\n 0x0\n dup1\n revert\n /* \"contracts/Gravity.sol\":1339:1684 function updateGravatarImage(string _imageUrl) public {... */\n tag_2:\n jumpi(tag_10, iszero(callvalue))\n 0x0\n dup1\n revert\n tag_10:\n tag_11\n 0x4\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n dup3\n add\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n dup1\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap4\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup4\n dup4\n dup1\n dup3\n dup5\n calldatacopy\n dup3\n add\n swap2\n pop\n pop\n pop\n pop\n pop\n pop\n swap2\n swap1\n pop\n pop\n jump(tag_12)\n tag_11:\n stop\n /* \"contracts/Gravity.sol\":1903:2062 function setMythicalGravatar() public {... */\n tag_3:\n jumpi(tag_13, iszero(callvalue))\n 0x0\n dup1\n revert\n tag_13:\n tag_14\n jump(tag_15)\n tag_14:\n stop\n /* \"contracts/Gravity.sol\":799:979 function getGravatar(address owner) public view returns (string, string) {... */\n tag_4:\n jumpi(tag_16, iszero(callvalue))\n 0x0\n dup1\n revert\n tag_16:\n tag_17\n 0x4\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap2\n swap1\n pop\n pop\n jump(tag_18)\n tag_17:\n mload(0x40)\n dup1\n dup1\n 0x20\n add\n dup1\n 0x20\n add\n dup4\n dup2\n sub\n dup4\n mstore\n dup6\n dup2\n dup2\n mload\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":23:24 */\n 0x0\n /* \"--CODEGEN--\":8:108 */\n tag_19:\n /* \"--CODEGEN--\":33:36 */\n dup4\n /* \"--CODEGEN--\":30:31 */\n dup2\n /* \"--CODEGEN--\":27:37 */\n lt\n /* \"--CODEGEN--\":8:108 */\n iszero\n tag_20\n jumpi\n /* \"--CODEGEN--\":99:100 */\n dup1\n /* \"--CODEGEN--\":94:97 */\n dup3\n /* \"--CODEGEN--\":90:101 */\n add\n /* \"--CODEGEN--\":84:102 */\n mload\n /* \"--CODEGEN--\":80:81 */\n dup2\n /* \"--CODEGEN--\":75:78 */\n dup5\n /* \"--CODEGEN--\":71:82 */\n add\n /* \"--CODEGEN--\":64:103 */\n mstore\n /* \"--CODEGEN--\":52:54 */\n 0x20\n /* \"--CODEGEN--\":49:50 */\n dup2\n /* \"--CODEGEN--\":45:55 */\n add\n /* \"--CODEGEN--\":40:55 */\n swap1\n pop\n /* \"--CODEGEN--\":8:108 */\n jump(tag_19)\n tag_20:\n /* \"--CODEGEN--\":12:26 */\n pop\n /* \"contracts/Gravity.sol\":799:979 function getGravatar(address owner) public view returns (string, string) {... */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_22\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_22:\n pop\n dup4\n dup2\n sub\n dup3\n mstore\n dup5\n dup2\n dup2\n mload\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":23:24 */\n 0x0\n /* \"--CODEGEN--\":8:108 */\n tag_23:\n /* \"--CODEGEN--\":33:36 */\n dup4\n /* \"--CODEGEN--\":30:31 */\n dup2\n /* \"--CODEGEN--\":27:37 */\n lt\n /* \"--CODEGEN--\":8:108 */\n iszero\n tag_24\n jumpi\n /* \"--CODEGEN--\":99:100 */\n dup1\n /* \"--CODEGEN--\":94:97 */\n dup3\n /* \"--CODEGEN--\":90:101 */\n add\n /* \"--CODEGEN--\":84:102 */\n mload\n /* \"--CODEGEN--\":80:81 */\n dup2\n /* \"--CODEGEN--\":75:78 */\n dup5\n /* \"--CODEGEN--\":71:82 */\n add\n /* \"--CODEGEN--\":64:103 */\n mstore\n /* \"--CODEGEN--\":52:54 */\n 0x20\n /* \"--CODEGEN--\":49:50 */\n dup2\n /* \"--CODEGEN--\":45:55 */\n add\n /* \"--CODEGEN--\":40:55 */\n swap1\n pop\n /* \"--CODEGEN--\":8:108 */\n jump(tag_23)\n tag_24:\n /* \"--CODEGEN--\":12:26 */\n pop\n /* \"contracts/Gravity.sol\":799:979 function getGravatar(address owner) public view returns (string, string) {... */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_26\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_26:\n pop\n swap5\n pop\n pop\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/Gravity.sol\":346:394 mapping (uint => address) public gravatarToOwner */\n tag_5:\n jumpi(tag_27, iszero(callvalue))\n 0x0\n dup1\n revert\n tag_27:\n tag_28\n 0x4\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap2\n swap1\n pop\n pop\n jump(tag_29)\n tag_28:\n mload(0x40)\n dup1\n dup3\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/Gravity.sol\":398:446 mapping (address => uint) public ownerToGravatar */\n tag_6:\n jumpi(tag_30, iszero(callvalue))\n 0x0\n dup1\n revert\n tag_30:\n tag_31\n 0x4\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap2\n swap1\n pop\n pop\n jump(tag_32)\n tag_31:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/Gravity.sol\":983:1335 function updateGravatarName(string _displayName) public {... */\n tag_7:\n jumpi(tag_33, iszero(callvalue))\n 0x0\n dup1\n revert\n tag_33:\n tag_34\n 0x4\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n dup3\n add\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n dup1\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap4\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup4\n dup4\n dup1\n dup3\n dup5\n calldatacopy\n dup3\n add\n swap2\n pop\n pop\n pop\n pop\n pop\n pop\n swap2\n swap1\n pop\n pop\n jump(tag_35)\n tag_34:\n stop\n /* \"contracts/Gravity.sol\":451:795 function createGravatar(string _displayName, string _imageUrl) public {... */\n tag_8:\n jumpi(tag_36, iszero(callvalue))\n 0x0\n dup1\n revert\n tag_36:\n tag_37\n 0x4\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n dup3\n add\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n dup1\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap4\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup4\n dup4\n dup1\n dup3\n dup5\n calldatacopy\n dup3\n add\n swap2\n pop\n pop\n pop\n pop\n pop\n pop\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n dup3\n add\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n dup1\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap4\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup4\n dup4\n dup1\n dup3\n dup5\n calldatacopy\n dup3\n add\n swap2\n pop\n pop\n pop\n pop\n pop\n pop\n swap2\n swap1\n pop\n pop\n jump(tag_38)\n tag_37:\n stop\n /* \"contracts/Gravity.sol\":314:341 Gravatar[] public gravatars */\n tag_9:\n jumpi(tag_39, iszero(callvalue))\n 0x0\n dup1\n revert\n tag_39:\n tag_40\n 0x4\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap2\n swap1\n pop\n pop\n jump(tag_41)\n tag_40:\n mload(0x40)\n dup1\n dup5\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n dup1\n 0x20\n add\n dup1\n 0x20\n add\n dup4\n dup2\n sub\n dup4\n mstore\n dup6\n dup2\n dup2\n mload\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":23:24 */\n 0x0\n /* \"--CODEGEN--\":8:108 */\n tag_42:\n /* \"--CODEGEN--\":33:36 */\n dup4\n /* \"--CODEGEN--\":30:31 */\n dup2\n /* \"--CODEGEN--\":27:37 */\n lt\n /* \"--CODEGEN--\":8:108 */\n iszero\n tag_43\n jumpi\n /* \"--CODEGEN--\":99:100 */\n dup1\n /* \"--CODEGEN--\":94:97 */\n dup3\n /* \"--CODEGEN--\":90:101 */\n add\n /* \"--CODEGEN--\":84:102 */\n mload\n /* \"--CODEGEN--\":80:81 */\n dup2\n /* \"--CODEGEN--\":75:78 */\n dup5\n /* \"--CODEGEN--\":71:82 */\n add\n /* \"--CODEGEN--\":64:103 */\n mstore\n /* \"--CODEGEN--\":52:54 */\n 0x20\n /* \"--CODEGEN--\":49:50 */\n dup2\n /* \"--CODEGEN--\":45:55 */\n add\n /* \"--CODEGEN--\":40:55 */\n swap1\n pop\n /* \"--CODEGEN--\":8:108 */\n jump(tag_42)\n tag_43:\n /* \"--CODEGEN--\":12:26 */\n pop\n /* \"contracts/Gravity.sol\":314:341 Gravatar[] public gravatars */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_45\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_45:\n pop\n dup4\n dup2\n sub\n dup3\n mstore\n dup5\n dup2\n dup2\n mload\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":23:24 */\n 0x0\n /* \"--CODEGEN--\":8:108 */\n tag_46:\n /* \"--CODEGEN--\":33:36 */\n dup4\n /* \"--CODEGEN--\":30:31 */\n dup2\n /* \"--CODEGEN--\":27:37 */\n lt\n /* \"--CODEGEN--\":8:108 */\n iszero\n tag_47\n jumpi\n /* \"--CODEGEN--\":99:100 */\n dup1\n /* \"--CODEGEN--\":94:97 */\n dup3\n /* \"--CODEGEN--\":90:101 */\n add\n /* \"--CODEGEN--\":84:102 */\n mload\n /* \"--CODEGEN--\":80:81 */\n dup2\n /* \"--CODEGEN--\":75:78 */\n dup5\n /* \"--CODEGEN--\":71:82 */\n add\n /* \"--CODEGEN--\":64:103 */\n mstore\n /* \"--CODEGEN--\":52:54 */\n 0x20\n /* \"--CODEGEN--\":49:50 */\n dup2\n /* \"--CODEGEN--\":45:55 */\n add\n /* \"--CODEGEN--\":40:55 */\n swap1\n pop\n /* \"--CODEGEN--\":8:108 */\n jump(tag_46)\n tag_47:\n /* \"--CODEGEN--\":12:26 */\n pop\n /* \"contracts/Gravity.sol\":314:341 Gravatar[] public gravatars */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_49\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_49:\n pop\n swap6\n pop\n pop\n pop\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/Gravity.sol\":1339:1684 function updateGravatarImage(string _imageUrl) public {... */\n tag_12:\n /* \"contracts/Gravity.sol\":1520:1527 uint id */\n 0x0\n /* \"contracts/Gravity.sol\":1438:1439 0 */\n dup1\n /* \"contracts/Gravity.sol\":1407:1422 ownerToGravatar */\n 0x2\n /* \"contracts/Gravity.sol\":1407:1434 ownerToGravatar[msg.sender] */\n 0x0\n /* \"contracts/Gravity.sol\":1423:1433 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1407:1434 ownerToGravatar[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"contracts/Gravity.sol\":1407:1439 ownerToGravatar[msg.sender] != 0 */\n eq\n iszero\n /* \"contracts/Gravity.sol\":1399:1440 require(ownerToGravatar[msg.sender] != 0) */\n iszero\n iszero\n tag_51\n jumpi\n 0x0\n dup1\n revert\n tag_51:\n /* \"contracts/Gravity.sol\":1468:1477 gravatars */\n 0x0\n /* \"contracts/Gravity.sol\":1478:1493 ownerToGravatar */\n 0x2\n /* \"contracts/Gravity.sol\":1478:1505 ownerToGravatar[msg.sender] */\n 0x0\n /* \"contracts/Gravity.sol\":1494:1504 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1478:1505 ownerToGravatar[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"contracts/Gravity.sol\":1468:1506 gravatars[ownerToGravatar[msg.sender]] */\n dup2\n sload\n dup2\n lt\n iszero\n iszero\n tag_52\n jumpi\n invalid\n tag_52:\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n /* \"contracts/Gravity.sol\":1468:1512 gravatars[ownerToGravatar[msg.sender]].owner */\n 0x0\n add\n 0x0\n swap1\n sload\n swap1\n 0x100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/Gravity.sol\":1454:1512 msg.sender == gravatars[ownerToGravatar[msg.sender]].owner */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/Gravity.sol\":1454:1464 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1454:1512 msg.sender == gravatars[ownerToGravatar[msg.sender]].owner */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"contracts/Gravity.sol\":1446:1513 require(msg.sender == gravatars[ownerToGravatar[msg.sender]].owner) */\n iszero\n iszero\n tag_54\n jumpi\n 0x0\n dup1\n revert\n tag_54:\n /* \"contracts/Gravity.sol\":1530:1545 ownerToGravatar */\n 0x2\n /* \"contracts/Gravity.sol\":1530:1557 ownerToGravatar[msg.sender] */\n 0x0\n /* \"contracts/Gravity.sol\":1546:1556 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1530:1557 ownerToGravatar[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"contracts/Gravity.sol\":1520:1557 uint id = ownerToGravatar[msg.sender] */\n swap1\n pop\n /* \"contracts/Gravity.sol\":1590:1599 _imageUrl */\n dup2\n /* \"contracts/Gravity.sol\":1564:1573 gravatars */\n 0x0\n /* \"contracts/Gravity.sol\":1574:1576 id */\n dup3\n /* \"contracts/Gravity.sol\":1564:1577 gravatars[id] */\n dup2\n sload\n dup2\n lt\n iszero\n iszero\n tag_55\n jumpi\n invalid\n tag_55:\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n /* \"contracts/Gravity.sol\":1564:1586 gravatars[id].imageUrl */\n 0x2\n add\n /* \"contracts/Gravity.sol\":1564:1599 gravatars[id].imageUrl = _imageUrl */\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_57\n swap3\n swap2\n swap1\n jump\t// in(tag_58)\n tag_57:\n pop\n /* \"contracts/Gravity.sol\":1610:1679 UpdatedGravatar(id, msg.sender, gravatars[id].displayName, _imageUrl) */\n 0x76571b7a897a1509c641587568218a290018fbdc8b9a724f17b77ff0eec22c0c\n /* \"contracts/Gravity.sol\":1626:1628 id */\n dup2\n /* \"contracts/Gravity.sol\":1630:1640 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1642:1651 gravatars */\n 0x0\n /* \"contracts/Gravity.sol\":1652:1654 id */\n dup5\n /* \"contracts/Gravity.sol\":1642:1655 gravatars[id] */\n dup2\n sload\n dup2\n lt\n iszero\n iszero\n tag_59\n jumpi\n invalid\n tag_59:\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n /* \"contracts/Gravity.sol\":1642:1667 gravatars[id].displayName */\n 0x1\n add\n /* \"contracts/Gravity.sol\":1669:1678 _imageUrl */\n dup6\n /* \"contracts/Gravity.sol\":1610:1679 UpdatedGravatar(id, msg.sender, gravatars[id].displayName, _imageUrl) */\n mload(0x40)\n dup1\n dup6\n dup2\n mstore\n 0x20\n add\n dup5\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n dup1\n 0x20\n add\n dup1\n 0x20\n add\n dup4\n dup2\n sub\n dup4\n mstore\n dup6\n dup2\n dup2\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup1\n iszero\n tag_61\n jumpi\n dup1\n 0x1f\n lt\n tag_62\n jumpi\n 0x100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_61)\n tag_62:\n dup3\n add\n swap2\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n tag_63:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x1\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_63\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_61:\n pop\n pop\n dup4\n dup2\n sub\n dup3\n mstore\n dup5\n dup2\n dup2\n mload\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":23:24 */\n 0x0\n /* \"--CODEGEN--\":8:108 */\n tag_64:\n /* \"--CODEGEN--\":33:36 */\n dup4\n /* \"--CODEGEN--\":30:31 */\n dup2\n /* \"--CODEGEN--\":27:37 */\n lt\n /* \"--CODEGEN--\":8:108 */\n iszero\n tag_65\n jumpi\n /* \"--CODEGEN--\":99:100 */\n dup1\n /* \"--CODEGEN--\":94:97 */\n dup3\n /* \"--CODEGEN--\":90:101 */\n add\n /* \"--CODEGEN--\":84:102 */\n mload\n /* \"--CODEGEN--\":80:81 */\n dup2\n /* \"--CODEGEN--\":75:78 */\n dup5\n /* \"--CODEGEN--\":71:82 */\n add\n /* \"--CODEGEN--\":64:103 */\n mstore\n /* \"--CODEGEN--\":52:54 */\n 0x20\n /* \"--CODEGEN--\":49:50 */\n dup2\n /* \"--CODEGEN--\":45:55 */\n add\n /* \"--CODEGEN--\":40:55 */\n swap1\n pop\n /* \"--CODEGEN--\":8:108 */\n jump(tag_64)\n tag_65:\n /* \"--CODEGEN--\":12:26 */\n pop\n /* \"contracts/Gravity.sol\":1610:1679 UpdatedGravatar(id, msg.sender, gravatars[id].displayName, _imageUrl) */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_67\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_67:\n pop\n swap7\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"contracts/Gravity.sol\":1339:1684 function updateGravatarImage(string _imageUrl) public {... */\n pop\n pop\n jump\t// out\n /* \"contracts/Gravity.sol\":1903:2062 function setMythicalGravatar() public {... */\n tag_15:\n /* \"contracts/Gravity.sol\":1969:2011 0x8d3e809Fbd258083a5Ba004a527159Da535c8abA */\n 0x8d3e809fbd258083a5ba004a527159da535c8aba\n /* \"contracts/Gravity.sol\":1955:2011 msg.sender == 0x8d3e809Fbd258083a5Ba004a527159Da535c8abA */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/Gravity.sol\":1955:1965 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1955:2011 msg.sender == 0x8d3e809Fbd258083a5Ba004a527159Da535c8abA */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"contracts/Gravity.sol\":1947:2012 require(msg.sender == 0x8d3e809Fbd258083a5Ba004a527159Da535c8abA) */\n iszero\n iszero\n tag_69\n jumpi\n 0x0\n dup1\n revert\n tag_69:\n /* \"contracts/Gravity.sol\":2018:2027 gravatars */\n 0x0\n /* \"contracts/Gravity.sol\":2018:2057 gravatars.push(Gravatar(0x0, \" \", \" \")) */\n dup1\n sload\n dup1\n 0x1\n add\n dup3\n dup2\n tag_70\n swap2\n swap1\n jump\t// in(tag_71)\n tag_70:\n swap2\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n 0x0\n /* \"contracts/Gravity.sol\":2033:2056 Gravatar(0x0, \" \", \" \") */\n 0x60\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n /* \"contracts/Gravity.sol\":2042:2045 0x0 */\n 0x0\n /* \"contracts/Gravity.sol\":2033:2056 Gravatar(0x0, \" \", \" \") */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n 0x40\n dup1\n mload\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n 0x1\n dup2\n mstore\n 0x20\n add\n 0x2000000000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n pop\n dup2\n mstore\n 0x20\n add\n 0x40\n dup1\n mload\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n 0x1\n dup2\n mstore\n 0x20\n add\n 0x2000000000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n pop\n dup2\n mstore\n pop\n /* \"contracts/Gravity.sol\":2018:2057 gravatars.push(Gravatar(0x0, \" \", \" \")) */\n swap1\n swap2\n swap1\n swap2\n pop\n 0x0\n dup3\n add\n mload\n dup2\n 0x0\n add\n exp(0x100, 0x0)\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n 0x20\n dup3\n add\n mload\n dup2\n 0x1\n add\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_73\n swap3\n swap2\n swap1\n jump\t// in(tag_74)\n tag_73:\n pop\n 0x40\n dup3\n add\n mload\n dup2\n 0x2\n add\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_75\n swap3\n swap2\n swap1\n jump\t// in(tag_74)\n tag_75:\n pop\n pop\n pop\n pop\n /* \"contracts/Gravity.sol\":1903:2062 function setMythicalGravatar() public {... */\n jump\t// out\n /* \"contracts/Gravity.sol\":799:979 function getGravatar(address owner) public view returns (string, string) {... */\n tag_18:\n /* \"contracts/Gravity.sol\":856:862 string */\n tag_76\n jump\t// in(tag_77)\n tag_76:\n /* \"contracts/Gravity.sol\":864:870 string */\n tag_78\n jump\t// in(tag_77)\n tag_78:\n /* \"contracts/Gravity.sol\":878:885 uint id */\n 0x0\n /* \"contracts/Gravity.sol\":888:903 ownerToGravatar */\n 0x2\n /* \"contracts/Gravity.sol\":888:910 ownerToGravatar[owner] */\n 0x0\n /* \"contracts/Gravity.sol\":904:909 owner */\n dup6\n /* \"contracts/Gravity.sol\":888:910 ownerToGravatar[owner] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"contracts/Gravity.sol\":878:910 uint id = ownerToGravatar[owner] */\n swap1\n pop\n /* \"contracts/Gravity.sol\":924:933 gravatars */\n 0x0\n /* \"contracts/Gravity.sol\":934:936 id */\n dup2\n /* \"contracts/Gravity.sol\":924:937 gravatars[id] */\n dup2\n sload\n dup2\n lt\n iszero\n iszero\n tag_80\n jumpi\n invalid\n tag_80:\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n /* \"contracts/Gravity.sol\":924:949 gravatars[id].displayName */\n 0x1\n add\n /* \"contracts/Gravity.sol\":951:960 gravatars */\n 0x0\n /* \"contracts/Gravity.sol\":961:963 id */\n dup3\n /* \"contracts/Gravity.sol\":951:964 gravatars[id] */\n dup2\n sload\n dup2\n lt\n iszero\n iszero\n tag_82\n jumpi\n invalid\n tag_82:\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n /* \"contracts/Gravity.sol\":951:973 gravatars[id].imageUrl */\n 0x2\n add\n /* \"contracts/Gravity.sol\":916:974 return (gravatars[id].displayName, gravatars[id].imageUrl) */\n dup2\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup1\n iszero\n tag_84\n jumpi\n dup1\n 0x1f\n lt\n tag_85\n jumpi\n 0x100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_84)\n tag_85:\n dup3\n add\n swap2\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n tag_86:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x1\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_86\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_84:\n pop\n pop\n pop\n pop\n pop\n swap2\n pop\n dup1\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup1\n iszero\n tag_87\n jumpi\n dup1\n 0x1f\n lt\n tag_88\n jumpi\n 0x100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_87)\n tag_88:\n dup3\n add\n swap2\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n tag_89:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x1\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_89\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_87:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n swap3\n pop\n swap3\n pop\n /* \"contracts/Gravity.sol\":799:979 function getGravatar(address owner) public view returns (string, string) {... */\n pop\n swap2\n pop\n swap2\n jump\t// out\n /* \"contracts/Gravity.sol\":346:394 mapping (uint => address) public gravatarToOwner */\n tag_29:\n mstore(0x20, 0x1)\n dup1\n 0x0\n mstore\n keccak256(0x0, 0x40)\n 0x0\n swap2\n pop\n sload\n swap1\n 0x100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n jump\t// out\n /* \"contracts/Gravity.sol\":398:446 mapping (address => uint) public ownerToGravatar */\n tag_32:\n mstore(0x20, 0x2)\n dup1\n 0x0\n mstore\n keccak256(0x0, 0x40)\n 0x0\n swap2\n pop\n swap1\n pop\n sload\n dup2\n jump\t// out\n /* \"contracts/Gravity.sol\":983:1335 function updateGravatarName(string _displayName) public {... */\n tag_35:\n /* \"contracts/Gravity.sol\":1166:1173 uint id */\n 0x0\n /* \"contracts/Gravity.sol\":1084:1085 0 */\n dup1\n /* \"contracts/Gravity.sol\":1053:1068 ownerToGravatar */\n 0x2\n /* \"contracts/Gravity.sol\":1053:1080 ownerToGravatar[msg.sender] */\n 0x0\n /* \"contracts/Gravity.sol\":1069:1079 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1053:1080 ownerToGravatar[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"contracts/Gravity.sol\":1053:1085 ownerToGravatar[msg.sender] != 0 */\n eq\n iszero\n /* \"contracts/Gravity.sol\":1045:1086 require(ownerToGravatar[msg.sender] != 0) */\n iszero\n iszero\n tag_91\n jumpi\n 0x0\n dup1\n revert\n tag_91:\n /* \"contracts/Gravity.sol\":1114:1123 gravatars */\n 0x0\n /* \"contracts/Gravity.sol\":1124:1139 ownerToGravatar */\n 0x2\n /* \"contracts/Gravity.sol\":1124:1151 ownerToGravatar[msg.sender] */\n 0x0\n /* \"contracts/Gravity.sol\":1140:1150 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1124:1151 ownerToGravatar[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"contracts/Gravity.sol\":1114:1152 gravatars[ownerToGravatar[msg.sender]] */\n dup2\n sload\n dup2\n lt\n iszero\n iszero\n tag_92\n jumpi\n invalid\n tag_92:\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n /* \"contracts/Gravity.sol\":1114:1158 gravatars[ownerToGravatar[msg.sender]].owner */\n 0x0\n add\n 0x0\n swap1\n sload\n swap1\n 0x100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/Gravity.sol\":1100:1158 msg.sender == gravatars[ownerToGravatar[msg.sender]].owner */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/Gravity.sol\":1100:1110 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1100:1158 msg.sender == gravatars[ownerToGravatar[msg.sender]].owner */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"contracts/Gravity.sol\":1092:1159 require(msg.sender == gravatars[ownerToGravatar[msg.sender]].owner) */\n iszero\n iszero\n tag_94\n jumpi\n 0x0\n dup1\n revert\n tag_94:\n /* \"contracts/Gravity.sol\":1176:1191 ownerToGravatar */\n 0x2\n /* \"contracts/Gravity.sol\":1176:1203 ownerToGravatar[msg.sender] */\n 0x0\n /* \"contracts/Gravity.sol\":1192:1202 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1176:1203 ownerToGravatar[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"contracts/Gravity.sol\":1166:1203 uint id = ownerToGravatar[msg.sender] */\n swap1\n pop\n /* \"contracts/Gravity.sol\":1238:1250 _displayName */\n dup2\n /* \"contracts/Gravity.sol\":1210:1219 gravatars */\n 0x0\n /* \"contracts/Gravity.sol\":1220:1222 id */\n dup3\n /* \"contracts/Gravity.sol\":1210:1223 gravatars[id] */\n dup2\n sload\n dup2\n lt\n iszero\n iszero\n tag_95\n jumpi\n invalid\n tag_95:\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n /* \"contracts/Gravity.sol\":1210:1235 gravatars[id].displayName */\n 0x1\n add\n /* \"contracts/Gravity.sol\":1210:1250 gravatars[id].displayName = _displayName */\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_97\n swap3\n swap2\n swap1\n jump\t// in(tag_58)\n tag_97:\n pop\n /* \"contracts/Gravity.sol\":1261:1330 UpdatedGravatar(id, msg.sender, _displayName, gravatars[id].imageUrl) */\n 0x76571b7a897a1509c641587568218a290018fbdc8b9a724f17b77ff0eec22c0c\n /* \"contracts/Gravity.sol\":1277:1279 id */\n dup2\n /* \"contracts/Gravity.sol\":1281:1291 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":1293:1305 _displayName */\n dup5\n /* \"contracts/Gravity.sol\":1307:1316 gravatars */\n 0x0\n /* \"contracts/Gravity.sol\":1317:1319 id */\n dup6\n /* \"contracts/Gravity.sol\":1307:1320 gravatars[id] */\n dup2\n sload\n dup2\n lt\n iszero\n iszero\n tag_98\n jumpi\n invalid\n tag_98:\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n /* \"contracts/Gravity.sol\":1307:1329 gravatars[id].imageUrl */\n 0x2\n add\n /* \"contracts/Gravity.sol\":1261:1330 UpdatedGravatar(id, msg.sender, _displayName, gravatars[id].imageUrl) */\n mload(0x40)\n dup1\n dup6\n dup2\n mstore\n 0x20\n add\n dup5\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n dup1\n 0x20\n add\n dup1\n 0x20\n add\n dup4\n dup2\n sub\n dup4\n mstore\n dup6\n dup2\n dup2\n mload\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":23:24 */\n 0x0\n /* \"--CODEGEN--\":8:108 */\n tag_100:\n /* \"--CODEGEN--\":33:36 */\n dup4\n /* \"--CODEGEN--\":30:31 */\n dup2\n /* \"--CODEGEN--\":27:37 */\n lt\n /* \"--CODEGEN--\":8:108 */\n iszero\n tag_101\n jumpi\n /* \"--CODEGEN--\":99:100 */\n dup1\n /* \"--CODEGEN--\":94:97 */\n dup3\n /* \"--CODEGEN--\":90:101 */\n add\n /* \"--CODEGEN--\":84:102 */\n mload\n /* \"--CODEGEN--\":80:81 */\n dup2\n /* \"--CODEGEN--\":75:78 */\n dup5\n /* \"--CODEGEN--\":71:82 */\n add\n /* \"--CODEGEN--\":64:103 */\n mstore\n /* \"--CODEGEN--\":52:54 */\n 0x20\n /* \"--CODEGEN--\":49:50 */\n dup2\n /* \"--CODEGEN--\":45:55 */\n add\n /* \"--CODEGEN--\":40:55 */\n swap1\n pop\n /* \"--CODEGEN--\":8:108 */\n jump(tag_100)\n tag_101:\n /* \"--CODEGEN--\":12:26 */\n pop\n /* \"contracts/Gravity.sol\":1261:1330 UpdatedGravatar(id, msg.sender, _displayName, gravatars[id].imageUrl) */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_103\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_103:\n pop\n dup4\n dup2\n sub\n dup3\n mstore\n dup5\n dup2\n dup2\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup1\n iszero\n tag_104\n jumpi\n dup1\n 0x1f\n lt\n tag_105\n jumpi\n 0x100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_104)\n tag_105:\n dup3\n add\n swap2\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n tag_106:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x1\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_106\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_104:\n pop\n pop\n swap7\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"contracts/Gravity.sol\":983:1335 function updateGravatarName(string _displayName) public {... */\n pop\n pop\n jump\t// out\n /* \"contracts/Gravity.sol\":451:795 function createGravatar(string _displayName, string _imageUrl) public {... */\n tag_38:\n /* \"contracts/Gravity.sol\":574:581 uint id */\n 0x0\n /* \"contracts/Gravity.sol\":566:567 0 */\n dup1\n /* \"contracts/Gravity.sol\":535:550 ownerToGravatar */\n 0x2\n /* \"contracts/Gravity.sol\":535:562 ownerToGravatar[msg.sender] */\n 0x0\n /* \"contracts/Gravity.sol\":551:561 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":535:562 ownerToGravatar[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"contracts/Gravity.sol\":535:567 ownerToGravatar[msg.sender] == 0 */\n eq\n /* \"contracts/Gravity.sol\":527:568 require(ownerToGravatar[msg.sender] == 0) */\n iszero\n iszero\n tag_108\n jumpi\n 0x0\n dup1\n revert\n tag_108:\n /* \"contracts/Gravity.sol\":648:649 1 */\n 0x1\n /* \"contracts/Gravity.sol\":584:593 gravatars */\n 0x0\n /* \"contracts/Gravity.sol\":584:645 gravatars.push(Gravatar(msg.sender, _displayName, _imageUrl)) */\n dup1\n sload\n dup1\n 0x1\n add\n dup3\n dup2\n tag_109\n swap2\n swap1\n jump\t// in(tag_71)\n tag_109:\n swap2\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n 0x0\n /* \"contracts/Gravity.sol\":599:644 Gravatar(msg.sender, _displayName, _imageUrl) */\n 0x60\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n /* \"contracts/Gravity.sol\":608:618 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":599:644 Gravatar(msg.sender, _displayName, _imageUrl) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n /* \"contracts/Gravity.sol\":620:632 _displayName */\n dup9\n /* \"contracts/Gravity.sol\":599:644 Gravatar(msg.sender, _displayName, _imageUrl) */\n dup2\n mstore\n 0x20\n add\n /* \"contracts/Gravity.sol\":634:643 _imageUrl */\n dup8\n /* \"contracts/Gravity.sol\":599:644 Gravatar(msg.sender, _displayName, _imageUrl) */\n dup2\n mstore\n pop\n /* \"contracts/Gravity.sol\":584:645 gravatars.push(Gravatar(msg.sender, _displayName, _imageUrl)) */\n swap1\n swap2\n swap1\n swap2\n pop\n 0x0\n dup3\n add\n mload\n dup2\n 0x0\n add\n exp(0x100, 0x0)\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n 0x20\n dup3\n add\n mload\n dup2\n 0x1\n add\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_111\n swap3\n swap2\n swap1\n jump\t// in(tag_74)\n tag_111:\n pop\n 0x40\n dup3\n add\n mload\n dup2\n 0x2\n add\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_112\n swap3\n swap2\n swap1\n jump\t// in(tag_74)\n tag_112:\n pop\n pop\n pop\n /* \"contracts/Gravity.sol\":584:649 gravatars.push(Gravatar(msg.sender, _displayName, _imageUrl)) - 1 */\n sub\n /* \"contracts/Gravity.sol\":574:649 uint id = gravatars.push(Gravatar(msg.sender, _displayName, _imageUrl)) - 1 */\n swap1\n pop\n /* \"contracts/Gravity.sol\":678:688 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":656:671 gravatarToOwner */\n 0x1\n /* \"contracts/Gravity.sol\":656:675 gravatarToOwner[id] */\n 0x0\n /* \"contracts/Gravity.sol\":672:674 id */\n dup4\n /* \"contracts/Gravity.sol\":656:675 gravatarToOwner[id] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n 0x0\n /* \"contracts/Gravity.sol\":656:688 gravatarToOwner[id] = msg.sender */\n 0x100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/Gravity.sol\":724:726 id */\n dup1\n /* \"contracts/Gravity.sol\":694:709 ownerToGravatar */\n 0x2\n /* \"contracts/Gravity.sol\":694:721 ownerToGravatar[msg.sender] */\n 0x0\n /* \"contracts/Gravity.sol\":710:720 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":694:721 ownerToGravatar[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n /* \"contracts/Gravity.sol\":694:726 ownerToGravatar[msg.sender] = id */\n dup2\n swap1\n sstore\n pop\n /* \"contracts/Gravity.sol\":738:790 NewGravatar(id, msg.sender, _displayName, _imageUrl) */\n 0x9ab3aefb2ba6dc12910ac1bce4692cf5c3c0d06cff16327c64a3ef78228b130b\n /* \"contracts/Gravity.sol\":750:752 id */\n dup2\n /* \"contracts/Gravity.sol\":754:764 msg.sender */\n caller\n /* \"contracts/Gravity.sol\":766:778 _displayName */\n dup6\n /* \"contracts/Gravity.sol\":780:789 _imageUrl */\n dup6\n /* \"contracts/Gravity.sol\":738:790 NewGravatar(id, msg.sender, _displayName, _imageUrl) */\n mload(0x40)\n dup1\n dup6\n dup2\n mstore\n 0x20\n add\n dup5\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n dup1\n 0x20\n add\n dup1\n 0x20\n add\n dup4\n dup2\n sub\n dup4\n mstore\n dup6\n dup2\n dup2\n mload\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":23:24 */\n 0x0\n /* \"--CODEGEN--\":8:108 */\n tag_113:\n /* \"--CODEGEN--\":33:36 */\n dup4\n /* \"--CODEGEN--\":30:31 */\n dup2\n /* \"--CODEGEN--\":27:37 */\n lt\n /* \"--CODEGEN--\":8:108 */\n iszero\n tag_114\n jumpi\n /* \"--CODEGEN--\":99:100 */\n dup1\n /* \"--CODEGEN--\":94:97 */\n dup3\n /* \"--CODEGEN--\":90:101 */\n add\n /* \"--CODEGEN--\":84:102 */\n mload\n /* \"--CODEGEN--\":80:81 */\n dup2\n /* \"--CODEGEN--\":75:78 */\n dup5\n /* \"--CODEGEN--\":71:82 */\n add\n /* \"--CODEGEN--\":64:103 */\n mstore\n /* \"--CODEGEN--\":52:54 */\n 0x20\n /* \"--CODEGEN--\":49:50 */\n dup2\n /* \"--CODEGEN--\":45:55 */\n add\n /* \"--CODEGEN--\":40:55 */\n swap1\n pop\n /* \"--CODEGEN--\":8:108 */\n jump(tag_113)\n tag_114:\n /* \"--CODEGEN--\":12:26 */\n pop\n /* \"contracts/Gravity.sol\":738:790 NewGravatar(id, msg.sender, _displayName, _imageUrl) */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_116\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_116:\n pop\n dup4\n dup2\n sub\n dup3\n mstore\n dup5\n dup2\n dup2\n mload\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":23:24 */\n 0x0\n /* \"--CODEGEN--\":8:108 */\n tag_117:\n /* \"--CODEGEN--\":33:36 */\n dup4\n /* \"--CODEGEN--\":30:31 */\n dup2\n /* \"--CODEGEN--\":27:37 */\n lt\n /* \"--CODEGEN--\":8:108 */\n iszero\n tag_118\n jumpi\n /* \"--CODEGEN--\":99:100 */\n dup1\n /* \"--CODEGEN--\":94:97 */\n dup3\n /* \"--CODEGEN--\":90:101 */\n add\n /* \"--CODEGEN--\":84:102 */\n mload\n /* \"--CODEGEN--\":80:81 */\n dup2\n /* \"--CODEGEN--\":75:78 */\n dup5\n /* \"--CODEGEN--\":71:82 */\n add\n /* \"--CODEGEN--\":64:103 */\n mstore\n /* \"--CODEGEN--\":52:54 */\n 0x20\n /* \"--CODEGEN--\":49:50 */\n dup2\n /* \"--CODEGEN--\":45:55 */\n add\n /* \"--CODEGEN--\":40:55 */\n swap1\n pop\n /* \"--CODEGEN--\":8:108 */\n jump(tag_117)\n tag_118:\n /* \"--CODEGEN--\":12:26 */\n pop\n /* \"contracts/Gravity.sol\":738:790 NewGravatar(id, msg.sender, _displayName, _imageUrl) */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_120\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_120:\n pop\n swap7\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"contracts/Gravity.sol\":451:795 function createGravatar(string _displayName, string _imageUrl) public {... */\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/Gravity.sol\":314:341 Gravatar[] public gravatars */\n tag_41:\n 0x0\n dup2\n dup2\n sload\n dup2\n lt\n iszero\n iszero\n tag_121\n jumpi\n invalid\n tag_121:\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x3\n mul\n add\n 0x0\n swap2\n pop\n swap1\n pop\n dup1\n 0x0\n add\n 0x0\n swap1\n sload\n swap1\n 0x100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n dup1\n 0x1\n add\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup1\n iszero\n tag_123\n jumpi\n dup1\n 0x1f\n lt\n tag_124\n jumpi\n 0x100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_123)\n tag_124:\n dup3\n add\n swap2\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n tag_125:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x1\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_125\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_123:\n pop\n pop\n pop\n pop\n pop\n swap1\n dup1\n 0x2\n add\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n dup1\n iszero\n tag_126\n jumpi\n dup1\n 0x1f\n lt\n tag_127\n jumpi\n 0x100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_126)\n tag_127:\n dup3\n add\n swap2\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n tag_128:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x1\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_128\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_126:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n dup4\n jump\t// out\n /* \"contracts/Gravity.sol\":26:2064 contract GravatarRegistry {... */\n tag_58:\n dup3\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x1f\n add\n 0x20\n swap1\n div\n dup2\n add\n swap3\n dup3\n 0x1f\n lt\n tag_130\n jumpi\n dup1\n mload\n not(0xff)\n and\n dup4\n dup1\n add\n or\n dup6\n sstore\n jump(tag_129)\n tag_130:\n dup3\n dup1\n add\n 0x1\n add\n dup6\n sstore\n dup3\n iszero\n tag_129\n jumpi\n swap2\n dup3\n add\n tag_131:\n dup3\n dup2\n gt\n iszero\n tag_132\n jumpi\n dup3\n mload\n dup3\n sstore\n swap2\n 0x20\n add\n swap2\n swap1\n 0x1\n add\n swap1\n jump(tag_131)\n tag_132:\n tag_129:\n pop\n swap1\n pop\n tag_133\n swap2\n swap1\n jump\t// in(tag_134)\n tag_133:\n pop\n swap1\n jump\t// out\n tag_71:\n dup2\n sload\n dup2\n dup4\n sstore\n dup2\n dup2\n iszero\n gt\n tag_135\n jumpi\n 0x3\n mul\n dup2\n 0x3\n mul\n dup4\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap2\n dup3\n add\n swap2\n add\n tag_136\n swap2\n swap1\n jump\t// in(tag_137)\n tag_136:\n tag_135:\n pop\n pop\n pop\n jump\t// out\n tag_74:\n dup3\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n 0x1f\n add\n 0x20\n swap1\n div\n dup2\n add\n swap3\n dup3\n 0x1f\n lt\n tag_139\n jumpi\n dup1\n mload\n not(0xff)\n and\n dup4\n dup1\n add\n or\n dup6\n sstore\n jump(tag_138)\n tag_139:\n dup3\n dup1\n add\n 0x1\n add\n dup6\n sstore\n dup3\n iszero\n tag_138\n jumpi\n swap2\n dup3\n add\n tag_140:\n dup3\n dup2\n gt\n iszero\n tag_141\n jumpi\n dup3\n mload\n dup3\n sstore\n swap2\n 0x20\n add\n swap2\n swap1\n 0x1\n add\n swap1\n jump(tag_140)\n tag_141:\n tag_138:\n pop\n swap1\n pop\n tag_142\n swap2\n swap1\n jump\t// in(tag_134)\n tag_142:\n pop\n swap1\n jump\t// out\n tag_77:\n 0x20\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n 0x0\n dup2\n mstore\n pop\n swap1\n jump\t// out\n tag_134:\n tag_143\n swap2\n swap1\n tag_144:\n dup1\n dup3\n gt\n iszero\n tag_145\n jumpi\n 0x0\n dup2\n 0x0\n swap1\n sstore\n pop\n 0x1\n add\n jump(tag_144)\n tag_145:\n pop\n swap1\n jump\n tag_143:\n swap1\n jump\t// out\n tag_137:\n tag_146\n swap2\n swap1\n tag_147:\n dup1\n dup3\n gt\n iszero\n tag_148\n jumpi\n 0x0\n dup1\n dup3\n add\n exp(0x100, 0x0)\n dup2\n sload\n swap1\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n sstore\n 0x1\n dup3\n add\n 0x0\n tag_149\n swap2\n swap1\n jump\t// in(tag_150)\n tag_149:\n 0x2\n dup3\n add\n 0x0\n tag_151\n swap2\n swap1\n jump\t// in(tag_150)\n tag_151:\n pop\n 0x3\n add\n jump(tag_147)\n tag_148:\n pop\n swap1\n jump\n tag_146:\n swap1\n jump\t// out\n tag_150:\n pop\n dup1\n sload\n 0x1\n dup2\n 0x1\n and\n iszero\n 0x100\n mul\n sub\n and\n 0x2\n swap1\n div\n 0x0\n dup3\n sstore\n dup1\n 0x1f\n lt\n tag_153\n jumpi\n pop\n jump(tag_152)\n tag_153:\n 0x1f\n add\n 0x20\n swap1\n div\n swap1\n 0x0\n mstore\n keccak256(0x0, 0x20)\n swap1\n dup2\n add\n swap1\n tag_154\n swap2\n swap1\n jump\t// in(tag_134)\n tag_154:\n tag_152:\n pop\n jump\t// out\n\n auxdata: 0xa165627a7a72305820ef47857c062f7b832246aa987e433a5e6ed7fd4b4dc017f1d407a246392d56a80029\n}\n",
"bytecode": {
"linkReferences": {},
"object": "6060604052341561000f57600080fd5b6115af8061001e6000396000f30060606040526004361061008d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806281d6e5146100925780631d4f2c6d146100ef578063359c1f721461010457806388d0d39114610222578063a5ac363414610285578063b18588fb146102d2578063cdb3344a1461032f578063d5ce24ed146103cf575b600080fd5b341561009d57600080fd5b6100ed600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061050a565b005b34156100fa57600080fd5b61010261080f565b005b341561010f57600080fd5b61013b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109a9565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561017f578082015181840152602081019050610164565b50505050905090810190601f1680156101ac5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561022d57600080fd5b6102436004808035906020019091905050610b7f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561029057600080fd5b6102bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bb2565b6040518082815260200191505060405180910390f35b34156102dd57600080fd5b61032d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610bca565b005b341561033a57600080fd5b6103cd600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610ecf565b005b34156103da57600080fd5b6103f060048080359060200190919050506111e1565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561046657808201518184015260208101905061044b565b50505050905090810190601f1680156104935780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156104cc5780820151818401526020810190506104b1565b50505050905090810190601f1680156104f95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415151561055a57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811015156105a857fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561061357600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508160008281548110151561066557fe5b9060005260206000209060030201600201908051906020019061068992919061136a565b507f76571b7a897a1509c641587568218a290018fbdc8b9a724f17b77ff0eec22c0c81336000848154811015156106bc57fe5b906000526020600020906003020160010185604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156107935780601f1061076857610100808354040283529160200191610793565b820191906000526020600020905b81548152906001019060200180831161077657829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b838110156107cd5780820151818401526020810190506107b2565b50505050905090810190601f1680156107fa5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15050565b738d3e809fbd258083a5ba004a527159da535c8aba73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561085d57600080fd5b6000805480600101828161087191906113ea565b91600052602060002090600302016000606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016040805190810160405280600181526020017f200000000000000000000000000000000000000000000000000000000000000081525081526020016040805190810160405280600181526020017f2000000000000000000000000000000000000000000000000000000000000000815250815250909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908051906020019061098692919061141c565b5060408201518160020190805190602001906109a392919061141c565b50505050565b6109b161149c565b6109b961149c565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081815481101515610a0c57fe5b9060005260206000209060030201600101600082815481101515610a2c57fe5b9060005260206000209060030201600201818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b50505050509150808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b820191906000526020600020905b815481529060010190602001808311610b5157829003601f168201915b505050505090509250925050915091565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090505481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151515610c1a57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481101515610c6857fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cd357600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081600082815481101515610d2557fe5b90600052602060002090600302016001019080519060200190610d4992919061136a565b507f76571b7a897a1509c641587568218a290018fbdc8b9a724f17b77ff0eec22c0c813384600085815481101515610d7d57fe5b9060005260206000209060030201600201604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610e0a578082015181840152602081019050610def565b50505050905090810190601f168015610e375780820380516001836020036101000a031916815260200191505b50838103825284818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610eb95780601f10610e8e57610100808354040283529160200191610eb9565b820191906000526020600020905b815481529060010190602001808311610e9c57829003601f168201915b5050965050505050505060405180910390a15050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610f1e57600080fd5b600160008054806001018281610f3491906113ea565b916000526020600020906003020160006060604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187815250909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610fde92919061141c565b506040820151816002019080519060200190610ffb92919061141c565b505050039050336001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9ab3aefb2ba6dc12910ac1bce4692cf5c3c0d06cff16327c64a3ef78228b130b81338585604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561113857808201518184015260208101905061111d565b50505050905090810190601f1680156111655780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561119e578082015181840152602081019050611183565b50505050905090810190601f1680156111cb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1505050565b6000818154811015156111f057fe5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112c25780601f10611297576101008083540402835291602001916112c2565b820191906000526020600020905b8154815290600101906020018083116112a557829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113605780601f1061133557610100808354040283529160200191611360565b820191906000526020600020905b81548152906001019060200180831161134357829003601f168201915b5050505050905083565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106113ab57805160ff19168380011785556113d9565b828001600101855582156113d9579182015b828111156113d85782518255916020019190600101906113bd565b5b5090506113e691906114b0565b5090565b8154818355818115116114175760030281600302836000526020600020918201910161141691906114d5565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061145d57805160ff191683800117855561148b565b8280016001018555821561148b579182015b8281111561148a57825182559160200191906001019061146f565b5b50905061149891906114b0565b5090565b602060405190810160405280600081525090565b6114d291905b808211156114ce5760008160009055506001016114b6565b5090565b90565b61153891905b8082111561153457600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061151b919061153b565b60028201600061152b919061153b565b506003016114db565b5090565b90565b50805460018160011615610100020316600290046000825580601f106115615750611580565b601f01602090049060005260206000209081019061157f91906114b0565b5b505600a165627a7a72305820ef47857c062f7b832246aa987e433a5e6ed7fd4b4dc017f1d407a246392d56a80029",
"opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE CALLVALUE ISZERO PUSH2 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15AF DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x60 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x8D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH3 0x81D6E5 EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0x1D4F2C6D EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x359C1F72 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x88D0D391 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0xA5AC3634 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xB18588FB EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0xCDB3344A EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0xD5CE24ED EQ PUSH2 0x3CF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0x50A JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0x80F JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13B PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x9A9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x17F JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x164 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1CA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x212 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xBB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0xBCA JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0xECF JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F0 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x466 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x44B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x493 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CC JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4F9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO ISZERO PUSH2 0x55A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x5A8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x665 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x689 SWAP3 SWAP2 SWAP1 PUSH2 0x136A JUMP JUMPDEST POP PUSH32 0x76571B7A897A1509C641587568218A290018FBDC8B9A724F17B77FF0EEC22C0C DUP2 CALLER PUSH1 0x0 DUP5 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x6BC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD DUP6 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x793 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x768 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x793 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x776 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7CD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7FA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH20 0x8D3E809FBD258083A5BA004A527159DA535C8ABA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP1 PUSH1 0x1 ADD DUP3 DUP2 PUSH2 0x871 SWAP2 SWAP1 PUSH2 0x13EA JUMP JUMPDEST SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x2000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x2000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 MSTORE POP SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x986 SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x9A3 SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x9B1 PUSH2 0x149C JUMP JUMPDEST PUSH2 0x9B9 PUSH2 0x149C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA0C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA2C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD DUP2 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xAD2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAA7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAD2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xAB5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xB6E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB43 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB6E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB51 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP3 POP SWAP3 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO ISZERO PUSH2 0xC1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xC68 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0xCD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xD25 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xD49 SWAP3 SWAP2 SWAP1 PUSH2 0x136A JUMP JUMPDEST POP PUSH32 0x76571B7A897A1509C641587568218A290018FBDC8B9A724F17B77FF0EEC22C0C DUP2 CALLER DUP5 PUSH1 0x0 DUP6 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xD7D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE0A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDEF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE37 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xEB9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE8E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xEB9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE9C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO PUSH2 0xF1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD DUP1 PUSH1 0x1 ADD DUP3 DUP2 PUSH2 0xF34 SWAP2 SWAP1 PUSH2 0x13EA JUMP JUMPDEST SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE POP SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xFDE SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xFFB SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP POP POP SUB SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x9AB3AEFB2BA6DC12910AC1BCE4692CF5C3C0D06CFF16327C64A3EF78228B130B DUP2 CALLER DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1138 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x111D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1165 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x119E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1183 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11CB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x11F0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x12C2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1297 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12C2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12A5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1360 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1335 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1360 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1343 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x13AB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x13D9 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x13D9 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x13D8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x13BD JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x13E6 SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 ISZERO GT PUSH2 0x1417 JUMPI PUSH1 0x3 MUL DUP2 PUSH1 0x3 MUL DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1416 SWAP2 SWAP1 PUSH2 0x14D5 JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x145D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x148B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x148B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x148A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x146F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1498 SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x14D2 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x14CE JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x14B6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1538 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1534 JUMPI PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x151B SWAP2 SWAP1 PUSH2 0x153B JUMP JUMPDEST PUSH1 0x2 DUP3 ADD PUSH1 0x0 PUSH2 0x152B SWAP2 SWAP1 PUSH2 0x153B JUMP JUMPDEST POP PUSH1 0x3 ADD PUSH2 0x14DB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x1561 JUMPI POP PUSH2 0x1580 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x157F SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST JUMPDEST POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xef 0x47 DUP6 PUSH29 0x62F7B832246AA987E433A5E6ED7FD4B4DC017F1D407A246392D56A800 0x29 ",
"sourceMap": "26:2038:0:-;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "60606040526004361061008d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806281d6e5146100925780631d4f2c6d146100ef578063359c1f721461010457806388d0d39114610222578063a5ac363414610285578063b18588fb146102d2578063cdb3344a1461032f578063d5ce24ed146103cf575b600080fd5b341561009d57600080fd5b6100ed600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061050a565b005b34156100fa57600080fd5b61010261080f565b005b341561010f57600080fd5b61013b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109a9565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561017f578082015181840152602081019050610164565b50505050905090810190601f1680156101ac5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561022d57600080fd5b6102436004808035906020019091905050610b7f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561029057600080fd5b6102bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bb2565b6040518082815260200191505060405180910390f35b34156102dd57600080fd5b61032d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610bca565b005b341561033a57600080fd5b6103cd600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610ecf565b005b34156103da57600080fd5b6103f060048080359060200190919050506111e1565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561046657808201518184015260208101905061044b565b50505050905090810190601f1680156104935780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156104cc5780820151818401526020810190506104b1565b50505050905090810190601f1680156104f95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415151561055a57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811015156105a857fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561061357600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508160008281548110151561066557fe5b9060005260206000209060030201600201908051906020019061068992919061136a565b507f76571b7a897a1509c641587568218a290018fbdc8b9a724f17b77ff0eec22c0c81336000848154811015156106bc57fe5b906000526020600020906003020160010185604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156107935780601f1061076857610100808354040283529160200191610793565b820191906000526020600020905b81548152906001019060200180831161077657829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b838110156107cd5780820151818401526020810190506107b2565b50505050905090810190601f1680156107fa5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15050565b738d3e809fbd258083a5ba004a527159da535c8aba73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561085d57600080fd5b6000805480600101828161087191906113ea565b91600052602060002090600302016000606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016040805190810160405280600181526020017f200000000000000000000000000000000000000000000000000000000000000081525081526020016040805190810160405280600181526020017f2000000000000000000000000000000000000000000000000000000000000000815250815250909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908051906020019061098692919061141c565b5060408201518160020190805190602001906109a392919061141c565b50505050565b6109b161149c565b6109b961149c565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081815481101515610a0c57fe5b9060005260206000209060030201600101600082815481101515610a2c57fe5b9060005260206000209060030201600201818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b50505050509150808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b820191906000526020600020905b815481529060010190602001808311610b5157829003601f168201915b505050505090509250925050915091565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090505481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151515610c1a57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481101515610c6857fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cd357600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081600082815481101515610d2557fe5b90600052602060002090600302016001019080519060200190610d4992919061136a565b507f76571b7a897a1509c641587568218a290018fbdc8b9a724f17b77ff0eec22c0c813384600085815481101515610d7d57fe5b9060005260206000209060030201600201604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610e0a578082015181840152602081019050610def565b50505050905090810190601f168015610e375780820380516001836020036101000a031916815260200191505b50838103825284818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610eb95780601f10610e8e57610100808354040283529160200191610eb9565b820191906000526020600020905b815481529060010190602001808311610e9c57829003601f168201915b5050965050505050505060405180910390a15050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610f1e57600080fd5b600160008054806001018281610f3491906113ea565b916000526020600020906003020160006060604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187815250909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610fde92919061141c565b506040820151816002019080519060200190610ffb92919061141c565b505050039050336001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9ab3aefb2ba6dc12910ac1bce4692cf5c3c0d06cff16327c64a3ef78228b130b81338585604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561113857808201518184015260208101905061111d565b50505050905090810190601f1680156111655780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561119e578082015181840152602081019050611183565b50505050905090810190601f1680156111cb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1505050565b6000818154811015156111f057fe5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112c25780601f10611297576101008083540402835291602001916112c2565b820191906000526020600020905b8154815290600101906020018083116112a557829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113605780601f1061133557610100808354040283529160200191611360565b820191906000526020600020905b81548152906001019060200180831161134357829003601f168201915b5050505050905083565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106113ab57805160ff19168380011785556113d9565b828001600101855582156113d9579182015b828111156113d85782518255916020019190600101906113bd565b5b5090506113e691906114b0565b5090565b8154818355818115116114175760030281600302836000526020600020918201910161141691906114d5565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061145d57805160ff191683800117855561148b565b8280016001018555821561148b579182015b8281111561148a57825182559160200191906001019061146f565b5b50905061149891906114b0565b5090565b602060405190810160405280600081525090565b6114d291905b808211156114ce5760008160009055506001016114b6565b5090565b90565b61153891905b8082111561153457600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061151b919061153b565b60028201600061152b919061153b565b506003016114db565b5090565b90565b50805460018160011615610100020316600290046000825580601f106115615750611580565b601f01602090049060005260206000209081019061157f91906114b0565b5b505600a165627a7a72305820ef47857c062f7b832246aa987e433a5e6ed7fd4b4dc017f1d407a246392d56a80029",
"opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x8D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH3 0x81D6E5 EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0x1D4F2C6D EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x359C1F72 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x88D0D391 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0xA5AC3634 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0xB18588FB EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0xCDB3344A EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0xD5CE24ED EQ PUSH2 0x3CF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0x50A JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0x80F JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13B PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x9A9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x17F JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x164 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1CA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x212 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xBB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32D PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0xBCA JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3CD PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP1 POP POP PUSH2 0xECF JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F0 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x466 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x44B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x493 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CC JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4F9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO ISZERO PUSH2 0x55A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x5A8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x665 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x689 SWAP3 SWAP2 SWAP1 PUSH2 0x136A JUMP JUMPDEST POP PUSH32 0x76571B7A897A1509C641587568218A290018FBDC8B9A724F17B77FF0EEC22C0C DUP2 CALLER PUSH1 0x0 DUP5 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x6BC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD DUP6 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x793 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x768 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x793 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x776 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7CD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7FA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH20 0x8D3E809FBD258083A5BA004A527159DA535C8ABA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP1 PUSH1 0x1 ADD DUP3 DUP2 PUSH2 0x871 SWAP2 SWAP1 PUSH2 0x13EA JUMP JUMPDEST SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x2000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x2000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 MSTORE POP SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x986 SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x9A3 SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x9B1 PUSH2 0x149C JUMP JUMPDEST PUSH2 0x9B9 PUSH2 0x149C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA0C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA2C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD DUP2 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xAD2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAA7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAD2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xAB5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xB6E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB43 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB6E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB51 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP3 POP SWAP3 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO ISZERO PUSH2 0xC1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xC68 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0xCD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xD25 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xD49 SWAP3 SWAP2 SWAP1 PUSH2 0x136A JUMP JUMPDEST POP PUSH32 0x76571B7A897A1509C641587568218A290018FBDC8B9A724F17B77FF0EEC22C0C DUP2 CALLER DUP5 PUSH1 0x0 DUP6 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0xD7D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE0A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDEF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE37 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xEB9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE8E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xEB9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE9C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO ISZERO PUSH2 0xF1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD DUP1 PUSH1 0x1 ADD DUP3 DUP2 PUSH2 0xF34 SWAP2 SWAP1 PUSH2 0x13EA JUMP JUMPDEST SWAP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE POP SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xFDE SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xFFB SWAP3 SWAP2 SWAP1 PUSH2 0x141C JUMP JUMPDEST POP POP POP SUB SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x9AB3AEFB2BA6DC12910AC1BCE4692CF5C3C0D06CFF16327C64A3EF78228B130B DUP2 CALLER DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1138 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x111D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1165 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x119E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1183 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11CB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x11F0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x12C2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1297 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12C2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12A5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1360 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1335 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1360 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1343 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x13AB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x13D9 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x13D9 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x13D8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x13BD JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x13E6 SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 ISZERO GT PUSH2 0x1417 JUMPI PUSH1 0x3 MUL DUP2 PUSH1 0x3 MUL DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1416 SWAP2 SWAP1 PUSH2 0x14D5 JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x145D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x148B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x148B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x148A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x146F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1498 SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x14D2 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x14CE JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x14B6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1538 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1534 JUMPI PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x151B SWAP2 SWAP1 PUSH2 0x153B JUMP JUMPDEST PUSH1 0x2 DUP3 ADD PUSH1 0x0 PUSH2 0x152B SWAP2 SWAP1 PUSH2 0x153B JUMP JUMPDEST POP PUSH1 0x3 ADD PUSH2 0x14DB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x1561 JUMPI POP PUSH2 0x1580 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x157F SWAP2 SWAP1 PUSH2 0x14B0 JUMP JUMPDEST JUMPDEST POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xef 0x47 DUP6 PUSH29 0x62F7B832246AA987E433A5E6ED7FD4B4DC017F1D407A246392D56A800 0x29 ",
"sourceMap": "26:2038:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1339:345;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1903:159;;;;;;;;;;;;;;799:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;799:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;799:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;346:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;398;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;983:352;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;451:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;314:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;314:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1339:345;1520:7;1438:1;1407:15;:27;1423:10;1407:27;;;;;;;;;;;;;;;;:32;;1399:41;;;;;;;;1468:9;1478:15;:27;1494:10;1478:27;;;;;;;;;;;;;;;;1468:38;;;;;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;1454:58;;:10;:58;;;1446:67;;;;;;;;1530:15;:27;1546:10;1530:27;;;;;;;;;;;;;;;;1520:37;;1590:9;1564;1574:2;1564:13;;;;;;;;;;;;;;;;;;;;:22;;:35;;;;;;;;;;;;:::i;:::-;;1610:69;1626:2;1630:10;1642:9;1652:2;1642:13;;;;;;;;;;;;;;;;;;;;:25;;1669:9;1610:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1610:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1339:345;;:::o;1903:159::-;1969:42;1955:56;;:10;:56;;;1947:65;;;;;;;;2018:9;:39;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;2033:23;;;;;;;;;2042:3;2033:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2018:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;1903:159::o;799:180::-;856:6;;:::i;:::-;864;;:::i;:::-;878:7;888:15;:22;904:5;888:22;;;;;;;;;;;;;;;;878:32;;924:9;934:2;924:13;;;;;;;;;;;;;;;;;;;;:25;;951:9;961:2;951:13;;;;;;;;;;;;;;;;;;;;:22;;916:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;799:180;;;;:::o;346:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;398:::-;;;;;;;;;;;;;;;;;:::o;983:352::-;1166:7;1084:1;1053:15;:27;1069:10;1053:27;;;;;;;;;;;;;;;;:32;;1045:41;;;;;;;;1114:9;1124:15;:27;1140:10;1124:27;;;;;;;;;;;;;;;;1114:38;;;;;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;1100:58;;:10;:58;;;1092:67;;;;;;;;1176:15;:27;1192:10;1176:27;;;;;;;;;;;;;;;;1166:37;;1238:12;1210:9;1220:2;1210:13;;;;;;;;;;;;;;;;;;;;:25;;:40;;;;;;;;;;;;:::i;:::-;;1261:69;1277:2;1281:10;1293:12;1307:9;1317:2;1307:13;;;;;;;;;;;;;;;;;;;;:22;;1261:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1261:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;983:352;;:::o;451:344::-;574:7;566:1;535:15;:27;551:10;535:27;;;;;;;;;;;;;;;;:32;527:41;;;;;;;;648:1;584:9;:61;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;599:45;;;;;;;;;608:10;599:45;;;;;;620:12;599:45;;;;634:9;599:45;;;584:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:65;574:75;;678:10;656:15;:19;672:2;656:19;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;724:2;694:15;:27;710:10;694:27;;;;;;;;;;;;;;;:32;;;;738:52;750:2;754:10;766:12;780:9;738:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;738:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;738:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;451:344;;;:::o;314:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26:2038::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "1110200",
"executionCost": "1149",
"totalCost": "1111349"
},
"external": {
"createGravatar(string,string)": "infinite",
"getGravatar(address)": "infinite",
"gravatarToOwner(uint256)": "599",
"gravatars(uint256)": "infinite",
"ownerToGravatar(address)": "590",
"setMythicalGravatar()": "infinite",
"updateGravatarImage(string)": "infinite",
"updateGravatarName(string)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "60"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "40"
},
{
"begin": 26,
"end": 2064,
"name": "MSTORE"
},
{
"begin": 26,
"end": 2064,
"name": "CALLVALUE"
},
{
"begin": 26,
"end": 2064,
"name": "ISZERO"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [tag]",
"value": "1"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPI"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "0"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "REVERT"
},
{
"begin": 26,
"end": 2064,
"name": "tag",
"value": "1"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPDEST"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH #[$]",
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [$]",
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "0"
},
{
"begin": 26,
"end": 2064,
"name": "CODECOPY"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "0"
},
{
"begin": 26,
"end": 2064,
"name": "RETURN"
}
],
".data": {
"0": {
".auxdata": "a165627a7a72305820ef47857c062f7b832246aa987e433a5e6ed7fd4b4dc017f1d407a246392d56a80029",
".code": [
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "60"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "40"
},
{
"begin": 26,
"end": 2064,
"name": "MSTORE"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "4"
},
{
"begin": 26,
"end": 2064,
"name": "CALLDATASIZE"
},
{
"begin": 26,
"end": 2064,
"name": "LT"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [tag]",
"value": "1"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPI"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "0"
},
{
"begin": 26,
"end": 2064,
"name": "CALLDATALOAD"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 26,
"end": 2064,
"name": "SWAP1"
},
{
"begin": 26,
"end": 2064,
"name": "DIV"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "FFFFFFFF"
},
{
"begin": 26,
"end": 2064,
"name": "AND"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "81D6E5"
},
{
"begin": 26,
"end": 2064,
"name": "EQ"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [tag]",
"value": "2"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPI"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "1D4F2C6D"
},
{
"begin": 26,
"end": 2064,
"name": "EQ"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [tag]",
"value": "3"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPI"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "359C1F72"
},
{
"begin": 26,
"end": 2064,
"name": "EQ"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [tag]",
"value": "4"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPI"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "88D0D391"
},
{
"begin": 26,
"end": 2064,
"name": "EQ"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [tag]",
"value": "5"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPI"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "A5AC3634"
},
{
"begin": 26,
"end": 2064,
"name": "EQ"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [tag]",
"value": "6"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPI"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "B18588FB"
},
{
"begin": 26,
"end": 2064,
"name": "EQ"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [tag]",
"value": "7"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPI"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "CDB3344A"
},
{
"begin": 26,
"end": 2064,
"name": "EQ"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [tag]",
"value": "8"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPI"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "D5CE24ED"
},
{
"begin": 26,
"end": 2064,
"name": "EQ"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH [tag]",
"value": "9"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPI"
},
{
"begin": 26,
"end": 2064,
"name": "tag",
"value": "1"
},
{
"begin": 26,
"end": 2064,
"name": "JUMPDEST"
},
{
"begin": 26,
"end": 2064,
"name": "PUSH",
"value": "0"
},
{
"begin": 26,
"end": 2064,
"name": "DUP1"
},
{
"begin": 26,
"end": 2064,
"name": "REVERT"
},
{
"begin": 1339,
"end": 1684,
"name": "tag",
"value": "2"
},
{
"begin": 1339,
"end": 1684,
"name": "JUMPDEST"
},
{
"begin": 1339,
"end": 1684,
"name": "CALLVALUE"
},
{
"begin": 1339,
"end": 1684,
"name": "ISZERO"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH [tag]",
"value": "10"
},
{
"begin": 1339,
"end": 1684,
"name": "JUMPI"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH",
"value": "0"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP1"
},
{
"begin": 1339,
"end": 1684,
"name": "REVERT"
},
{
"begin": 1339,
"end": 1684,
"name": "tag",
"value": "10"
},
{
"begin": 1339,
"end": 1684,
"name": "JUMPDEST"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH [tag]",
"value": "11"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH",
"value": "4"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP1"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP1"
},
{
"begin": 1339,
"end": 1684,
"name": "CALLDATALOAD"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP1"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH",
"value": "20"
},
{
"begin": 1339,
"end": 1684,
"name": "ADD"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP1"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP3"
},
{
"begin": 1339,
"end": 1684,
"name": "ADD"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP1"
},
{
"begin": 1339,
"end": 1684,
"name": "CALLDATALOAD"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP1"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH",
"value": "20"
},
{
"begin": 1339,
"end": 1684,
"name": "ADD"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP1"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP1"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP1"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH",
"value": "1F"
},
{
"begin": 1339,
"end": 1684,
"name": "ADD"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH",
"value": "20"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP1"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP2"
},
{
"begin": 1339,
"end": 1684,
"name": "DIV"
},
{
"begin": 1339,
"end": 1684,
"name": "MUL"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH",
"value": "20"
},
{
"begin": 1339,
"end": 1684,
"name": "ADD"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH",
"value": "40"
},
{
"begin": 1339,
"end": 1684,
"name": "MLOAD"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP1"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP2"
},
{
"begin": 1339,
"end": 1684,
"name": "ADD"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH",
"value": "40"
},
{
"begin": 1339,
"end": 1684,
"name": "MSTORE"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP1"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP4"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP3"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP2"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP1"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP2"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP2"
},
{
"begin": 1339,
"end": 1684,
"name": "MSTORE"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH",
"value": "20"
},
{
"begin": 1339,
"end": 1684,
"name": "ADD"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP4"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP4"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP1"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP3"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP5"
},
{
"begin": 1339,
"end": 1684,
"name": "CALLDATACOPY"
},
{
"begin": 1339,
"end": 1684,
"name": "DUP3"
},
{
"begin": 1339,
"end": 1684,
"name": "ADD"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP2"
},
{
"begin": 1339,
"end": 1684,
"name": "POP"
},
{
"begin": 1339,
"end": 1684,
"name": "POP"
},
{
"begin": 1339,
"end": 1684,
"name": "POP"
},
{
"begin": 1339,
"end": 1684,
"name": "POP"
},
{
"begin": 1339,
"end": 1684,
"name": "POP"
},
{
"begin": 1339,
"end": 1684,
"name": "POP"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP2"
},
{
"begin": 1339,
"end": 1684,
"name": "SWAP1"
},
{
"begin": 1339,
"end": 1684,
"name": "POP"
},
{
"begin": 1339,
"end": 1684,
"name": "POP"
},
{
"begin": 1339,
"end": 1684,
"name": "PUSH [tag]",
"value": "12"
},
{
"begin": 1339,
"end": 1684,
"name": "JUMP"
},
{
"begin": 1339,
"end": 1684,
"name": "tag",
"value": "11"
},
{
"begin": 1339,
"end": 1684,
"name": "JUMPDEST"
},
{
"begin": 1339,
"end": 1684,
"name": "STOP"
},
{
"begin": 1903,
"end": 2062,
"name": "tag",
"value": "3"
},
{
"begin": 1903,
"end": 2062,
"name": "JUMPDEST"
},
{
"begin": 1903,
"end": 2062,
"name": "CALLVALUE"
},
{
"begin": 1903,
"end": 2062,
"name": "ISZERO"
},
{
"begin": 1903,
"end": 2062,
"name": "PUSH [tag]",
"value": "13"
},
{
"begin": 1903,
"end": 2062,
"name": "JUMPI"
},
{
"begin": 1903,
"end": 2062,
"name": "PUSH",
"value": "0"
},
{
"begin": 1903,
"end": 2062,
"name": "DUP1"
},
{
"begin": 1903,
"end": 2062,
"name": "REVERT"
},
{
"begin": 1903,
"end": 2062,
"name": "tag",
"value": "13"
},
{
"begin": 1903,
"end": 2062,
"name": "JUMPDEST"
},
{
"begin": 1903,
"end": 2062,
"name": "PUSH [tag]",
"value": "14"
},
{
"begin": 1903,
"end": 2062,
"name": "PUSH [tag]",
"value": "15"
},
{
"begin": 1903,
"end": 2062,
"name": "JUMP"
},
{
"begin": 1903,
"end": 2062,
"name": "tag",
"value": "14"
},
{
"begin": 1903,
"end": 2062,
"name": "JUMPDEST"
},
{
"begin": 1903,
"end": 2062,
"name": "STOP"
},
{
"begin": 799,
"end": 979,
"name": "tag",
"value": "4"
},
{
"begin": 799,
"end": 979,
"name": "JUMPDEST"
},
{
"begin": 799,
"end": 979,
"name": "CALLVALUE"
},
{
"begin": 799,
"end": 979,
"name": "ISZERO"
},
{
"begin": 799,
"end": 979,
"name": "PUSH [tag]",
"value": "16"
},
{
"begin": 799,
"end": 979,
"name": "JUMPI"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "0"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "REVERT"
},
{
"begin": 799,
"end": 979,
"name": "tag",
"value": "16"
},
{
"begin": 799,
"end": 979,
"name": "JUMPDEST"
},
{
"begin": 799,
"end": 979,
"name": "PUSH [tag]",
"value": "17"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "4"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "CALLDATALOAD"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 799,
"end": 979,
"name": "AND"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "SWAP2"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "PUSH [tag]",
"value": "18"
},
{
"begin": 799,
"end": 979,
"name": "JUMP"
},
{
"begin": 799,
"end": 979,
"name": "tag",
"value": "17"
},
{
"begin": 799,
"end": 979,
"name": "JUMPDEST"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "40"
},
{
"begin": 799,
"end": 979,
"name": "MLOAD"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "DUP4"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "SUB"
},
{
"begin": 799,
"end": 979,
"name": "DUP4"
},
{
"begin": 799,
"end": 979,
"name": "MSTORE"
},
{
"begin": 799,
"end": 979,
"name": "DUP6"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "MLOAD"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "MSTORE"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP2"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "MLOAD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "DUP4"
},
{
"begin": 799,
"end": 979,
"name": "DUP4"
},
{
"begin": 23,
"end": 24,
"name": "PUSH",
"value": "0"
},
{
"begin": 8,
"end": 108,
"name": "tag",
"value": "19"
},
{
"begin": 8,
"end": 108,
"name": "JUMPDEST"
},
{
"begin": 33,
"end": 36,
"name": "DUP4"
},
{
"begin": 30,
"end": 31,
"name": "DUP2"
},
{
"begin": 27,
"end": 37,
"name": "LT"
},
{
"begin": 8,
"end": 108,
"name": "ISZERO"
},
{
"begin": 8,
"end": 108,
"name": "PUSH [tag]",
"value": "20"
},
{
"begin": 8,
"end": 108,
"name": "JUMPI"
},
{
"begin": 99,
"end": 100,
"name": "DUP1"
},
{
"begin": 94,
"end": 97,
"name": "DUP3"
},
{
"begin": 90,
"end": 101,
"name": "ADD"
},
{
"begin": 84,
"end": 102,
"name": "MLOAD"
},
{
"begin": 80,
"end": 81,
"name": "DUP2"
},
{
"begin": 75,
"end": 78,
"name": "DUP5"
},
{
"begin": 71,
"end": 82,
"name": "ADD"
},
{
"begin": 64,
"end": 103,
"name": "MSTORE"
},
{
"begin": 52,
"end": 54,
"name": "PUSH",
"value": "20"
},
{
"begin": 49,
"end": 50,
"name": "DUP2"
},
{
"begin": 45,
"end": 55,
"name": "ADD"
},
{
"begin": 40,
"end": 55,
"name": "SWAP1"
},
{
"begin": 40,
"end": 55,
"name": "POP"
},
{
"begin": 8,
"end": 108,
"name": "PUSH [tag]",
"value": "19"
},
{
"begin": 8,
"end": 108,
"name": "JUMP"
},
{
"begin": 8,
"end": 108,
"name": "tag",
"value": "20"
},
{
"begin": 8,
"end": 108,
"name": "JUMPDEST"
},
{
"begin": 12,
"end": 26,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "1F"
},
{
"begin": 799,
"end": 979,
"name": "AND"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "ISZERO"
},
{
"begin": 799,
"end": 979,
"name": "PUSH [tag]",
"value": "22"
},
{
"begin": 799,
"end": 979,
"name": "JUMPI"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "DUP3"
},
{
"begin": 799,
"end": 979,
"name": "SUB"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "MLOAD"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "1"
},
{
"begin": 799,
"end": 979,
"name": "DUP4"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "SUB"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "100"
},
{
"begin": 799,
"end": 979,
"name": "EXP"
},
{
"begin": 799,
"end": 979,
"name": "SUB"
},
{
"begin": 799,
"end": 979,
"name": "NOT"
},
{
"begin": 799,
"end": 979,
"name": "AND"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "MSTORE"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP2"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "tag",
"value": "22"
},
{
"begin": 799,
"end": 979,
"name": "JUMPDEST"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "DUP4"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "SUB"
},
{
"begin": 799,
"end": 979,
"name": "DUP3"
},
{
"begin": 799,
"end": 979,
"name": "MSTORE"
},
{
"begin": 799,
"end": 979,
"name": "DUP5"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "MLOAD"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "MSTORE"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP2"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "MLOAD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "DUP4"
},
{
"begin": 799,
"end": 979,
"name": "DUP4"
},
{
"begin": 23,
"end": 24,
"name": "PUSH",
"value": "0"
},
{
"begin": 8,
"end": 108,
"name": "tag",
"value": "23"
},
{
"begin": 8,
"end": 108,
"name": "JUMPDEST"
},
{
"begin": 33,
"end": 36,
"name": "DUP4"
},
{
"begin": 30,
"end": 31,
"name": "DUP2"
},
{
"begin": 27,
"end": 37,
"name": "LT"
},
{
"begin": 8,
"end": 108,
"name": "ISZERO"
},
{
"begin": 8,
"end": 108,
"name": "PUSH [tag]",
"value": "24"
},
{
"begin": 8,
"end": 108,
"name": "JUMPI"
},
{
"begin": 99,
"end": 100,
"name": "DUP1"
},
{
"begin": 94,
"end": 97,
"name": "DUP3"
},
{
"begin": 90,
"end": 101,
"name": "ADD"
},
{
"begin": 84,
"end": 102,
"name": "MLOAD"
},
{
"begin": 80,
"end": 81,
"name": "DUP2"
},
{
"begin": 75,
"end": 78,
"name": "DUP5"
},
{
"begin": 71,
"end": 82,
"name": "ADD"
},
{
"begin": 64,
"end": 103,
"name": "MSTORE"
},
{
"begin": 52,
"end": 54,
"name": "PUSH",
"value": "20"
},
{
"begin": 49,
"end": 50,
"name": "DUP2"
},
{
"begin": 45,
"end": 55,
"name": "ADD"
},
{
"begin": 40,
"end": 55,
"name": "SWAP1"
},
{
"begin": 40,
"end": 55,
"name": "POP"
},
{
"begin": 8,
"end": 108,
"name": "PUSH [tag]",
"value": "23"
},
{
"begin": 8,
"end": 108,
"name": "JUMP"
},
{
"begin": 8,
"end": 108,
"name": "tag",
"value": "24"
},
{
"begin": 8,
"end": 108,
"name": "JUMPDEST"
},
{
"begin": 12,
"end": 26,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "1F"
},
{
"begin": 799,
"end": 979,
"name": "AND"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "ISZERO"
},
{
"begin": 799,
"end": 979,
"name": "PUSH [tag]",
"value": "26"
},
{
"begin": 799,
"end": 979,
"name": "JUMPI"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "DUP3"
},
{
"begin": 799,
"end": 979,
"name": "SUB"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "MLOAD"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "1"
},
{
"begin": 799,
"end": 979,
"name": "DUP4"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "SUB"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "100"
},
{
"begin": 799,
"end": 979,
"name": "EXP"
},
{
"begin": 799,
"end": 979,
"name": "SUB"
},
{
"begin": 799,
"end": 979,
"name": "NOT"
},
{
"begin": 799,
"end": 979,
"name": "AND"
},
{
"begin": 799,
"end": 979,
"name": "DUP2"
},
{
"begin": 799,
"end": 979,
"name": "MSTORE"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "20"
},
{
"begin": 799,
"end": 979,
"name": "ADD"
},
{
"begin": 799,
"end": 979,
"name": "SWAP2"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "tag",
"value": "26"
},
{
"begin": 799,
"end": 979,
"name": "JUMPDEST"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "SWAP5"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "PUSH",
"value": "40"
},
{
"begin": 799,
"end": 979,
"name": "MLOAD"
},
{
"begin": 799,
"end": 979,
"name": "DUP1"
},
{
"begin": 799,
"end": 979,
"name": "SWAP2"
},
{
"begin": 799,
"end": 979,
"name": "SUB"
},
{
"begin": 799,
"end": 979,
"name": "SWAP1"
},
{
"begin": 799,
"end": 979,
"name": "RETURN"
},
{
"begin": 346,
"end": 394,
"name": "tag",
"value": "5"
},
{
"begin": 346,
"end": 394,
"name": "JUMPDEST"
},
{
"begin": 346,
"end": 394,
"name": "CALLVALUE"
},
{
"begin": 346,
"end": 394,
"name": "ISZERO"
},
{
"begin": 346,
"end": 394,
"name": "PUSH [tag]",
"value": "27"
},
{
"begin": 346,
"end": 394,
"name": "JUMPI"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "0"
},
{
"begin": 346,
"end": 394,
"name": "DUP1"
},
{
"begin": 346,
"end": 394,
"name": "REVERT"
},
{
"begin": 346,
"end": 394,
"name": "tag",
"value": "27"
},
{
"begin": 346,
"end": 394,
"name": "JUMPDEST"
},
{
"begin": 346,
"end": 394,
"name": "PUSH [tag]",
"value": "28"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "4"
},
{
"begin": 346,
"end": 394,
"name": "DUP1"
},
{
"begin": 346,
"end": 394,
"name": "DUP1"
},
{
"begin": 346,
"end": 394,
"name": "CALLDATALOAD"
},
{
"begin": 346,
"end": 394,
"name": "SWAP1"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "20"
},
{
"begin": 346,
"end": 394,
"name": "ADD"
},
{
"begin": 346,
"end": 394,
"name": "SWAP1"
},
{
"begin": 346,
"end": 394,
"name": "SWAP2"
},
{
"begin": 346,
"end": 394,
"name": "SWAP1"
},
{
"begin": 346,
"end": 394,
"name": "POP"
},
{
"begin": 346,
"end": 394,
"name": "POP"
},
{
"begin": 346,
"end": 394,
"name": "PUSH [tag]",
"value": "29"
},
{
"begin": 346,
"end": 394,
"name": "JUMP"
},
{
"begin": 346,
"end": 394,
"name": "tag",
"value": "28"
},
{
"begin": 346,
"end": 394,
"name": "JUMPDEST"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "40"
},
{
"begin": 346,
"end": 394,
"name": "MLOAD"
},
{
"begin": 346,
"end": 394,
"name": "DUP1"
},
{
"begin": 346,
"end": 394,
"name": "DUP3"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 346,
"end": 394,
"name": "AND"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 346,
"end": 394,
"name": "AND"
},
{
"begin": 346,
"end": 394,
"name": "DUP2"
},
{
"begin": 346,
"end": 394,
"name": "MSTORE"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "20"
},
{
"begin": 346,
"end": 394,
"name": "ADD"
},
{
"begin": 346,
"end": 394,
"name": "SWAP2"
},
{
"begin": 346,
"end": 394,
"name": "POP"
},
{
"begin": 346,
"end": 394,
"name": "POP"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "40"
},
{
"begin": 346,
"end": 394,
"name": "MLOAD"
},
{
"begin": 346,
"end": 394,
"name": "DUP1"
},
{
"begin": 346,
"end": 394,
"name": "SWAP2"
},
{
"begin": 346,
"end": 394,
"name": "SUB"
},
{
"begin": 346,
"end": 394,
"name": "SWAP1"
},
{
"begin": 346,
"end": 394,
"name": "RETURN"
},
{
"begin": 398,
"end": 446,
"name": "tag",
"value": "6"
},
{
"begin": 398,
"end": 446,
"name": "JUMPDEST"
},
{
"begin": 398,
"end": 446,
"name": "CALLVALUE"
},
{
"begin": 398,
"end": 446,
"name": "ISZERO"
},
{
"begin": 398,
"end": 446,
"name": "PUSH [tag]",
"value": "30"
},
{
"begin": 398,
"end": 446,
"name": "JUMPI"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "0"
},
{
"begin": 398,
"end": 446,
"name": "DUP1"
},
{
"begin": 398,
"end": 446,
"name": "REVERT"
},
{
"begin": 398,
"end": 446,
"name": "tag",
"value": "30"
},
{
"begin": 398,
"end": 446,
"name": "JUMPDEST"
},
{
"begin": 398,
"end": 446,
"name": "PUSH [tag]",
"value": "31"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "4"
},
{
"begin": 398,
"end": 446,
"name": "DUP1"
},
{
"begin": 398,
"end": 446,
"name": "DUP1"
},
{
"begin": 398,
"end": 446,
"name": "CALLDATALOAD"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 398,
"end": 446,
"name": "AND"
},
{
"begin": 398,
"end": 446,
"name": "SWAP1"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "20"
},
{
"begin": 398,
"end": 446,
"name": "ADD"
},
{
"begin": 398,
"end": 446,
"name": "SWAP1"
},
{
"begin": 398,
"end": 446,
"name": "SWAP2"
},
{
"begin": 398,
"end": 446,
"name": "SWAP1"
},
{
"begin": 398,
"end": 446,
"name": "POP"
},
{
"begin": 398,
"end": 446,
"name": "POP"
},
{
"begin": 398,
"end": 446,
"name": "PUSH [tag]",
"value": "32"
},
{
"begin": 398,
"end": 446,
"name": "JUMP"
},
{
"begin": 398,
"end": 446,
"name": "tag",
"value": "31"
},
{
"begin": 398,
"end": 446,
"name": "JUMPDEST"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "40"
},
{
"begin": 398,
"end": 446,
"name": "MLOAD"
},
{
"begin": 398,
"end": 446,
"name": "DUP1"
},
{
"begin": 398,
"end": 446,
"name": "DUP3"
},
{
"begin": 398,
"end": 446,
"name": "DUP2"
},
{
"begin": 398,
"end": 446,
"name": "MSTORE"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "20"
},
{
"begin": 398,
"end": 446,
"name": "ADD"
},
{
"begin": 398,
"end": 446,
"name": "SWAP2"
},
{
"begin": 398,
"end": 446,
"name": "POP"
},
{
"begin": 398,
"end": 446,
"name": "POP"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "40"
},
{
"begin": 398,
"end": 446,
"name": "MLOAD"
},
{
"begin": 398,
"end": 446,
"name": "DUP1"
},
{
"begin": 398,
"end": 446,
"name": "SWAP2"
},
{
"begin": 398,
"end": 446,
"name": "SUB"
},
{
"begin": 398,
"end": 446,
"name": "SWAP1"
},
{
"begin": 398,
"end": 446,
"name": "RETURN"
},
{
"begin": 983,
"end": 1335,
"name": "tag",
"value": "7"
},
{
"begin": 983,
"end": 1335,
"name": "JUMPDEST"
},
{
"begin": 983,
"end": 1335,
"name": "CALLVALUE"
},
{
"begin": 983,
"end": 1335,
"name": "ISZERO"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH [tag]",
"value": "33"
},
{
"begin": 983,
"end": 1335,
"name": "JUMPI"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH",
"value": "0"
},
{
"begin": 983,
"end": 1335,
"name": "DUP1"
},
{
"begin": 983,
"end": 1335,
"name": "REVERT"
},
{
"begin": 983,
"end": 1335,
"name": "tag",
"value": "33"
},
{
"begin": 983,
"end": 1335,
"name": "JUMPDEST"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH [tag]",
"value": "34"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH",
"value": "4"
},
{
"begin": 983,
"end": 1335,
"name": "DUP1"
},
{
"begin": 983,
"end": 1335,
"name": "DUP1"
},
{
"begin": 983,
"end": 1335,
"name": "CALLDATALOAD"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP1"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH",
"value": "20"
},
{
"begin": 983,
"end": 1335,
"name": "ADD"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP1"
},
{
"begin": 983,
"end": 1335,
"name": "DUP3"
},
{
"begin": 983,
"end": 1335,
"name": "ADD"
},
{
"begin": 983,
"end": 1335,
"name": "DUP1"
},
{
"begin": 983,
"end": 1335,
"name": "CALLDATALOAD"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP1"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH",
"value": "20"
},
{
"begin": 983,
"end": 1335,
"name": "ADD"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP1"
},
{
"begin": 983,
"end": 1335,
"name": "DUP1"
},
{
"begin": 983,
"end": 1335,
"name": "DUP1"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH",
"value": "1F"
},
{
"begin": 983,
"end": 1335,
"name": "ADD"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH",
"value": "20"
},
{
"begin": 983,
"end": 1335,
"name": "DUP1"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP2"
},
{
"begin": 983,
"end": 1335,
"name": "DIV"
},
{
"begin": 983,
"end": 1335,
"name": "MUL"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH",
"value": "20"
},
{
"begin": 983,
"end": 1335,
"name": "ADD"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH",
"value": "40"
},
{
"begin": 983,
"end": 1335,
"name": "MLOAD"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP1"
},
{
"begin": 983,
"end": 1335,
"name": "DUP2"
},
{
"begin": 983,
"end": 1335,
"name": "ADD"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH",
"value": "40"
},
{
"begin": 983,
"end": 1335,
"name": "MSTORE"
},
{
"begin": 983,
"end": 1335,
"name": "DUP1"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP4"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP3"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP2"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP1"
},
{
"begin": 983,
"end": 1335,
"name": "DUP2"
},
{
"begin": 983,
"end": 1335,
"name": "DUP2"
},
{
"begin": 983,
"end": 1335,
"name": "MSTORE"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH",
"value": "20"
},
{
"begin": 983,
"end": 1335,
"name": "ADD"
},
{
"begin": 983,
"end": 1335,
"name": "DUP4"
},
{
"begin": 983,
"end": 1335,
"name": "DUP4"
},
{
"begin": 983,
"end": 1335,
"name": "DUP1"
},
{
"begin": 983,
"end": 1335,
"name": "DUP3"
},
{
"begin": 983,
"end": 1335,
"name": "DUP5"
},
{
"begin": 983,
"end": 1335,
"name": "CALLDATACOPY"
},
{
"begin": 983,
"end": 1335,
"name": "DUP3"
},
{
"begin": 983,
"end": 1335,
"name": "ADD"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP2"
},
{
"begin": 983,
"end": 1335,
"name": "POP"
},
{
"begin": 983,
"end": 1335,
"name": "POP"
},
{
"begin": 983,
"end": 1335,
"name": "POP"
},
{
"begin": 983,
"end": 1335,
"name": "POP"
},
{
"begin": 983,
"end": 1335,
"name": "POP"
},
{
"begin": 983,
"end": 1335,
"name": "POP"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP2"
},
{
"begin": 983,
"end": 1335,
"name": "SWAP1"
},
{
"begin": 983,
"end": 1335,
"name": "POP"
},
{
"begin": 983,
"end": 1335,
"name": "POP"
},
{
"begin": 983,
"end": 1335,
"name": "PUSH [tag]",
"value": "35"
},
{
"begin": 983,
"end": 1335,
"name": "JUMP"
},
{
"begin": 983,
"end": 1335,
"name": "tag",
"value": "34"
},
{
"begin": 983,
"end": 1335,
"name": "JUMPDEST"
},
{
"begin": 983,
"end": 1335,
"name": "STOP"
},
{
"begin": 451,
"end": 795,
"name": "tag",
"value": "8"
},
{
"begin": 451,
"end": 795,
"name": "JUMPDEST"
},
{
"begin": 451,
"end": 795,
"name": "CALLVALUE"
},
{
"begin": 451,
"end": 795,
"name": "ISZERO"
},
{
"begin": 451,
"end": 795,
"name": "PUSH [tag]",
"value": "36"
},
{
"begin": 451,
"end": 795,
"name": "JUMPI"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "0"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "REVERT"
},
{
"begin": 451,
"end": 795,
"name": "tag",
"value": "36"
},
{
"begin": 451,
"end": 795,
"name": "JUMPDEST"
},
{
"begin": 451,
"end": 795,
"name": "PUSH [tag]",
"value": "37"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "4"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "CALLDATALOAD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "20"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP3"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "CALLDATALOAD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "20"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "1F"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "20"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "SWAP2"
},
{
"begin": 451,
"end": 795,
"name": "DIV"
},
{
"begin": 451,
"end": 795,
"name": "MUL"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "20"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "40"
},
{
"begin": 451,
"end": 795,
"name": "MLOAD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP2"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "40"
},
{
"begin": 451,
"end": 795,
"name": "MSTORE"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "SWAP4"
},
{
"begin": 451,
"end": 795,
"name": "SWAP3"
},
{
"begin": 451,
"end": 795,
"name": "SWAP2"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP2"
},
{
"begin": 451,
"end": 795,
"name": "DUP2"
},
{
"begin": 451,
"end": 795,
"name": "MSTORE"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "20"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "DUP4"
},
{
"begin": 451,
"end": 795,
"name": "DUP4"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP3"
},
{
"begin": 451,
"end": 795,
"name": "DUP5"
},
{
"begin": 451,
"end": 795,
"name": "CALLDATACOPY"
},
{
"begin": 451,
"end": 795,
"name": "DUP3"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP2"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "SWAP2"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "CALLDATALOAD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "20"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP3"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "CALLDATALOAD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "20"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "1F"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "20"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "SWAP2"
},
{
"begin": 451,
"end": 795,
"name": "DIV"
},
{
"begin": 451,
"end": 795,
"name": "MUL"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "20"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "40"
},
{
"begin": 451,
"end": 795,
"name": "MLOAD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP2"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "40"
},
{
"begin": 451,
"end": 795,
"name": "MSTORE"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "SWAP4"
},
{
"begin": 451,
"end": 795,
"name": "SWAP3"
},
{
"begin": 451,
"end": 795,
"name": "SWAP2"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP2"
},
{
"begin": 451,
"end": 795,
"name": "DUP2"
},
{
"begin": 451,
"end": 795,
"name": "MSTORE"
},
{
"begin": 451,
"end": 795,
"name": "PUSH",
"value": "20"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "DUP4"
},
{
"begin": 451,
"end": 795,
"name": "DUP4"
},
{
"begin": 451,
"end": 795,
"name": "DUP1"
},
{
"begin": 451,
"end": 795,
"name": "DUP3"
},
{
"begin": 451,
"end": 795,
"name": "DUP5"
},
{
"begin": 451,
"end": 795,
"name": "CALLDATACOPY"
},
{
"begin": 451,
"end": 795,
"name": "DUP3"
},
{
"begin": 451,
"end": 795,
"name": "ADD"
},
{
"begin": 451,
"end": 795,
"name": "SWAP2"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "SWAP2"
},
{
"begin": 451,
"end": 795,
"name": "SWAP1"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "POP"
},
{
"begin": 451,
"end": 795,
"name": "PUSH [tag]",
"value": "38"
},
{
"begin": 451,
"end": 795,
"name": "JUMP"
},
{
"begin": 451,
"end": 795,
"name": "tag",
"value": "37"
},
{
"begin": 451,
"end": 795,
"name": "JUMPDEST"
},
{
"begin": 451,
"end": 795,
"name": "STOP"
},
{
"begin": 314,
"end": 341,
"name": "tag",
"value": "9"
},
{
"begin": 314,
"end": 341,
"name": "JUMPDEST"
},
{
"begin": 314,
"end": 341,
"name": "CALLVALUE"
},
{
"begin": 314,
"end": 341,
"name": "ISZERO"
},
{
"begin": 314,
"end": 341,
"name": "PUSH [tag]",
"value": "39"
},
{
"begin": 314,
"end": 341,
"name": "JUMPI"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "0"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "REVERT"
},
{
"begin": 314,
"end": 341,
"name": "tag",
"value": "39"
},
{
"begin": 314,
"end": 341,
"name": "JUMPDEST"
},
{
"begin": 314,
"end": 341,
"name": "PUSH [tag]",
"value": "40"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "4"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "CALLDATALOAD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "SWAP2"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "PUSH [tag]",
"value": "41"
},
{
"begin": 314,
"end": 341,
"name": "JUMP"
},
{
"begin": 314,
"end": 341,
"name": "tag",
"value": "40"
},
{
"begin": 314,
"end": 341,
"name": "JUMPDEST"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "40"
},
{
"begin": 314,
"end": 341,
"name": "MLOAD"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "DUP5"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 314,
"end": 341,
"name": "AND"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 314,
"end": 341,
"name": "AND"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "MSTORE"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "DUP4"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "SUB"
},
{
"begin": 314,
"end": 341,
"name": "DUP4"
},
{
"begin": 314,
"end": 341,
"name": "MSTORE"
},
{
"begin": 314,
"end": 341,
"name": "DUP6"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "MLOAD"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "MSTORE"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP2"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "MLOAD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "DUP4"
},
{
"begin": 314,
"end": 341,
"name": "DUP4"
},
{
"begin": 23,
"end": 24,
"name": "PUSH",
"value": "0"
},
{
"begin": 8,
"end": 108,
"name": "tag",
"value": "42"
},
{
"begin": 8,
"end": 108,
"name": "JUMPDEST"
},
{
"begin": 33,
"end": 36,
"name": "DUP4"
},
{
"begin": 30,
"end": 31,
"name": "DUP2"
},
{
"begin": 27,
"end": 37,
"name": "LT"
},
{
"begin": 8,
"end": 108,
"name": "ISZERO"
},
{
"begin": 8,
"end": 108,
"name": "PUSH [tag]",
"value": "43"
},
{
"begin": 8,
"end": 108,
"name": "JUMPI"
},
{
"begin": 99,
"end": 100,
"name": "DUP1"
},
{
"begin": 94,
"end": 97,
"name": "DUP3"
},
{
"begin": 90,
"end": 101,
"name": "ADD"
},
{
"begin": 84,
"end": 102,
"name": "MLOAD"
},
{
"begin": 80,
"end": 81,
"name": "DUP2"
},
{
"begin": 75,
"end": 78,
"name": "DUP5"
},
{
"begin": 71,
"end": 82,
"name": "ADD"
},
{
"begin": 64,
"end": 103,
"name": "MSTORE"
},
{
"begin": 52,
"end": 54,
"name": "PUSH",
"value": "20"
},
{
"begin": 49,
"end": 50,
"name": "DUP2"
},
{
"begin": 45,
"end": 55,
"name": "ADD"
},
{
"begin": 40,
"end": 55,
"name": "SWAP1"
},
{
"begin": 40,
"end": 55,
"name": "POP"
},
{
"begin": 8,
"end": 108,
"name": "PUSH [tag]",
"value": "42"
},
{
"begin": 8,
"end": 108,
"name": "JUMP"
},
{
"begin": 8,
"end": 108,
"name": "tag",
"value": "43"
},
{
"begin": 8,
"end": 108,
"name": "JUMPDEST"
},
{
"begin": 12,
"end": 26,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "1F"
},
{
"begin": 314,
"end": 341,
"name": "AND"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "ISZERO"
},
{
"begin": 314,
"end": 341,
"name": "PUSH [tag]",
"value": "45"
},
{
"begin": 314,
"end": 341,
"name": "JUMPI"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "DUP3"
},
{
"begin": 314,
"end": 341,
"name": "SUB"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "MLOAD"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "1"
},
{
"begin": 314,
"end": 341,
"name": "DUP4"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "SUB"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "100"
},
{
"begin": 314,
"end": 341,
"name": "EXP"
},
{
"begin": 314,
"end": 341,
"name": "SUB"
},
{
"begin": 314,
"end": 341,
"name": "NOT"
},
{
"begin": 314,
"end": 341,
"name": "AND"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "MSTORE"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP2"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "tag",
"value": "45"
},
{
"begin": 314,
"end": 341,
"name": "JUMPDEST"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "DUP4"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "SUB"
},
{
"begin": 314,
"end": 341,
"name": "DUP3"
},
{
"begin": 314,
"end": 341,
"name": "MSTORE"
},
{
"begin": 314,
"end": 341,
"name": "DUP5"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "MLOAD"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "MSTORE"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP2"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "MLOAD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "DUP4"
},
{
"begin": 314,
"end": 341,
"name": "DUP4"
},
{
"begin": 23,
"end": 24,
"name": "PUSH",
"value": "0"
},
{
"begin": 8,
"end": 108,
"name": "tag",
"value": "46"
},
{
"begin": 8,
"end": 108,
"name": "JUMPDEST"
},
{
"begin": 33,
"end": 36,
"name": "DUP4"
},
{
"begin": 30,
"end": 31,
"name": "DUP2"
},
{
"begin": 27,
"end": 37,
"name": "LT"
},
{
"begin": 8,
"end": 108,
"name": "ISZERO"
},
{
"begin": 8,
"end": 108,
"name": "PUSH [tag]",
"value": "47"
},
{
"begin": 8,
"end": 108,
"name": "JUMPI"
},
{
"begin": 99,
"end": 100,
"name": "DUP1"
},
{
"begin": 94,
"end": 97,
"name": "DUP3"
},
{
"begin": 90,
"end": 101,
"name": "ADD"
},
{
"begin": 84,
"end": 102,
"name": "MLOAD"
},
{
"begin": 80,
"end": 81,
"name": "DUP2"
},
{
"begin": 75,
"end": 78,
"name": "DUP5"
},
{
"begin": 71,
"end": 82,
"name": "ADD"
},
{
"begin": 64,
"end": 103,
"name": "MSTORE"
},
{
"begin": 52,
"end": 54,
"name": "PUSH",
"value": "20"
},
{
"begin": 49,
"end": 50,
"name": "DUP2"
},
{
"begin": 45,
"end": 55,
"name": "ADD"
},
{
"begin": 40,
"end": 55,
"name": "SWAP1"
},
{
"begin": 40,
"end": 55,
"name": "POP"
},
{
"begin": 8,
"end": 108,
"name": "PUSH [tag]",
"value": "46"
},
{
"begin": 8,
"end": 108,
"name": "JUMP"
},
{
"begin": 8,
"end": 108,
"name": "tag",
"value": "47"
},
{
"begin": 8,
"end": 108,
"name": "JUMPDEST"
},
{
"begin": 12,
"end": 26,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "1F"
},
{
"begin": 314,
"end": 341,
"name": "AND"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "ISZERO"
},
{
"begin": 314,
"end": 341,
"name": "PUSH [tag]",
"value": "49"
},
{
"begin": 314,
"end": 341,
"name": "JUMPI"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "DUP3"
},
{
"begin": 314,
"end": 341,
"name": "SUB"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "MLOAD"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "1"
},
{
"begin": 314,
"end": 341,
"name": "DUP4"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "SUB"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "100"
},
{
"begin": 314,
"end": 341,
"name": "EXP"
},
{
"begin": 314,
"end": 341,
"name": "SUB"
},
{
"begin": 314,
"end": 341,
"name": "NOT"
},
{
"begin": 314,
"end": 341,
"name": "AND"
},
{
"begin": 314,
"end": 341,
"name": "DUP2"
},
{
"begin": 314,
"end": 341,
"name": "MSTORE"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "20"
},
{
"begin": 314,
"end": 341,
"name": "ADD"
},
{
"begin": 314,
"end": 341,
"name": "SWAP2"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "tag",
"value": "49"
},
{
"begin": 314,
"end": 341,
"name": "JUMPDEST"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "SWAP6"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "POP"
},
{
"begin": 314,
"end": 341,
"name": "PUSH",
"value": "40"
},
{
"begin": 314,
"end": 341,
"name": "MLOAD"
},
{
"begin": 314,
"end": 341,
"name": "DUP1"
},
{
"begin": 314,
"end": 341,
"name": "SWAP2"
},
{
"begin": 314,
"end": 341,
"name": "SUB"
},
{
"begin": 314,
"end": 341,
"name": "SWAP1"
},
{
"begin": 314,
"end": 341,
"name": "RETURN"
},
{
"begin": 1339,
"end": 1684,
"name": "tag",
"value": "12"
},
{
"begin": 1339,
"end": 1684,
"name": "JUMPDEST"
},
{
"begin": 1520,
"end": 1527,
"name": "PUSH",
"value": "0"
},
{
"begin": 1438,
"end": 1439,
"name": "DUP1"
},
{
"begin": 1407,
"end": 1422,
"name": "PUSH",
"value": "2"
},
{
"begin": 1407,
"end": 1434,
"name": "PUSH",
"value": "0"
},
{
"begin": 1423,
"end": 1433,
"name": "CALLER"
},
{
"begin": 1407,
"end": 1434,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1407,
"end": 1434,
"name": "AND"
},
{
"begin": 1407,
"end": 1434,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1407,
"end": 1434,
"name": "AND"
},
{
"begin": 1407,
"end": 1434,
"name": "DUP2"
},
{
"begin": 1407,
"end": 1434,
"name": "MSTORE"
},
{
"begin": 1407,
"end": 1434,
"name": "PUSH",
"value": "20"
},
{
"begin": 1407,
"end": 1434,
"name": "ADD"
},
{
"begin": 1407,
"end": 1434,
"name": "SWAP1"
},
{
"begin": 1407,
"end": 1434,
"name": "DUP2"
},
{
"begin": 1407,
"end": 1434,
"name": "MSTORE"
},
{
"begin": 1407,
"end": 1434,
"name": "PUSH",
"value": "20"
},
{
"begin": 1407,
"end": 1434,
"name": "ADD"
},
{
"begin": 1407,
"end": 1434,
"name": "PUSH",
"value": "0"
},
{
"begin": 1407,
"end": 1434,
"name": "KECCAK256"
},
{
"begin": 1407,
"end": 1434,
"name": "SLOAD"
},
{
"begin": 1407,
"end": 1439,
"name": "EQ"
},
{
"begin": 1407,
"end": 1439,
"name": "ISZERO"
},
{
"begin": 1399,
"end": 1440,
"name": "ISZERO"
},
{
"begin": 1399,
"end": 1440,
"name": "ISZERO"
},
{
"begin": 1399,
"end": 1440,
"name": "PUSH [tag]",
"value": "51"
},
{
"begin": 1399,
"end": 1440,
"name": "JUMPI"
},
{
"begin": 1399,
"end": 1440,
"name": "PUSH",
"value": "0"
},
{
"begin": 1399,
"end": 1440,
"name": "DUP1"
},
{
"begin": 1399,
"end": 1440,
"name": "REVERT"
},
{
"begin": 1399,
"end": 1440,
"name": "tag",
"value": "51"
},
{
"begin": 1399,
"end": 1440,
"name": "JUMPDEST"
},
{
"begin": 1468,
"end": 1477,
"name": "PUSH",
"value": "0"
},
{
"begin": 1478,
"end": 1493,
"name": "PUSH",
"value": "2"
},
{
"begin": 1478,
"end": 1505,
"name": "PUSH",
"value": "0"
},
{
"begin": 1494,
"end": 1504,
"name": "CALLER"
},
{
"begin": 1478,
"end": 1505,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1478,
"end": 1505,
"name": "AND"
},
{
"begin": 1478,
"end": 1505,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1478,
"end": 1505,
"name": "AND"
},
{
"begin": 1478,
"end": 1505,
"name": "DUP2"
},
{
"begin": 1478,
"end": 1505,
"name": "MSTORE"
},
{
"begin": 1478,
"end": 1505,
"name": "PUSH",
"value": "20"
},
{
"begin": 1478,
"end": 1505,
"name": "ADD"
},
{
"begin": 1478,
"end": 1505,
"name": "SWAP1"
},
{
"begin": 1478,
"end": 1505,
"name": "DUP2"
},
{
"begin": 1478,
"end": 1505,
"name": "MSTORE"
},
{
"begin": 1478,
"end": 1505,
"name": "PUSH",
"value": "20"
},
{
"begin": 1478,
"end": 1505,
"name": "ADD"
},
{
"begin": 1478,
"end": 1505,
"name": "PUSH",
"value": "0"
},
{
"begin": 1478,
"end": 1505,
"name": "KECCAK256"
},
{
"begin": 1478,
"end": 1505,
"name": "SLOAD"
},
{
"begin": 1468,
"end": 1506,
"name": "DUP2"
},
{
"begin": 1468,
"end": 1506,
"name": "SLOAD"
},
{
"begin": 1468,
"end": 1506,
"name": "DUP2"
},
{
"begin": 1468,
"end": 1506,
"name": "LT"
},
{
"begin": 1468,
"end": 1506,
"name": "ISZERO"
},
{
"begin": 1468,
"end": 1506,
"name": "ISZERO"
},
{
"begin": 1468,
"end": 1506,
"name": "PUSH [tag]",
"value": "52"
},
{
"begin": 1468,
"end": 1506,
"name": "JUMPI"
},
{
"begin": 1468,
"end": 1506,
"name": "INVALID"
},
{
"begin": 1468,
"end": 1506,
"name": "tag",
"value": "52"
},
{
"begin": 1468,
"end": 1506,
"name": "JUMPDEST"
},
{
"begin": 1468,
"end": 1506,
"name": "SWAP1"
},
{
"begin": 1468,
"end": 1506,
"name": "PUSH",
"value": "0"
},
{
"begin": 1468,
"end": 1506,
"name": "MSTORE"
},
{
"begin": 1468,
"end": 1506,
"name": "PUSH",
"value": "20"
},
{
"begin": 1468,
"end": 1506,
"name": "PUSH",
"value": "0"
},
{
"begin": 1468,
"end": 1506,
"name": "KECCAK256"
},
{
"begin": 1468,
"end": 1506,
"name": "SWAP1"
},
{
"begin": 1468,
"end": 1506,
"name": "PUSH",
"value": "3"
},
{
"begin": 1468,
"end": 1506,
"name": "MUL"
},
{
"begin": 1468,
"end": 1506,
"name": "ADD"
},
{
"begin": 1468,
"end": 1512,
"name": "PUSH",
"value": "0"
},
{
"begin": 1468,
"end": 1512,
"name": "ADD"
},
{
"begin": 1468,
"end": 1512,
"name": "PUSH",
"value": "0"
},
{
"begin": 1468,
"end": 1512,
"name": "SWAP1"
},
{
"begin": 1468,
"end": 1512,
"name": "SLOAD"
},
{
"begin": 1468,
"end": 1512,
"name": "SWAP1"
},
{
"begin": 1468,
"end": 1512,
"name": "PUSH",
"value": "100"
},
{
"begin": 1468,
"end": 1512,
"name": "EXP"
},
{
"begin": 1468,
"end": 1512,
"name": "SWAP1"
},
{
"begin": 1468,
"end": 1512,
"name": "DIV"
},
{
"begin": 1468,
"end": 1512,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1468,
"end": 1512,
"name": "AND"
},
{
"begin": 1454,
"end": 1512,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1454,
"end": 1512,
"name": "AND"
},
{
"begin": 1454,
"end": 1464,
"name": "CALLER"
},
{
"begin": 1454,
"end": 1512,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1454,
"end": 1512,
"name": "AND"
},
{
"begin": 1454,
"end": 1512,
"name": "EQ"
},
{
"begin": 1446,
"end": 1513,
"name": "ISZERO"
},
{
"begin": 1446,
"end": 1513,
"name": "ISZERO"
},
{
"begin": 1446,
"end": 1513,
"name": "PUSH [tag]",
"value": "54"
},
{
"begin": 1446,
"end": 1513,
"name": "JUMPI"
},
{
"begin": 1446,
"end": 1513,
"name": "PUSH",
"value": "0"
},
{
"begin": 1446,
"end": 1513,
"name": "DUP1"
},
{
"begin": 1446,
"end": 1513,
"name": "REVERT"
},
{
"begin": 1446,
"end": 1513,
"name": "tag",
"value": "54"
},
{
"begin": 1446,
"end": 1513,
"name": "JUMPDEST"
},
{
"begin": 1530,
"end": 1545,
"name": "PUSH",
"value": "2"
},
{
"begin": 1530,
"end": 1557,
"name": "PUSH",
"value": "0"
},
{
"begin": 1546,
"end": 1556,
"name": "CALLER"
},
{
"begin": 1530,
"end": 1557,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1530,
"end": 1557,
"name": "AND"
},
{
"begin": 1530,
"end": 1557,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1530,
"end": 1557,
"name": "AND"
},
{
"begin": 1530,
"end": 1557,
"name": "DUP2"
},
{
"begin": 1530,
"end": 1557,
"name": "MSTORE"
},
{
"begin": 1530,
"end": 1557,
"name": "PUSH",
"value": "20"
},
{
"begin": 1530,
"end": 1557,
"name": "ADD"
},
{
"begin": 1530,
"end": 1557,
"name": "SWAP1"
},
{
"begin": 1530,
"end": 1557,
"name": "DUP2"
},
{
"begin": 1530,
"end": 1557,
"name": "MSTORE"
},
{
"begin": 1530,
"end": 1557,
"name": "PUSH",
"value": "20"
},
{
"begin": 1530,
"end": 1557,
"name": "ADD"
},
{
"begin": 1530,
"end": 1557,
"name": "PUSH",
"value": "0"
},
{
"begin": 1530,
"end": 1557,
"name": "KECCAK256"
},
{
"begin": 1530,
"end": 1557,
"name": "SLOAD"
},
{
"begin": 1520,
"end": 1557,
"name": "SWAP1"
},
{
"begin": 1520,
"end": 1557,
"name": "POP"
},
{
"begin": 1590,
"end": 1599,
"name": "DUP2"
},
{
"begin": 1564,
"end": 1573,
"name": "PUSH",
"value": "0"
},
{
"begin": 1574,
"end": 1576,
"name": "DUP3"
},
{
"begin": 1564,
"end": 1577,
"name": "DUP2"
},
{
"begin": 1564,
"end": 1577,
"name": "SLOAD"
},
{
"begin": 1564,
"end": 1577,
"name": "DUP2"
},
{
"begin": 1564,
"end": 1577,
"name": "LT"
},
{
"begin": 1564,
"end": 1577,
"name": "ISZERO"
},
{
"begin": 1564,
"end": 1577,
"name": "ISZERO"
},
{
"begin": 1564,
"end": 1577,
"name": "PUSH [tag]",
"value": "55"
},
{
"begin": 1564,
"end": 1577,
"name": "JUMPI"
},
{
"begin": 1564,
"end": 1577,
"name": "INVALID"
},
{
"begin": 1564,
"end": 1577,
"name": "tag",
"value": "55"
},
{
"begin": 1564,
"end": 1577,
"name": "JUMPDEST"
},
{
"begin": 1564,
"end": 1577,
"name": "SWAP1"
},
{
"begin": 1564,
"end": 1577,
"name": "PUSH",
"value": "0"
},
{
"begin": 1564,
"end": 1577,
"name": "MSTORE"
},
{
"begin": 1564,
"end": 1577,
"name": "PUSH",
"value": "20"
},
{
"begin": 1564,
"end": 1577,
"name": "PUSH",
"value": "0"
},
{
"begin": 1564,
"end": 1577,
"name": "KECCAK256"
},
{
"begin": 1564,
"end": 1577,
"name": "SWAP1"
},
{
"begin": 1564,
"end": 1577,
"name": "PUSH",
"value": "3"
},
{
"begin": 1564,
"end": 1577,
"name": "MUL"
},
{
"begin": 1564,
"end": 1577,
"name": "ADD"
},
{
"begin": 1564,
"end": 1586,
"name": "PUSH",
"value": "2"
},
{
"begin": 1564,
"end": 1586,
"name": "ADD"
},
{
"begin": 1564,
"end": 1599,
"name": "SWAP1"
},
{
"begin": 1564,
"end": 1599,
"name": "DUP1"
},
{
"begin": 1564,
"end": 1599,
"name": "MLOAD"
},
{
"begin": 1564,
"end": 1599,
"name": "SWAP1"
},
{
"begin": 1564,
"end": 1599,
"name": "PUSH",
"value": "20"
},
{
"begin": 1564,
"end": 1599,
"name": "ADD"
},
{
"begin": 1564,
"end": 1599,
"name": "SWAP1"
},
{
"begin": 1564,
"end": 1599,
"name": "PUSH [tag]",
"value": "57"
},
{
"begin": 1564,
"end": 1599,
"name": "SWAP3"
},
{
"begin": 1564,
"end": 1599,
"name": "SWAP2"
},
{
"begin": 1564,
"end": 1599,
"name": "SWAP1"
},
{
"begin": 1564,
"end": 1599,
"name": "PUSH [tag]",
"value": "58"
},
{
"begin": 1564,
"end": 1599,
"name": "JUMP",
"value": "[in]"
},
{
"begin": 1564,
"end": 1599,
"name": "tag",
"value": "57"
},
{
"begin": 1564,
"end": 1599,
"name": "JUMPDEST"
},
{
"begin": 1564,
"end": 1599,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "76571B7A897A1509C641587568218A290018FBDC8B9A724F17B77FF0EEC22C0C"
},
{
"begin": 1626,
"end": 1628,
"name": "DUP2"
},
{
"begin": 1630,
"end": 1640,
"name": "CALLER"
},
{
"begin": 1642,
"end": 1651,
"name": "PUSH",
"value": "0"
},
{
"begin": 1652,
"end": 1654,
"name": "DUP5"
},
{
"begin": 1642,
"end": 1655,
"name": "DUP2"
},
{
"begin": 1642,
"end": 1655,
"name": "SLOAD"
},
{
"begin": 1642,
"end": 1655,
"name": "DUP2"
},
{
"begin": 1642,
"end": 1655,
"name": "LT"
},
{
"begin": 1642,
"end": 1655,
"name": "ISZERO"
},
{
"begin": 1642,
"end": 1655,
"name": "ISZERO"
},
{
"begin": 1642,
"end": 1655,
"name": "PUSH [tag]",
"value": "59"
},
{
"begin": 1642,
"end": 1655,
"name": "JUMPI"
},
{
"begin": 1642,
"end": 1655,
"name": "INVALID"
},
{
"begin": 1642,
"end": 1655,
"name": "tag",
"value": "59"
},
{
"begin": 1642,
"end": 1655,
"name": "JUMPDEST"
},
{
"begin": 1642,
"end": 1655,
"name": "SWAP1"
},
{
"begin": 1642,
"end": 1655,
"name": "PUSH",
"value": "0"
},
{
"begin": 1642,
"end": 1655,
"name": "MSTORE"
},
{
"begin": 1642,
"end": 1655,
"name": "PUSH",
"value": "20"
},
{
"begin": 1642,
"end": 1655,
"name": "PUSH",
"value": "0"
},
{
"begin": 1642,
"end": 1655,
"name": "KECCAK256"
},
{
"begin": 1642,
"end": 1655,
"name": "SWAP1"
},
{
"begin": 1642,
"end": 1655,
"name": "PUSH",
"value": "3"
},
{
"begin": 1642,
"end": 1655,
"name": "MUL"
},
{
"begin": 1642,
"end": 1655,
"name": "ADD"
},
{
"begin": 1642,
"end": 1667,
"name": "PUSH",
"value": "1"
},
{
"begin": 1642,
"end": 1667,
"name": "ADD"
},
{
"begin": 1669,
"end": 1678,
"name": "DUP6"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "40"
},
{
"begin": 1610,
"end": 1679,
"name": "MLOAD"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP6"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "MSTORE"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP5"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1610,
"end": 1679,
"name": "AND"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1610,
"end": 1679,
"name": "AND"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "MSTORE"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP4"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "SUB"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP4"
},
{
"begin": 1610,
"end": 1679,
"name": "MSTORE"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP6"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "SLOAD"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "1"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "1"
},
{
"begin": 1610,
"end": 1679,
"name": "AND"
},
{
"begin": 1610,
"end": 1679,
"name": "ISZERO"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "100"
},
{
"begin": 1610,
"end": 1679,
"name": "MUL"
},
{
"begin": 1610,
"end": 1679,
"name": "SUB"
},
{
"begin": 1610,
"end": 1679,
"name": "AND"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "2"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "DIV"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "MSTORE"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP2"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "SLOAD"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "1"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "1"
},
{
"begin": 1610,
"end": 1679,
"name": "AND"
},
{
"begin": 1610,
"end": 1679,
"name": "ISZERO"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "100"
},
{
"begin": 1610,
"end": 1679,
"name": "MUL"
},
{
"begin": 1610,
"end": 1679,
"name": "SUB"
},
{
"begin": 1610,
"end": 1679,
"name": "AND"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "2"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "DIV"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "ISZERO"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH [tag]",
"value": "61"
},
{
"begin": 1610,
"end": 1679,
"name": "JUMPI"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "1F"
},
{
"begin": 1610,
"end": 1679,
"name": "LT"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH [tag]",
"value": "62"
},
{
"begin": 1610,
"end": 1679,
"name": "JUMPI"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "100"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP4"
},
{
"begin": 1610,
"end": 1679,
"name": "SLOAD"
},
{
"begin": 1610,
"end": 1679,
"name": "DIV"
},
{
"begin": 1610,
"end": 1679,
"name": "MUL"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP4"
},
{
"begin": 1610,
"end": 1679,
"name": "MSTORE"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP2"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP2"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH [tag]",
"value": "61"
},
{
"begin": 1610,
"end": 1679,
"name": "JUMP"
},
{
"begin": 1610,
"end": 1679,
"name": "tag",
"value": "62"
},
{
"begin": 1610,
"end": 1679,
"name": "JUMPDEST"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP3"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP2"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "0"
},
{
"begin": 1610,
"end": 1679,
"name": "MSTORE"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "0"
},
{
"begin": 1610,
"end": 1679,
"name": "KECCAK256"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "tag",
"value": "63"
},
{
"begin": 1610,
"end": 1679,
"name": "JUMPDEST"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "SLOAD"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "MSTORE"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "1"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP4"
},
{
"begin": 1610,
"end": 1679,
"name": "GT"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH [tag]",
"value": "63"
},
{
"begin": 1610,
"end": 1679,
"name": "JUMPI"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP3"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "SUB"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "1F"
},
{
"begin": 1610,
"end": 1679,
"name": "AND"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP3"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP2"
},
{
"begin": 1610,
"end": 1679,
"name": "tag",
"value": "61"
},
{
"begin": 1610,
"end": 1679,
"name": "JUMPDEST"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP4"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "SUB"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP3"
},
{
"begin": 1610,
"end": 1679,
"name": "MSTORE"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP5"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "MLOAD"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "MSTORE"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP2"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "MLOAD"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP4"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP4"
},
{
"begin": 23,
"end": 24,
"name": "PUSH",
"value": "0"
},
{
"begin": 8,
"end": 108,
"name": "tag",
"value": "64"
},
{
"begin": 8,
"end": 108,
"name": "JUMPDEST"
},
{
"begin": 33,
"end": 36,
"name": "DUP4"
},
{
"begin": 30,
"end": 31,
"name": "DUP2"
},
{
"begin": 27,
"end": 37,
"name": "LT"
},
{
"begin": 8,
"end": 108,
"name": "ISZERO"
},
{
"begin": 8,
"end": 108,
"name": "PUSH [tag]",
"value": "65"
},
{
"begin": 8,
"end": 108,
"name": "JUMPI"
},
{
"begin": 99,
"end": 100,
"name": "DUP1"
},
{
"begin": 94,
"end": 97,
"name": "DUP3"
},
{
"begin": 90,
"end": 101,
"name": "ADD"
},
{
"begin": 84,
"end": 102,
"name": "MLOAD"
},
{
"begin": 80,
"end": 81,
"name": "DUP2"
},
{
"begin": 75,
"end": 78,
"name": "DUP5"
},
{
"begin": 71,
"end": 82,
"name": "ADD"
},
{
"begin": 64,
"end": 103,
"name": "MSTORE"
},
{
"begin": 52,
"end": 54,
"name": "PUSH",
"value": "20"
},
{
"begin": 49,
"end": 50,
"name": "DUP2"
},
{
"begin": 45,
"end": 55,
"name": "ADD"
},
{
"begin": 40,
"end": 55,
"name": "SWAP1"
},
{
"begin": 40,
"end": 55,
"name": "POP"
},
{
"begin": 8,
"end": 108,
"name": "PUSH [tag]",
"value": "64"
},
{
"begin": 8,
"end": 108,
"name": "JUMP"
},
{
"begin": 8,
"end": 108,
"name": "tag",
"value": "65"
},
{
"begin": 8,
"end": 108,
"name": "JUMPDEST"
},
{
"begin": 12,
"end": 26,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "1F"
},
{
"begin": 1610,
"end": 1679,
"name": "AND"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "ISZERO"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH [tag]",
"value": "67"
},
{
"begin": 1610,
"end": 1679,
"name": "JUMPI"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP3"
},
{
"begin": 1610,
"end": 1679,
"name": "SUB"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "MLOAD"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "1"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP4"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "SUB"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "100"
},
{
"begin": 1610,
"end": 1679,
"name": "EXP"
},
{
"begin": 1610,
"end": 1679,
"name": "SUB"
},
{
"begin": 1610,
"end": 1679,
"name": "NOT"
},
{
"begin": 1610,
"end": 1679,
"name": "AND"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP2"
},
{
"begin": 1610,
"end": 1679,
"name": "MSTORE"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "20"
},
{
"begin": 1610,
"end": 1679,
"name": "ADD"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP2"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "tag",
"value": "67"
},
{
"begin": 1610,
"end": 1679,
"name": "JUMPDEST"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP7"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "POP"
},
{
"begin": 1610,
"end": 1679,
"name": "PUSH",
"value": "40"
},
{
"begin": 1610,
"end": 1679,
"name": "MLOAD"
},
{
"begin": 1610,
"end": 1679,
"name": "DUP1"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP2"
},
{
"begin": 1610,
"end": 1679,
"name": "SUB"
},
{
"begin": 1610,
"end": 1679,
"name": "SWAP1"
},
{
"begin": 1610,
"end": 1679,
"name": "LOG1"
},
{
"begin": 1339,
"end": 1684,
"name": "POP"
},
{
"begin": 1339,
"end": 1684,
"name": "POP"
},
{
"begin": 1339,
"end": 1684,
"name": "JUMP",
"value": "[out]"
},
{
"begin": 1903,
"end": 2062,
"name": "tag",
"value": "15"
},
{
"begin": 1903,
"end": 2062,
"name": "JUMPDEST"
},
{
"begin": 1969,
"end": 2011,
"name": "PUSH",
"value": "8D3E809FBD258083A5BA004A527159DA535C8ABA"
},
{
"begin": 1955,
"end": 2011,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1955,
"end": 2011,
"name": "AND"
},
{
"begin": 1955,
"end": 1965,
"name": "CALLER"
},
{
"begin": 1955,
"end": 2011,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1955,
"end": 2011,
"name": "AND"
},
{
"begin": 1955,
"end": 2011,
"name": "EQ"
},
{
"begin": 1947,
"end": 2012,
"name": "ISZERO"
},
{
"begin": 1947,
"end": 2012,
"name": "ISZERO"
},
{
"begin": 1947,
"end": 2012,
"name": "PUSH [tag]",
"value": "69"
},
{
"begin": 1947,
"end": 2012,
"name": "JUMPI"
},
{
"begin": 1947,
"end": 2012,
"name": "PUSH",
"value": "0"
},
{
"begin": 1947,
"end": 2012,
"name": "DUP1"
},
{
"begin": 1947,
"end": 2012,
"name": "REVERT"
},
{
"begin": 1947,
"end": 2012,
"name": "tag",
"value": "69"
},
{
"begin": 1947,
"end": 2012,
"name": "JUMPDEST"
},
{
"begin": 2018,
"end": 2027,
"name": "PUSH",
"value": "0"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP1"
},
{
"begin": 2018,
"end": 2057,
"name": "SLOAD"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP1"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "1"
},
{
"begin": 2018,
"end": 2057,
"name": "ADD"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP3"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP2"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH [tag]",
"value": "70"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP2"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH [tag]",
"value": "71"
},
{
"begin": 2018,
"end": 2057,
"name": "JUMP",
"value": "[in]"
},
{
"begin": 2018,
"end": 2057,
"name": "tag",
"value": "70"
},
{
"begin": 2018,
"end": 2057,
"name": "JUMPDEST"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP2"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "0"
},
{
"begin": 2018,
"end": 2057,
"name": "MSTORE"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "20"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "0"
},
{
"begin": 2018,
"end": 2057,
"name": "KECCAK256"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "3"
},
{
"begin": 2018,
"end": 2057,
"name": "MUL"
},
{
"begin": 2018,
"end": 2057,
"name": "ADD"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "0"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "60"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "40"
},
{
"begin": 2033,
"end": 2056,
"name": "MLOAD"
},
{
"begin": 2033,
"end": 2056,
"name": "SWAP1"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP2"
},
{
"begin": 2033,
"end": 2056,
"name": "ADD"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "40"
},
{
"begin": 2033,
"end": 2056,
"name": "MSTORE"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP1"
},
{
"begin": 2042,
"end": 2045,
"name": "PUSH",
"value": "0"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2033,
"end": 2056,
"name": "AND"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP2"
},
{
"begin": 2033,
"end": 2056,
"name": "MSTORE"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "20"
},
{
"begin": 2033,
"end": 2056,
"name": "ADD"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "40"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP1"
},
{
"begin": 2033,
"end": 2056,
"name": "MLOAD"
},
{
"begin": 2033,
"end": 2056,
"name": "SWAP1"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP2"
},
{
"begin": 2033,
"end": 2056,
"name": "ADD"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "40"
},
{
"begin": 2033,
"end": 2056,
"name": "MSTORE"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP1"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "1"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP2"
},
{
"begin": 2033,
"end": 2056,
"name": "MSTORE"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "20"
},
{
"begin": 2033,
"end": 2056,
"name": "ADD"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "2000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP2"
},
{
"begin": 2033,
"end": 2056,
"name": "MSTORE"
},
{
"begin": 2033,
"end": 2056,
"name": "POP"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP2"
},
{
"begin": 2033,
"end": 2056,
"name": "MSTORE"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "20"
},
{
"begin": 2033,
"end": 2056,
"name": "ADD"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "40"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP1"
},
{
"begin": 2033,
"end": 2056,
"name": "MLOAD"
},
{
"begin": 2033,
"end": 2056,
"name": "SWAP1"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP2"
},
{
"begin": 2033,
"end": 2056,
"name": "ADD"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "40"
},
{
"begin": 2033,
"end": 2056,
"name": "MSTORE"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP1"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "1"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP2"
},
{
"begin": 2033,
"end": 2056,
"name": "MSTORE"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "20"
},
{
"begin": 2033,
"end": 2056,
"name": "ADD"
},
{
"begin": 2033,
"end": 2056,
"name": "PUSH",
"value": "2000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP2"
},
{
"begin": 2033,
"end": 2056,
"name": "MSTORE"
},
{
"begin": 2033,
"end": 2056,
"name": "POP"
},
{
"begin": 2033,
"end": 2056,
"name": "DUP2"
},
{
"begin": 2033,
"end": 2056,
"name": "MSTORE"
},
{
"begin": 2033,
"end": 2056,
"name": "POP"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP2"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP2"
},
{
"begin": 2018,
"end": 2057,
"name": "POP"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "0"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP3"
},
{
"begin": 2018,
"end": 2057,
"name": "ADD"
},
{
"begin": 2018,
"end": 2057,
"name": "MLOAD"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP2"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "0"
},
{
"begin": 2018,
"end": 2057,
"name": "ADD"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "0"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "100"
},
{
"begin": 2018,
"end": 2057,
"name": "EXP"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP2"
},
{
"begin": 2018,
"end": 2057,
"name": "SLOAD"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP2"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2018,
"end": 2057,
"name": "MUL"
},
{
"begin": 2018,
"end": 2057,
"name": "NOT"
},
{
"begin": 2018,
"end": 2057,
"name": "AND"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP4"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2018,
"end": 2057,
"name": "AND"
},
{
"begin": 2018,
"end": 2057,
"name": "MUL"
},
{
"begin": 2018,
"end": 2057,
"name": "OR"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "SSTORE"
},
{
"begin": 2018,
"end": 2057,
"name": "POP"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "20"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP3"
},
{
"begin": 2018,
"end": 2057,
"name": "ADD"
},
{
"begin": 2018,
"end": 2057,
"name": "MLOAD"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP2"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "1"
},
{
"begin": 2018,
"end": 2057,
"name": "ADD"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP1"
},
{
"begin": 2018,
"end": 2057,
"name": "MLOAD"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "20"
},
{
"begin": 2018,
"end": 2057,
"name": "ADD"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH [tag]",
"value": "73"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP3"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP2"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH [tag]",
"value": "74"
},
{
"begin": 2018,
"end": 2057,
"name": "JUMP",
"value": "[in]"
},
{
"begin": 2018,
"end": 2057,
"name": "tag",
"value": "73"
},
{
"begin": 2018,
"end": 2057,
"name": "JUMPDEST"
},
{
"begin": 2018,
"end": 2057,
"name": "POP"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "40"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP3"
},
{
"begin": 2018,
"end": 2057,
"name": "ADD"
},
{
"begin": 2018,
"end": 2057,
"name": "MLOAD"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP2"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "2"
},
{
"begin": 2018,
"end": 2057,
"name": "ADD"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "DUP1"
},
{
"begin": 2018,
"end": 2057,
"name": "MLOAD"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH",
"value": "20"
},
{
"begin": 2018,
"end": 2057,
"name": "ADD"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH [tag]",
"value": "75"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP3"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP2"
},
{
"begin": 2018,
"end": 2057,
"name": "SWAP1"
},
{
"begin": 2018,
"end": 2057,
"name": "PUSH [tag]",
"value": "74"
},
{
"begin": 2018,
"end": 2057,
"name": "JUMP",
"value": "[in]"
},
{
"begin": 2018,
"end": 2057,
"name": "tag",
"value": "75"
},
{
"begin": 2018,
"end": 2057,
"name": "JUMPDEST"
},
{
"begin": 2018,
"end": 2057,
"name": "POP"
},
{
"begin": 2018,
"end": 2057,
"name": "POP"
},
{
"begin": 2018,
"end": 2057,
"name": "POP"
},
{
"begin": 2018,
"end": 2057,
"name": "POP"
},
{
"begin": 1903,
"end": 2062,
"name": "JUMP",
"value": "[out]"
},
{
"begin": 799,
"end": 979,
"name": "tag",
"value": "18"
},
{
"begin": 799,
"end": 979,
"name": "JUMPDEST"
},
{
"begin": 856,
"end": 862,
"name": "PUSH [tag]",
"value": "76"
},
{
"begin": 856,
"end": 862,
"name": "PUSH [tag]",
"value": "77"
},
{
"begin": 856,
"end": 862,
"name": "JUMP",
"value": "[in]"
},
{
"begin": 856,
"end": 862,
"name": "tag",
"value": "76"
},
{
"begin": 856,
"end": 862,
"name": "JUMPDEST"
},
{
"begin": 864,
"end": 870,
"name": "PUSH [tag]",
"value": "78"
},
{
"begin": 864,
"end": 870,
"name": "PUSH [tag]",
"value": "77"
},
{
"begin": 864,
"end": 870,
"name": "JUMP",
"value": "[in]"
},
{
"begin": 864,
"end": 870,
"name": "tag",
"value": "78"
},
{
"begin": 864,
"end": 870,
"name": "JUMPDEST"
},
{
"begin": 878,
"end": 885,
"name": "PUSH",
"value": "0"
},
{
"begin": 888,
"end": 903,
"name": "PUSH",
"value": "2"
},
{
"begin": 888,
"end": 910,
"name": "PUSH",
"value": "0"
},
{
"begin": 904,
"end": 909,
"name": "DUP6"
},
{
"begin": 888,
"end": 910,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 888,
"end": 910,
"name": "AND"
},
{
"begin": 888,
"end": 910,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 888,
"end": 910,
"name": "AND"
},
{
"begin": 888,
"end": 910,
"name": "DUP2"
},
{
"begin": 888,
"end": 910,
"name": "MSTORE"
},
{
"begin": 888,
"end": 910,
"name": "PUSH",
"value": "20"
},
{
"begin": 888,
"end": 910,
"name": "ADD"
},
{
"begin": 888,
"end": 910,
"name": "SWAP1"
},
{
"begin": 888,
"end": 910,
"name": "DUP2"
},
{
"begin": 888,
"end": 910,
"name": "MSTORE"
},
{
"begin": 888,
"end": 910,
"name": "PUSH",
"value": "20"
},
{
"begin": 888,
"end": 910,
"name": "ADD"
},
{
"begin": 888,
"end": 910,
"name": "PUSH",
"value": "0"
},
{
"begin": 888,
"end": 910,
"name": "KECCAK256"
},
{
"begin": 888,
"end": 910,
"name": "SLOAD"
},
{
"begin": 878,
"end": 910,
"name": "SWAP1"
},
{
"begin": 878,
"end": 910,
"name": "POP"
},
{
"begin": 924,
"end": 933,
"name": "PUSH",
"value": "0"
},
{
"begin": 934,
"end": 936,
"name": "DUP2"
},
{
"begin": 924,
"end": 937,
"name": "DUP2"
},
{
"begin": 924,
"end": 937,
"name": "SLOAD"
},
{
"begin": 924,
"end": 937,
"name": "DUP2"
},
{
"begin": 924,
"end": 937,
"name": "LT"
},
{
"begin": 924,
"end": 937,
"name": "ISZERO"
},
{
"begin": 924,
"end": 937,
"name": "ISZERO"
},
{
"begin": 924,
"end": 937,
"name": "PUSH [tag]",
"value": "80"
},
{
"begin": 924,
"end": 937,
"name": "JUMPI"
},
{
"begin": 924,
"end": 937,
"name": "INVALID"
},
{
"begin": 924,
"end": 937,
"name": "tag",
"value": "80"
},
{
"begin": 924,
"end": 937,
"name": "JUMPDEST"
},
{
"begin": 924,
"end": 937,
"name": "SWAP1"
},
{
"begin": 924,
"end": 937,
"name": "PUSH",
"value": "0"
},
{
"begin": 924,
"end": 937,
"name": "MSTORE"
},
{
"begin": 924,
"end": 937,
"name": "PUSH",
"value": "20"
},
{
"begin": 924,
"end": 937,
"name": "PUSH",
"value": "0"
},
{
"begin": 924,
"end": 937,
"name": "KECCAK256"
},
{
"begin": 924,
"end": 937,
"name": "SWAP1"
},
{
"begin": 924,
"end": 937,
"name": "PUSH",
"value": "3"
},
{
"begin": 924,
"end": 937,
"name": "MUL"
},
{
"begin": 924,
"end": 937,
"name": "ADD"
},
{
"begin": 924,
"end": 949,
"name": "PUSH",
"value": "1"
},
{
"begin": 924,
"end": 949,
"name": "ADD"
},
{
"begin": 951,
"end": 960,
"name": "PUSH",
"value": "0"
},
{
"begin": 961,
"end": 963,
"name": "DUP3"
},
{
"begin": 951,
"end": 964,
"name": "DUP2"
},
{
"begin": 951,
"end": 964,
"name": "SLOAD"
},
{
"begin": 951,
"end": 964,
"name": "DUP2"
},
{
"begin": 951,
"end": 964,
"name": "LT"
},
{
"begin": 951,
"end": 964,
"name": "ISZERO"
},
{
"begin": 951,
"end": 964,
"name": "ISZERO"
},
{
"begin": 951,
"end": 964,
"name": "PUSH [tag]",
"value": "82"
},
{
"begin": 951,
"end": 964,
"name": "JUMPI"
},
{
"begin": 951,
"end": 964,
"name": "INVALID"
},
{
"begin": 951,
"end": 964,
"name": "tag",
"value": "82"
},
{
"begin": 951,
"end": 964,
"name": "JUMPDEST"
},
{
"begin": 951,
"end": 964,
"name": "SWAP1"
},
{
"begin": 951,
"end": 964,
"name": "PUSH",
"value": "0"
},
{
"begin": 951,
"end": 964,
"name": "MSTORE"
},
{
"begin": 951,
"end": 964,
"name": "PUSH",
"value": "20"
},
{
"begin": 951,
"end": 964,
"name": "PUSH",
"value": "0"
},
{
"begin": 951,
"end": 964,
"name": "KECCAK256"
},
{
"begin": 951,
"end": 964,
"name": "SWAP1"
},
{
"begin": 951,
"end": 964,
"name": "PUSH",
"value": "3"
},
{
"begin": 951,
"end": 964,
"name": "MUL"
},
{
"begin": 951,
"end": 964,
"name": "ADD"
},
{
"begin": 951,
"end": 973,
"name": "PUSH",
"value": "2"
},
{
"begin": 951,
"end": 973,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "SLOAD"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1"
},
{
"begin": 916,
"end": 974,
"name": "AND"
},
{
"begin": 916,
"end": 974,
"name": "ISZERO"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "100"
},
{
"begin": 916,
"end": 974,
"name": "MUL"
},
{
"begin": 916,
"end": 974,
"name": "SUB"
},
{
"begin": 916,
"end": 974,
"name": "AND"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "2"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "DIV"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1F"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "DIV"
},
{
"begin": 916,
"end": 974,
"name": "MUL"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "40"
},
{
"begin": 916,
"end": 974,
"name": "MLOAD"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "40"
},
{
"begin": 916,
"end": 974,
"name": "MSTORE"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "SWAP3"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "MSTORE"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "DUP3"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "SLOAD"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1"
},
{
"begin": 916,
"end": 974,
"name": "AND"
},
{
"begin": 916,
"end": 974,
"name": "ISZERO"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "100"
},
{
"begin": 916,
"end": 974,
"name": "MUL"
},
{
"begin": 916,
"end": 974,
"name": "SUB"
},
{
"begin": 916,
"end": 974,
"name": "AND"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "2"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "DIV"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "ISZERO"
},
{
"begin": 916,
"end": 974,
"name": "PUSH [tag]",
"value": "84"
},
{
"begin": 916,
"end": 974,
"name": "JUMPI"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1F"
},
{
"begin": 916,
"end": 974,
"name": "LT"
},
{
"begin": 916,
"end": 974,
"name": "PUSH [tag]",
"value": "85"
},
{
"begin": 916,
"end": 974,
"name": "JUMPI"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "100"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "DUP4"
},
{
"begin": 916,
"end": 974,
"name": "SLOAD"
},
{
"begin": 916,
"end": 974,
"name": "DIV"
},
{
"begin": 916,
"end": 974,
"name": "MUL"
},
{
"begin": 916,
"end": 974,
"name": "DUP4"
},
{
"begin": 916,
"end": 974,
"name": "MSTORE"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "PUSH [tag]",
"value": "84"
},
{
"begin": 916,
"end": 974,
"name": "JUMP"
},
{
"begin": 916,
"end": 974,
"name": "tag",
"value": "85"
},
{
"begin": 916,
"end": 974,
"name": "JUMPDEST"
},
{
"begin": 916,
"end": 974,
"name": "DUP3"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "0"
},
{
"begin": 916,
"end": 974,
"name": "MSTORE"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "0"
},
{
"begin": 916,
"end": 974,
"name": "KECCAK256"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "tag",
"value": "86"
},
{
"begin": 916,
"end": 974,
"name": "JUMPDEST"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "SLOAD"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "MSTORE"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "DUP4"
},
{
"begin": 916,
"end": 974,
"name": "GT"
},
{
"begin": 916,
"end": 974,
"name": "PUSH [tag]",
"value": "86"
},
{
"begin": 916,
"end": 974,
"name": "JUMPI"
},
{
"begin": 916,
"end": 974,
"name": "DUP3"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "SUB"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1F"
},
{
"begin": 916,
"end": 974,
"name": "AND"
},
{
"begin": 916,
"end": 974,
"name": "DUP3"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "tag",
"value": "84"
},
{
"begin": 916,
"end": 974,
"name": "JUMPDEST"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "SLOAD"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1"
},
{
"begin": 916,
"end": 974,
"name": "AND"
},
{
"begin": 916,
"end": 974,
"name": "ISZERO"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "100"
},
{
"begin": 916,
"end": 974,
"name": "MUL"
},
{
"begin": 916,
"end": 974,
"name": "SUB"
},
{
"begin": 916,
"end": 974,
"name": "AND"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "2"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "DIV"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1F"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "DIV"
},
{
"begin": 916,
"end": 974,
"name": "MUL"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "40"
},
{
"begin": 916,
"end": 974,
"name": "MLOAD"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "40"
},
{
"begin": 916,
"end": 974,
"name": "MSTORE"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "SWAP3"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "MSTORE"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "DUP3"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "SLOAD"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1"
},
{
"begin": 916,
"end": 974,
"name": "AND"
},
{
"begin": 916,
"end": 974,
"name": "ISZERO"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "100"
},
{
"begin": 916,
"end": 974,
"name": "MUL"
},
{
"begin": 916,
"end": 974,
"name": "SUB"
},
{
"begin": 916,
"end": 974,
"name": "AND"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "2"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "DIV"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "ISZERO"
},
{
"begin": 916,
"end": 974,
"name": "PUSH [tag]",
"value": "87"
},
{
"begin": 916,
"end": 974,
"name": "JUMPI"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1F"
},
{
"begin": 916,
"end": 974,
"name": "LT"
},
{
"begin": 916,
"end": 974,
"name": "PUSH [tag]",
"value": "88"
},
{
"begin": 916,
"end": 974,
"name": "JUMPI"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "100"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "DUP4"
},
{
"begin": 916,
"end": 974,
"name": "SLOAD"
},
{
"begin": 916,
"end": 974,
"name": "DIV"
},
{
"begin": 916,
"end": 974,
"name": "MUL"
},
{
"begin": 916,
"end": 974,
"name": "DUP4"
},
{
"begin": 916,
"end": 974,
"name": "MSTORE"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "PUSH [tag]",
"value": "87"
},
{
"begin": 916,
"end": 974,
"name": "JUMP"
},
{
"begin": 916,
"end": 974,
"name": "tag",
"value": "88"
},
{
"begin": 916,
"end": 974,
"name": "JUMPDEST"
},
{
"begin": 916,
"end": 974,
"name": "DUP3"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "0"
},
{
"begin": 916,
"end": 974,
"name": "MSTORE"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "0"
},
{
"begin": 916,
"end": 974,
"name": "KECCAK256"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "tag",
"value": "89"
},
{
"begin": 916,
"end": 974,
"name": "JUMPDEST"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "SLOAD"
},
{
"begin": 916,
"end": 974,
"name": "DUP2"
},
{
"begin": 916,
"end": 974,
"name": "MSTORE"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "20"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "DUP1"
},
{
"begin": 916,
"end": 974,
"name": "DUP4"
},
{
"begin": 916,
"end": 974,
"name": "GT"
},
{
"begin": 916,
"end": 974,
"name": "PUSH [tag]",
"value": "89"
},
{
"begin": 916,
"end": 974,
"name": "JUMPI"
},
{
"begin": 916,
"end": 974,
"name": "DUP3"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "SUB"
},
{
"begin": 916,
"end": 974,
"name": "PUSH",
"value": "1F"
},
{
"begin": 916,
"end": 974,
"name": "AND"
},
{
"begin": 916,
"end": 974,
"name": "DUP3"
},
{
"begin": 916,
"end": 974,
"name": "ADD"
},
{
"begin": 916,
"end": 974,
"name": "SWAP2"
},
{
"begin": 916,
"end": 974,
"name": "tag",
"value": "87"
},
{
"begin": 916,
"end": 974,
"name": "JUMPDEST"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "SWAP1"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "SWAP3"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 916,
"end": 974,
"name": "SWAP3"
},
{
"begin": 916,
"end": 974,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "SWAP2"
},
{
"begin": 799,
"end": 979,
"name": "POP"
},
{
"begin": 799,
"end": 979,
"name": "SWAP2"
},
{
"begin": 799,
"end": 979,
"name": "JUMP",
"value": "[out]"
},
{
"begin": 346,
"end": 394,
"name": "tag",
"value": "29"
},
{
"begin": 346,
"end": 394,
"name": "JUMPDEST"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "1"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "20"
},
{
"begin": 346,
"end": 394,
"name": "MSTORE"
},
{
"begin": 346,
"end": 394,
"name": "DUP1"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "0"
},
{
"begin": 346,
"end": 394,
"name": "MSTORE"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "40"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "0"
},
{
"begin": 346,
"end": 394,
"name": "KECCAK256"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "0"
},
{
"begin": 346,
"end": 394,
"name": "SWAP2"
},
{
"begin": 346,
"end": 394,
"name": "POP"
},
{
"begin": 346,
"end": 394,
"name": "SLOAD"
},
{
"begin": 346,
"end": 394,
"name": "SWAP1"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "100"
},
{
"begin": 346,
"end": 394,
"name": "EXP"
},
{
"begin": 346,
"end": 394,
"name": "SWAP1"
},
{
"begin": 346,
"end": 394,
"name": "DIV"
},
{
"begin": 346,
"end": 394,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 346,
"end": 394,
"name": "AND"
},
{
"begin": 346,
"end": 394,
"name": "DUP2"
},
{
"begin": 346,
"end": 394,
"name": "JUMP",
"value": "[out]"
},
{
"begin": 398,
"end": 446,
"name": "tag",
"value": "32"
},
{
"begin": 398,
"end": 446,
"name": "JUMPDEST"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "2"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "20"
},
{
"begin": 398,
"end": 446,
"name": "MSTORE"
},
{
"begin": 398,
"end": 446,
"name": "DUP1"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "0"
},
{
"begin": 398,
"end": 446,
"name": "MSTORE"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "40"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "0"
},
{
"begin": 398,
"end": 446,
"name": "KECCAK256"
},
{
"begin": 398,
"end": 446,
"name": "PUSH",
"value": "0"
},
{
"begin": 398,
"end": 446,
"name": "SWAP2"
},
{
"begin": 398,
"end": 446,
"name": "POP"
},
{
"begin": 398,
"end": 446,
"name": "SWAP1"
},
{
"begin": 398,
"end": 446,
"name": "POP"
},
{
"begin": 398,
"end": 446,
"name": "SLOAD"
},
{
"begin": 398,
"end": 446,
"name": "DUP2"
},
{
"begin": 398,
"end": 446,
"name": "JUMP",
"value": "[out]"
},
{
"begin": 983,
"end": 1335,
"name": "tag",
"value": "35"
},
{
"begin": 983,
"end": 1335,
"name": "JUMPDEST"
},
{
"begin": 1166,
"end": 1173,
"name": "PUSH",
"value": "0"
},
{
"begin": 1084,
"end": 1085,
"name": "DUP1"
},
{
"begin": 1053,
"end": 1068,
"name": "PUSH",
"value": "2"
},
{
"begin": 1053,
"end": 1080,
"name": "PUSH",
"value": "0"
},
{
"begin": 1069,
"end": 1079,
"name": "CALLER"
},
{
"begin": 1053,
"end": 1080,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1053,
"end": 1080,
"name": "AND"
},
{
"begin": 1053,
"end": 1080,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1053,
"end": 1080,
"name": "AND"
},
{
"begin": 1053,
"end": 1080,
"name": "DUP2"
},
{
"begin": 1053,
"end": 1080,
"name": "MSTORE"
},
{
"begin": 1053,
"end": 1080,
"name": "PUSH",
"value": "20"
},
{
"begin": 1053,
"end": 1080,
"name": "ADD"
},
{
"begin": 1053,
"end": 1080,
"name": "SWAP1"
},
{
"begin": 1053,
"end": 1080,
"name": "DUP2"
},
{
"begin": 1053,
"end": 1080,
"name": "MSTORE"
},
{
"begin": 1053,
"end": 1080,
"name": "PUSH",
"value": "20"
},
{
"begin": 1053,
"end": 1080,
"name": "ADD"
},
{
"begin": 1053,
"end": 1080,
"name": "PUSH",
"value": "0"
},
{
"begin": 1053,
"end": 1080,
"name": "KECCAK256"
},
{
"begin": 1053,
"end": 1080,
"name": "SLOAD"
},
{
"begin": 1053,
"end": 1085,
"name": "EQ"
},
{
"begin": 1053,
"end": 1085,
"name": "ISZERO"
},
{
"begin": 1045,
"end": 1086,
"name": "ISZERO"
},
{
"begin": 1045,
"end": 1086,
"name": "ISZERO"
},
{
"begin": 1045,
"end": 1086,
"name": "PUSH [tag]",
"value": "91"
},
{
"begin": 1045,
"end": 1086,
"name": "JUMPI"
},
{
"begin": 1045,
"end": 1086,
"name": "PUSH",
"value": "0"
},
{
"begin": 1045,
"end": 1086,
"name": "DUP1"
},
{
"begin": 1045,
"end": 1086,
"name": "REVERT"
},
{
"begin": 1045,
"end": 1086,
"name": "tag",
"value": "91"
},
{
"begin": 1045,
"end": 1086,
"name": "JUMPDEST"
},
{
"begin": 1114,
"end": 1123,
"name": "PUSH",
"value": "0"
},
{
"begin": 1124,
"end": 1139,
"name": "PUSH",
"value": "2"
},
{
"begin": 1124,
"end": 1151,
"name": "PUSH",
"value": "0"
},
{
"begin": 1140,
"end": 1150,
"name": "CALLER"
},
{
"begin": 1124,
"end": 1151,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1124,
"end": 1151,
"name": "AND"
},
{
"begin": 1124,
"end": 1151,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1124,
"end": 1151,
"name": "AND"
},
{
"begin": 1124,
"end": 1151,
"name": "DUP2"
},
{
"begin": 1124,
"end": 1151,
"name": "MSTORE"
},
{
"begin": 1124,
"end": 1151,
"name": "PUSH",
"value": "20"
},
{
"begin": 1124,
"end": 1151,
"name": "ADD"
},
{
"begin": 1124,
"end": 1151,
"name": "SWAP1"
},
{
"begin": 1124,
"end": 1151,
"name": "DUP2"
},
{
"begin": 1124,
"end": 1151,
"name": "MSTORE"
},
{
"begin": 1124,
"end": 1151,
"name": "PUSH",
"value": "20"
},
{
"begin": 1124,
"end": 1151,
"name": "ADD"
},
{
"begin": 1124,
"end": 1151,
"name": "PUSH",
"value": "0"
},
{
"begin": 1124,
"end": 1151,
"name": "KECCAK256"
},
{
"begin": 1124,
"end": 1151,
"name": "SLOAD"
},
{
"begin": 1114,
"end": 1152,
"name": "DUP2"
},
{
"begin": 1114,
"end": 1152,
"name": "SLOAD"
},
{
"begin": 1114,
"end": 1152,
"name": "DUP2"
},
{
"begin": 1114,
"end": 1152,
"name": "LT"
},
{
"begin": 1114,
"end": 1152,
"name": "ISZERO"
},
{
"begin": 1114,
"end": 1152,
"name": "ISZERO"
},
{
"begin": 1114,
"end": 1152,
"name": "PUSH [tag]",
"value": "92"
},
{
"begin": 1114,
"end": 1152,
"name": "JUMPI"
},
{
"begin": 1114,
"end": 1152,
"name": "INVALID"
},
{
"begin": 1114,
"end": 1152,
"name": "tag",
"value": "92"
},
{
"begin": 1114,
"end": 1152,
"name": "JUMPDEST"
},
{
"begin": 1114,
"end": 1152,
"name": "SWAP1"
},
{
"begin": 1114,
"end": 1152,
"name": "PUSH",
"value": "0"
},
{
"begin": 1114,
"end": 1152,
"name": "MSTORE"
},
{
"begin": 1114,
"end": 1152,
"name": "PUSH",
"value": "20"
},
{
"begin": 1114,
"end": 1152,
"name": "PUSH",
"value": "0"
},
{
"begin": 1114,
"end": 1152,
"name": "KECCAK256"
},
{
"begin": 1114,
"end": 1152,
"name": "SWAP1"
},
{
"begin": 1114,
"end": 1152,
"name": "PUSH",
"value": "3"
},
{
"begin": 1114,
"end": 1152,
"name": "MUL"
},
{
"begin": 1114,
"end": 1152,
"name": "ADD"
},
{
"begin": 1114,
"end": 1158,
"name": "PUSH",
"value": "0"
},
{
"begin": 1114,
"end": 1158,
"name": "ADD"
},
{
"begin": 1114,
"end": 1158,
"name": "PUSH",
"value": "0"
},
{
"begin": 1114,
"end": 1158,
"name": "SWAP1"
},
{
"begin": 1114,
"end": 1158,
"name": "SLOAD"
},
{
"begin": 1114,
"end": 1158,
"name": "SWAP1"
},
{
"begin": 1114,
"end": 1158,
"name": "PUSH",
"value": "100"
},
{
"begin": 1114,
"end": 1158,
"name": "EXP"
},
{
"begin": 1114,
"end": 1158,
"name": "SWAP1"
},
{
"begin": 1114,
"end": 1158,
"name": "DIV"
},
{
"begin": 1114,
"end": 1158,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1114,
"end": 1158,
"name": "AND"
},
{
"begin": 1100,
"end": 1158,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1100,
"end": 1158,
"name": "AND"
},
{
"begin": 1100,
"end": 1110,
"name": "CALLER"
},
{
"begin": 1100,
"end": 1158,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1100,
"end": 1158,
"name": "AND"
},
{
"begin": 1100,
"end": 1158,
"name": "EQ"
},
{
"begin": 1092,
"end": 1159,
"name": "ISZERO"
},
{
"begin": 1092,
"end": 1159,
"name": "ISZERO"
},
{
"begin": 1092,
"end": 1159,
"name": "PUSH [tag]",
"value": "94"
},
{
"begin": 1092,
"end": 1159,
"name": "JUMPI"
},
{
"begin": 1092,
"end": 1159,
"name": "PUSH",
"value": "0"
},
{
"begin": 1092,
"end": 1159,
"name": "DUP1"
},
{
"begin": 1092,
"end": 1159,
"name": "REVERT"
},
{
"begin": 1092,
"end": 1159,
"name": "tag",
"value": "94"
},
{
"begin": 1092,
"end": 1159,
"name": "JUMPDEST"
},
{
"begin": 1176,
"end": 1191,
"name": "PUSH",
"value": "2"
},
{
"begin": 1176,
"end": 1203,
"name": "PUSH",
"value": "0"
},
{
"begin": 1192,
"end": 1202,
"name": "CALLER"
},
{
"begin": 1176,
"end": 1203,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1176,
"end": 1203,
"name": "AND"
},
{
"begin": 1176,
"end": 1203,
"name": "PUSH",
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1176,
"end": 1203,
"name": "AND"
},
{
"begin": 1176,
"end": 1203,
"name": "DUP2"
},
{
"begin": 1176,
"end": 1203,
"name": "MSTORE"
},
{
"begin": 1176,
"end": 1203,
"name": "PUSH",
"value": "20"
},
{
"begin": 1176,
"end": 1203,
"name":
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment