ETH Price: $2,925.73 (-7.64%)
Gas: 8 Gwei

Token

SUPER GAPE COIN (GAPE)
 

Overview

Max Total Supply

69,696,969,696 GAPE

Holders

444

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.758301333270945039 GAPE

Value
$0.00
0x1a273c9f542ea8f7f7a77417dde33c18ab445287
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GAPE

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-24
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

// SUPER GAPE COIN ($GAPE)
// https://supergapecoin.com/

interface Callable {
	function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool);
}

interface Router {
	function factory() external view returns (address);
	function positionManager() external view returns (address);
	function WETH9() external view returns (address);
}

interface Factory {
	function createPool(address _tokenA, address _tokenB, uint24 _fee) external returns (address);
}

interface Pool {
	function initialize(uint160 _sqrtPriceX96) external;
}

interface PositionManager {
	struct MintParams {
		address token0;
		address token1;
		uint24 fee;
		int24 tickLower;
		int24 tickUpper;
		uint256 amount0Desired;
		uint256 amount1Desired;
		uint256 amount0Min;
		uint256 amount1Min;
		address recipient;
		uint256 deadline;
	}
	struct CollectParams {
		uint256 tokenId;
		address recipient;
		uint128 amount0Max;
		uint128 amount1Max;
	}
	function mint(MintParams calldata) external payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);
	function collect(CollectParams calldata) external payable returns (uint256 amount0, uint256 amount1);
}

interface ERC20 {
	function balanceOf(address) external view returns (uint256);
	function transfer(address, uint256) external returns (bool);
}

interface WETH is ERC20 {
	function withdraw(uint256) external;
}


contract Team {

	Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);

	struct Share {
		address payable user;
		uint256 shares;
	}
	Share[] public shares;
	uint256 public totalShares;
	ERC20 public token;


	constructor() {
		token = ERC20(msg.sender);
		_addShare(0xda5dcA304139DFC92dD5491E82f84c5Df023677b, 2);
		_addShare(0x3CB30579e7C4A943509Dba604141c12A4609960A, 1);
		_addShare(0x63F52299d9B808eb2DE6115535E42Ef155dB1dfD, 1);
	}

	receive() external payable {}

	function withdrawETH() public {
		uint256 _balance = address(this).balance;
		if (_balance > 0) {
			for (uint256 i = 0; i < shares.length; i++) {
				Share memory _share = shares[i];
				!_share.user.send(_balance * _share.shares / totalShares);
			}
		}
	}

	function withdrawToken(ERC20 _token) public {
		uint256 _balance = _token.balanceOf(address(this));
		if (_balance > 0) {
			for (uint256 i = 0; i < shares.length; i++) {
				Share memory _share = shares[i];
				_token.transfer(_share.user, _balance * _share.shares / totalShares);
			}
		}
	}

	function withdrawFees() external {
		WETH _weth = WETH(ROUTER.WETH9());
		_weth.withdraw(_weth.balanceOf(address(this)));
		withdrawETH();
		withdrawToken(token);
	}


	function _addShare(address _user, uint256 _shares) internal {
		shares.push(Share(payable(_user), _shares));
		totalShares += _shares;
	}
}


contract GAPE {

	uint256 constant private FLOAT_SCALAR = 2**64;
	uint256 constant private UINT_MAX = type(uint256).max;
	uint128 constant private UINT128_MAX = type(uint128).max;
	uint256 constant private INITIAL_SUPPLY = 69_696_969_696e18;
	Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);
	uint256 constant private INITIAL_ETH_MC = 100 ether; // 100 ETH initial market cap price
	uint256 constant private CONCENTRATED_PERCENT = 20; // 20% of tokens will be sold at the min price (20 ETH)
	uint256 constant private UPPER_ETH_MC = 1e6 ether; // 1,000,000 ETH max market cap price

	int24 constant private MIN_TICK = -887272;
	int24 constant private MAX_TICK = -MIN_TICK;
	uint160 constant private MIN_SQRT_RATIO = 4295128739;
	uint160 constant private MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;

	string constant public name = "SUPER GAPE COIN";
	string constant public symbol = "GAPE";
	uint8 constant public decimals = 18;

	struct User {
		uint256 balance;
		mapping(address => uint256) allowance;
	}

	struct Info {
		Team team;
		address pool;
		uint256 totalSupply;
		mapping(address => User) users;
		uint256 lowerPositionId;
		uint256 upperPositionId;
	}
	Info private info;


	event Transfer(address indexed from, address indexed to, uint256 tokens);
	event Approval(address indexed owner, address indexed spender, uint256 tokens);


	constructor() {
		info.team = new Team();
		address _this = address(this);
		address _weth = ROUTER.WETH9();
		(uint160 _initialSqrtPrice, ) = _getPriceAndTickFromValues(_weth < _this, INITIAL_SUPPLY, INITIAL_ETH_MC);
		info.pool = Factory(ROUTER.factory()).createPool(_this, _weth, 10000);
		Pool(pool()).initialize(_initialSqrtPrice);
	}
	
	function initialize() external {
		require(totalSupply() == 0);
		address _this = address(this);
		address _weth = ROUTER.WETH9();
		bool _weth0 = _weth < _this;
		PositionManager _pm = PositionManager(ROUTER.positionManager());
		info.totalSupply = INITIAL_SUPPLY;
		info.users[_this].balance = INITIAL_SUPPLY;
		emit Transfer(address(0x0), _this, INITIAL_SUPPLY);
		_approve(_this, address(_pm), INITIAL_SUPPLY);
		( , int24 _minTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, INITIAL_ETH_MC);
		( , int24 _maxTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, UPPER_ETH_MC);
		uint256 _concentratedTokens = CONCENTRATED_PERCENT * INITIAL_SUPPLY / 100;
		(info.lowerPositionId, , , ) = _pm.mint(PositionManager.MintParams({
			token0: _weth0 ? _weth : _this,
			token1: !_weth0 ? _weth : _this,
			fee: 10000,
			tickLower: _weth0 ? _minTick - 200 : _minTick,
			tickUpper: !_weth0 ? _minTick + 200 : _minTick,
			amount0Desired: _weth0 ? 0 : _concentratedTokens,
			amount1Desired: !_weth0 ? 0 : _concentratedTokens,
			amount0Min: 0,
			amount1Min: 0,
			recipient: _this,
			deadline: block.timestamp
		}));
		(info.upperPositionId, , , ) = _pm.mint(PositionManager.MintParams({
			token0: _weth0 ? _weth : _this,
			token1: !_weth0 ? _weth : _this,
			fee: 10000,
			tickLower: _weth0 ? _maxTick : _minTick + 200,
			tickUpper: !_weth0 ? _maxTick : _minTick - 200,
			amount0Desired: _weth0 ? 0 : INITIAL_SUPPLY - _concentratedTokens,
			amount1Desired: !_weth0 ? 0 : INITIAL_SUPPLY - _concentratedTokens,
			amount0Min: 0,
			amount1Min: 0,
			recipient: _this,
			deadline: block.timestamp
		}));
	}

	function collectTradingFees() external {
		PositionManager _pm = PositionManager(ROUTER.positionManager());
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.lowerPositionId,
			recipient: address(info.team),
			amount0Max: UINT128_MAX,
			amount1Max: UINT128_MAX
		}));
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.upperPositionId,
			recipient: address(info.team),
			amount0Max: UINT128_MAX,
			amount1Max: UINT128_MAX
		}));
		info.team.withdrawFees();
	}

	function transfer(address _to, uint256 _tokens) external returns (bool) {
		return _transfer(msg.sender, _to, _tokens);
	}

	function approve(address _spender, uint256 _tokens) external returns (bool) {
		return _approve(msg.sender, _spender, _tokens);
	}

	function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) {
		uint256 _allowance = allowance(_from, msg.sender);
		require(_allowance >= _tokens);
		if (_allowance != UINT_MAX) {
			info.users[_from].allowance[msg.sender] -= _tokens;
		}
		return _transfer(_from, _to, _tokens);
	}

	function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) {
		_transfer(msg.sender, _to, _tokens);
		uint32 _size;
		assembly {
			_size := extcodesize(_to)
		}
		if (_size > 0) {
			require(Callable(_to).tokenCallback(msg.sender, _tokens, _data));
		}
		return true;
	}
	

	function pool() public view returns (address) {
		return info.pool;
	}

	function totalSupply() public view returns (uint256) {
		return info.totalSupply;
	}

	function balanceOf(address _user) public view returns (uint256) {
		return info.users[_user].balance;
	}

	function allowance(address _user, address _spender) public view returns (uint256) {
		return info.users[_user].allowance[_spender];
	}

	function positions() external view returns (uint256 lower, uint256 upper) {
		return (info.lowerPositionId, info.upperPositionId);
	}


	function _approve(address _owner, address _spender, uint256 _tokens) internal returns (bool) {
		info.users[_owner].allowance[_spender] = _tokens;
		emit Approval(_owner, _spender, _tokens);
		return true;
	}
	
	function _transfer(address _from, address _to, uint256 _tokens) internal returns (bool) {
		unchecked {
			require(balanceOf(_from) >= _tokens);
			info.users[_from].balance -= _tokens;
			info.users[_to].balance += _tokens;
			emit Transfer(_from, _to, _tokens);
			return true;
		}
	}


	function _getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {
		unchecked {
			uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));
			require(absTick <= uint256(int256(MAX_TICK)), 'T');

			uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;
			if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;
			if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;
			if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;
			if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;
			if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;
			if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;
			if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;
			if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;
			if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;
			if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;
			if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;
			if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;
			if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;
			if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;
			if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;
			if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;
			if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;
			if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;
			if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;

			if (tick > 0) ratio = type(uint256).max / ratio;

			sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));
		}
	}

	function _getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {
		unchecked {
			require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R');
			uint256 ratio = uint256(sqrtPriceX96) << 32;

			uint256 r = ratio;
			uint256 msb = 0;

			assembly {
				let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(5, gt(r, 0xFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(4, gt(r, 0xFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(3, gt(r, 0xFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(2, gt(r, 0xF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(1, gt(r, 0x3))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := gt(r, 0x1)
				msb := or(msb, f)
			}

			if (msb >= 128) r = ratio >> (msb - 127);
			else r = ratio << (127 - msb);

			int256 log_2 = (int256(msb) - 128) << 64;

			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(63, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(62, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(61, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(60, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(59, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(58, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(57, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(56, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(55, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(54, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(53, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(52, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(51, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(50, f))
			}

			int256 log_sqrt10001 = log_2 * 255738958999603826347141;

			int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);
			int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);

			tick = tickLow == tickHi ? tickLow : _getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;
		}
	}

	function _sqrt(uint256 _n) internal pure returns (uint256 result) {
		unchecked {
			uint256 _tmp = (_n + 1) / 2;
			result = _n;
			while (_tmp < result) {
				result = _tmp;
				_tmp = (_n / _tmp + _tmp) / 2;
			}
		}
	}

	function _getPriceAndTickFromValues(bool _weth0, uint256 _tokens, uint256 _weth) internal pure returns (uint160 price, int24 tick) {
		uint160 _tmpPrice = uint160(_sqrt(2**192 / (!_weth0 ? _tokens : _weth) * (_weth0 ? _tokens : _weth)));
		tick = _getTickAtSqrtRatio(_tmpPrice);
		tick = tick - (tick % 200);
		price = _getSqrtRatioAtTick(tick);
	}
}


contract Deploy {
	GAPE immutable public gape;
	constructor() {
		gape = new GAPE();
		gape.initialize();
	}
}

Contract Security Audit

Contract 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":"tokens","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_user","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":"_tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectTradingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"positions","outputs":[{"internalType":"uint256","name":"lower","type":"uint256"},{"internalType":"uint256","name":"upper","type":"uint256"}],"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":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b506040516200001f90620009ba565b604051809103905ff08015801562000039573d5f803e3d5ffd5b505f80546001600160a01b0319166001600160a01b0392909216919091178155604080516312a9293f60e21b815290513092917368b3465833fb72a70ecdf485e0e4c7bd8665fc4591634aa4a4fc916004808201926020929091908290030181865afa158015620000ac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000d29190620009c8565b90505f620001056001600160a01b03808516908416106be133fb6a00c330df0380000068056bc75e2d631000006200027f565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000159573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200017f9190620009c8565b60405163a167129560e01b81526001600160a01b03858116600483015284811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af1158015620001d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fd9190620009c8565b600180546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b1580156200025f575f80fd5b505af115801562000272573d5f803e3d5ffd5b5050505050505062000aa1565b5f805f620002c78662000293578462000295565b855b8715620002a35785620002a5565b865b620002b590600160c01b62000a1f565b620002c1919062000a35565b62000307565b9050620002d48162000352565b9150620002e360c88362000a55565b620002ef908362000a79565b9150620002fc8262000677565b925050935093915050565b80600260018201045b818110156200034c57809150600281828581620003315762000331620009f7565b040181620003435762000343620009f7565b04905062000310565b50919050565b5f6401000276a36001600160a01b038316108015906200038e575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b620003c45760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b600160201b600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106200045857607f810383901c915062000462565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1462000668576001600160a01b0389166200064a8262000677565b6001600160a01b031611156200066157816200066a565b806200066a565b815b9998505050505050505050565b5f805f8360020b126200068e578260020b62000695565b8260020b5f035b9050620d89e8811115620006d05760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401620003bb565b5f816001165f03620006e757600160801b620006f9565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03169050600282161562000724576ffff97272373d413259a46990580e213a0260801c5b600482161562000744576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161562000764576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161562000784576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615620007a4576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615620007c4576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615620007e4576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161562000805576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161562000826576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161562000847576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161562000868576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161562000889576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615620008aa576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615620008cb576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615620008ec576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156200090e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156200092f576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156200094f576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156200096d576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156200099057805f19816200098c576200098c620009f7565b0490505b640100000000810615620009a6576001620009a8565b5f5b60ff16602082901c0192505050919050565b61079380620021c483390190565b5f60208284031215620009d9575f80fd5b81516001600160a01b0381168114620009f0575f80fd5b9392505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8262000a305762000a30620009f7565b500490565b808202811582820484141762000a4f5762000a4f62000a0b565b92915050565b5f8260020b8062000a6a5762000a6a620009f7565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171562000a4f5762000a4f62000a0b565b6117158062000aaf5f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806353f8b3031161008857806395d89b411161006357806395d89b41146101f7578063a9059cbb1461021a578063ba5b79821461022d578063dd62ed3e14610248575f80fd5b806353f8b303146101bd57806370a08231146101c75780638129fc1c146101ef575f80fd5b806318160ddd116100c357806318160ddd1461016b57806323b872dd1461017d578063313ce567146101905780634000aea0146101aa575f80fd5b806306fdde03146100e9578063095ea7b31461012d57806316f0115b14610150575b5f80fd5b6101176040518060400160405280600f81526020016e29aaa822a91023a0a8229021a7a4a760891b81525081565b604051610124919061127a565b60405180910390f35b61014061013b3660046112dc565b610284565b6040519015158152602001610124565b6001546040516001600160a01b039091168152602001610124565b6002545b604051908152602001610124565b61014061018b366004611306565b610299565b610198601281565b60405160ff9091168152602001610124565b6101406101b8366004611344565b610322565b6101c56103c3565b005b61016f6101d53660046113c6565b6001600160a01b03165f9081526003602052604090205490565b6101c56105c1565b610117604051806040016040528060048152602001634741504560e01b81525081565b6101406102283660046112dc565b610a7a565b60045460055460408051928352602083019190915201610124565b61016f6102563660046113e8565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b5f610290338484610a86565b90505b92915050565b6001600160a01b0383165f908152600360209081526040808320338452600101909152812054828110156102cb575f80fd5b5f19811461030e576001600160a01b0385165f90815260036020908152604080832033845260010190915281208054859290610308908490611433565b90915550505b610319858585610af2565b95945050505050565b5f61032e338686610af2565b50843b63ffffffff8116156103b757604051636be32e7360e01b81526001600160a01b03871690636be32e739061036f903390899089908990600401611446565b6020604051808303815f875af115801561038b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103af919061148d565b6103b7575f80fd5b50600195945050505050565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610414573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043891906114ac565b604080516080810182526004805482525f546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529394509184169263fc6f7865926104919291016114c7565b60408051808303815f875af11580156104ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d0919061150a565b50506040805160808101825260055481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f786591610528916004016114c7565b60408051808303815f875af1158015610543573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610567919061150a565b50505f8054604080516323b1a1f760e11b815290516001600160a01b039092169263476343ee9260048084019382900301818387803b1580156105a8575f80fd5b505af11580156105ba573d5f803e3d5ffd5b5050505050565b600254156105cd575f80fd5b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610622573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064691906114ac565b90505f826001600160a01b0316826001600160a01b03161090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d591906114ac565b6be133fb6a00c330df0380000060028190556001600160a01b0386165f8181526003602052604080822084905551939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9161073891815260200190565b60405180910390a361075784826be133fb6a00c330df03800000610a86565b505f610779836be133fb6a00c330df0380000068056bc75e2d63100000610b76565b9150505f61079e846be133fb6a00c330df0380000069d3c21bcecceda1000000610b76565b91505f905060646107bc6be133fb6a00c330df03800000601461152c565b6107c69190611557565b9050836001600160a01b03166388316456604051806101600160405280886107ee578a6107f0565b895b6001600160a01b03168152602001881561080a578a61080c565b895b6001600160a01b0316815261271060208201526040018861082d5786610838565b61083860c88861156a565b60020b8152602001881561084c5786610857565b6108578760c861158f565b60020b81526020018861086a578461086c565b5f5b8152602001881561087d578461087f565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016108bf91906115b4565b6080604051808303815f875af11580156108db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ff9190611678565b5050506004556040805161016081019091526001600160a01b03851690638831645690808861092e578a610930565b895b6001600160a01b03168152602001881561094a578a61094c565b895b6001600160a01b03168152612710602082015260400188610977576109728760c861158f565b610979565b855b60020b815260200188156109975761099260c88861156a565b610999565b855b60020b8152602001886109c1576109bc856be133fb6a00c330df03800000611433565b6109c3565b5f5b815260200188156109e9576109e4856be133fb6a00c330df03800000611433565b6109eb565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610a2b91906115b4565b6080604051808303815f875af1158015610a47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611678565b50505060055550505050505050565b5f610290338484610af2565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610b15575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ae09086815260200190565b5f805f610bb486610b875784610b89565b855b8715610b955785610b97565b865b610ba590600160c01b611557565b610baf919061152c565b610bec565b9050610bbf81610c2f565b9150610bcc60c8836116be565b610bd6908361156a565b9150610be182610f4c565b925050935093915050565b80600260018201045b81811015610c2957809150600281828581610c1257610c12611543565b040181610c2157610c21611543565b049050610bf5565b50919050565b5f6401000276a36001600160a01b03831610801590610c6a575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b610c9f5760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110610d3357607f810383901c9150610d3d565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14610f3d57886001600160a01b0316610f2282610f4c565b6001600160a01b03161115610f375781610f3f565b80610f3f565b815b9998505050505050505050565b5f805f8360020b12610f61578260020b610f68565b8260020b5f035b9050620d89e8811115610fa15760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610c96565b5f816001165f03610fb657600160801b610fc8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610ffc576ffff97272373d413259a46990580e213a0260801c5b600482161561101b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561103a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611059576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611078576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611097576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156110b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156110d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156110f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611116576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611136576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611156576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611176576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611196576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156111b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156111d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156111f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611216576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611233576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561125257805f198161124e5761124e611543565b0490505b640100000000810615611266576001611268565b5f5b60ff16602082901c0192505050919050565b5f6020808352835180828501525f5b818110156112a557858101830151858201604001528201611289565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112d9575f80fd5b50565b5f80604083850312156112ed575f80fd5b82356112f8816112c5565b946020939093013593505050565b5f805f60608486031215611318575f80fd5b8335611323816112c5565b92506020840135611333816112c5565b929592945050506040919091013590565b5f805f8060608587031215611357575f80fd5b8435611362816112c5565b935060208501359250604085013567ffffffffffffffff80821115611385575f80fd5b818701915087601f830112611398575f80fd5b8135818111156113a6575f80fd5b8860208285010111156113b7575f80fd5b95989497505060200194505050565b5f602082840312156113d6575f80fd5b81356113e1816112c5565b9392505050565b5f80604083850312156113f9575f80fd5b8235611404816112c5565b91506020830135611414816112c5565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156102935761029361141f565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f6020828403121561149d575f80fd5b815180151581146113e1575f80fd5b5f602082840312156114bc575f80fd5b81516113e1816112c5565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f806040838503121561151b575f80fd5b505080516020909101519092909150565b80820281158282048414176102935761029361141f565b634e487b7160e01b5f52601260045260245ffd5b5f8261156557611565611543565b500490565b600282810b9082900b03627fffff198112627fffff821317156102935761029361141f565b600281810b9083900b01627fffff8113627fffff19821217156102935761029361141f565b81516001600160a01b03168152610160810160208301516115e060208401826001600160a01b03169052565b5060408301516115f7604084018262ffffff169052565b50606083015161160c606084018260020b9052565b506080830151611621608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611667828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f806080858703121561168b575f80fd5b8451935060208501516001600160801b03811681146116a8575f80fd5b6040860151606090960151949790965092505050565b5f8260020b806116d0576116d0611543565b808360020b079150509291505056fea2646970667358221220f547ef0ed8e2582ecb348e0844049690728d1f14eef7e80cd1caf2139395ab4364736f6c63430008140033608060405234801561000f575f80fd5b50600280546001600160a01b031916331781556100419073da5dca304139dfc92dd5491e82f84c5df023677b90610084565b610060733cb30579e7c4a943509dba604141c12a4609960a6001610084565b61007f7363f52299d9b808eb2de6115535e42ef155db1dfd6001610084565b610157565b604080518082019091526001600160a01b038381168252602082018381525f80546001808201835582805294517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290920291820180546001600160a01b031916919095161790935590517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56490920191909155815483929190610129908490610132565b90915550505050565b8082018082111561015157634e487b7160e01b5f52601160045260245ffd5b92915050565b61062f806101645f395ff3fe608060405260043610610057575f3560e01c80633a98ef3914610062578063476343ee1461008a57806357a858fc146100a057806389476069146100de578063e086e5ec146100fd578063fc0c546a14610111575f80fd5b3661005e57005b5f80fd5b34801561006d575f80fd5b5061007760015481565b6040519081526020015b60405180910390f35b348015610095575f80fd5b5061009e610148565b005b3480156100ab575f80fd5b506100bf6100ba3660046104df565b610299565b604080516001600160a01b039093168352602083019190915201610081565b3480156100e9575f80fd5b5061009e6100f836600461050a565b6102ce565b348015610108575f80fd5b5061009e61043c565b34801561011c575f80fd5b50600254610130906001600160a01b031681565b6040516001600160a01b039091168152602001610081565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610199573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101bd919061052c565b6040516370a0823160e01b81523060048201529091506001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa15801561020a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022e9190610547565b6040518263ffffffff1660e01b815260040161024c91815260200190565b5f604051808303815f87803b158015610263575f80fd5b505af1158015610275573d5f803e3d5ffd5b5050505061028161043c565b600254610296906001600160a01b03166102ce565b50565b5f81815481106102a7575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610312573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103369190610547565b90508015610438575f5b5f54811015610436575f80828154811061035c5761035c61055e565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03908116808452600192830154948401859052915492945087169263a9059cbb92906103ab9088610586565b6103b591906105a3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156103fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042191906105c2565b5050808061042e906105e1565b915050610340565b505b5050565b478015610296575f5b5f54811015610438575f8082815481106104615761046161055e565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03168083526001918201549383018490529054919350916108fc91906104aa9087610586565b6104b491906105a3565b6040518115909202915f818181858888f19350505050505080806104d7906105e1565b915050610445565b5f602082840312156104ef575f80fd5b5035919050565b6001600160a01b0381168114610296575f80fd5b5f6020828403121561051a575f80fd5b8135610525816104f6565b9392505050565b5f6020828403121561053c575f80fd5b8151610525816104f6565b5f60208284031215610557575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761059d5761059d610572565b92915050565b5f826105bd57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156105d2575f80fd5b81518015158114610525575f80fd5b5f600182016105f2576105f2610572565b506001019056fea2646970667358221220f0ab2b61bad9871dc54e928caf61aa69de43a3893bf36993b8e0d11acb5558c464736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806353f8b3031161008857806395d89b411161006357806395d89b41146101f7578063a9059cbb1461021a578063ba5b79821461022d578063dd62ed3e14610248575f80fd5b806353f8b303146101bd57806370a08231146101c75780638129fc1c146101ef575f80fd5b806318160ddd116100c357806318160ddd1461016b57806323b872dd1461017d578063313ce567146101905780634000aea0146101aa575f80fd5b806306fdde03146100e9578063095ea7b31461012d57806316f0115b14610150575b5f80fd5b6101176040518060400160405280600f81526020016e29aaa822a91023a0a8229021a7a4a760891b81525081565b604051610124919061127a565b60405180910390f35b61014061013b3660046112dc565b610284565b6040519015158152602001610124565b6001546040516001600160a01b039091168152602001610124565b6002545b604051908152602001610124565b61014061018b366004611306565b610299565b610198601281565b60405160ff9091168152602001610124565b6101406101b8366004611344565b610322565b6101c56103c3565b005b61016f6101d53660046113c6565b6001600160a01b03165f9081526003602052604090205490565b6101c56105c1565b610117604051806040016040528060048152602001634741504560e01b81525081565b6101406102283660046112dc565b610a7a565b60045460055460408051928352602083019190915201610124565b61016f6102563660046113e8565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b5f610290338484610a86565b90505b92915050565b6001600160a01b0383165f908152600360209081526040808320338452600101909152812054828110156102cb575f80fd5b5f19811461030e576001600160a01b0385165f90815260036020908152604080832033845260010190915281208054859290610308908490611433565b90915550505b610319858585610af2565b95945050505050565b5f61032e338686610af2565b50843b63ffffffff8116156103b757604051636be32e7360e01b81526001600160a01b03871690636be32e739061036f903390899089908990600401611446565b6020604051808303815f875af115801561038b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103af919061148d565b6103b7575f80fd5b50600195945050505050565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610414573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043891906114ac565b604080516080810182526004805482525f546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529394509184169263fc6f7865926104919291016114c7565b60408051808303815f875af11580156104ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d0919061150a565b50506040805160808101825260055481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f786591610528916004016114c7565b60408051808303815f875af1158015610543573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610567919061150a565b50505f8054604080516323b1a1f760e11b815290516001600160a01b039092169263476343ee9260048084019382900301818387803b1580156105a8575f80fd5b505af11580156105ba573d5f803e3d5ffd5b5050505050565b600254156105cd575f80fd5b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610622573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064691906114ac565b90505f826001600160a01b0316826001600160a01b03161090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d591906114ac565b6be133fb6a00c330df0380000060028190556001600160a01b0386165f8181526003602052604080822084905551939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9161073891815260200190565b60405180910390a361075784826be133fb6a00c330df03800000610a86565b505f610779836be133fb6a00c330df0380000068056bc75e2d63100000610b76565b9150505f61079e846be133fb6a00c330df0380000069d3c21bcecceda1000000610b76565b91505f905060646107bc6be133fb6a00c330df03800000601461152c565b6107c69190611557565b9050836001600160a01b03166388316456604051806101600160405280886107ee578a6107f0565b895b6001600160a01b03168152602001881561080a578a61080c565b895b6001600160a01b0316815261271060208201526040018861082d5786610838565b61083860c88861156a565b60020b8152602001881561084c5786610857565b6108578760c861158f565b60020b81526020018861086a578461086c565b5f5b8152602001881561087d578461087f565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016108bf91906115b4565b6080604051808303815f875af11580156108db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ff9190611678565b5050506004556040805161016081019091526001600160a01b03851690638831645690808861092e578a610930565b895b6001600160a01b03168152602001881561094a578a61094c565b895b6001600160a01b03168152612710602082015260400188610977576109728760c861158f565b610979565b855b60020b815260200188156109975761099260c88861156a565b610999565b855b60020b8152602001886109c1576109bc856be133fb6a00c330df03800000611433565b6109c3565b5f5b815260200188156109e9576109e4856be133fb6a00c330df03800000611433565b6109eb565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610a2b91906115b4565b6080604051808303815f875af1158015610a47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611678565b50505060055550505050505050565b5f610290338484610af2565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610b15575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ae09086815260200190565b5f805f610bb486610b875784610b89565b855b8715610b955785610b97565b865b610ba590600160c01b611557565b610baf919061152c565b610bec565b9050610bbf81610c2f565b9150610bcc60c8836116be565b610bd6908361156a565b9150610be182610f4c565b925050935093915050565b80600260018201045b81811015610c2957809150600281828581610c1257610c12611543565b040181610c2157610c21611543565b049050610bf5565b50919050565b5f6401000276a36001600160a01b03831610801590610c6a575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b610c9f5760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110610d3357607f810383901c9150610d3d565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14610f3d57886001600160a01b0316610f2282610f4c565b6001600160a01b03161115610f375781610f3f565b80610f3f565b815b9998505050505050505050565b5f805f8360020b12610f61578260020b610f68565b8260020b5f035b9050620d89e8811115610fa15760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610c96565b5f816001165f03610fb657600160801b610fc8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610ffc576ffff97272373d413259a46990580e213a0260801c5b600482161561101b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561103a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611059576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611078576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611097576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156110b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156110d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156110f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611116576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611136576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611156576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611176576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611196576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156111b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156111d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156111f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611216576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611233576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561125257805f198161124e5761124e611543565b0490505b640100000000810615611266576001611268565b5f5b60ff16602082901c0192505050919050565b5f6020808352835180828501525f5b818110156112a557858101830151858201604001528201611289565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112d9575f80fd5b50565b5f80604083850312156112ed575f80fd5b82356112f8816112c5565b946020939093013593505050565b5f805f60608486031215611318575f80fd5b8335611323816112c5565b92506020840135611333816112c5565b929592945050506040919091013590565b5f805f8060608587031215611357575f80fd5b8435611362816112c5565b935060208501359250604085013567ffffffffffffffff80821115611385575f80fd5b818701915087601f830112611398575f80fd5b8135818111156113a6575f80fd5b8860208285010111156113b7575f80fd5b95989497505060200194505050565b5f602082840312156113d6575f80fd5b81356113e1816112c5565b9392505050565b5f80604083850312156113f9575f80fd5b8235611404816112c5565b91506020830135611414816112c5565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156102935761029361141f565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f6020828403121561149d575f80fd5b815180151581146113e1575f80fd5b5f602082840312156114bc575f80fd5b81516113e1816112c5565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f806040838503121561151b575f80fd5b505080516020909101519092909150565b80820281158282048414176102935761029361141f565b634e487b7160e01b5f52601260045260245ffd5b5f8261156557611565611543565b500490565b600282810b9082900b03627fffff198112627fffff821317156102935761029361141f565b600281810b9083900b01627fffff8113627fffff19821217156102935761029361141f565b81516001600160a01b03168152610160810160208301516115e060208401826001600160a01b03169052565b5060408301516115f7604084018262ffffff169052565b50606083015161160c606084018260020b9052565b506080830151611621608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611667828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f806080858703121561168b575f80fd5b8451935060208501516001600160801b03811681146116a8575f80fd5b6040860151606090960151949790965092505050565b5f8260020b806116d0576116d0611543565b808360020b079150509291505056fea2646970667358221220f547ef0ed8e2582ecb348e0844049690728d1f14eef7e80cd1caf2139395ab4364736f6c63430008140033

Deployed Bytecode Sourcemap

2950:12225:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3825:47;;;;;;;;;;;;;;;-1:-1:-1;;;3825:47:0;;;;;;;;;;;;:::i;:::-;;;;;;;;7057:132;;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7057:132:0;1023:187:1;7851:72:0;7909:9;;7851:72;;-1:-1:-1;;;;;7909:9:0;;;1470:51:1;;1458:2;1443:18;7851:72:0;1324:203:1;7928:86:0;7993:16;;7928:86;;;1678:25:1;;;1666:2;1651:18;7928:86:0;1532:177:1;7194:321:0;;;;;;:::i;:::-;;:::i;3918:35::-;;3951:2;3918:35;;;;;2347:4:1;2335:17;;;2317:36;;2305:2;2290:18;3918:35:0;2175:184:1;7520:323:0;;;;;;:::i;:::-;;:::i;6418:505::-;;;:::i;:::-;;8019:106;;;;;;:::i;:::-;-1:-1:-1;;;;;8095:17:0;8074:7;8095:17;;;:10;:17;;;;;:25;;8019:106;4748:1665;;;:::i;3876:38::-;;;;;;;;;;;;;;;-1:-1:-1;;;3876:38:0;;;;;6928:124;;;;;;:::i;:::-;;:::i;8271:135::-;8358:20;;8380;;8271:135;;;3589:25:1;;;3645:2;3630:18;;3623:34;;;;3562:18;8271:135:0;3415:248:1;8130:136:0;;;;;;:::i;:::-;-1:-1:-1;;;;;8224:17:0;;;8203:7;8224:17;;;:10;:17;;;;;;;;:37;;;;;;:27;;;;:37;;;;;;8130:136;7057:132;7127:4;7145:39;7154:10;7166:8;7176:7;7145:8;:39::i;:::-;7138:46;;7057:132;;;;;:::o;7194:321::-;-1:-1:-1;;;;;8224:17:0;;7279:4;8224:17;;;:10;:17;;;;;;;;7328:10;8224:37;;:27;;:37;;;;;;7366:7;7352:10;:21;;7344:30;;;;;;-1:-1:-1;;7383:10:0;:22;7379:90;;-1:-1:-1;;;;;7413:17:0;;:4;:17;;;:10;:17;;;;;;;;7441:10;7413:39;;:27;;:39;;;;;:50;;7456:7;;7413:4;:50;;7456:7;;7413:50;:::i;:::-;;;;-1:-1:-1;;7379:90:0;7480:30;7490:5;7497:3;7502:7;7480:9;:30::i;:::-;7473:37;7194:321;-1:-1:-1;;;;;7194:321:0:o;7520:323::-;7615:4;7626:35;7636:10;7648:3;7653:7;7626:9;:35::i;:::-;-1:-1:-1;7707:16:0;;7736:9;;;;7732:91;;7761:55;;-1:-1:-1;;;7761:55:0;;-1:-1:-1;;;;;7761:27:0;;;;;:55;;7789:10;;7801:7;;7810:5;;;;7761:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7753:64;;;;;;-1:-1:-1;7834:4:0;;7520:323;-1:-1:-1;;;;;7520:323:0:o;6418:505::-;6462:19;3239:42;-1:-1:-1;;;;;6500:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6542:164;;;;;;;;6587:20;;;6542:164;;-1:-1:-1;6632:9:0;-1:-1:-1;;;;;6632:9:0;;;6542:164;;;;-1:-1:-1;;;;;6542:164:0;;;;;;;;;;6530:177;;-1:-1:-1;;;6530:177:0;;6462:63;;-1:-1:-1;6530:11:0;;;;;;:177;;6542:164;6530:177;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6724:164:0;;;;;;;;6769:20;;6724:164;;-1:-1:-1;6814:9:0;-1:-1:-1;;;;;6814:9:0;;;6724:164;;;;-1:-1:-1;;;;;6724:164:0;;;;;;;;;;6712:177;;-1:-1:-1;;;6712:177:0;;:11;;;;;;:177;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6894:4:0;:9;;:24;;;-1:-1:-1;;;6894:24:0;;;;-1:-1:-1;;;;;6894:9:0;;;;:22;;:24;;;;;;;;;;:4;:9;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6457:466;6418:505::o;4748:1665::-;7993:16;;4792:18;4784:27;;;;;;4816:13;4840:4;4816:29;;4850:13;3239:42;-1:-1:-1;;;;;4866:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4850:30;;4885:11;4907:5;-1:-1:-1;;;;;4899:13:0;:5;-1:-1:-1;;;;;4899:13:0;;4885:27;;4917:19;3239:42;-1:-1:-1;;;;;4955:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3178:17;4985:16;:33;;;-1:-1:-1;;;;;5023:17:0;;4985:4;5023:17;;;:10;:17;;;;;;:42;;;5075:45;4917:63;;-1:-1:-1;5023:17:0;;4985:4;;5075:45;;;;1678:25:1;;1666:2;1651:18;;1532:177;5075:45:0;;;;;;;;5125;5134:5;5149:3;3178:17;5125:8;:45::i;:::-;;5179:14;5197:66;5224:6;3178:17;3328:9;5197:26;:66::i;:::-;5175:88;;;5272:14;5290:64;5317:6;3178:17;3527:9;5290:26;:64::i;:::-;5268:86;-1:-1:-1;5359:27:0;;-1:-1:-1;5429:3:0;5389:37;3178:17;3425:2;5389:37;:::i;:::-;:43;;;;:::i;:::-;5359:73;;5468:3;-1:-1:-1;;;;;5468:8:0;;5477:425;;;;;;;;5518:6;:22;;5535:5;5518:22;;;5527:5;5518:22;-1:-1:-1;;;;;5477:425:0;;;;;5555:6;5554:7;:23;;5572:5;5554:23;;;5564:5;5554:23;-1:-1:-1;;;;;5477:425:0;;;5588:5;5477:425;;;;;;5610:6;:34;;5636:8;5610:34;;;5619:14;5630:3;5619:8;:14;:::i;:::-;5477:425;;;;;;5662:6;5661:7;:35;;5688:8;5661:35;;;5671:14;:8;5682:3;5671:14;:::i;:::-;5477:425;;;;;;5718:6;:32;;5731:19;5718:32;;;5727:1;5718:32;5477:425;;;;5773:6;5772:7;:33;;5786:19;5772:33;;;5782:1;5772:33;5477:425;;;;5823:1;5477:425;;;;5842:1;5477:425;;;;5860:5;-1:-1:-1;;;;;5477:425:0;;;;;5881:15;5477:425;;;5468:435;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5438:20:0;5437:466;5948:459;;;;;;;;;-1:-1:-1;;;;;5939:8:0;;;;;5948:459;5989:6;:22;;6006:5;5989:22;;;5998:5;5989:22;-1:-1:-1;;;;;5948:459:0;;;;;6026:6;6025:7;:23;;6043:5;6025:23;;;6035:5;6025:23;-1:-1:-1;;;;;5948:459:0;;;6059:5;5948:459;;;;;;6081:6;:34;;6101:14;:8;6112:3;6101:14;:::i;:::-;6081:34;;;6090:8;6081:34;5948:459;;;;;;6133:6;6132:7;:35;;6153:14;6164:3;6153:8;:14;:::i;:::-;6132:35;;;6142:8;6132:35;5948:459;;;;;;6189:6;:49;;6202:36;6219:19;3178:17;6202:36;:::i;:::-;6189:49;;;6198:1;6189:49;5948:459;;;;6261:6;6260:7;:50;;6274:36;6291:19;3178:17;6274:36;:::i;:::-;6260:50;;;6270:1;6260:50;5948:459;;;;6328:1;5948:459;;;;6347:1;5948:459;;;;6365:5;-1:-1:-1;;;;;5948:459:0;;;;;6386:15;5948:459;;;5939:469;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5909:20:0;5908:500;-1:-1:-1;;;;;;;4748:1665:0:o;6928:124::-;6994:4;7012:35;7022:10;7034:3;7039:7;7012:9;:35::i;8413:212::-;-1:-1:-1;;;;;8511:18:0;;;8500:4;8511:18;;;:10;:18;;;;;;;;:38;;;;;;:28;;;;:38;;;;;:48;;;8569:35;1678:25:1;;;8500:4:0;;8511:38;:18;8569:35;;1651:18:1;8569:35:0;;;;;;;;-1:-1:-1;8616:4:0;8413:212;;;;;:::o;8631:294::-;-1:-1:-1;;;;;8095:17:0;;8713:4;8095:17;;;:10;:17;;;;;:25;8768:7;-1:-1:-1;8748:27:0;8740:36;;;;;;-1:-1:-1;;;;;8782:17:0;;;:4;:17;;;:10;:17;;;;;;:36;;;;;;;8824:15;;;;;;;;;;:34;;;;;;8869:29;;;;;;8811:7;1678:25:1;;1666:2;1651:18;;1532:177;14819:353:0;14923:13;14938:10;14955:17;14983:72;15029:6;:24;;15048:5;15029:24;;;15038:7;15029:24;15000:6;14999:7;:25;;15019:5;14999:25;;;15009:7;14999:25;14989:36;;-1:-1:-1;;;14989:36:0;:::i;:::-;:65;;;;:::i;:::-;14983:5;:72::i;:::-;14955:101;;15068:30;15088:9;15068:19;:30::i;:::-;15061:37;-1:-1:-1;15118:10:0;15125:3;15061:37;15118:10;:::i;:::-;15110:19;;:4;:19;:::i;:::-;15103:26;;15142:25;15162:4;15142:19;:25::i;:::-;15134:33;;14950:222;14819:353;;;;;;:::o;14583:231::-;14686:6;14696:1;14691;14686:6;;14685:12;14720:85;14734:6;14727:4;:13;14720:85;;;14758:4;14749:13;;14797:1;14789:4;14782;14777:2;:9;;;;;:::i;:::-;;:16;14776:22;;;;;:::i;:::-;;14769:29;;14720:85;;;14654:156;14583:231;;;:::o;11152:3426::-;11226:10;3714;-1:-1:-1;;;;;11267:30:0;;;;;;:63;;-1:-1:-1;3770:49:0;-1:-1:-1;;;;;11301:29:0;;;11267:63;11259:77;;;;-1:-1:-1;;;11259:77:0;;9358:2:1;11259:77:0;;;9340:21:1;9397:1;9377:18;;;9370:29;-1:-1:-1;;;9415:18:1;;;9408:31;9456:18;;11259:77:0;;;;;;;;;-1:-1:-1;;;;;11383:2:0;11358:27;;;;-1:-1:-1;;;;;11471:41:0;;11468:1;11464:49;11547:9;;;11605:18;11599:25;;11596:1;11592:33;11659:9;;;11717:10;11711:17;;11708:1;11704:25;11763:9;;;11821:6;11815:13;;11812:1;11808:21;11863:9;;;11921:4;11915:11;;11912:1;11908:19;;;11961:9;;;12019:3;12013:10;;12010:1;12006:18;12058:9;;;12110:10;;;12107:1;12103:18;;;12155:9;;;;12200:10;;;11638;;11742;;;11842;;;11940;12037;;;12134;12223;12257:3;12250:10;;12246:75;;12282:3;12276;:9;12266:5;:20;;12262:24;;12246:75;;;12317:3;12311;:9;12301:5;:20;;12297:24;;12246:75;12407:9;;;12402:3;12398:19;;;12432:11;;;;12490:9;;;;12540;;12531:19;;;12565:11;;;12623:9;12673;;12664:19;;;12698:11;;;12756:9;12806;;12797:19;;;12831:11;;;12889:9;12939;;12930:19;;;12964:11;;;13022:9;13072;;13063:19;;;13097:11;;;13155:9;13205;;13196:19;;;13230:11;;;13288:9;13338;;13329:19;;;13363:11;;;13421:9;13471;;13462:19;;;13496:11;;;13554:9;13604;;13595:19;;;13629:11;;;13687:9;13737;;13728:19;;;13762:11;;;13820:9;13870;;13861:19;;;13895:11;;;13953:9;14003;;13994:19;;;14028:11;;;;14086:9;;;;14136;;14127:19;;;;;12407:9;-1:-1:-1;;12345:17:0;;12367:2;12344:25;12468:10;;;;;;;12458:21;12601:10;;;;;;;12591:21;;;;12734:10;;;;;;;12724:21;;;;12867:10;;;;;;;12857:21;;;;13000:10;;;;;;;12990:21;;;;13133:10;;;;;;;13123:21;;;;13266:10;;;;;;;13256:21;13399:10;;;;;;;13389:21;13532:10;;;;;;;13522:21;13665:10;;;;;;;13655:21;13798:10;;;;;;;13788:21;13931:10;;;;;;;13921:21;14064:10;;;;;;;14054:21;14197:10;;;;;;;14187:21;14252:24;14244:32;;-1:-1:-1;;14307:53:0;;12359:3;14306:62;;;;14413:39;14397:55;;14396:64;;14476:17;;;;;;;;;:92;;14537:12;-1:-1:-1;;;;;14506:43:0;:27;14526:6;14506:19;:27::i;:::-;-1:-1:-1;;;;;14506:43:0;;;:62;;14561:7;14476:92;;14506:62;14552:6;14476:92;;;14496:7;14476:92;14469:99;11152:3426;-1:-1:-1;;;;;;;;;11152:3426:0:o;8932:2215::-;8996:20;9039:15;9064:1;9057:4;:8;;;:57;;9108:4;9101:12;;9057:57;;;9084:4;9077:12;;9076:13;;9057:57;9039:75;-1:-1:-1;3659:9:0;9128:36;;;9120:50;;;;-1:-1:-1;;;9120:50:0;;9687:2:1;9120:50:0;;;9669:21:1;9726:1;9706:18;;;9699:29;-1:-1:-1;;;9744:18:1;;;9737:31;9785:18;;9120:50:0;9485:324:1;9120:50:0;9178:13;9194:7;9204:3;9194:13;9211:1;9194:18;:93;;-1:-1:-1;;;9194:93:0;;;9215:34;9194:93;9178:109;;;-1:-1:-1;9307:3:0;9297:13;;:18;9293:83;;9334:34;9326:42;9373:3;9325:51;9293:83;9396:3;9386:13;;:18;9382:83;;9423:34;9415:42;9462:3;9414:51;9382:83;9485:3;9475:13;;:18;9471:83;;9512:34;9504:42;9551:3;9503:51;9471:83;9574:4;9564:14;;:19;9560:84;;9602:34;9594:42;9641:3;9593:51;9560:84;9664:4;9654:14;;:19;9650:84;;9692:34;9684:42;9731:3;9683:51;9650:84;9754:4;9744:14;;:19;9740:84;;9782:34;9774:42;9821:3;9773:51;9740:84;9844:4;9834:14;;:19;9830:84;;9872:34;9864:42;9911:3;9863:51;9830:84;9934:5;9924:15;;:20;9920:85;;9963:34;9955:42;10002:3;9954:51;9920:85;10025:5;10015:15;;:20;10011:85;;10054:34;10046:42;10093:3;10045:51;10011:85;10116:5;10106:15;;:20;10102:85;;10145:34;10137:42;10184:3;10136:51;10102:85;10207:5;10197:15;;:20;10193:85;;10236:34;10228:42;10275:3;10227:51;10193:85;10298:6;10288:16;;:21;10284:86;;10328:34;10320:42;10367:3;10319:51;10284:86;10390:6;10380:16;;:21;10376:86;;10420:34;10412:42;10459:3;10411:51;10376:86;10482:6;10472:16;;:21;10468:86;;10512:34;10504:42;10551:3;10503:51;10468:86;10574:6;10564:16;;:21;10560:86;;10604:34;10596:42;10643:3;10595:51;10560:86;10666:7;10656:17;;:22;10652:86;;10697:33;10689:41;10735:3;10688:50;10652:86;10758:7;10748:17;;:22;10744:85;;10789:32;10781:40;10826:3;10780:49;10744:85;10849:7;10839:17;;:22;10835:83;;10880:30;10872:38;10915:3;10871:47;10835:83;10938:7;10928:17;;:22;10924:78;;10969:25;10961:33;10999:3;10960:42;10924:78;11021:1;11014:4;:8;;;11010:47;;;11052:5;-1:-1:-1;;11032:25:0;;;;;:::i;:::-;;11024:33;;11010:47;11114:7;11105:5;:17;:22;:30;;11134:1;11105:30;;;11130:1;11105:30;11088:48;;11098:2;11089:5;:11;;11088:48;11065:72;;9023:2120;;8932:2215;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1714:456::-;1791:6;1799;1807;1860:2;1848:9;1839:7;1835:23;1831:32;1828:52;;;1876:1;1873;1866:12;1828:52;1915:9;1902:23;1934:31;1959:5;1934:31;:::i;:::-;1984:5;-1:-1:-1;2041:2:1;2026:18;;2013:32;2054:33;2013:32;2054:33;:::i;:::-;1714:456;;2106:7;;-1:-1:-1;;;2160:2:1;2145:18;;;;2132:32;;1714:456::o;2364:794::-;2452:6;2460;2468;2476;2529:2;2517:9;2508:7;2504:23;2500:32;2497:52;;;2545:1;2542;2535:12;2497:52;2584:9;2571:23;2603:31;2628:5;2603:31;:::i;:::-;2653:5;-1:-1:-1;2705:2:1;2690:18;;2677:32;;-1:-1:-1;2760:2:1;2745:18;;2732:32;2783:18;2813:14;;;2810:34;;;2840:1;2837;2830:12;2810:34;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:55;;2945:1;2942;2935:12;2894:55;2985:2;2972:16;3011:2;3003:6;3000:14;2997:34;;;3027:1;3024;3017:12;2997:34;3072:7;3067:2;3058:6;3054:2;3050:15;3046:24;3043:37;3040:57;;;3093:1;3090;3083:12;3040:57;2364:794;;;;-1:-1:-1;;3124:2:1;3116:11;;-1:-1:-1;;;2364:794:1:o;3163:247::-;3222:6;3275:2;3263:9;3254:7;3250:23;3246:32;3243:52;;;3291:1;3288;3281:12;3243:52;3330:9;3317:23;3349:31;3374:5;3349:31;:::i;:::-;3399:5;3163:247;-1:-1:-1;;;3163:247:1:o;3668:388::-;3736:6;3744;3797:2;3785:9;3776:7;3772:23;3768:32;3765:52;;;3813:1;3810;3803:12;3765:52;3852:9;3839:23;3871:31;3896:5;3871:31;:::i;:::-;3921:5;-1:-1:-1;3978:2:1;3963:18;;3950:32;3991:33;3950:32;3991:33;:::i;:::-;4043:7;4033:17;;;3668:388;;;;;:::o;4061:127::-;4122:10;4117:3;4113:20;4110:1;4103:31;4153:4;4150:1;4143:15;4177:4;4174:1;4167:15;4193:128;4260:9;;;4281:11;;;4278:37;;;4295:18;;:::i;4326:559::-;-1:-1:-1;;;;;4539:32:1;;4521:51;;4603:2;4588:18;;4581:34;;;4651:2;4646;4631:18;;4624:30;;;4670:18;;4663:34;;;4690:6;4740;4734:3;4719:19;;4706:49;4805:1;4775:22;;;4799:3;4771:32;;;4764:43;;;;4868:2;4847:15;;;-1:-1:-1;;4843:29:1;4828:45;4824:55;;4326:559;-1:-1:-1;;;4326:559:1:o;4890:277::-;4957:6;5010:2;4998:9;4989:7;4985:23;4981:32;4978:52;;;5026:1;5023;5016:12;4978:52;5058:9;5052:16;5111:5;5104:13;5097:21;5090:5;5087:32;5077:60;;5133:1;5130;5123:12;5172:251;5242:6;5295:2;5283:9;5274:7;5270:23;5266:32;5263:52;;;5311:1;5308;5301:12;5263:52;5343:9;5337:16;5362:31;5387:5;5362:31;:::i;5428:570::-;5651:13;;5633:32;;5725:4;5713:17;;;5707:24;-1:-1:-1;;;;;5703:50:1;5681:20;;;5674:80;5801:4;5789:17;;;5783:24;-1:-1:-1;;;;;5898:21:1;;;5876:20;;;5869:51;;;;5980:4;5968:17;;;5962:24;5958:33;5936:20;;;5929:63;;;;5620:3;5605:19;;5428:570::o;6003:245::-;6082:6;6090;6143:2;6131:9;6122:7;6118:23;6114:32;6111:52;;;6159:1;6156;6149:12;6111:52;-1:-1:-1;;6182:16:1;;6238:2;6223:18;;;6217:25;6182:16;;6217:25;;-1:-1:-1;6003:245:1:o;6253:168::-;6326:9;;;6357;;6374:15;;;6368:22;;6354:37;6344:71;;6395:18;;:::i;6426:127::-;6487:10;6482:3;6478:20;6475:1;6468:31;6518:4;6515:1;6508:15;6542:4;6539:1;6532:15;6558:120;6598:1;6624;6614:35;;6629:18;;:::i;:::-;-1:-1:-1;6663:9:1;;6558:120::o;6683:193::-;6781:1;6770:16;;;6752;;;;6748:39;-1:-1:-1;;6802:23:1;;6837:8;6827:19;;6799:48;6796:74;;;6850:18;;:::i;6881:189::-;6977:1;6948:16;;;6966;;;;6944:39;7031:7;6998:18;;-1:-1:-1;;7018:22:1;;6995:46;6992:72;;;7044:18;;:::i;7268:1218::-;7486:13;;-1:-1:-1;;;;;1281:31:1;1269:44;;7454:3;7439:19;;7558:4;7550:6;7546:17;7540:24;7573:54;7621:4;7610:9;7606:20;7592:12;-1:-1:-1;;;;;1281:31:1;1269:44;;1215:104;7573:54;;7676:4;7668:6;7664:17;7658:24;7691:55;7740:4;7729:9;7725:20;7709:14;7151:8;7140:20;7128:33;;7075:92;7691:55;;7795:4;7787:6;7783:17;7777:24;7810:54;7858:4;7847:9;7843:20;7827:14;7247:1;7236:20;7224:33;;7172:91;7810:54;;7913:4;7905:6;7901:17;7895:24;7928:54;7976:4;7965:9;7961:20;7945:14;7247:1;7236:20;7224:33;;7172:91;7928:54;;8038:4;8030:6;8026:17;8020:24;8013:4;8002:9;7998:20;7991:54;8101:4;8093:6;8089:17;8083:24;8076:4;8065:9;8061:20;8054:54;8164:4;8156:6;8152:17;8146:24;8139:4;8128:9;8124:20;8117:54;8190:6;8250:2;8242:6;8238:15;8232:22;8227:2;8216:9;8212:18;8205:50;;8274:6;8329:2;8321:6;8317:15;8311:22;8342:54;8392:2;8381:9;8377:18;8361:14;-1:-1:-1;;;;;1281:31:1;1269:44;;1215:104;8342:54;-1:-1:-1;;8415:6:1;8463:15;;;8457:22;8437:18;;;;8430:50;7268:1218;:::o;8491:489::-;8588:6;8596;8604;8612;8665:3;8653:9;8644:7;8640:23;8636:33;8633:53;;;8682:1;8679;8672:12;8633:53;8711:9;8705:16;8695:26;;8764:2;8753:9;8749:18;8743:25;-1:-1:-1;;;;;8801:5:1;8797:46;8790:5;8787:57;8777:85;;8858:1;8855;8848:12;8777:85;8926:2;8911:18;;8905:25;8970:2;8955:18;;;8949:25;8491:489;;8881:5;;-1:-1:-1;8491:489:1;-1:-1:-1;;;8491:489:1:o;8985:166::-;9015:1;9056;9053;9042:16;9077:3;9067:37;;9084:18;;:::i;:::-;9141:3;9137:1;9134;9123:16;9118:27;9113:32;;;8985:166;;;;:::o

Swarm Source

ipfs://f0ab2b61bad9871dc54e928caf61aa69de43a3893bf36993b8e0d11acb5558c4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.