ETH Price: $3,469.24 (+0.62%)

Token

AdEx Staking Token (ADX-STAKING)
 

Overview

Max Total Supply

21,480,000.685404081311161087 ADX-STAKING

Holders

675

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000230326354335011 ADX-STAKING

Value
$0.00
0x9A604aFe073e4CF5268dddFb326fbb2608051725
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:
StakingPool

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-30
*/

pragma solidity 0.8.1;

interface ISupplyController {
	function mintIncentive(address addr) external;
	function mintableIncentive(address addr) external view returns (uint);
	function mint(address token, address owner, uint amount) external;
	function changeSupplyController(address newSupplyController) external;
}

interface IADXToken {
	function transfer(address to, uint256 amount) external returns (bool);
	function transferFrom(address from, address to, uint256 amount) external returns (bool);
	function approve(address spender, uint256 amount) external returns (bool);
	function balanceOf(address spender) external view returns (uint);
	function allowance(address owner, address spender) external view returns (uint);
	function totalSupply() external returns (uint);
	function supplyController() external view returns (ISupplyController);
	function changeSupplyController(address newSupplyController) external;
	function mint(address owner, uint amount) external;
}


interface IERCDecimals {
	function decimals() external view returns (uint);
}

interface IChainlink {
	// AUDIT: ensure this API is not deprecated
	function latestAnswer() external view returns (uint);
}

// Full interface here: https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router01.sol
interface IUniswapSimple {
	function WETH() external pure returns (address);
	function swapTokensForExactTokens(
		uint amountOut,
		uint amountInMax,
		address[] calldata path,
		address to,
		uint deadline
	) external returns (uint[] memory amounts);
}

contract StakingPool {
	// ERC20 stuff
	// Constants
	string public constant name = "AdEx Staking Token";
	uint8 public constant decimals = 18;
	string public constant symbol = "ADX-STAKING";

	// Mutable variables
	uint public totalSupply;
	mapping(address => uint) private balances;
	mapping(address => mapping(address => uint)) private allowed;

	// EIP 2612
	bytes32 public DOMAIN_SEPARATOR;
	// keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
	bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
	mapping(address => uint) public nonces;

	// ERC20 events
	event Approval(address indexed owner, address indexed spender, uint amount);
	event Transfer(address indexed from, address indexed to, uint amount);

	// ERC20 methods
	function balanceOf(address owner) external view returns (uint balance) {
		return balances[owner];
	}

	function transfer(address to, uint amount) external returns (bool success) {
		require(to != address(this), "BAD_ADDRESS");
		balances[msg.sender] = balances[msg.sender] - amount;
		balances[to] = balances[to] + amount;
		emit Transfer(msg.sender, to, amount);
		return true;
	}

	function transferFrom(address from, address to, uint amount) external returns (bool success) {
		balances[from] = balances[from] - amount;
		allowed[from][msg.sender] = allowed[from][msg.sender] - amount;
		balances[to] = balances[to] + amount;
		emit Transfer(from, to, amount);
		return true;
	}

	function approve(address spender, uint amount) external returns (bool success) {
		allowed[msg.sender][spender] = amount;
		emit Approval(msg.sender, spender, amount);
		return true;
	}

	function allowance(address owner, address spender) external view returns (uint remaining) {
		return allowed[owner][spender];
	}

	// EIP 2612
	function permit(address owner, address spender, uint amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
		require(deadline >= block.timestamp, "DEADLINE_EXPIRED");
		bytes32 digest = keccak256(abi.encodePacked(
			"\x19\x01",
			DOMAIN_SEPARATOR,
			keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))
		));
		address recoveredAddress = ecrecover(digest, v, r, s);
		require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNATURE");
		allowed[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}

	// Inner
	function innerMint(address owner, uint amount) internal {
		totalSupply = totalSupply + amount;
		balances[owner] = balances[owner] + amount;
		// Because of https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer-1
		emit Transfer(address(0), owner, amount);
	}
	function innerBurn(address owner, uint amount) internal {
		totalSupply = totalSupply - amount;
		balances[owner] = balances[owner] - amount;
		emit Transfer(owner, address(0), amount);
	}

	// Pool functionality
	uint public timeToUnbond = 20 days;
	uint public rageReceivedPromilles = 700;

	IUniswapSimple public uniswap; // = IUniswapSimple(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
	IChainlink public ADXUSDOracle; // = IChainlink(0x231e764B44b2C1b7Ca171fa8021A24ed520Cde10);

	IADXToken public immutable ADXToken;
	address public guardian;
	address public validator;
	address public governance;

	// claim token whitelist: normally claim tokens are stablecoins
	// eg Tether (0xdAC17F958D2ee523a2206206994597C13D831ec7)
	mapping (address => bool) public whitelistedClaimTokens;

	// Commitment ID against the max amount of tokens it will pay out
	mapping (bytes32 => uint) public commitments;
	// How many of a user's shares are locked
	mapping (address => uint) public lockedShares;
	// Unbonding commitment from a staker
	struct UnbondCommitment {
		address owner;
		uint shares;
		uint unlocksAt;
	}

	// claims/penalizations limits
	uint public maxDailyPenaltiesPromilles;
	uint public limitLastReset;
	uint public limitRemaining;

	// Staking pool events
	// LogLeave/LogWithdraw must begin with the UnbondCommitment struct
	event LogLeave(address indexed owner, uint shares, uint unlocksAt, uint maxTokens);
	event LogWithdraw(address indexed owner, uint shares, uint unlocksAt, uint maxTokens, uint receivedTokens);
	event LogRageLeave(address indexed owner, uint shares, uint maxTokens, uint receivedTokens);
	event LogNewGuardian(address newGuardian);
	event LogClaim(address tokenAddr, address to, uint amountInUSD, uint burnedValidatorShares, uint usedADX, uint totalADX, uint totalShares);
	event LogPenalize(uint burnedADX);

	constructor(IADXToken token, IUniswapSimple uni, IChainlink oracle, address guardianAddr, address validatorStakingWallet, address governanceAddr, address claimToken) {
		ADXToken = token;
		uniswap = uni;
		ADXUSDOracle = oracle;
		guardian = guardianAddr;
		validator = validatorStakingWallet;
		governance = governanceAddr;
		whitelistedClaimTokens[claimToken] = true;

		// EIP 2612
		uint chainId;
		assembly {
			chainId := chainid()
		}
		DOMAIN_SEPARATOR = keccak256(
			abi.encode(
				keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
				keccak256(bytes(name)),
				keccak256(bytes("1")),
				chainId,
				address(this)
			)
		);
	}

	// Governance functions
	function setGovernance(address addr) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		governance = addr;
	}
	function setDailyPenaltyMax(uint max) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		require(max <= 200, "DAILY_PENALTY_TOO_LARGE");
		maxDailyPenaltiesPromilles = max;
		resetLimits();
	}
	function setRageReceived(uint rageReceived) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		// AUDIT: should there be a minimum here?
		require(rageReceived <= 1000, "TOO_LARGE");
		rageReceivedPromilles = rageReceived;
	}
	function setTimeToUnbond(uint time) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		require(time >= 1 days && time <= 30 days, "BOUNDS");
		timeToUnbond = time;
	}
	function setGuardian(address newGuardian) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		guardian = newGuardian;
		emit LogNewGuardian(newGuardian);
	}
	function setWhitelistedClaimToken(address token, bool whitelisted) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		whitelistedClaimTokens[token] = whitelisted;
	}

	// Pool stuff
	function shareValue() external view returns (uint) {
		if (totalSupply == 0) return 0;
		return ((ADXToken.balanceOf(address(this)) + ADXToken.supplyController().mintableIncentive(address(this)))
			* 1e18)
			/ totalSupply;
	}

	function innerEnter(address recipient, uint amount) internal {
		// Please note that minting has to be in the beginning so that we take it into account
		// when using ADXToken.balanceOf()
		// Minting makes an external call but it"s to a trusted contract (ADXToken)
		ADXToken.supplyController().mintIncentive(address(this));

		uint totalADX = ADXToken.balanceOf(address(this));

		// The totalADX == 0 check here should be redudnant; the only way to get totalSupply to a nonzero val is by adding ADX
		if (totalSupply == 0 || totalADX == 0) {
			innerMint(recipient, amount);
		} else {
			uint256 newShares = (amount * totalSupply) / totalADX;
			innerMint(recipient, newShares);
		}
		require(ADXToken.transferFrom(msg.sender, address(this), amount));
		// no events, as innerMint already emits enough to know the shares amount and price
	}

	function enter(uint amount) external {
		innerEnter(msg.sender, amount);
	}

	function enterTo(address recipient, uint amount) external {
		innerEnter(recipient, amount);
	}

	function unbondingCommitmentWorth(address owner, uint shares, uint unlocksAt) external view returns (uint) {
		if (totalSupply == 0) return 0;
		bytes32 commitmentId = keccak256(abi.encode(UnbondCommitment({ owner: owner, shares: shares, unlocksAt: unlocksAt })));
		uint maxTokens = commitments[commitmentId];
		uint totalADX = ADXToken.balanceOf(address(this));
		uint currentTokens = (shares * totalADX) / totalSupply;
		return currentTokens > maxTokens ? maxTokens : currentTokens;
	}

	function leave(uint shares, bool skipMint) external {
		if (!skipMint) ADXToken.supplyController().mintIncentive(address(this));

		require(shares <= balances[msg.sender] - lockedShares[msg.sender], "INSUFFICIENT_SHARES");
		uint totalADX = ADXToken.balanceOf(address(this));
		uint maxTokens = (shares * totalADX) / totalSupply;
		uint unlocksAt = block.timestamp + timeToUnbond;
		bytes32 commitmentId = keccak256(abi.encode(UnbondCommitment({ owner: msg.sender, shares: shares, unlocksAt: unlocksAt })));
		require(commitments[commitmentId] == 0, "COMMITMENT_EXISTS");

		commitments[commitmentId] = maxTokens;
		lockedShares[msg.sender] += shares;

		emit LogLeave(msg.sender, shares, unlocksAt, maxTokens);
	}

	function withdraw(uint shares, uint unlocksAt, bool skipMint) external {
		if (!skipMint) ADXToken.supplyController().mintIncentive(address(this));

		require(block.timestamp > unlocksAt, "UNLOCK_TOO_EARLY");
		bytes32 commitmentId = keccak256(abi.encode(UnbondCommitment({ owner: msg.sender, shares: shares, unlocksAt: unlocksAt })));
		uint maxTokens = commitments[commitmentId];
		require(maxTokens > 0, "NO_COMMITMENT");
		uint totalADX = ADXToken.balanceOf(address(this));
		uint currentTokens = (shares * totalADX) / totalSupply;
		uint receivedTokens = currentTokens > maxTokens ? maxTokens : currentTokens;

		commitments[commitmentId] = 0;
		lockedShares[msg.sender] -= shares;

		innerBurn(msg.sender, shares);
		require(ADXToken.transfer(msg.sender, receivedTokens));

		emit LogWithdraw(msg.sender, shares, unlocksAt, maxTokens, receivedTokens);
	}

	function rageLeave(uint shares, bool skipMint) external {
		if (!skipMint) ADXToken.supplyController().mintIncentive(address(this));

		uint totalADX = ADXToken.balanceOf(address(this));
		uint adxAmount = (shares * totalADX) / totalSupply;
		uint receivedTokens = (adxAmount * rageReceivedPromilles) / 1000;
		innerBurn(msg.sender, shares);
		require(ADXToken.transfer(msg.sender, receivedTokens));

		emit LogRageLeave(msg.sender, shares, adxAmount, receivedTokens);
	}

	// Insurance mechanism
	// In case something goes wrong, this can be used to recoup funds
	// As of V5, the idea is to use it to provide some interest (eg 10%) for late refunds, in case channels get stuck and have to wait through their challenge period
	function claim(address tokenOut, address to, uint amount) external {
		require(msg.sender == guardian, "NOT_GUARDIAN");

		// start by resetting claim/penalty limits
		resetLimits();

		// NOTE: minting is intentionally skipped here
		// This means that a validator may be punished a bit more when burning their shares,
		// but it guarantees that claim() always works
		uint totalADX = ADXToken.balanceOf(address(this));

		// Note: whitelist of tokenOut tokens
		require(whitelistedClaimTokens[tokenOut], "TOKEN_NOT_WHITELISTED");

		address[] memory path = new address[](3);
		path[0] = address(ADXToken);
		path[1] = uniswap.WETH();
		path[2] = tokenOut;

		// You may think the Uniswap call enables reentrancy, but reentrancy is a problem only if the pattern is check-call-modify, not call-check-modify as is here
		// there"s no case in which we "double-spend" a value
		// Plus, ADX, USDT and uniswap are all trusted

		// Slippage protection; 5% slippage allowed
		uint price = ADXUSDOracle.latestAnswer();
		// chainlink price is in 1e8
		// for example, if the amount is in 1e6;
		// we need to convert from 1e6 to 1e18 (adx) but we divide by 1e8 (price); 18 - 6 + 8 ; verified this by calculating manually
		uint multiplier = 1.05e26 / (10 ** IERCDecimals(tokenOut).decimals());
		uint adxAmountMax = (amount * multiplier) / price;
		require(adxAmountMax < totalADX, "INSUFFICIENT_ADX");
		uint[] memory amounts = uniswap.swapTokensForExactTokens(amount, adxAmountMax, path, to, block.timestamp);

		// calculate the total ADX amount used in the swap
		uint adxAmountUsed = amounts[0];

		// burn the validator shares so that they pay for it first, before dilluting other holders
		// calculate the worth in ADX of the validator"s shares
		uint sharesNeeded = (adxAmountUsed * totalSupply) / totalADX;
		uint toBurn = sharesNeeded < balances[validator] ? sharesNeeded : balances[validator];
		if (toBurn > 0) innerBurn(validator, toBurn);

		// Technically redundant cause we"ll fail on the subtraction, but we"re doing this for better err msgs
		require(limitRemaining >= adxAmountUsed, "LIMITS");
		limitRemaining -= adxAmountUsed;

		emit LogClaim(tokenOut, to, amount, toBurn, adxAmountUsed, totalADX, totalSupply);
	}

	function penalize(uint adxAmount) external {
		require(msg.sender == guardian, "NOT_GUARDIAN");
		// AUDIT: we can do getLimitRemaining() instead of resetLimits() that returns the remaining limit
		resetLimits();
		// Technically redundant cause we'll fail on the subtraction, but we're doing this for better err msgs
		require(limitRemaining >= adxAmount, "LIMITS");
		limitRemaining -= adxAmount;
		require(ADXToken.transfer(address(0), adxAmount));
		emit LogPenalize(adxAmount);
	}

	function resetLimits() internal {
		if (block.timestamp - limitLastReset > 24 hours) {
			limitLastReset = block.timestamp;
			limitRemaining = (ADXToken.balanceOf(address(this)) * maxDailyPenaltiesPromilles) / 1000;
		}
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IADXToken","name":"token","type":"address"},{"internalType":"contract IUniswapSimple","name":"uni","type":"address"},{"internalType":"contract IChainlink","name":"oracle","type":"address"},{"internalType":"address","name":"guardianAddr","type":"address"},{"internalType":"address","name":"validatorStakingWallet","type":"address"},{"internalType":"address","name":"governanceAddr","type":"address"},{"internalType":"address","name":"claimToken","type":"address"}],"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":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddr","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountInUSD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnedValidatorShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"usedADX","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalADX","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalShares","type":"uint256"}],"name":"LogClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlocksAt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTokens","type":"uint256"}],"name":"LogLeave","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newGuardian","type":"address"}],"name":"LogNewGuardian","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"burnedADX","type":"uint256"}],"name":"LogPenalize","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedTokens","type":"uint256"}],"name":"LogRageLeave","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlocksAt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedTokens","type":"uint256"}],"name":"LogWithdraw","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADXToken","outputs":[{"internalType":"contract IADXToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADXUSDOracle","outputs":[{"internalType":"contract IChainlink","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commitments","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":"uint256","name":"amount","type":"uint256"}],"name":"enter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"enterTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"bool","name":"skipMint","type":"bool"}],"name":"leave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitLastReset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockedShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDailyPenaltiesPromilles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"adxAmount","type":"uint256"}],"name":"penalize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"bool","name":"skipMint","type":"bool"}],"name":"rageLeave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rageReceivedPromilles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"setDailyPenaltyMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newGuardian","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rageReceived","type":"uint256"}],"name":"setRageReceived","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setTimeToUnbond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"whitelisted","type":"bool"}],"name":"setWhitelistedClaimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shareValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeToUnbond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"unlocksAt","type":"uint256"}],"name":"unbondingCommitmentWorth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswap","outputs":[{"internalType":"contract IUniswapSimple","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"validator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedClaimTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"unlocksAt","type":"uint256"},{"internalType":"bool","name":"skipMint","type":"bool"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a0604052621a5e006005556102bc6006553480156200001e57600080fd5b50604051620031ad380380620031ad8339810160408190526200004191620001a4565b606087901b6001600160601b031916608052600780546001600160a01b03199081166001600160a01b0389811691909117909255600880548216888416179055600980548216878416179055600a80548216868416179055600b805490911684831617905581166000908152600c6020908152604091829020805460ff1916600190811790915582518084018452601281527120b222bc1029ba30b5b4b733902a37b5b2b760711b9083015282518084018452908152603160f81b90820152905146916200017a917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f917ff1ddb5885a0eacccce23d63d5d9cd50fd21fe8b88ddfa2f70766021ce46cdbed917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016200024e565b60405160208183030381529060405280519060200120600381905550505050505050505062000293565b600080600080600080600060e0888a031215620001bf578283fd5b8751620001cc816200027a565b6020890151909750620001df816200027a565b6040890151909650620001f2816200027a565b606089015190955062000205816200027a565b608089015190945062000218816200027a565b60a08901519093506200022b816200027a565b60c08901519092506200023e816200027a565b8091505092959891949750929550565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b6001600160a01b03811681146200029057600080fd5b50565b60805160601c612e7d6200033060003960008181610738015281816108d9015281816109e701528181610b4901528181610c6a01528181610df501528181610efc01528181610fdf015281816111c2015281816112f3015281816113d8015281816118360152818161198201528181611c4801528181611d53015281816120e8015281816121890152818161228e01526123790152612e7d6000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c80638273402711610146578063ab033ea9116100c3578063c6257b4c11610087578063c6257b4c146104a0578063c7f9218a146104a8578063d505accf146104bb578063dd62ed3e146104ce578063e336ac44146104e1578063f893d346146104f45761025e565b8063ab033ea914610462578063adec4a5014610475578063b6dcaf651461047d578063c066f75e14610485578063c4911ee01461048d5761025e565b806395d89b411161010a57806395d89b411461040e578063996cba68146104165780639b4ee06414610429578063a59f3e0c1461043c578063a9059cbb1461044f5761025e565b806382734027146103af578063839df945146103c25780638a07b419146103d55780638a0dac4a146103e85780638ec0a9eb146103fb5761025e565b806333cfcd3b116101df578063452a9320116101a3578063452a93201461035e5780635aa6e675146103665780636e6eff3e1461036e57806370a082311461037657806372a3b8b3146103895780637ecebe001461039c5761025e565b806333cfcd3b146103205780633644e5151461033357806338156a971461033b5780633a5381b51461034e578063447b15f4146103565761025e565b80632017422d116102265780632017422d146102d357806323b872dd146102db5780632681f7e4146102ee57806330adf81f14610303578063313ce5671461030b5761025e565b806306fdde0314610263578063070141c114610281578063095ea7b3146102965780631322ed44146102b657806318160ddd146102cb575b600080fd5b61026b610507565b60405161027891906128ab565b60405180910390f35b61029461028f36600461270f565b610535565b005b6102a96102a43660046125d5565b61058f565b6040516102789190612845565b6102be6105f9565b6040516102789190612850565b6102be6105ff565b6102be610605565b6102a96102e93660046124f3565b61060b565b6102f66106f9565b60405161027891906127b6565b6102be610708565b61031361072c565b6040516102789190612c2d565b61029461032e366004612763565b610731565b6102be610aca565b6102946103493660046125a8565b610ad0565b6102f6610b25565b6102be610b34565b6102f6610d1b565b6102f6610d2a565b6102be610d39565b6102be610384366004612483565b610d3f565b6102a9610397366004612483565b610d5a565b6102be6103aa366004612483565b610d6f565b6102946103bd36600461270f565b610d81565b6102be6103d036600461270f565b610ddc565b6102946103e336600461273f565b610dee565b6102946103f6366004612483565b6110bd565b6102be610409366004612600565b61113d565b61026b611280565b6102946104243660046124f3565b6112a7565b61029461043736600461273f565b61182f565b61029461044a36600461270f565b611b2b565b6102a961045d3660046125d5565b611b35565b610294610470366004612483565b611be5565b6102be611c31565b6102f6611c37565b6102f6611c46565b61029461049b36600461270f565b611c6a565b6102be611ccb565b6102946104b636600461270f565b611cd1565b6102946104c9366004612533565b611e15565b6102be6104dc3660046124bb565b611fe8565b6102be6104ef366004612483565b612013565b6102946105023660046125d5565b612025565b6040518060400160405280601281526020017120b222bc1029ba30b5b4b733902a37b5b2b760711b81525081565b600b546001600160a01b031633146105685760405162461bcd60e51b815260040161055f90612a01565b60405180910390fd5b6103e881111561058a5760405162461bcd60e51b815260040161055f90612b14565b600655565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105e8908690612850565b60405180910390a350600192915050565b60105481565b60005481565b600f5481565b6001600160a01b03831660009081526001602052604081205461062f908390612da6565b6001600160a01b0385166000908152600160209081526040808320939093556002815282822033835290522054610667908390612da6565b6001600160a01b0380861660009081526002602090815260408083203384528252808320949094559186168152600190915220546106a6908390612c3b565b6001600160a01b038085166000818152600160205260409081902093909355915190861690600080516020612e28833981519152906106e6908690612850565b60405180910390a35060015b9392505050565b6007546001600160a01b031681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b80610825577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561078f57600080fd5b505afa1580156107a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c7919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b81526004016107f291906127b6565b600060405180830381600087803b15801561080c57600080fd5b505af1158015610820573d6000803e3d6000fd5b505050505b8142116108445760405162461bcd60e51b815260040161055f90612962565b60006040518060600160405280336001600160a01b031681526020018581526020018481525060405160200161087a9190612b62565b60408051601f1981840301815291815281516020928301206000818152600d909352912054909150806108bf5760405162461bcd60e51b815260040161055f90612a74565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061090e9030906004016127b6565b60206040518083038186803b15801561092657600080fd5b505afa15801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e9190612727565b90506000805482886109709190612d87565b61097a9190612c53565b9050600083821161098b578161098d565b835b6000868152600d60209081526040808320839055338352600e909152812080549293508a929091906109c0908490612da6565b909155506109d090503389612033565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610a1e903390859060040161282c565b602060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7091906126f3565b610a7957600080fd5b336001600160a01b03167f71ec6330779eb13064fdcb040e03c78e2f9e68fb56bcf3ad120223fd1bcd421889898785604051610ab89493929190612c12565b60405180910390a25050505050505050565b60035481565b600b546001600160a01b03163314610afa5760405162461bcd60e51b815260040161055f90612a01565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600a546001600160a01b031681565b60008054610b4457506000610d18565b6000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd8919061249f565b6001600160a01b03166320b49935306040518263ffffffff1660e01b8152600401610c0391906127b6565b60206040518083038186803b158015610c1b57600080fd5b505afa158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c539190612727565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610c9f9030906004016127b6565b60206040518083038186803b158015610cb757600080fd5b505afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190612727565b610cf99190612c3b565b610d0b90670de0b6b3a7640000612d87565b610d159190612c53565b90505b90565b6009546001600160a01b031681565b600b546001600160a01b031681565b60065481565b6001600160a01b031660009081526001602052604090205490565b600c6020526000908152604090205460ff1681565b60046020526000908152604090205481565b600b546001600160a01b03163314610dab5760405162461bcd60e51b815260040161055f90612a01565b60c8811115610dcc5760405162461bcd60e51b815260040161055f9061292b565b600f819055610dd96120ad565b50565b600d6020526000908152604090205481565b80610ee2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4c57600080fd5b505afa158015610e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e84919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b8152600401610eaf91906127b6565b600060405180830381600087803b158015610ec957600080fd5b505af1158015610edd573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610f319030906004016127b6565b60206040518083038186803b158015610f4957600080fd5b505afa158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190612727565b9050600080548285610f939190612d87565b610f9d9190612c53565b905060006103e860065483610fb29190612d87565b610fbc9190612c53565b9050610fc83386612033565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90611016903390859060040161282c565b602060405180830381600087803b15801561103057600080fd5b505af1158015611044573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106891906126f3565b61107157600080fd5b336001600160a01b03167ff401020088a10cade8fca19ce1c014addc7dd08d911cdd8a9de214dbfafbbe758684846040516110ae93929190612bfc565b60405180910390a25050505050565b600b546001600160a01b031633146110e75760405162461bcd60e51b815260040161055f90612a01565b600980546001600160a01b0319166001600160a01b0383161790556040517f24b6eb124e4a66ed0707b21614e0016f97d5da36704831722f30b8bd70644d35906111329083906127b6565b60405180910390a150565b6000805461114d575060006106f2565b60006040518060600160405280866001600160a01b03168152602001858152602001848152506040516020016111839190612b62565b60408051601f1981840301815282825280516020918201206000818152600d909252918120546370a0823160e01b845291935090916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906111f79030906004016127b6565b60206040518083038186803b15801561120f57600080fd5b505afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112479190612727565b90506000805482886112599190612d87565b6112639190612c53565b90508281116112725780611274565b825b98975050505050505050565b6040518060400160405280600b81526020016a4144582d5354414b494e4760a81b81525081565b6009546001600160a01b031633146112d15760405162461bcd60e51b815260040161055f906129db565b6112d96120ad565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906113289030906004016127b6565b60206040518083038186803b15801561134057600080fd5b505afa158015611354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113789190612727565b6001600160a01b0385166000908152600c602052604090205490915060ff166113b35760405162461bcd60e51b815260040161055f9061298c565b60408051600380825260808201909252600091602082016060803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061141857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561146c57600080fd5b505afa158015611480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a4919061249f565b816001815181106114c557634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050848160028151811061150757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600854604080516350d25bcd60e01b8152905160009492909216926350d25bcd92600480840193829003018186803b15801561155c57600080fd5b505afa158015611570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115949190612727565b90506000866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190612727565b61161490600a612cb9565b611629906a56da9d67d20d7709000000612c53565b90506000826116388388612d87565b6116429190612c53565b90508481106116635760405162461bcd60e51b815260040161055f90612a9b565b600754604051634401edf760e11b81526000916001600160a01b031690638803dbee9061169c908a9086908a908e904290600401612b8c565b600060405180830381600087803b1580156116b657600080fd5b505af11580156116ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116f29190810190612634565b905060008160008151811061171757634e487b7160e01b600052603260045260246000fd5b60200260200101519050600087600054836117329190612d87565b61173c9190612c53565b600a546001600160a01b031660009081526001602052604081205491925090821061178157600a546001600160a01b0316600090815260016020526040902054611783565b815b905080156117a157600a546117a1906001600160a01b031682612033565b8260115410156117c35760405162461bcd60e51b815260040161055f90612a54565b82601160008282546117d59190612da6565b925050819055507f0261b60f729f5f87ff22bb93906649fdb9a878e2242dd4ce7f1f03a2b7ecfcf58c8c8c84878e60005460405161181997969594939291906127ee565b60405180910390a1505050505050505050505050565b80611923577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561188d57600080fd5b505afa1580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c5919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b81526004016118f091906127b6565b600060405180830381600087803b15801561190a57600080fd5b505af115801561191e573d6000803e3d6000fd5b505050505b336000908152600e60209081526040808320546001909252909120546119499190612da6565b8211156119685760405162461bcd60e51b815260040161055f906128fe565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906119b79030906004016127b6565b60206040518083038186803b1580156119cf57600080fd5b505afa1580156119e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a079190612727565b9050600080548285611a199190612d87565b611a239190612c53565b9050600060055442611a359190612c3b565b905060006040518060600160405280336001600160a01b0316815260200187815260200183815250604051602001611a6d9190612b62565b60408051601f1981840301815291815281516020928301206000818152600d90935291205490915015611ab25760405162461bcd60e51b815260040161055f90612b37565b6000818152600d60209081526040808320869055338352600e90915281208054889290611ae0908490612c3b565b909155505060405133907f99e851f3e691e421e8cb75d61f7ecfa09423e645915271a1813ed6c148c2a0a990611b1b90899086908890612bfc565b60405180910390a2505050505050565b610dd93382612187565b60006001600160a01b038316301415611b605760405162461bcd60e51b815260040161055f90612ac5565b33600090815260016020526040902054611b7b908390612da6565b33600090815260016020526040808220929092556001600160a01b03851681522054611ba8908390612c3b565b6001600160a01b038416600081815260016020526040908190209290925590513390600080516020612e28833981519152906105e8908690612850565b600b546001600160a01b03163314611c0f5760405162461bcd60e51b815260040161055f90612a01565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60055481565b6008546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b546001600160a01b03163314611c945760405162461bcd60e51b815260040161055f90612a01565b620151808110158015611caa575062278d008111155b611cc65760405162461bcd60e51b815260040161055f906129bb565b600555565b60115481565b6009546001600160a01b03163314611cfb5760405162461bcd60e51b815260040161055f906129db565b611d036120ad565b806011541015611d255760405162461bcd60e51b815260040161055f90612a54565b8060116000828254611d379190612da6565b909155505060405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90611d8b90600090859060040161282c565b602060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddd91906126f3565b611de657600080fd5b7f9af9b85f0dc506d38e3da126c4cfb91ad80e95972cdf8de836acbcb914ce746c816040516111329190612850565b42841015611e355760405162461bcd60e51b815260040161055f90612aea565b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611e8883612dbd565b919050558a604051602001611ea296959493929190612859565b60405160208183030381529060405280519060200120604051602001611ec992919061279b565b604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051611f06949392919061288d565b6020604051602081039080840390855afa158015611f28573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611f5e5750886001600160a01b0316816001600160a01b0316145b611f7a5760405162461bcd60e51b815260040161055f90612a29565b6001600160a01b03808a166000818152600260209081526040808320948d1680845294909152908190208a9055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611fd5908b90612850565b60405180910390a3505050505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600e6020526000908152604090205481565b61202f8282612187565b5050565b806000546120419190612da6565b60009081556001600160a01b038316815260016020526040902054612067908290612da6565b6001600160a01b038316600081815260016020526040808220939093559151600080516020612e28833981519152906120a1908590612850565b60405180910390a35050565b62015180601054426120bf9190612da6565b11156121855742601055600f546040516370a0823160e01b81526103e891906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061211d9030906004016127b6565b60206040518083038186803b15801561213557600080fd5b505afa158015612149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216d9190612727565b6121779190612d87565b6121819190612c53565b6011555b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b1580156121e057600080fd5b505afa1580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612218919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b815260040161224391906127b6565b600060405180830381600087803b15801561225d57600080fd5b505af1158015612271573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691506370a08231906122c49030906004016127b6565b60206040518083038186803b1580156122dc57600080fd5b505afa1580156122f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123149190612727565b905060005460001480612325575080155b15612339576123348383612412565b612362565b6000816000548461234a9190612d87565b6123549190612c53565b90506123608482612412565b505b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906123b2903390309087906004016127ca565b602060405180830381600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240491906126f3565b61240d57600080fd5b505050565b806000546124209190612c3b565b60009081556001600160a01b038316815260016020526040902054612446908290612c3b565b6001600160a01b038316600081815260016020526040808220939093559151909190600080516020612e28833981519152906120a1908590612850565b600060208284031215612494578081fd5b81356106f281612e04565b6000602082840312156124b0578081fd5b81516106f281612e04565b600080604083850312156124cd578081fd5b82356124d881612e04565b915060208301356124e881612e04565b809150509250929050565b600080600060608486031215612507578081fd5b833561251281612e04565b9250602084013561252281612e04565b929592945050506040919091013590565b600080600080600080600060e0888a03121561254d578283fd5b873561255881612e04565b9650602088013561256881612e04565b95506040880135945060608801359350608088013560ff8116811461258b578384fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156125ba578182fd5b82356125c581612e04565b915060208301356124e881612e19565b600080604083850312156125e7578182fd5b82356125f281612e04565b946020939093013593505050565b600080600060608486031215612614578283fd5b833561261f81612e04565b95602085013595506040909401359392505050565b60006020808385031215612646578182fd5b825167ffffffffffffffff8082111561265d578384fd5b818501915085601f830112612670578384fd5b81518181111561268257612682612dee565b838102604051601f19603f830116810181811085821117156126a6576126a6612dee565b604052828152858101935084860182860187018a10156126c4578788fd5b8795505b838610156126e65780518552600195909501949386019386016126c8565b5098975050505050505050565b600060208284031215612704578081fd5b81516106f281612e19565b600060208284031215612720578081fd5b5035919050565b600060208284031215612738578081fd5b5051919050565b60008060408385031215612751578182fd5b8235915060208301356124e881612e19565b600080600060608486031215612777578081fd5b8335925060208401359150604084013561279081612e19565b809150509250925092565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03978816815295909616602086015260408501939093526060840191909152608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b818110156128d7578581018301518582016040015282016128bb565b818111156128e85783604083870101525b50601f01601f1916929092016040019392505050565b602080825260139082015272494e53554646494349454e545f53484152455360681b604082015260600190565b60208082526017908201527f4441494c595f50454e414c54595f544f4f5f4c41524745000000000000000000604082015260600190565b60208082526010908201526f554e4c4f434b5f544f4f5f4541524c5960801b604082015260600190565b6020808252601590820152741513d2d15397d393d517d5d2125511531254d51151605a1b604082015260600190565b602080825260069082015265424f554e445360d01b604082015260600190565b6020808252600c908201526b2727aa2fa3aaa0a92224a0a760a11b604082015260600190565b6020808252600e908201526d4e4f545f474f5645524e414e434560901b604082015260600190565b602080825260119082015270494e56414c49445f5349474e415455524560781b604082015260600190565b6020808252600690820152654c494d49545360d01b604082015260600190565b6020808252600d908201526c1393d7d0d3d353525513515395609a1b604082015260600190565b60208082526010908201526f0929ca6aa8c8c9286928a9ca8be8288b60831b604082015260600190565b6020808252600b908201526a4241445f4144445245535360a81b604082015260600190565b60208082526010908201526f111150511312539157d156141254915160821b604082015260600190565b602080825260099082015268544f4f5f4c4152474560b81b604082015260600190565b602080825260119082015270434f4d4d49544d454e545f45584953545360781b604082015260600190565b81516001600160a01b03168152602080830151908201526040918201519181019190915260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612bdb5784516001600160a01b031683529383019391830191600101612bb6565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b60ff91909116815260200190565b60008219821115612c4e57612c4e612dd8565b500190565b600082612c6e57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611612c855750612cb0565b818704821115612c9757612c97612dd8565b80861615612ca457918102915b9490941c938002612c76565b94509492505050565b60006106f26000198484600082612cd2575060016106f2565b81612cdf575060006106f2565b8160018114612cf55760028114612cff57612d2c565b60019150506106f2565b60ff841115612d1057612d10612dd8565b6001841b915084821115612d2657612d26612dd8565b506106f2565b5060208310610133831016604e8410600b8410161715612d5f575081810a83811115612d5a57612d5a612dd8565b6106f2565b612d6c8484846001612c73565b808604821115612d7e57612d7e612dd8565b02949350505050565b6000816000190483118215151615612da157612da1612dd8565b500290565b600082821015612db857612db8612dd8565b500390565b6000600019821415612dd157612dd1612dd8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610dd957600080fd5b8015158114610dd957600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a8c2242f25e07400bcca16448c8ff485560366840b7295ef5c83c38b0d88857064736f6c63430008010033000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000231e764b44b2c1b7ca171fa8021a24ed520cde1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ad2d3389895d00910a09f85b12073170af43a2f0000000000000000000000001304f1b9e8eb2c328b564e7fad2c8402a5954572000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061025e5760003560e01c80638273402711610146578063ab033ea9116100c3578063c6257b4c11610087578063c6257b4c146104a0578063c7f9218a146104a8578063d505accf146104bb578063dd62ed3e146104ce578063e336ac44146104e1578063f893d346146104f45761025e565b8063ab033ea914610462578063adec4a5014610475578063b6dcaf651461047d578063c066f75e14610485578063c4911ee01461048d5761025e565b806395d89b411161010a57806395d89b411461040e578063996cba68146104165780639b4ee06414610429578063a59f3e0c1461043c578063a9059cbb1461044f5761025e565b806382734027146103af578063839df945146103c25780638a07b419146103d55780638a0dac4a146103e85780638ec0a9eb146103fb5761025e565b806333cfcd3b116101df578063452a9320116101a3578063452a93201461035e5780635aa6e675146103665780636e6eff3e1461036e57806370a082311461037657806372a3b8b3146103895780637ecebe001461039c5761025e565b806333cfcd3b146103205780633644e5151461033357806338156a971461033b5780633a5381b51461034e578063447b15f4146103565761025e565b80632017422d116102265780632017422d146102d357806323b872dd146102db5780632681f7e4146102ee57806330adf81f14610303578063313ce5671461030b5761025e565b806306fdde0314610263578063070141c114610281578063095ea7b3146102965780631322ed44146102b657806318160ddd146102cb575b600080fd5b61026b610507565b60405161027891906128ab565b60405180910390f35b61029461028f36600461270f565b610535565b005b6102a96102a43660046125d5565b61058f565b6040516102789190612845565b6102be6105f9565b6040516102789190612850565b6102be6105ff565b6102be610605565b6102a96102e93660046124f3565b61060b565b6102f66106f9565b60405161027891906127b6565b6102be610708565b61031361072c565b6040516102789190612c2d565b61029461032e366004612763565b610731565b6102be610aca565b6102946103493660046125a8565b610ad0565b6102f6610b25565b6102be610b34565b6102f6610d1b565b6102f6610d2a565b6102be610d39565b6102be610384366004612483565b610d3f565b6102a9610397366004612483565b610d5a565b6102be6103aa366004612483565b610d6f565b6102946103bd36600461270f565b610d81565b6102be6103d036600461270f565b610ddc565b6102946103e336600461273f565b610dee565b6102946103f6366004612483565b6110bd565b6102be610409366004612600565b61113d565b61026b611280565b6102946104243660046124f3565b6112a7565b61029461043736600461273f565b61182f565b61029461044a36600461270f565b611b2b565b6102a961045d3660046125d5565b611b35565b610294610470366004612483565b611be5565b6102be611c31565b6102f6611c37565b6102f6611c46565b61029461049b36600461270f565b611c6a565b6102be611ccb565b6102946104b636600461270f565b611cd1565b6102946104c9366004612533565b611e15565b6102be6104dc3660046124bb565b611fe8565b6102be6104ef366004612483565b612013565b6102946105023660046125d5565b612025565b6040518060400160405280601281526020017120b222bc1029ba30b5b4b733902a37b5b2b760711b81525081565b600b546001600160a01b031633146105685760405162461bcd60e51b815260040161055f90612a01565b60405180910390fd5b6103e881111561058a5760405162461bcd60e51b815260040161055f90612b14565b600655565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105e8908690612850565b60405180910390a350600192915050565b60105481565b60005481565b600f5481565b6001600160a01b03831660009081526001602052604081205461062f908390612da6565b6001600160a01b0385166000908152600160209081526040808320939093556002815282822033835290522054610667908390612da6565b6001600160a01b0380861660009081526002602090815260408083203384528252808320949094559186168152600190915220546106a6908390612c3b565b6001600160a01b038085166000818152600160205260409081902093909355915190861690600080516020612e28833981519152906106e6908690612850565b60405180910390a35060015b9392505050565b6007546001600160a01b031681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b80610825577f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c36001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561078f57600080fd5b505afa1580156107a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c7919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b81526004016107f291906127b6565b600060405180830381600087803b15801561080c57600080fd5b505af1158015610820573d6000803e3d6000fd5b505050505b8142116108445760405162461bcd60e51b815260040161055f90612962565b60006040518060600160405280336001600160a01b031681526020018581526020018481525060405160200161087a9190612b62565b60408051601f1981840301815291815281516020928301206000818152600d909352912054909150806108bf5760405162461bcd60e51b815260040161055f90612a74565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a082319061090e9030906004016127b6565b60206040518083038186803b15801561092657600080fd5b505afa15801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e9190612727565b90506000805482886109709190612d87565b61097a9190612c53565b9050600083821161098b578161098d565b835b6000868152600d60209081526040808320839055338352600e909152812080549293508a929091906109c0908490612da6565b909155506109d090503389612033565b60405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c3169063a9059cbb90610a1e903390859060040161282c565b602060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7091906126f3565b610a7957600080fd5b336001600160a01b03167f71ec6330779eb13064fdcb040e03c78e2f9e68fb56bcf3ad120223fd1bcd421889898785604051610ab89493929190612c12565b60405180910390a25050505050505050565b60035481565b600b546001600160a01b03163314610afa5760405162461bcd60e51b815260040161055f90612a01565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600a546001600160a01b031681565b60008054610b4457506000610d18565b6000547f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c36001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd8919061249f565b6001600160a01b03166320b49935306040518263ffffffff1660e01b8152600401610c0391906127b6565b60206040518083038186803b158015610c1b57600080fd5b505afa158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c539190612727565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a0823190610c9f9030906004016127b6565b60206040518083038186803b158015610cb757600080fd5b505afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190612727565b610cf99190612c3b565b610d0b90670de0b6b3a7640000612d87565b610d159190612c53565b90505b90565b6009546001600160a01b031681565b600b546001600160a01b031681565b60065481565b6001600160a01b031660009081526001602052604090205490565b600c6020526000908152604090205460ff1681565b60046020526000908152604090205481565b600b546001600160a01b03163314610dab5760405162461bcd60e51b815260040161055f90612a01565b60c8811115610dcc5760405162461bcd60e51b815260040161055f9061292b565b600f819055610dd96120ad565b50565b600d6020526000908152604090205481565b80610ee2577f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c36001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4c57600080fd5b505afa158015610e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e84919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b8152600401610eaf91906127b6565b600060405180830381600087803b158015610ec957600080fd5b505af1158015610edd573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a0823190610f319030906004016127b6565b60206040518083038186803b158015610f4957600080fd5b505afa158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190612727565b9050600080548285610f939190612d87565b610f9d9190612c53565b905060006103e860065483610fb29190612d87565b610fbc9190612c53565b9050610fc83386612033565b60405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c3169063a9059cbb90611016903390859060040161282c565b602060405180830381600087803b15801561103057600080fd5b505af1158015611044573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106891906126f3565b61107157600080fd5b336001600160a01b03167ff401020088a10cade8fca19ce1c014addc7dd08d911cdd8a9de214dbfafbbe758684846040516110ae93929190612bfc565b60405180910390a25050505050565b600b546001600160a01b031633146110e75760405162461bcd60e51b815260040161055f90612a01565b600980546001600160a01b0319166001600160a01b0383161790556040517f24b6eb124e4a66ed0707b21614e0016f97d5da36704831722f30b8bd70644d35906111329083906127b6565b60405180910390a150565b6000805461114d575060006106f2565b60006040518060600160405280866001600160a01b03168152602001858152602001848152506040516020016111839190612b62565b60408051601f1981840301815282825280516020918201206000818152600d909252918120546370a0823160e01b845291935090916001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a08231906111f79030906004016127b6565b60206040518083038186803b15801561120f57600080fd5b505afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112479190612727565b90506000805482886112599190612d87565b6112639190612c53565b90508281116112725780611274565b825b98975050505050505050565b6040518060400160405280600b81526020016a4144582d5354414b494e4760a81b81525081565b6009546001600160a01b031633146112d15760405162461bcd60e51b815260040161055f906129db565b6112d96120ad565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a08231906113289030906004016127b6565b60206040518083038186803b15801561134057600080fd5b505afa158015611354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113789190612727565b6001600160a01b0385166000908152600c602052604090205490915060ff166113b35760405162461bcd60e51b815260040161055f9061298c565b60408051600380825260808201909252600091602082016060803683370190505090507f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c38160008151811061141857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561146c57600080fd5b505afa158015611480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a4919061249f565b816001815181106114c557634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050848160028151811061150757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600854604080516350d25bcd60e01b8152905160009492909216926350d25bcd92600480840193829003018186803b15801561155c57600080fd5b505afa158015611570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115949190612727565b90506000866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190612727565b61161490600a612cb9565b611629906a56da9d67d20d7709000000612c53565b90506000826116388388612d87565b6116429190612c53565b90508481106116635760405162461bcd60e51b815260040161055f90612a9b565b600754604051634401edf760e11b81526000916001600160a01b031690638803dbee9061169c908a9086908a908e904290600401612b8c565b600060405180830381600087803b1580156116b657600080fd5b505af11580156116ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116f29190810190612634565b905060008160008151811061171757634e487b7160e01b600052603260045260246000fd5b60200260200101519050600087600054836117329190612d87565b61173c9190612c53565b600a546001600160a01b031660009081526001602052604081205491925090821061178157600a546001600160a01b0316600090815260016020526040902054611783565b815b905080156117a157600a546117a1906001600160a01b031682612033565b8260115410156117c35760405162461bcd60e51b815260040161055f90612a54565b82601160008282546117d59190612da6565b925050819055507f0261b60f729f5f87ff22bb93906649fdb9a878e2242dd4ce7f1f03a2b7ecfcf58c8c8c84878e60005460405161181997969594939291906127ee565b60405180910390a1505050505050505050505050565b80611923577f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c36001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561188d57600080fd5b505afa1580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c5919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b81526004016118f091906127b6565b600060405180830381600087803b15801561190a57600080fd5b505af115801561191e573d6000803e3d6000fd5b505050505b336000908152600e60209081526040808320546001909252909120546119499190612da6565b8211156119685760405162461bcd60e51b815260040161055f906128fe565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a08231906119b79030906004016127b6565b60206040518083038186803b1580156119cf57600080fd5b505afa1580156119e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a079190612727565b9050600080548285611a199190612d87565b611a239190612c53565b9050600060055442611a359190612c3b565b905060006040518060600160405280336001600160a01b0316815260200187815260200183815250604051602001611a6d9190612b62565b60408051601f1981840301815291815281516020928301206000818152600d90935291205490915015611ab25760405162461bcd60e51b815260040161055f90612b37565b6000818152600d60209081526040808320869055338352600e90915281208054889290611ae0908490612c3b565b909155505060405133907f99e851f3e691e421e8cb75d61f7ecfa09423e645915271a1813ed6c148c2a0a990611b1b90899086908890612bfc565b60405180910390a2505050505050565b610dd93382612187565b60006001600160a01b038316301415611b605760405162461bcd60e51b815260040161055f90612ac5565b33600090815260016020526040902054611b7b908390612da6565b33600090815260016020526040808220929092556001600160a01b03851681522054611ba8908390612c3b565b6001600160a01b038416600081815260016020526040908190209290925590513390600080516020612e28833981519152906105e8908690612850565b600b546001600160a01b03163314611c0f5760405162461bcd60e51b815260040161055f90612a01565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60055481565b6008546001600160a01b031681565b7f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c381565b600b546001600160a01b03163314611c945760405162461bcd60e51b815260040161055f90612a01565b620151808110158015611caa575062278d008111155b611cc65760405162461bcd60e51b815260040161055f906129bb565b600555565b60115481565b6009546001600160a01b03163314611cfb5760405162461bcd60e51b815260040161055f906129db565b611d036120ad565b806011541015611d255760405162461bcd60e51b815260040161055f90612a54565b8060116000828254611d379190612da6565b909155505060405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c3169063a9059cbb90611d8b90600090859060040161282c565b602060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddd91906126f3565b611de657600080fd5b7f9af9b85f0dc506d38e3da126c4cfb91ad80e95972cdf8de836acbcb914ce746c816040516111329190612850565b42841015611e355760405162461bcd60e51b815260040161055f90612aea565b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611e8883612dbd565b919050558a604051602001611ea296959493929190612859565b60405160208183030381529060405280519060200120604051602001611ec992919061279b565b604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051611f06949392919061288d565b6020604051602081039080840390855afa158015611f28573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611f5e5750886001600160a01b0316816001600160a01b0316145b611f7a5760405162461bcd60e51b815260040161055f90612a29565b6001600160a01b03808a166000818152600260209081526040808320948d1680845294909152908190208a9055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611fd5908b90612850565b60405180910390a3505050505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600e6020526000908152604090205481565b61202f8282612187565b5050565b806000546120419190612da6565b60009081556001600160a01b038316815260016020526040902054612067908290612da6565b6001600160a01b038316600081815260016020526040808220939093559151600080516020612e28833981519152906120a1908590612850565b60405180910390a35050565b62015180601054426120bf9190612da6565b11156121855742601055600f546040516370a0823160e01b81526103e891906001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a082319061211d9030906004016127b6565b60206040518083038186803b15801561213557600080fd5b505afa158015612149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216d9190612727565b6121779190612d87565b6121819190612c53565b6011555b565b7f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c36001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b1580156121e057600080fd5b505afa1580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612218919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b815260040161224391906127b6565b600060405180830381600087803b15801561225d57600080fd5b505af1158015612271573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c31691506370a08231906122c49030906004016127b6565b60206040518083038186803b1580156122dc57600080fd5b505afa1580156122f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123149190612727565b905060005460001480612325575080155b15612339576123348383612412565b612362565b6000816000548461234a9190612d87565b6123549190612c53565b90506123608482612412565b505b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906323b872dd906123b2903390309087906004016127ca565b602060405180830381600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240491906126f3565b61240d57600080fd5b505050565b806000546124209190612c3b565b60009081556001600160a01b038316815260016020526040902054612446908290612c3b565b6001600160a01b038316600081815260016020526040808220939093559151909190600080516020612e28833981519152906120a1908590612850565b600060208284031215612494578081fd5b81356106f281612e04565b6000602082840312156124b0578081fd5b81516106f281612e04565b600080604083850312156124cd578081fd5b82356124d881612e04565b915060208301356124e881612e04565b809150509250929050565b600080600060608486031215612507578081fd5b833561251281612e04565b9250602084013561252281612e04565b929592945050506040919091013590565b600080600080600080600060e0888a03121561254d578283fd5b873561255881612e04565b9650602088013561256881612e04565b95506040880135945060608801359350608088013560ff8116811461258b578384fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156125ba578182fd5b82356125c581612e04565b915060208301356124e881612e19565b600080604083850312156125e7578182fd5b82356125f281612e04565b946020939093013593505050565b600080600060608486031215612614578283fd5b833561261f81612e04565b95602085013595506040909401359392505050565b60006020808385031215612646578182fd5b825167ffffffffffffffff8082111561265d578384fd5b818501915085601f830112612670578384fd5b81518181111561268257612682612dee565b838102604051601f19603f830116810181811085821117156126a6576126a6612dee565b604052828152858101935084860182860187018a10156126c4578788fd5b8795505b838610156126e65780518552600195909501949386019386016126c8565b5098975050505050505050565b600060208284031215612704578081fd5b81516106f281612e19565b600060208284031215612720578081fd5b5035919050565b600060208284031215612738578081fd5b5051919050565b60008060408385031215612751578182fd5b8235915060208301356124e881612e19565b600080600060608486031215612777578081fd5b8335925060208401359150604084013561279081612e19565b809150509250925092565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03978816815295909616602086015260408501939093526060840191909152608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b818110156128d7578581018301518582016040015282016128bb565b818111156128e85783604083870101525b50601f01601f1916929092016040019392505050565b602080825260139082015272494e53554646494349454e545f53484152455360681b604082015260600190565b60208082526017908201527f4441494c595f50454e414c54595f544f4f5f4c41524745000000000000000000604082015260600190565b60208082526010908201526f554e4c4f434b5f544f4f5f4541524c5960801b604082015260600190565b6020808252601590820152741513d2d15397d393d517d5d2125511531254d51151605a1b604082015260600190565b602080825260069082015265424f554e445360d01b604082015260600190565b6020808252600c908201526b2727aa2fa3aaa0a92224a0a760a11b604082015260600190565b6020808252600e908201526d4e4f545f474f5645524e414e434560901b604082015260600190565b602080825260119082015270494e56414c49445f5349474e415455524560781b604082015260600190565b6020808252600690820152654c494d49545360d01b604082015260600190565b6020808252600d908201526c1393d7d0d3d353525513515395609a1b604082015260600190565b60208082526010908201526f0929ca6aa8c8c9286928a9ca8be8288b60831b604082015260600190565b6020808252600b908201526a4241445f4144445245535360a81b604082015260600190565b60208082526010908201526f111150511312539157d156141254915160821b604082015260600190565b602080825260099082015268544f4f5f4c4152474560b81b604082015260600190565b602080825260119082015270434f4d4d49544d454e545f45584953545360781b604082015260600190565b81516001600160a01b03168152602080830151908201526040918201519181019190915260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612bdb5784516001600160a01b031683529383019391830191600101612bb6565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b60ff91909116815260200190565b60008219821115612c4e57612c4e612dd8565b500190565b600082612c6e57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611612c855750612cb0565b818704821115612c9757612c97612dd8565b80861615612ca457918102915b9490941c938002612c76565b94509492505050565b60006106f26000198484600082612cd2575060016106f2565b81612cdf575060006106f2565b8160018114612cf55760028114612cff57612d2c565b60019150506106f2565b60ff841115612d1057612d10612dd8565b6001841b915084821115612d2657612d26612dd8565b506106f2565b5060208310610133831016604e8410600b8410161715612d5f575081810a83811115612d5a57612d5a612dd8565b6106f2565b612d6c8484846001612c73565b808604821115612d7e57612d7e612dd8565b02949350505050565b6000816000190483118215151615612da157612da1612dd8565b500290565b600082821015612db857612db8612dd8565b500390565b6000600019821415612dd157612dd1612dd8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610dd957600080fd5b8015158114610dd957600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a8c2242f25e07400bcca16448c8ff485560366840b7295ef5c83c38b0d88857064736f6c63430008010033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000231e764b44b2c1b7ca171fa8021a24ed520cde1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ad2d3389895d00910a09f85b12073170af43a2f0000000000000000000000001304f1b9e8eb2c328b564e7fad2c8402a5954572000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7

-----Decoded View---------------
Arg [0] : token (address): 0xADE00C28244d5CE17D72E40330B1c318cD12B7c3
Arg [1] : uni (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [2] : oracle (address): 0x231e764B44b2C1b7Ca171fa8021A24ed520Cde10
Arg [3] : guardianAddr (address): 0x0000000000000000000000000000000000000000
Arg [4] : validatorStakingWallet (address): 0x1Ad2d3389895D00910A09f85B12073170af43a2F
Arg [5] : governanceAddr (address): 0x1304F1b9E8eB2c328B564E7Fad2C8402A5954572
Arg [6] : claimToken (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c3
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [2] : 000000000000000000000000231e764b44b2c1b7ca171fa8021a24ed520cde10
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000001ad2d3389895d00910a09f85b12073170af43a2f
Arg [5] : 0000000000000000000000001304f1b9e8eb2c328b564e7fad2c8402a5954572
Arg [6] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7


Deployed Bytecode Sourcemap

1608:13782:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1665:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7403:247;;;;;;:::i;:::-;;:::i;:::-;;3173:189;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5637:26::-;;;:::i;:::-;;;;;;;:::i;1832:23::-;;;:::i;5595:38::-;;;:::i;2865:303::-;;;;;;:::i;:::-;;:::i;4719:29::-;;;:::i;:::-;;;;;;;:::i;2121:108::-;;;:::i;1719:35::-;;;:::i;:::-;;;;;;;:::i;10749:878::-;;;;;;:::i;:::-;;:::i;1984:31::-;;;:::i;8022:185::-;;;;;;:::i;:::-;;:::i;4980:24::-;;;:::i;8228:232::-;;;:::i;4953:23::-;;;:::i;5008:25::-;;;:::i;4674:39::-;;;:::i;2468:103::-;;;;;;:::i;:::-;;:::i;5165:55::-;;;;;;:::i;:::-;;:::i;2233:38::-;;;;;;:::i;:::-;;:::i;7186:214::-;;;;;;:::i;:::-;;:::i;5294:44::-;;;;;;:::i;:::-;;:::i;11632:481::-;;;;;;:::i;:::-;;:::i;7843:176::-;;;;;;:::i;:::-;;:::i;9516:495::-;;;;;;:::i;:::-;;:::i;1758:45::-;;;:::i;12375:2280::-;;;;;;:::i;:::-;;:::i;10016:728::-;;;;;;:::i;:::-;;:::i;9332:77::-;;;;;;:::i;:::-;;:::i;2576:284::-;;;;;;:::i;:::-;;:::i;7054:129::-;;;;;;:::i;:::-;;:::i;4636:34::-;;;:::i;4817:30::-;;;:::i;4914:35::-;;;:::i;7653:187::-;;;;;;:::i;:::-;;:::i;5667:26::-;;;:::i;14660:494::-;;;;;;:::i;:::-;;:::i;3516:600::-;;;;;;:::i;:::-;;:::i;3367:130::-;;;;;;:::i;:::-;;:::i;5386:45::-;;;;;;:::i;:::-;;:::i;9414:97::-;;;;;;:::i;:::-;;:::i;1665:50::-;;;;;;;;;;;;;;-1:-1:-1;;;1665:50:0;;;;:::o;7403:247::-;7469:10;;-1:-1:-1;;;;;7469:10:0;7483;7469:24;7461:51;;;;-1:-1:-1;;;7461:51:0;;;;;;;:::i;:::-;;;;;;;;;7586:4;7570:12;:20;;7562:42;;;;-1:-1:-1;;;7562:42:0;;;;;;;:::i;:::-;7609:21;:36;7403:247::o;3173:189::-;3265:10;3238:12;3257:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3257:28:0;;;;;;;;;;:37;;;3304;3238:12;;3257:28;;3304:37;;;;3288:6;;3304:37;:::i;:::-;;;;;;;;-1:-1:-1;3353:4:0;3173:189;;;;:::o;5637:26::-;;;;:::o;1832:23::-;;;;:::o;5595:38::-;;;;:::o;2865:303::-;-1:-1:-1;;;;;2980:14:0;;2944:12;2980:14;;;:8;:14;;;;;;:23;;2997:6;;2980:23;:::i;:::-;-1:-1:-1;;;;;2963:14:0;;;;;;:8;:14;;;;;;;;:40;;;;3036:7;:13;;;;;3050:10;3036:25;;;;;;:34;;3064:6;;3036:34;:::i;:::-;-1:-1:-1;;;;;3008:13:0;;;;;;;:7;:13;;;;;;;;3022:10;3008:25;;;;;;;:62;;;;3090:12;;;;;:8;:12;;;;;:21;;3105:6;;3090:21;:::i;:::-;-1:-1:-1;;;;;3075:12:0;;;;;;;:8;:12;;;;;;;:36;;;;3121:26;;;;;;-1:-1:-1;;;;;;;;;;;3121:26:0;;;3140:6;;3121:26;:::i;:::-;;;;;;;;-1:-1:-1;3159:4:0;2865:303;;;;;;:::o;4719:29::-;;;-1:-1:-1;;;;;4719:29:0;;:::o;2121:108::-;2163:66;2121:108;:::o;1719:35::-;1752:2;1719:35;:::o;10749:878::-;10830:8;10825:71;;10840:8;-1:-1:-1;;;;;10840:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10840:41:0;;10890:4;10840:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10825:71;10929:9;10911:15;:27;10903:56;;;;-1:-1:-1;;;10903:56:0;;;;;;;:::i;:::-;10964:20;11008:77;;;;;;;;11034:10;-1:-1:-1;;;;;11008:77:0;;;;;11054:6;11008:77;;;;11073:9;11008:77;;;10997:89;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10997:89:0;;;;;;;;;10987:100;;10997:89;10987:100;;;;11092:14;11109:25;;;:11;:25;;;;;;10987:100;;-1:-1:-1;11147:13:0;11139:39;;;;-1:-1:-1;;;11139:39:0;;;;;;;:::i;:::-;11199:33;;-1:-1:-1;;;11199:33:0;;11183:13;;-1:-1:-1;;;;;11199:8:0;:18;;;;:33;;11226:4;;11199:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11183:49;;11237:18;11280:11;;11268:8;11259:6;:17;;;;:::i;:::-;11258:33;;;;:::i;:::-;11237:54;;11296:19;11334:9;11318:13;:25;:53;;11358:13;11318:53;;;11346:9;11318:53;11406:1;11378:25;;;:11;:25;;;;;;;;:29;;;11425:10;11412:24;;:12;:24;;;;;:34;;11296:75;;-1:-1:-1;11440:6:0;;11412:24;;11406:1;11412:34;;11440:6;;11412:34;:::i;:::-;;;;-1:-1:-1;11453:29:0;;-1:-1:-1;11463:10:0;11475:6;11453:9;:29::i;:::-;11495:45;;-1:-1:-1;;;11495:45:0;;-1:-1:-1;;;;;11495:8:0;:17;;;;:45;;11513:10;;11525:14;;11495:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11487:54;;;;;;11565:10;-1:-1:-1;;;;;11553:69:0;;11577:6;11585:9;11596;11607:14;11553:69;;;;;;;;;:::i;:::-;;;;;;;;10749:878;;;;;;;;:::o;1984:31::-;;;;:::o;8022:185::-;8111:10;;-1:-1:-1;;;;;8111:10:0;8125;8111:24;8103:51;;;;-1:-1:-1;;;8103:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8159:29:0;;;;;;;;:22;:29;;;;;:43;;-1:-1:-1;;8159:43:0;;;;;;;;;;8022:185::o;4980:24::-;;;-1:-1:-1;;;;;4980:24:0;;:::o;8228:232::-;8273:4;8288:11;;8284:30;;-1:-1:-1;8313:1:0;8306:8;;8284:30;8444:11;;8364:8;-1:-1:-1;;;;;8364:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8364:45:0;;8418:4;8364:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8328:33;;-1:-1:-1;;;8328:33:0;;-1:-1:-1;;;;;8328:8:0;:18;;;;:33;;8355:4;;8328:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:96;;;;:::i;:::-;8327:109;;8432:4;8327:109;:::i;:::-;8326:129;;;;:::i;:::-;8319:136;;8228:232;;:::o;4953:23::-;;;-1:-1:-1;;;;;4953:23:0;;:::o;5008:25::-;;;-1:-1:-1;;;;;5008:25:0;;:::o;4674:39::-;;;;:::o;2468:103::-;-1:-1:-1;;;;;2551:15:0;2525:12;2551:15;;;:8;:15;;;;;;;2468:103::o;5165:55::-;;;;;;;;;;;;;;;:::o;2233:38::-;;;;;;;;;;;;;:::o;7186:214::-;7246:10;;-1:-1:-1;;;;;7246:10:0;7260;7246:24;7238:51;;;;-1:-1:-1;;;7238:51:0;;;;;;;:::i;:::-;7309:3;7302;:10;;7294:46;;;;-1:-1:-1;;;7294:46:0;;;;;;;:::i;:::-;7345:26;:32;;;7382:13;:11;:13::i;:::-;7186:214;:::o;5294:44::-;;;;;;;;;;;;;:::o;11632:481::-;11698:8;11693:71;;11708:8;-1:-1:-1;;;;;11708:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11708:41:0;;11758:4;11708:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11693:71;11787:33;;-1:-1:-1;;;11787:33:0;;11771:13;;-1:-1:-1;;;;;11787:8:0;:18;;;;:33;;11814:4;;11787:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11771:49;;11825:14;11864:11;;11852:8;11843:6;:17;;;;:::i;:::-;11842:33;;;;:::i;:::-;11825:50;;11880:19;11940:4;11915:21;;11903:9;:33;;;;:::i;:::-;11902:42;;;;:::i;:::-;11880:64;;11949:29;11959:10;11971:6;11949:9;:29::i;:::-;11991:45;;-1:-1:-1;;;11991:45:0;;-1:-1:-1;;;;;11991:8:0;:17;;;;:45;;12009:10;;12021:14;;11991:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11983:54;;;;;;12062:10;-1:-1:-1;;;;;12049:59:0;;12074:6;12082:9;12093:14;12049:59;;;;;;;;:::i;:::-;;;;;;;;11632:481;;;;;:::o;7843:176::-;7907:10;;-1:-1:-1;;;;;7907:10:0;7921;7907:24;7899:51;;;;-1:-1:-1;;;7899:51:0;;;;;;;:::i;:::-;7955:8;:22;;-1:-1:-1;;;;;;7955:22:0;-1:-1:-1;;;;;7955:22:0;;;;;7987:27;;;;;;7955:22;;7987:27;:::i;:::-;;;;;;;;7843:176;:::o;9516:495::-;9617:4;9632:11;;9628:30;;-1:-1:-1;9657:1:0;9650:8;;9628:30;9663:20;9707:72;;;;;;;;9733:5;-1:-1:-1;;;;;9707:72:0;;;;;9748:6;9707:72;;;;9767:9;9707:72;;;9696:84;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9696:84:0;;;;;;;;;9686:95;;9696:84;9686:95;;;;9786:14;9803:25;;;:11;:25;;;;;;;-1:-1:-1;;;9849:33:0;;9686:95;;-1:-1:-1;9803:25:0;;-1:-1:-1;;;;;9849:8:0;:18;;;;:33;;9876:4;;9849:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9833:49;;9887:18;9930:11;;9918:8;9909:6;:17;;;;:::i;:::-;9908:33;;;;:::i;:::-;9887:54;;9969:9;9953:13;:25;:53;;9993:13;9953:53;;;9981:9;9953:53;9946:60;9516:495;-1:-1:-1;;;;;;;;9516:495:0:o;1758:45::-;;;;;;;;;;;;;;-1:-1:-1;;;1758:45:0;;;;:::o;12375:2280::-;12469:8;;-1:-1:-1;;;;;12469:8:0;12455:10;:22;12447:47;;;;-1:-1:-1;;;12447:47:0;;;;;;;:::i;:::-;12547:13;:11;:13::i;:::-;12771:33;;-1:-1:-1;;;12771:33:0;;12755:13;;-1:-1:-1;;;;;12771:8:0;:18;;;;:33;;12798:4;;12771:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12860:32:0;;;;;;:22;:32;;;;;;12755:49;;-1:-1:-1;12860:32:0;;12852:66;;;;-1:-1:-1;;;12852:66:0;;;;;;;:::i;:::-;12949:16;;;12963:1;12949:16;;;;;;;;;12925:21;;12949:16;;;;;;;;;;-1:-1:-1;12949:16:0;12925:40;;12988:8;12970:4;12975:1;12970:7;;;;;;-1:-1:-1;;;12970:7:0;;;;;;;;;-1:-1:-1;;;;;12970:27:0;;;:7;;;;;;;;;;:27;;;;13012:7;;:14;;;-1:-1:-1;;;13012:14:0;;;;:7;;;;;:12;;:14;;;;;12970:7;;13012:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13002:4;13007:1;13002:7;;;;;;-1:-1:-1;;;13002:7:0;;;;;;;;;;;;;;:24;-1:-1:-1;;;;;13002:24:0;;;-1:-1:-1;;;;;13002:24:0;;;;;13041:8;13031:4;13036:1;13031:7;;;;;;-1:-1:-1;;;13031:7:0;;;;;;;;;-1:-1:-1;;;;;13031:18:0;;;:7;;;;;;;;;;:18;;;;13385:12;;:27;;;-1:-1:-1;;;13385:27:0;;;;13372:10;;13385:12;;;;;:25;;:27;;;;;;;;;;:12;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13372:40;;13622:15;13670:8;-1:-1:-1;;;;;13657:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13651:39;;:2;:39;:::i;:::-;13640:51;;:7;:51;:::i;:::-;13622:69;-1:-1:-1;13696:17:0;13740:5;13717:19;13622:69;13717:6;:19;:::i;:::-;13716:29;;;;:::i;:::-;13696:49;;13773:8;13758:12;:23;13750:52;;;;-1:-1:-1;;;13750:52:0;;;;;;;:::i;:::-;13831:7;;:81;;-1:-1:-1;;;13831:81:0;;13807:21;;-1:-1:-1;;;;;13831:7:0;;:32;;:81;;13864:6;;13872:12;;13886:4;;13892:2;;13896:15;;13831:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13831:81:0;;;;;;;;;;;;:::i;:::-;13807:105;;13973:18;13994:7;14002:1;13994:10;;;;;;-1:-1:-1;;;13994:10:0;;;;;;;;;;;;;;;13973:31;;14164:17;14216:8;14201:11;;14185:13;:27;;;;:::i;:::-;14184:40;;;;:::i;:::-;14267:9;;-1:-1:-1;;;;;14267:9:0;14229:11;14258:19;;;:8;:19;;;;;;14164:60;;-1:-1:-1;14229:11:0;14243:34;;:71;;14304:9;;-1:-1:-1;;;;;14304:9:0;14295:19;;;;:8;:19;;;;;;14243:71;;;14280:12;14243:71;14229:85;-1:-1:-1;14323:10:0;;14319:44;;14345:9;;14335:28;;-1:-1:-1;;;;;14345:9:0;14356:6;14335:9;:28::i;:::-;14502:13;14484:14;;:31;;14476:50;;;;-1:-1:-1;;;14476:50:0;;;;;;;:::i;:::-;14549:13;14531:14;;:31;;;;;;;:::i;:::-;;;;;;;;14574:76;14583:8;14593:2;14597:6;14605;14613:13;14628:8;14638:11;;14574:76;;;;;;;;;;;;:::i;:::-;;;;;;;;12375:2280;;;;;;;;;;;;:::o;10016:728::-;10078:8;10073:71;;10088:8;-1:-1:-1;;;;;10088:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10088:41:0;;10138:4;10088:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10073:71;10205:10;10192:24;;;;:12;:24;;;;;;;;;10169:8;:20;;;;;;;:47;;10192:24;10169:47;:::i;:::-;10159:6;:57;;10151:89;;;;-1:-1:-1;;;10151:89:0;;;;;;;:::i;:::-;10261:33;;-1:-1:-1;;;10261:33:0;;10245:13;;-1:-1:-1;;;;;10261:8:0;:18;;;;:33;;10288:4;;10261:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10245:49;;10299:14;10338:11;;10326:8;10317:6;:17;;;;:::i;:::-;10316:33;;;;:::i;:::-;10299:50;;10354:14;10389:12;;10371:15;:30;;;;:::i;:::-;10354:47;;10406:20;10450:77;;;;;;;;10476:10;-1:-1:-1;;;;;10450:77:0;;;;;10496:6;10450:77;;;;10515:9;10450:77;;;10439:89;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10439:89:0;;;;;;;;;10429:100;;10439:89;10429:100;;;;10542:25;;;;:11;:25;;;;;;10429:100;;-1:-1:-1;10542:30:0;10534:60;;;;-1:-1:-1;;;10534:60:0;;;;;;;:::i;:::-;10601:25;;;;:11;:25;;;;;;;;:37;;;10656:10;10643:24;;:12;:24;;;;;:34;;10671:6;;10601:25;10643:34;;10671:6;;10643:34;:::i;:::-;;;;-1:-1:-1;;10689:50:0;;10698:10;;10689:50;;;;10710:6;;10718:9;;10729;;10689:50;:::i;:::-;;;;;;;;10016:728;;;;;;:::o;9332:77::-;9374:30;9385:10;9397:6;9374:10;:30::i;2576:284::-;2637:12;-1:-1:-1;;;;;2664:19:0;;2678:4;2664:19;;2656:43;;;;-1:-1:-1;;;2656:43:0;;;;;;;:::i;:::-;2736:10;2727:20;;;;:8;:20;;;;;;:29;;2750:6;;2727:29;:::i;:::-;2713:10;2704:20;;;;:8;:20;;;;;;:52;;;;-1:-1:-1;;;;;2776:12:0;;;;;;:21;;2791:6;;2776:21;:::i;:::-;-1:-1:-1;;;;;2761:12:0;;;;;;:8;:12;;;;;;;:36;;;;2807:32;;2816:10;;-1:-1:-1;;;;;;;;;;;2807:32:0;;;2832:6;;2807:32;:::i;7054:129::-;7113:10;;-1:-1:-1;;;;;7113:10:0;7127;7113:24;7105:51;;;;-1:-1:-1;;;7105:51:0;;;;;;;:::i;:::-;7161:10;:17;;-1:-1:-1;;;;;;7161:17:0;-1:-1:-1;;;;;7161:17:0;;;;;;;;;;7054:129::o;4636:34::-;;;;:::o;4817:30::-;;;-1:-1:-1;;;;;4817:30:0;;:::o;4914:35::-;;;:::o;7653:187::-;7711:10;;-1:-1:-1;;;;;7711:10:0;7725;7711:24;7703:51;;;;-1:-1:-1;;;7703:51:0;;;;;;;:::i;:::-;7775:6;7767:4;:14;;:33;;;;;7793:7;7785:4;:15;;7767:33;7759:52;;;;-1:-1:-1;;;7759:52:0;;;;;;;:::i;:::-;7816:12;:19;7653:187::o;5667:26::-;;;;:::o;14660:494::-;14730:8;;-1:-1:-1;;;;;14730:8:0;14716:10;:22;14708:47;;;;-1:-1:-1;;;14708:47:0;;;;;;;:::i;:::-;14861:13;:11;:13::i;:::-;15011:9;14993:14;;:27;;14985:46;;;;-1:-1:-1;;;14985:46:0;;;;;;;:::i;:::-;15054:9;15036:14;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;15076:40:0;;-1:-1:-1;;;15076:40:0;;-1:-1:-1;;;;;15076:8:0;:17;;;;:40;;15102:1;;15106:9;;15076:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15068:49;;;;;;15127:22;15139:9;15127:22;;;;;;:::i;3516:600::-;3657:15;3645:8;:27;;3637:56;;;;-1:-1:-1;;;3637:56:0;;;;;;;:::i;:::-;3763:16;;-1:-1:-1;;;;;3847:13:0;;3698:14;3847:13;;;:6;:13;;;;;:15;;3698:14;;3763:16;2163:66;;3823:5;;3830:7;;3839:6;;3847:15;3698:14;3847:15;;;:::i;:::-;;;;;3864:8;3795:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3785:89;;;;;;3725:154;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3715:165;;;;;;3698:182;;3885:24;3912:26;3922:6;3930:1;3933;3936;3912:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3912:26:0;;-1:-1:-1;;3912:26:0;;;-1:-1:-1;;;;;;;3951:30:0;;;;;;:59;;;4005:5;-1:-1:-1;;;;;3985:25:0;:16;-1:-1:-1;;;;;3985:25:0;;3951:59;3943:89;;;;-1:-1:-1;;;3943:89:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4037:14:0;;;;;;;:7;:14;;;;;;;;:23;;;;;;;;;;;;;;:32;;;4079;;;;;4063:6;;4079:32;:::i;:::-;;;;;;;;3516:600;;;;;;;;;:::o;3367:130::-;-1:-1:-1;;;;;3469:14:0;;;3441;3469;;;:7;:14;;;;;;;;:23;;;;;;;;;;;;;3367:130::o;5386:45::-;;;;;;;;;;;;;:::o;9414:97::-;9477:29;9488:9;9499:6;9477:10;:29::i;:::-;9414:97;;:::o;4415:192::-;4504:6;4490:11;;:20;;;;:::i;:::-;4476:11;:34;;;-1:-1:-1;;;;;4533:15:0;;;;:8;:15;;;;;;:24;;4551:6;;4533:24;:::i;:::-;-1:-1:-1;;;;;4515:15:0;;;;;;:8;:15;;;;;;:42;;;;4567:35;;-1:-1:-1;;;;;;;;;;;4567:35:0;;;4595:6;;4567:35;:::i;:::-;;;;;;;;4415:192;;:::o;15159:228::-;15235:8;15218:14;;15200:15;:32;;;;:::i;:::-;:43;15196:187;;;15268:15;15251:14;:32;15343:26;;15307:33;;-1:-1:-1;;;15307:33:0;;15373:4;;15343:26;-1:-1:-1;;;;;15307:8:0;:18;;;;:33;;15334:4;;15307:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;;:::i;:::-;15306:71;;;;:::i;:::-;15289:14;:88;15196:187;15159:228::o;8465:862::-;8738:8;-1:-1:-1;;;;;8738:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8738:41:0;;8788:4;8738:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8817:33:0;;-1:-1:-1;;;8817:33:0;;8801:13;;-1:-1:-1;;;;;;8817:8:0;:18;;-1:-1:-1;8817:18:0;;:33;;8844:4;;8817:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8801:49;;8983:11;;8998:1;8983:16;:33;;;-1:-1:-1;9003:13:0;;8983:33;8979:187;;;9024:28;9034:9;9045:6;9024:9;:28::i;:::-;8979:187;;;9070:17;9115:8;9100:11;;9091:6;:20;;;;:::i;:::-;9090:33;;;;:::i;:::-;9070:53;;9129:31;9139:9;9150;9129;:31::i;:::-;8979:187;;9178:56;;-1:-1:-1;;;9178:56:0;;-1:-1:-1;;;;;9178:8:0;:21;;;;:56;;9200:10;;9220:4;;9227:6;;9178:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9170:65;;;;;;8465:862;;;:::o;4132:280::-;4221:6;4207:11;;:20;;;;:::i;:::-;4193:11;:34;;;-1:-1:-1;;;;;4250:15:0;;;;:8;:15;;;;;;:24;;4268:6;;4250:24;:::i;:::-;-1:-1:-1;;;;;4232:15:0;;;;;;:8;:15;;;;;;:42;;;;4372:35;;4232:15;;;-1:-1:-1;;;;;;;;;;;4372:35:0;;;4400:6;;4372:35;:::i;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:402::-;;;675:2;663:9;654:7;650:23;646:32;643:2;;;696:6;688;681:22;643:2;740:9;727:23;759:33;786:5;759:33;:::i;:::-;811:5;-1:-1:-1;868:2:1;853:18;;840:32;881:35;840:32;881:35;:::i;:::-;935:7;925:17;;;633:315;;;;;:::o;953:470::-;;;;1099:2;1087:9;1078:7;1074:23;1070:32;1067:2;;;1120:6;1112;1105:22;1067:2;1164:9;1151:23;1183:33;1210:5;1183:33;:::i;:::-;1235:5;-1:-1:-1;1292:2:1;1277:18;;1264:32;1305:35;1264:32;1305:35;:::i;:::-;1057:366;;1359:7;;-1:-1:-1;;;1413:2:1;1398:18;;;;1385:32;;1057:366::o;1428:853::-;;;;;;;;1640:3;1628:9;1619:7;1615:23;1611:33;1608:2;;;1662:6;1654;1647:22;1608:2;1706:9;1693:23;1725:33;1752:5;1725:33;:::i;:::-;1777:5;-1:-1:-1;1834:2:1;1819:18;;1806:32;1847:35;1806:32;1847:35;:::i;:::-;1901:7;-1:-1:-1;1955:2:1;1940:18;;1927:32;;-1:-1:-1;2006:2:1;1991:18;;1978:32;;-1:-1:-1;2062:3:1;2047:19;;2034:33;2111:4;2098:18;;2086:31;;2076:2;;2136:6;2128;2121:22;2076:2;1598:683;;;;-1:-1:-1;1598:683:1;;;;2164:7;2218:3;2203:19;;2190:33;;-1:-1:-1;2270:3:1;2255:19;;;2242:33;;1598:683;-1:-1:-1;;1598:683:1:o;2286:396::-;;;2412:2;2400:9;2391:7;2387:23;2383:32;2380:2;;;2433:6;2425;2418:22;2380:2;2477:9;2464:23;2496:33;2523:5;2496:33;:::i;:::-;2548:5;-1:-1:-1;2605:2:1;2590:18;;2577:32;2618;2577;2618;:::i;2687:327::-;;;2816:2;2804:9;2795:7;2791:23;2787:32;2784:2;;;2837:6;2829;2822:22;2784:2;2881:9;2868:23;2900:33;2927:5;2900:33;:::i;:::-;2952:5;3004:2;2989:18;;;;2976:32;;-1:-1:-1;;;2774:240:1:o;3019:395::-;;;;3165:2;3153:9;3144:7;3140:23;3136:32;3133:2;;;3186:6;3178;3171:22;3133:2;3230:9;3217:23;3249:33;3276:5;3249:33;:::i;:::-;3301:5;3353:2;3338:18;;3325:32;;-1:-1:-1;3404:2:1;3389:18;;;3376:32;;3123:291;-1:-1:-1;;;3123:291:1:o;3419:1162::-;;3545:2;3588;3576:9;3567:7;3563:23;3559:32;3556:2;;;3609:6;3601;3594:22;3556:2;3647:9;3641:16;3676:18;3717:2;3709:6;3706:14;3703:2;;;3738:6;3730;3723:22;3703:2;3781:6;3770:9;3766:22;3756:32;;3826:7;3819:4;3815:2;3811:13;3807:27;3797:2;;3853:6;3845;3838:22;3797:2;3887;3881:9;3909:2;3905;3902:10;3899:2;;;3915:18;;:::i;:::-;3962:2;3958;3954:11;3994:2;3988:9;4057:2;4053:7;4048:2;4044;4040:11;4036:25;4028:6;4024:38;4112:6;4100:10;4097:22;4092:2;4080:10;4077:18;4074:46;4071:2;;;4123:18;;:::i;:::-;4159:2;4152:22;4209:18;;;4243:15;;;;-1:-1:-1;4278:11:1;;;4308;;;4304:20;;4301:33;-1:-1:-1;4298:2:1;;;4352:6;4344;4337:22;4298:2;4379:6;4370:15;;4394:156;4408:2;4405:1;4402:9;4394:156;;;4465:10;;4453:23;;4426:1;4419:9;;;;;4496:12;;;;4528;;4394:156;;;-1:-1:-1;4569:6:1;3525:1056;-1:-1:-1;;;;;;;;3525:1056:1:o;4586:257::-;;4706:2;4694:9;4685:7;4681:23;4677:32;4674:2;;;4727:6;4719;4712:22;4674:2;4764:9;4758:16;4783:30;4807:5;4783:30;:::i;4848:190::-;;4960:2;4948:9;4939:7;4935:23;4931:32;4928:2;;;4981:6;4973;4966:22;4928:2;-1:-1:-1;5009:23:1;;4918:120;-1:-1:-1;4918:120:1:o;5530:194::-;;5653:2;5641:9;5632:7;5628:23;5624:32;5621:2;;;5674:6;5666;5659:22;5621:2;-1:-1:-1;5702:16:1;;5611:113;-1:-1:-1;5611:113:1:o;5729:321::-;;;5855:2;5843:9;5834:7;5830:23;5826:32;5823:2;;;5876:6;5868;5861:22;5823:2;5917:9;5904:23;5894:33;;5977:2;5966:9;5962:18;5949:32;5990:30;6014:5;5990:30;:::i;6055:389::-;;;;6198:2;6186:9;6177:7;6173:23;6169:32;6166:2;;;6219:6;6211;6204:22;6166:2;6260:9;6247:23;6237:33;;6317:2;6306:9;6302:18;6289:32;6279:42;;6371:2;6360:9;6356:18;6343:32;6384:30;6408:5;6384:30;:::i;:::-;6433:5;6423:15;;;6156:288;;;;;:::o;6449:392::-;-1:-1:-1;;;6707:27:1;;6759:1;6750:11;;6743:27;;;;6795:2;6786:12;;6779:28;6832:2;6823:12;;6697:144::o;6846:203::-;-1:-1:-1;;;;;7010:32:1;;;;6992:51;;6980:2;6965:18;;6947:102::o;7054:375::-;-1:-1:-1;;;;;7312:15:1;;;7294:34;;7364:15;;;;7359:2;7344:18;;7337:43;7411:2;7396:18;;7389:34;;;;7244:2;7229:18;;7211:218::o;7434:663::-;-1:-1:-1;;;;;7805:15:1;;;7787:34;;7857:15;;;;7852:2;7837:18;;7830:43;7904:2;7889:18;;7882:34;;;;7947:2;7932:18;;7925:34;;;;7990:3;7975:19;;7968:35;7767:3;8019:19;;8012:35;8078:3;8063:19;;8056:35;;;;7736:3;7721:19;;7703:394::o;8102:274::-;-1:-1:-1;;;;;8294:32:1;;;;8276:51;;8358:2;8343:18;;8336:34;8264:2;8249:18;;8231:145::o;8381:187::-;8546:14;;8539:22;8521:41;;8509:2;8494:18;;8476:92::o;8573:177::-;8719:25;;;8707:2;8692:18;;8674:76::o;8755:591::-;9042:25;;;-1:-1:-1;;;;;9141:15:1;;;9136:2;9121:18;;9114:43;9193:15;;;;9188:2;9173:18;;9166:43;9240:2;9225:18;;9218:34;9283:3;9268:19;;9261:35;;;;9094:3;9312:19;;9305:35;9029:3;9014:19;;8996:350::o;9351:398::-;9578:25;;;9651:4;9639:17;;;;9634:2;9619:18;;9612:45;9688:2;9673:18;;9666:34;9731:2;9716:18;;9709:34;9565:3;9550:19;;9532:217::o;10434:603::-;;10575:2;10604;10593:9;10586:21;10636:6;10630:13;10679:6;10674:2;10663:9;10659:18;10652:34;10704:4;10717:140;10731:6;10728:1;10725:13;10717:140;;;10826:14;;;10822:23;;10816:30;10792:17;;;10811:2;10788:26;10781:66;10746:10;;10717:140;;;10875:6;10872:1;10869:13;10866:2;;;10945:4;10940:2;10931:6;10920:9;10916:22;10912:31;10905:45;10866:2;-1:-1:-1;11021:2:1;11000:15;-1:-1:-1;;10996:29:1;10981:45;;;;11028:2;10977:54;;10555:482;-1:-1:-1;;;10555:482:1:o;11042:343::-;11244:2;11226:21;;;11283:2;11263:18;;;11256:30;-1:-1:-1;;;11317:2:1;11302:18;;11295:49;11376:2;11361:18;;11216:169::o;11390:347::-;11592:2;11574:21;;;11631:2;11611:18;;;11604:30;11670:25;11665:2;11650:18;;11643:53;11728:2;11713:18;;11564:173::o;11742:340::-;11944:2;11926:21;;;11983:2;11963:18;;;11956:30;-1:-1:-1;;;12017:2:1;12002:18;;11995:46;12073:2;12058:18;;11916:166::o;12087:345::-;12289:2;12271:21;;;12328:2;12308:18;;;12301:30;-1:-1:-1;;;12362:2:1;12347:18;;12340:51;12423:2;12408:18;;12261:171::o;12437:329::-;12639:2;12621:21;;;12678:1;12658:18;;;12651:29;-1:-1:-1;;;12711:2:1;12696:18;;12689:36;12757:2;12742:18;;12611:155::o;12771:336::-;12973:2;12955:21;;;13012:2;12992:18;;;12985:30;-1:-1:-1;;;13046:2:1;13031:18;;13024:42;13098:2;13083:18;;12945:162::o;13112:338::-;13314:2;13296:21;;;13353:2;13333:18;;;13326:30;-1:-1:-1;;;13387:2:1;13372:18;;13365:44;13441:2;13426:18;;13286:164::o;13455:341::-;13657:2;13639:21;;;13696:2;13676:18;;;13669:30;-1:-1:-1;;;13730:2:1;13715:18;;13708:47;13787:2;13772:18;;13629:167::o;13801:329::-;14003:2;13985:21;;;14042:1;14022:18;;;14015:29;-1:-1:-1;;;14075:2:1;14060:18;;14053:36;14121:2;14106:18;;13975:155::o;14135:337::-;14337:2;14319:21;;;14376:2;14356:18;;;14349:30;-1:-1:-1;;;14410:2:1;14395:18;;14388:43;14463:2;14448:18;;14309:163::o;14477:340::-;14679:2;14661:21;;;14718:2;14698:18;;;14691:30;-1:-1:-1;;;14752:2:1;14737:18;;14730:46;14808:2;14793:18;;14651:166::o;14822:335::-;15024:2;15006:21;;;15063:2;15043:18;;;15036:30;-1:-1:-1;;;15097:2:1;15082:18;;15075:41;15148:2;15133:18;;14996:161::o;15162:340::-;15364:2;15346:21;;;15403:2;15383:18;;;15376:30;-1:-1:-1;;;15437:2:1;15422:18;;15415:46;15493:2;15478:18;;15336:166::o;15507:332::-;15709:2;15691:21;;;15748:1;15728:18;;;15721:29;-1:-1:-1;;;15781:2:1;15766:18;;15759:39;15830:2;15815:18;;15681:158::o;15844:341::-;16046:2;16028:21;;;16085:2;16065:18;;;16058:30;-1:-1:-1;;;16119:2:1;16104:18;;16097:47;16176:2;16161:18;;16018:167::o;16190:402::-;16424:13;;-1:-1:-1;;;;;16420:39:1;16402:58;;16516:4;16504:17;;;16498:24;16476:20;;;16469:54;16579:4;16567:17;;;16561:24;16539:20;;;16532:54;;;;16390:2;16375:18;;16357:235::o;16779:975::-;;17081:3;17070:9;17066:19;17112:6;17101:9;17094:25;17138:2;17176:6;17171:2;17160:9;17156:18;17149:34;17219:3;17214:2;17203:9;17199:18;17192:31;17243:6;17278;17272:13;17309:6;17301;17294:22;17347:3;17336:9;17332:19;17325:26;;17386:2;17378:6;17374:15;17360:29;;17407:4;17420:195;17434:6;17431:1;17428:13;17420:195;;;17499:13;;-1:-1:-1;;;;;17495:39:1;17483:52;;17590:15;;;;17555:12;;;;17531:1;17449:9;17420:195;;;-1:-1:-1;;;;;;;17671:32:1;;;;17666:2;17651:18;;17644:60;-1:-1:-1;;;17735:3:1;17720:19;17713:35;17632:3;17042:712;-1:-1:-1;;;17042:712:1:o;17759:319::-;17961:25;;;18017:2;18002:18;;17995:34;;;;18060:2;18045:18;;18038:34;17949:2;17934:18;;17916:162::o;18083:391::-;18314:25;;;18370:2;18355:18;;18348:34;;;;18413:2;18398:18;;18391:34;18456:2;18441:18;;18434:34;18301:3;18286:19;;18268:206::o;18479:184::-;18651:4;18639:17;;;;18621:36;;18609:2;18594:18;;18576:87::o;18668:128::-;;18739:1;18735:6;18732:1;18729:13;18726:2;;;18745:18;;:::i;:::-;-1:-1:-1;18781:9:1;;18716:80::o;18801:217::-;;18867:1;18857:2;;-1:-1:-1;;;18892:31:1;;18946:4;18943:1;18936:15;18974:4;18899:1;18964:15;18857:2;-1:-1:-1;19003:9:1;;18847:171::o;19023:453::-;19119:6;19142:5;19156:314;19205:1;19242:2;19232:8;19229:16;19219:2;;19249:5;;;19219:2;19290:4;19285:3;19281:14;19275:4;19272:24;19269:2;;;19299:18;;:::i;:::-;19349:2;19339:8;19335:17;19332:2;;;19364:16;;;;19332:2;19443:17;;;;;19403:15;;19156:314;;;19100:376;;;;;;;:::o;19481:139::-;;19570:44;-1:-1:-1;;19597:8:1;19591:4;19625:922;19709:8;19699:2;;-1:-1:-1;19750:1:1;19764:5;;19699:2;19798:4;19788:2;;-1:-1:-1;19835:1:1;19849:5;;19788:2;19880:4;19898:1;19893:59;;;;19966:1;19961:183;;;;19873:271;;19893:59;19923:1;19914:10;;19937:5;;;19961:183;19998:3;19988:8;19985:17;19982:2;;;20005:18;;:::i;:::-;20061:1;20051:8;20047:16;20038:25;;20089:3;20082:5;20079:14;20076:2;;;20096:18;;:::i;:::-;20129:5;;;19873:271;;20228:2;20218:8;20215:16;20209:3;20203:4;20200:13;20196:36;20190:2;20180:8;20177:16;20172:2;20166:4;20163:12;20159:35;20156:77;20153:2;;;-1:-1:-1;20265:19:1;;;20300:14;;;20297:2;;;20317:18;;:::i;:::-;20350:5;;20153:2;20397:42;20435:3;20425:8;20419:4;20416:1;20397:42;:::i;:::-;20472:6;20467:3;20463:16;20454:7;20451:29;20448:2;;;20483:18;;:::i;:::-;20521:20;;19689:858;-1:-1:-1;;;;19689:858:1:o;20552:168::-;;20658:1;20654;20650:6;20646:14;20643:1;20640:21;20635:1;20628:9;20621:17;20617:45;20614:2;;;20665:18;;:::i;:::-;-1:-1:-1;20705:9:1;;20604:116::o;20725:125::-;;20793:1;20790;20787:8;20784:2;;;20798:18;;:::i;:::-;-1:-1:-1;20835:9:1;;20774:76::o;20855:135::-;;-1:-1:-1;;20915:17:1;;20912:2;;;20935:18;;:::i;:::-;-1:-1:-1;20982:1:1;20971:13;;20902:88::o;20995:127::-;21056:10;21051:3;21047:20;21044:1;21037:31;21087:4;21084:1;21077:15;21111:4;21108:1;21101:15;21127:127;21188:10;21183:3;21179:20;21176:1;21169:31;21219:4;21216:1;21209:15;21243:4;21240:1;21233:15;21259:133;-1:-1:-1;;;;;21336:31:1;;21326:42;;21316:2;;21382:1;21379;21372:12;21397:120;21485:5;21478:13;21471:21;21464:5;21461:32;21451:2;;21507:1;21504;21497:12

Swarm Source

ipfs://a8c2242f25e07400bcca16448c8ff485560366840b7295ef5c83c38b0d888570
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.