ERC-20
Overview
Max Total Supply
1,000,000,000 TNGLv2
Holders
11
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
10,201,560.544377133 TNGLv2Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
TangleV2
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-28 */ // SPDX-License-Identifier: 0BSD pragma solidity ^0.8.7; interface ERC20 { function transfer(address to, uint tokens) external; function transferFrom(address from, address to, uint tokens) external; } contract TangleV2 { uint8 public decimals; uint public totalSupply; string public name; string public symbol; mapping (address => uint256) private balances; mapping (address => mapping (address => uint)) private allowed; bool public disableGame = false; address public gamemaster; address public owner; address public liquidityAddress; uint public totalPieces; uint public piecesPerUnit; uint public minHoldAmount; uint public workaroundConstant = 1; uint public distributionRewardThreshold; uint public marketMakingRewardThreshold; mapping(uint => uint) public S; mapping(uint => uint) public tax; mapping(uint => uint) public rewardMax; mapping(uint => uint) public startTime; mapping(uint => uint) public rewardConst; mapping(uint => uint) public totalRewardableEvents; mapping(uint => uint) public lastRewardDistribution; mapping(uint => uint) public rewardsLastRewardChange; mapping(uint => uint) public timeFromInitToLastRewardChange; mapping(address => bool) public hasReceivedPieces; mapping(address => mapping(uint => uint)) public Si; mapping(address => mapping(uint => uint)) public WCi; mapping(address => mapping(uint => uint)) public storedRewards; mapping(address => mapping(uint => uint)) public rewardableEvents; constructor() { name = "TangleV2"; symbol = "TNGLv2"; decimals = 9; totalSupply = 1e9 * 1*10**(decimals); totalPieces = type(uint128).max - (type(uint128).max % totalSupply); piecesPerUnit = totalPieces / totalSupply; balances[msg.sender] = totalPieces; gamemaster = msg.sender; owner = msg.sender; minHoldAmount = 1; distributionRewardThreshold = 1e9; marketMakingRewardThreshold = 1e9; // INITIAL REWARDCONST MAP { rewardConst[0] = 300000; // Market Maker rewardConst[1] = 300000; // Distributor rewardConst[2] = 300000; // Staker // } // INITIAL TAX MAP { tax[100] = 5e9; // Transfer Multiplier tax[101] = 1e11; // Transfer Divisor tax[200] = 1e9; // Market Maker Transfer Multiplier tax[201] = 1e11; // Market Maker Transfer Divisor tax[210] = 10e9; // Market Maker Withdraw Multiplier tax[211] = 1e11; // Market Maker Withdraw Divisor tax[220] = 4e9; // Market Maker To Distributor Multiplier tax[221] = 1e11; // Market Maker To Distributor Divisor tax[230] = 4e9; // Market Maker To Staker Multiplier tax[231] = 1e11; // Market Maker To Staker Divisor tax[240] = 1e9; // Market Maker To Reflect Multiplier tax[241] = 1e11; // Market Maker To Reflect Divisor tax[250] = 1e9; // Market Maker To Gamemaster Multiplier tax[251] = 1e11; // Market Maker To Gamemaster Divisor tax[300] = 1e9; // Distributor Transfer Multiplier tax[301] = 1e11; // Distributor Transfer Divisor tax[310] = 10e9; // Distributor Withdraw Multiplier tax[311] = 1e11; // Distributor Withdraw Divisor tax[320] = 4e9; // Distributor To Market Maker Multiplier tax[321] = 1e11; // Distributor To Market Maker Divisor tax[330] = 4e9; // Distributor To Staker Multiplier tax[331] = 1e11; // Distributor To Staker Divisor tax[340] = 1e9; // Distributor To Reflect Multiplier tax[341] = 1e11; // Distributor To Reflect Divisor tax[350] = 1e9; // Distributor To Gamemaster Multiplier tax[351] = 1e11; // Distributor To Gamemaster Divisor tax[400] = 1e9; // Staker Transfer Multiplier tax[401] = 1e11; // Staker Transfer Divisor tax[410] = 10e9; // Staker Withdraw Multiplier tax[411] = 1e11; // Staker Withdraw Divisor tax[420] = 4e9; // Staker To Market Maker Multiplier tax[421] = 1e11; // Staker To Market Maker Divisor tax[430] = 4e9; // Staker To Distributor Multiplier tax[431] = 1e11; // Staker To Distributor Divisor tax[440] = 1e9; // Staker To Reflect Multiplier tax[441] = 1e11; // Staker To Reflect Divisor tax[450] = 1e9; // Staker To Gamemaster Multiplier tax[451] = 1e11; // Staker To Gamemaster Divisor tax[500] = 1e9; // Reflect Transfer Multiplier tax[501] = 1e11; // Reflect Transfer Divisor tax[600] = 1e9; // Gamemaster Transfer Multiplier tax[601] = 1e11; // Gamemaster Transfer Divisor // } } function balanceOf(address _owner) public view returns (uint256) { return balances[_owner] / piecesPerUnit; } function allowance(address _owner, address spender) public view returns (uint256) { return allowed[_owner][spender]; } function approve(address spender, uint256 value) public returns (bool) { allowed[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { allowed[msg.sender][spender] = allowed[msg.sender][spender] + addedValue; emit Approval(msg.sender, spender, allowed[msg.sender][spender]); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { allowed[msg.sender][spender] = allowed[msg.sender][spender] - subtractedValue; emit Approval(msg.sender, spender, allowed[msg.sender][spender]); return true; } function transfer(address to, uint256 value) public returns (bool) { if (value > balances[msg.sender] / piecesPerUnit) revert(); value = enforceMinHold(msg.sender, value); uint pieceValue = value * piecesPerUnit; balances[msg.sender] -= pieceValue; if (msg.sender == owner || disableGame) { balances[to] += pieceValue; emit Transfer(msg.sender, to, value); return true; } balances[to] += pieceValue - taxify(pieceValue, 10); balances[address(this)] += taxify(pieceValue, 20) + taxify(pieceValue, 30) + taxify(pieceValue, 40); balances[gamemaster] += taxify(pieceValue, 60); for (uint i = 0; i < 3; i++) { changeRewardMax(i, rewardMax[i] + taxify(pieceValue, 20 + i * 10)); } reflect(taxify(pieceValue, 50)); if (msg.sender != owner && msg.sender != gamemaster && to != owner && to != gamemaster) { if (msg.sender != liquidityAddress && to != liquidityAddress) distributorCheck(msg.sender, to, value); marketMakerCheck(msg.sender, to, value); } emit Transfer(msg.sender, to, value - taxify(value, 10)); emit Transfer(msg.sender, address(this), taxify(value, 20) + taxify(value, 30) + taxify(value, 40)); emit Transfer(msg.sender, gamemaster, taxify(value, 60)); emit ReflectEvent(msg.sender, taxify(value, 50)); return true; } function transferFrom(address from, address to, uint256 value) public returns (bool) { if (value > balances[from] / piecesPerUnit) revert(); value = enforceMinHold(from, value); allowed[from][msg.sender] = allowed[from][msg.sender] - value; uint pieceValue = value * piecesPerUnit; balances[from] -= pieceValue; if (from == owner || disableGame) { balances[to] += pieceValue; emit Transfer(from, to, value); return true; } balances[to] += pieceValue - taxify(pieceValue, 10); balances[address(this)] += taxify(pieceValue, 20) + taxify(pieceValue, 30) + taxify(pieceValue, 40); balances[gamemaster] += taxify(pieceValue, 60); for (uint i = 0; i < 3; i++) { changeRewardMax(i, rewardMax[i] + taxify(pieceValue, 20 + i * 10)); } reflect(taxify(pieceValue, 50)); if (from != owner && from != gamemaster && to != owner && to != gamemaster) { if (from != liquidityAddress && to != liquidityAddress) distributorCheck(from, to, value); marketMakerCheck(from, to, value); } emit Transfer(from, to, value - taxify(value, 10)); emit Transfer(from, address(this), taxify(value, 20) + taxify(value, 30) + taxify(value, 40)); emit Transfer(from, gamemaster, taxify(value, 60)); emit ReflectEvent(from, taxify(value, 50)); return true; } function cropDust(address[] memory addresses) public { for (uint i = 0; i < addresses.length; i++) { balances[addresses[i]] += distributionRewardThreshold * piecesPerUnit; emit Transfer(msg.sender, addresses[i], distributionRewardThreshold); } balances[msg.sender] -= distributionRewardThreshold * piecesPerUnit * addresses.length; if (startTime[1] == 0) startTime[1] = block.timestamp; distribute(1); if (getAvailableRewards(msg.sender, 1) > 0) storedRewards[msg.sender][1] = getAvailableRewards(msg.sender, 1) * piecesPerUnit; Si[msg.sender][1] = S[1]; WCi[msg.sender][1] = workaroundConstant; rewardableEvents[msg.sender][1] += addresses.length; totalRewardableEvents[1] += addresses.length; } function enforceMinHold(address sender, uint value) internal view returns (uint) { if (balances[sender] / piecesPerUnit - value < minHoldAmount && sender != liquidityAddress) value = balances[sender] / piecesPerUnit - minHoldAmount; return value; } function taxify(uint value, uint id) internal view returns (uint) { return value * tax[id * 10] / tax[id * 10 + 1]; } function changeRewardMax(uint id, uint newRewardMax) internal { if (startTime[id] > 0) { rewardsLastRewardChange[id] = rewardTheoretical(id); timeFromInitToLastRewardChange[id] = block.timestamp - startTime[id]; } rewardMax[id] = newRewardMax; } function rewardTheoretical(uint id) public view returns (uint) { if (startTime[id] == 0) return 0; return rewardMax[id] - (rewardMax[id] - rewardsLastRewardChange[id]) * rewardConst[id] / (block.timestamp - startTime[id] + rewardConst[id] - timeFromInitToLastRewardChange[id]); } function reflect(uint reflectAmount) internal { uint FTPXA = totalSupply * piecesPerUnit - balances[liquidityAddress]; uint FFTPXARA = FTPXA - reflectAmount; piecesPerUnit = piecesPerUnit * FFTPXARA / FTPXA; if (piecesPerUnit < 1) piecesPerUnit = 1; balances[liquidityAddress] = balances[liquidityAddress] * FFTPXARA / FTPXA; } function distributorCheck(address sender, address receiver, uint value) internal { if (hasReceivedPieces[receiver] == false && value >= distributionRewardThreshold) { addRewardableEvents(sender, 1); hasReceivedPieces[receiver] = true; } } function marketMakerCheck(address sender, address receiver, uint value) internal { if (value >= marketMakingRewardThreshold) { if (sender == liquidityAddress) addRewardableEvents(receiver, 0); if (receiver == liquidityAddress) addRewardableEvents(sender, 0); } } function addRewardableEvents(address recipient, uint id) internal { if (startTime[id] == 0) startTime[id] = block.timestamp; distribute(id); if (getAvailableRewards(recipient, id) > 0) storedRewards[recipient][id] = getAvailableRewards(recipient, id) * piecesPerUnit; Si[recipient][id] = S[id]; WCi[recipient][id] = workaroundConstant; rewardableEvents[recipient][id] += 1; totalRewardableEvents[id] += 1; } function distribute(uint id) internal { if (totalRewardableEvents[id] != 0 && lastRewardDistribution[id] != rewardTheoretical(id)) { uint addedReward = rewardTheoretical(id) - lastRewardDistribution[id]; while (addedReward > 0 && addedReward * workaroundConstant / totalRewardableEvents[id] < 1e9) { workaroundConstant *= 2; for (uint i; i < 3; i++) S[i] *= 2; } S[id] += addedReward * workaroundConstant / totalRewardableEvents[id]; lastRewardDistribution[id] = rewardTheoretical(id); } } function getAvailableRewards(address _address, uint id) public view returns (uint) { if (WCi[_address][id] == 0) return 0; uint _workaroundConstant = workaroundConstant; uint _S = S[id]; if (totalRewardableEvents[id] != 0 && lastRewardDistribution[id] != rewardTheoretical(id)) { uint addedReward = rewardTheoretical(id) - lastRewardDistribution[id]; while (addedReward > 0 && addedReward * _workaroundConstant / totalRewardableEvents[id] < 1e9) { _workaroundConstant *= 2; _S *= 2; } _S += addedReward * _workaroundConstant / totalRewardableEvents[id]; } uint availableRewards = storedRewards[_address][id] + rewardableEvents[_address][id] * (_S - Si[_address][id] * _workaroundConstant / WCi[_address][id]) / _workaroundConstant; return availableRewards / piecesPerUnit; } function getAllAvailableRewards(address _address) public view returns(uint, uint, uint, uint) { return (getAvailableRewards(_address, 0), getAvailableRewards(_address, 1), getAvailableRewards(_address, 2), getAvailableRewards(_address, 0) + getAvailableRewards(_address, 1) + getAvailableRewards(_address, 2)); } function withdrawRewards(address _address, uint id) public { distribute(id); if (WCi[_address][id] == 0) return; uint availableRewards = storedRewards[_address][id] + rewardableEvents[_address][id] * (S[id] - Si[_address][id] * workaroundConstant / WCi[_address][id]) / workaroundConstant; storedRewards[_address][id] = 0; Si[_address][id] = S[id]; WCi[_address][id] = workaroundConstant; uint id2 = (id + 2) * 10; balances[_address] += availableRewards - taxify(availableRewards, id2 + 1); balances[gamemaster] += taxify(availableRewards, id2 + 5); balances[address(this)] -= availableRewards - taxify(availableRewards, id2 + 2) - taxify(availableRewards, id2 + 3); for (uint i = 0; i < 2; i++) { changeRewardMax(id != i * 2 ? i * 2 : 1, rewardMax[id] + taxify(availableRewards, id2 + 2 + i)); } reflect(taxify(availableRewards, id2 + 4)); emit Transfer(address(this), _address, (availableRewards - taxify(availableRewards, id2 + 1)) / piecesPerUnit); emit Transfer(address(this), gamemaster, taxify(availableRewards, id2 + 5) / piecesPerUnit); emit ReflectEvent(address(this), taxify(availableRewards, id2 + 4) / piecesPerUnit); } function withdrawAllRewards(address _address) public { for (uint i = 0; i < 3; i++) { if (getAvailableRewards(_address, i) > 0) withdrawRewards(_address, i); } } function stake(uint amount) public { require(rewardableEvents[msg.sender][2] == 0, "staking position already exists"); ERC20(liquidityAddress).transferFrom(msg.sender, address(this), amount); if (startTime[2] == 0) startTime[2] = block.timestamp; distribute(2); if (getAvailableRewards(msg.sender, 2) > 0) storedRewards[msg.sender][2] = getAvailableRewards(msg.sender, 2) * piecesPerUnit; Si[msg.sender][2] = S[2]; WCi[msg.sender][2] = workaroundConstant; rewardableEvents[msg.sender][2] += amount; totalRewardableEvents[2] += amount; } function unstake() public { require(rewardableEvents[msg.sender][2] > 0, "no current staking position"); distribute(2); if (getAvailableRewards(msg.sender, 2) > 0) storedRewards[msg.sender][2] = getAvailableRewards(msg.sender, 2) * piecesPerUnit; ERC20(liquidityAddress).transfer(msg.sender, rewardableEvents[msg.sender][2]); totalRewardableEvents[2] -= rewardableEvents[msg.sender][2]; rewardableEvents[msg.sender][2] = 0; } function updatePosition(uint amount) public { unstake(); stake(amount); } function changeTaxDetail(uint id, uint value) public { require(msg.sender == owner, "not owner"); tax[id] = value; } function changeRewardConstant(uint newRewardConstant, uint id) public { require(msg.sender == owner, "not owner"); rewardConst[id] = newRewardConstant; } function changeLiquidityAddress(address newLiquidityAddress) public { require(msg.sender == owner, "not owner"); liquidityAddress = newLiquidityAddress; for (uint i = 0; i < 3; i++) { rewardableEvents[liquidityAddress][i] = 0; } } function changeOwner(address newOwner) public { require(msg.sender == owner, "not owner"); owner = newOwner; } function donate(uint id, uint value) public { uint pieceValue = value * piecesPerUnit; balances[msg.sender] -= pieceValue; balances[address(this)] += pieceValue; changeRewardMax(id, rewardMax[id] + pieceValue); } function changeDisableGame(bool newDisableGame) public { require(msg.sender == owner, "not owner"); disableGame = newDisableGame; } event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed owner, address indexed spender, uint256 value); event ReflectEvent(address indexed from, uint tokens); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ReflectEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"S","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"Si","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"WCi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newDisableGame","type":"bool"}],"name":"changeDisableGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityAddress","type":"address"}],"name":"changeLiquidityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRewardConstant","type":"uint256"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"changeRewardConstant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"changeTaxDetail","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"cropDust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableGame","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributionRewardThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"donate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gamemaster","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getAllAvailableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getAvailableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasReceivedPieces","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastRewardDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketMakingRewardThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piecesPerUnit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardConst","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"rewardTheoretical","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardableEvents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardsLastRewardChange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"storedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"timeFromInitToLastRewardChange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPieces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalRewardableEvents","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":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updatePosition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"withdrawAllRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"withdrawRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"workaroundConstant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526006805460ff191690556001600c553480156200002057600080fd5b50604080518082019091526008808252672a30b733b632ab1960c11b60209092019182526200005291600291620007c0565b50604080518082019091526006808252652a2723a63b1960d11b60209092019182526200008291600391620007c0565b506000805460ff19166009908117909155620000a090600a620008c6565b620000b090633b9aca0062000994565b6001819055620000c8906001600160801b0362000a0d565b620000db906001600160801b03620009b6565b6009819055600154620000ee9162000866565b600a5560095433600081815260046020908152604082209390935560068054610100600160a81b0319166101008402179055600780546001600160a01b0319169092179091556001600b55633b9aca00600d819055600e819055620493e07f8fa6efc3be94b5b348b21fea823fe8d100408cee9b7f90524494500445d8ff6c8190557f4155c2f711f2cdd34f8262ab8fb9b7020a700fe7b6948222152f7670d1fdf34d8190557f0b9d2c0c271bb30544eb78c59bdaebdae2728e5f65814c07768a0abe90ed192355601090925264012a05f2007fe9d0669b9da863441f6bb27634f5f3174e814c6c2560049a32059809eaee4d305564174876e8007f1a30bfa582bf4431ebf1419d9ec10e3201700dc6bb1a0194584cd35c1484dd738190557fdc169e41e788c2fe3313c51eaa1b48f5d86a6d136e81bd2a906baac5c59233448390557fb36425e8ae0ba8b162ebeabfcbf4b7c211432fbb587906897091c7803a88a9968190556402540be4007fc4948c58cb70c2f6727c5d44652ab0a7a0e96bb8b5e89d080c0b18a1d5bde5808190557f9c1458720648b68658c4fda1ef4df9f72d519cef68ca26b12803782225d5538982905563ee6b28007f5d03aa96fedd319a8101b172ccefcf83f39b30cee82c9f9082d4c595765335138190557f586f007034e8e9bcd3b89e8902b16e5d7d194554f140e1ecb1f0c0b2102e41938390557fc9e3c3a5f5cd888feca1877d2948b91cea3038493722bd5454554ac8e76d5a578190557f545e0132de382ab7c7d867dc9a56bb8c08e0d67d68d1e84947ddf699a77840188390557ebfafef13c92f0cdaf9f6e53d1d49c974210b8a63f5d02e62d77c74716b766b8590557f800f7f18b09f86f3188974192b3e1b7bc90730f50fcf8e966ed7f700689bd0128390557f0f2857b1640854bb125b88aef1d58671c1c0ed2fded0874ec2b05fa16cb6e7bd8590557f82848356feecdea6e6838c71f89cddb30db479903b1e1deaaaa48b927ed161078390557f89fa770d45800d2ca38ef3f00701906b2ff5bdfa05a9df7176135fc6d46dcf638590557fdfab78438e1179b29f047a447dce1145d9cd547652fe9ee8c7ac7009d38c8a418390557f0b39bf4d4ce42b42ae9b7579639739ffea42d3215bd34919e664bd7bc067d7d68290557ff52135d48262d1ca8d6cf8f0acc48ad011063de9c621b0937465bb74244c65878390557fe6ca7fef31fd19be7e1c0d8efb3dfc681860a3370d4c202edc27f6e435c4eddf8190557f1db604e8544aa474f01f7b89a172d096a4228221443808cbc7e7c9bde7f229a88390557f47f61a9f7f3c094fb78d4f9644a1260e897a3f093755679df92db72edbe26f608190557f5010d5dfc8e8e35c1cc97e4a453857a58fc392858ae8c66f01098a7fd0640d5e8390557f22b98b3f8d2c3ed575490f710f2f88081db99dc5b95084120a6d713ee4b7efb88590557f61285ce1ea4c436521841931936754810ec591fde162c2db38ddca76772143098390557f56c45abe21a60c7112ad193abb7f7e08af0bab4fb4abe32f215ff95d845ba02f8590557fce1d9237ed41a6c71a464e6cfbb07ac4f7984bcdc1cbcee6ba769a78dd8769f38390557f9f4abbc5cbc1cdf3b60a7d25bcd70027a6f7c125ba6efa8c95f2a60bbd58c5ff8590557f830424d92ff1d6446d99c621e5f29157500dccb4fc3bfc150c9793e34b9408788390557fdb5ab68df9f30dc96872a978ac46a3451e2ef7077569c3222b82278733416a78919091557ff67967c56b646594b5327f520bffcf2cc5dae9ff4b25aff9c3bbe46fe41f43288290557f451193462fa200bb38bb14c0ab4e49fb5b7745100ee5d80c735f972a3ae8b29b8190557fcebfc60bc335d77c02eaff19abfeef452d767d98684732760a386f0fd24178748290557f16577f6458597ca78f4c4a18a1acdfd5b38385003d9eb8d03cb7b798df970f71557f31f1cab5d9dce9f5ff87fb940acc88d1dc09b0b83a99d30437e1efb12f0d14968190557fb18a8033745574a3555ad96f6e22f4c46e9b59ccf502d8747ee90ff61b4d45e48390557f81e09a907c8fba7772be63edd4770164e8b59213b5a69a010b1643bbc56ac8ac8190557fc13c2ee30fab4becbf0584141fffed05cdcf22f188949522c9dc1388c416df418390557fb5c907b41905eb8e025355433ad658254b61a8518499baa81a5750935241037a8190557f184cbd1bb8f684c8e0683ccc2b6f05b5d2d9b3c1bd2a2ef3b96babee4ecbe2658390557f6b3b358d6cb7387c3fd07ecfb1966ee8e75a06a3282b87927a92c5c3226975fc8190557f7a1842c76c0a906192470bd5593790d06c94cf463647e40e7ceec9ee9ecf085e9290925561025990527fc90deb313bf2e73a3403dd5c186c352d51e22f8fb5845d81ae33571a242dc3b15562000a50565b828054620007ce90620009d0565b90600052602060002090601f016020900481019282620007f257600085556200083d565b82601f106200080d57805160ff19168380011785556200083d565b828001600101855582156200083d579182015b828111156200083d57825182559160200191906001019062000820565b506200084b9291506200084f565b5090565b5b808211156200084b576000815560010162000850565b60008262000878576200087862000a3a565b500490565b600181815b80851115620008be578160001904821115620008a257620008a262000a24565b80851615620008b057918102915b93841c939080029062000882565b509250929050565b6000620008d760ff841683620008de565b9392505050565b600082620008ef575060016200098e565b81620008fe575060006200098e565b8160018114620009175760028114620009225762000942565b60019150506200098e565b60ff84111562000936576200093662000a24565b50506001821b6200098e565b5060208310610133831016604e8410600b841016171562000967575081810a6200098e565b6200097383836200087d565b80600019048211156200098a576200098a62000a24565b0290505b92915050565b6000816000190483118215151615620009b157620009b162000a24565b500290565b600082821015620009cb57620009cb62000a24565b500390565b600181811c90821680620009e557607f821691505b6020821081141562000a0757634e487b7160e01b600052602260045260246000fd5b50919050565b60008262000a1f5762000a1f62000a3a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6133708062000a606000396000f3fe608060405234801561001057600080fd5b50600436106103365760003560e01c80637bd4e08f116101b2578063b5a2ac3b116100f9578063dd62ed3e116100a2578063e7877c361161007c578063e7877c36146107bd578063f6b5fc2e146107e8578063fd9ff94c14610813578063fddacd7b1461084657600080fd5b8063dd62ed3e14610757578063e11998171461079d578063e653723d146107aa57600080fd5b8063c5619050116100d3578063c56190501461070c578063ca6be7f114610731578063d6ef7af01461074457600080fd5b8063b5a2ac3b146106d3578063c4e4abc1146106e6578063c55897bf146106f957600080fd5b8063a457c2d71161015b578063a9059cbb11610135578063a9059cbb146106a4578063b2c5541f146106b7578063b316706c146106ca57600080fd5b8063a457c2d71461066b578063a694fc3a1461067e578063a6f9dae11461069157600080fd5b806395d89b411161018c57806395d89b411461062f5780639ecba7ea14610637578063a1ff4f911461064057600080fd5b80637bd4e08f146105dc5780638da5cb5b146105fc5780638ebfe95c1461061c57600080fd5b80632def6620116102815780633ee708aa1161022a5780635b7c132d116102045780635b7c132d1461058d5780636cfdc929146105a05780636eee7549146105a957806370a08231146105c957600080fd5b80633ee708aa146105445780634bc9500714610564578063577e59ea1461058457600080fd5b8063338b41a21161025b578063338b41a2146104f157806339509351146105115780633ec4c9681461052457600080fd5b80632def662014610485578063313ce5671461048d5780633221c93f146104ac57600080fd5b80631936f4b9116102e357806322d5ba98116102bd57806322d5ba981461042f57806323b872dd146104525780632c8aaf6c1461046557600080fd5b80631936f4b9146103db5780631ae3d5ff1461040657806320bc17b91461042657600080fd5b80630cdd53f6116103145780630cdd53f6146103915780630d1aba1f146103a457806318160ddd146103d257600080fd5b806306fdde031461033b578063095ea7b31461035957806309f1c80a1461037c575b600080fd5b61034361084f565b604051610350919061310c565b60405180910390f35b61036c610367366004612f9b565b6108dd565b6040519015158152602001610350565b61038f61038a3660046130d1565b610957565b005b61038f61039f3660046130ea565b61096b565b6103c46103b23660046130d1565b60156020526000908152604090205481565b604051908152602001610350565b6103c460015481565b6103c46103e9366004612f9b565b601960209081526000928352604080842090915290825290205481565b6103c46104143660046130d1565b60106020526000908152604090205481565b6103c4600a5481565b61036c61043d366004612f11565b60186020526000908152604090205460ff1681565b61036c610460366004612f5f565b6109f2565b6103c46104733660046130d1565b60146020526000908152604090205481565b61038f610ff6565b60005461049a9060ff1681565b60405160ff9091168152602001610350565b6008546104cc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610350565b6103c46104ff3660046130d1565b600f6020526000908152604090205481565b61036c61051f366004612f9b565b6111ea565b6103c46105323660046130d1565b60126020526000908152604090205481565b6103c46105523660046130d1565b60176020526000908152604090205481565b6103c46105723660046130d1565b60116020526000908152604090205481565b6103c4600e5481565b61038f61059b366004612f11565b61128a565b6103c460095481565b6103c46105b73660046130d1565b60136020526000908152604090205481565b6103c46105d7366004612f11565b6113a0565b6103c46105ea3660046130d1565b60166020526000908152604090205481565b6007546104cc9073ffffffffffffffffffffffffffffffffffffffff1681565b61038f61062a3660046130af565b6113d4565b610343611486565b6103c4600d5481565b6103c461064e366004612f9b565b601a60209081526000928352604080842090915290825290205481565b61036c610679366004612f9b565b611493565b61038f61068c3660046130d1565b6114cf565b61038f61069f366004612f11565b611758565b61036c6106b2366004612f9b565b611820565b6103c46106c5366004612f9b565b611ceb565b6103c4600c5481565b6103c46106e13660046130d1565b611f20565b61038f6106f43660046130ea565b611fd4565b61038f610707366004612f11565b612066565b6006546104cc90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61038f61073f366004612fc5565b6120a0565b61038f610752366004612f9b565b612372565b6103c4610765366004612f2c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60065461036c9060ff1681565b61038f6107b83660046130ea565b6127f1565b6103c46107cb366004612f9b565b601b60209081526000928352604080842090915290825290205481565b6103c46107f6366004612f9b565b601c60209081526000928352604080842090915290825290205481565b610826610821366004612f11565b612884565b604080519485526020850193909352918301526060820152608001610350565b6103c4600b5481565b6002805461085c90613226565b80601f016020809104026020016040519081016040528092919081815260200182805461088890613226565b80156108d55780601f106108aa576101008083540402835291602001916108d5565b820191906000526020600020905b8154815290600101906020018083116108b857829003601f168201915b505050505081565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109459086815260200190565b60405180910390a35060015b92915050565b61095f610ff6565b610968816114cf565b50565b6000600a548261097b91906131d2565b3360009081526004602052604081208054929350839290919061099f90849061320f565b909155505030600090815260046020526040812080548392906109c390849061317f565b90915550506000838152601160205260409020546109ed9084906109e890849061317f565b6128ef565b505050565b600a5473ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120549091610a2691613197565b821115610a3257600080fd5b610a3c8483612953565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600560209081526040808320338452909152902054909250610a7b90839061320f565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600560209081526040808320338452909152812091909155600a54610abc90846131d2565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260046020526040812080549293508392909190610af690849061320f565b909155505060075473ffffffffffffffffffffffffffffffffffffffff86811691161480610b26575060065460ff165b15610bd85773ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081208054839290610b6090849061317f565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610bc691815260200190565b60405180910390a36001915050610fef565b610be381600a612a0e565b610bed908261320f565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604081208054909190610c2290849061317f565b90915550610c339050816028612a0e565b610c3e82601e612a0e565b610c49836014612a0e565b610c53919061317f565b610c5d919061317f565b3060009081526004602052604081208054909190610c7c90849061317f565b90915550610c8d905081603c612a0e565b600654610100900473ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604081208054909190610cc990849061317f565b90915550600090505b6003811015610d2957610d1781610cfe84610cee83600a6131d2565b610cf990601461317f565b612a0e565b6000848152601160205260409020546109e8919061317f565b80610d2181613274565b915050610cd2565b50610d3d610d38826032612a0e565b612a6d565b60075473ffffffffffffffffffffffffffffffffffffffff868116911614801590610d88575060065473ffffffffffffffffffffffffffffffffffffffff8681166101009092041614155b8015610daf575060075473ffffffffffffffffffffffffffffffffffffffff858116911614155b8015610ddb575060065473ffffffffffffffffffffffffffffffffffffffff8581166101009092041614155b15610e415760085473ffffffffffffffffffffffffffffffffffffffff868116911614801590610e26575060085473ffffffffffffffffffffffffffffffffffffffff858116911614155b15610e3657610e36858585612b57565b610e41858585612bf2565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610e9b86600a612a0e565b610ea5908761320f565b60405190815260200160405180910390a33073ffffffffffffffffffffffffffffffffffffffff86167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610efa866028612a0e565b610f0587601e612a0e565b610f10886014612a0e565b610f1a919061317f565b610f24919061317f565b60405190815260200160405180910390a360065473ffffffffffffffffffffffffffffffffffffffff61010090910481169086167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610f8486603c612a0e565b60405190815260200160405180910390a38473ffffffffffffffffffffffffffffffffffffffff167ffb1cca2745e309250590c0f70d53bdbce480caeb94e9f16af0bf5b20ae9e16a7610fd8856032612a0e565b60405190815260200160405180910390a260019150505b9392505050565b336000908152601c602090815260408083206002845290915290205461107d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6e6f2063757272656e74207374616b696e6720706f736974696f6e000000000060448201526064015b60405180910390fd5b6110876002612c57565b6000611094336002611ceb565b11156110cf57600a546110a8336002611ceb565b6110b291906131d2565b336000908152601b60209081526040808320600284529091529020555b600854336000818152601c6020908152604080832060028452909152908190205490517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810192909252602482015273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb90604401600060405180830381600087803b15801561115e57600080fd5b505af1158015611172573d6000803e3d6000fd5b5050336000908152601c6020908152604080832060028452825282205460149091527fa1930aa930426c54c34daad2b9ada7c5d0ef0c96078a3c5bb79f6fa6602c4a7a805491945092506111c790849061320f565b9091555050336000908152601c6020908152604080832060028452909152812055565b33600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205461122690839061317f565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610945565b60075473ffffffffffffffffffffffffffffffffffffffff16331461130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401611074565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560005b600381101561139c5760085473ffffffffffffffffffffffffffffffffffffffff166000908152601c602090815260408083208484529091528120558061139481613274565b91505061134e565b5050565b600a5473ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812054909161095191613197565b60075473ffffffffffffffffffffffffffffffffffffffff163314611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401611074565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6003805461085c90613226565b33600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205461122690839061320f565b336000908152601c602090815260408083206002845290915290205415611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f7374616b696e6720706f736974696f6e20616c726561647920657869737473006044820152606401611074565b6008546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810183905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd90606401600060405180830381600087803b1580156115ca57600080fd5b505af11580156115de573d6000803e3d6000fd5b50506002600052505060126020527f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2546116405760026000526012602052427f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2555b61164a6002612c57565b6000611657336002611ceb565b111561169257600a5461166b336002611ceb565b61167591906131d2565b336000908152601b60209081526040808320600284529091529020555b7fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeead54336000818152601960209081526040808320600280855290835281842095909555600c54848452601a8352818420868552835281842055928252601c8152828220938252929092528120805483929061170e90849061317f565b90915550506002600090815260146020527fa1930aa930426c54c34daad2b9ada7c5d0ef0c96078a3c5bb79f6fa6602c4a7a805483929061175090849061317f565b909155505050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146117d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401611074565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600a5433600090815260046020526040812054909161183e91613197565b82111561184a57600080fd5b6118543383612953565b91506000600a548361186691906131d2565b3360009081526004602052604081208054929350839290919061188a90849061320f565b909155505060075473ffffffffffffffffffffffffffffffffffffffff163314806118b7575060065460ff165b1561194d5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812080548392906118f190849061317f565b909155505060405183815273ffffffffffffffffffffffffffffffffffffffff85169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36001915050610951565b61195881600a612a0e565b611962908261320f565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260408120805490919061199790849061317f565b909155506119a89050816028612a0e565b6119b382601e612a0e565b6119be836014612a0e565b6119c8919061317f565b6119d2919061317f565b30600090815260046020526040812080549091906119f190849061317f565b90915550611a02905081603c612a0e565b600654610100900473ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604081208054909190611a3e90849061317f565b90915550600090505b6003811015611a7557611a6381610cfe84610cee83600a6131d2565b80611a6d81613274565b915050611a47565b50611a84610d38826032612a0e565b60075473ffffffffffffffffffffffffffffffffffffffff163314801590611ac95750600654610100900473ffffffffffffffffffffffffffffffffffffffff163314155b8015611af0575060075473ffffffffffffffffffffffffffffffffffffffff858116911614155b8015611b1c575060065473ffffffffffffffffffffffffffffffffffffffff8581166101009092041614155b15611b7f5760085473ffffffffffffffffffffffffffffffffffffffff163314801590611b64575060085473ffffffffffffffffffffffffffffffffffffffff858116911614155b15611b7457611b74338585612b57565b611b7f338585612bf2565b73ffffffffffffffffffffffffffffffffffffffff8416337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611bc386600a612a0e565b611bcd908761320f565b60405190815260200160405180910390a330337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c0c866028612a0e565b611c1787601e612a0e565b611c22886014612a0e565b611c2c919061317f565b611c36919061317f565b60405190815260200160405180910390a3600654610100900473ffffffffffffffffffffffffffffffffffffffff16337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c9286603c612a0e565b60405190815260200160405180910390a3337ffb1cca2745e309250590c0f70d53bdbce480caeb94e9f16af0bf5b20ae9e16a7611cd0856032612a0e565b60405190815260200160405180910390a25060019392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601a60209081526040808320848452909152812054611d2857506000610951565b600c546000838152600f602090815260408083205460149092529091205415801590611d6a5750611d5884611f20565b60008581526015602052604090205414155b15611e1f57600084815260156020526040812054611d8786611f20565b611d91919061320f565b90505b600081118015611dca5750600085815260146020526040902054633b9aca0090611dbe85846131d2565b611dc89190613197565b105b15611dee57611dda6002846131d2565b9250611de76002836131d2565b9150611d94565b600085815260146020526040902054611e0784836131d2565b611e119190613197565b611e1b908361317f565b9150505b73ffffffffffffffffffffffffffffffffffffffff85166000818152601a602090815260408083208884528252808320549383526019825280832088845290915281205490918491611e729083906131d2565b611e7c9190613197565b611e86908461320f565b73ffffffffffffffffffffffffffffffffffffffff88166000908152601c602090815260408083208a8452909152902054611ec191906131d2565b611ecb9190613197565b73ffffffffffffffffffffffffffffffffffffffff87166000908152601b60209081526040808320898452909152902054611f06919061317f565b9050600a5481611f169190613197565b9695505050505050565b600081815260126020526040812054611f3b57506000919050565b60008281526017602090815260408083205460138352818420546012909352922054611f67904261320f565b611f71919061317f565b611f7b919061320f565b60008381526013602090815260408083205460168352818420546011909352922054611fa7919061320f565b611fb191906131d2565b611fbb9190613197565b600083815260116020526040902054610951919061320f565b60075473ffffffffffffffffffffffffffffffffffffffff163314612055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401611074565b600090815260136020526040902055565b60005b600381101561139c57600061207e8383611ceb565b111561208e5761208e8282612372565b8061209881613274565b915050612069565b60005b81518110156121be57600a54600d546120bc91906131d2565b600460008484815181106120d2576120d26132dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612123919061317f565b9250508190555081818151811061213c5761213c6132dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040516121a491815260200190565b60405180910390a3806121b681613274565b9150506120a3565b508051600a54600d546121d191906131d2565b6121db91906131d2565b33600090815260046020526040812080549091906121fa90849061320f565b9091555050600160005260126020527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a35461225d5760016000526012602052427f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3555b6122676001612c57565b6000612274336001611ceb565b11156122af57600a54612288336001611ceb565b61229291906131d2565b336000908152601b60209081526040808320600184529091529020555b7f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f88f54336000818152601960209081526040808320600180855290835281842095909555600c54848452601a83528184208685528352818420558551938352601c825280832094835293905291822080549192909161232e90849061317f565b909155505080516001600090815260146020527fb6c61a840592cc84133e4b25bd509abf4659307c57b160799b38490a5aa48f2c805490919061175090849061317f565b61237b81612c57565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601a602090815260408083208484529091529020546123b4575050565b600c5473ffffffffffffffffffffffffffffffffffffffff83166000818152601a60209081526040808320868452825280832054938352601982528083208684529091528120549092919061240a9083906131d2565b6124149190613197565b6000848152600f602052604090205461242d919061320f565b73ffffffffffffffffffffffffffffffffffffffff85166000908152601c6020908152604080832087845290915290205461246891906131d2565b6124729190613197565b73ffffffffffffffffffffffffffffffffffffffff84166000908152601b602090815260408083208684529091529020546124ad919061317f565b73ffffffffffffffffffffffffffffffffffffffff84166000818152601b602090815260408083208784528252808320839055600f82528083205484845260198352818420888552835281842055600c54938352601a825280832087845290915281209190915590915061252283600261317f565b61252d90600a6131d2565b905061253e82610cf983600161317f565b612548908361320f565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260408120805490919061257d90849061317f565b90915550612592905082610cf983600561317f565b600654610100900473ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040812080549091906125ce90849061317f565b909155506125e3905082610cf983600361317f565b6125f283610cf984600261317f565b6125fc908461320f565b612606919061320f565b306000908152600460205260408120805490919061262590849061320f565b90915550600090505b60028110156126a3576126916126458260026131d2565b85141561265357600161265e565b61265e8260026131d2565b612678858461266e87600261317f565b610cf9919061317f565b6000878152601160205260409020546109e8919061317f565b8061269b81613274565b91505061262e565b506126b6610d3883610cf984600461317f565b600a5473ffffffffffffffffffffffffffffffffffffffff85169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061270486610cf987600161317f565b61270e908761320f565b6127189190613197565b60405190815260200160405180910390a3600654600a5461010090910473ffffffffffffffffffffffffffffffffffffffff169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061277f86610cf987600561317f565b6127899190613197565b60405190815260200160405180910390a3600a5430907ffb1cca2745e309250590c0f70d53bdbce480caeb94e9f16af0bf5b20ae9e16a7906127d085610cf986600461317f565b6127da9190613197565b60405190815260200160405180910390a250505050565b60075473ffffffffffffffffffffffffffffffffffffffff163314612872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401611074565b60009182526010602052604090912055565b600080600080612895856000611ceb565b6128a0866001611ceb565b6128ab876002611ceb565b6128b6886002611ceb565b6128c1896001611ceb565b6128cc8a6000611ceb565b6128d6919061317f565b6128e0919061317f565b93509350935093509193509193565b600082815260126020526040902054156129415761290c82611f20565b600083815260166020908152604080832093909355601290522054612931904261320f565b6000838152601760205260409020555b60009182526011602052604090912055565b600b54600a5473ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812054909291849161298e9190613197565b612998919061320f565b1080156129c0575060085473ffffffffffffffffffffffffffffffffffffffff848116911614155b15612a0857600b54600a5473ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546129fb9190613197565b612a05919061320f565b91505b50919050565b6000601081612a1e84600a6131d2565b612a2990600161317f565b8152602001908152602001600020546010600084600a612a4991906131d2565b81526020019081526020016000205484612a6391906131d2565b610fef9190613197565b60085473ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040812054600a54600154612aa591906131d2565b612aaf919061320f565b90506000612abd838361320f565b90508181600a54612ace91906131d2565b612ad89190613197565b600a81905560011115612aeb576001600a555b60085473ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020548290612b209083906131d2565b612b2a9190613197565b60085473ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902055505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526018602052604090205460ff16158015612b8f5750600d548110155b156109ed57612b9f836001612dbb565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260186020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050565b600e5481106109ed5760085473ffffffffffffffffffffffffffffffffffffffff84811691161415612c2957612c29826000612dbb565b60085473ffffffffffffffffffffffffffffffffffffffff838116911614156109ed576109ed836000612dbb565b60008181526014602052604090205415801590612c8a5750612c7881611f20565b60008281526015602052604090205414155b1561096857600081815260156020526040812054612ca783611f20565b612cb1919061320f565b90505b600081118015612cee5750600082815260146020526040902054600c54633b9aca009190612ce290846131d2565b612cec9190613197565b105b15612d55576002600c6000828254612d0691906131d2565b90915550600090505b6003811015612d4f576000818152600f60205260408120805460029290612d379084906131d2565b90915550819050612d4781613274565b915050612d0f565b50612cb4565b600082815260146020526040902054600c54612d7190836131d2565b612d7b9190613197565b6000838152600f602052604081208054909190612d9990849061317f565b90915550612da8905082611f20565b6000838152601560205260409020555050565b600081815260126020526040902054612de05760008181526012602052604090204290555b612de981612c57565b6000612df58383611ceb565b1115612e4457600a54612e088383611ceb565b612e1291906131d2565b73ffffffffffffffffffffffffffffffffffffffff83166000908152601b602090815260408083208584529091529020555b6000818152600f602090815260408083205473ffffffffffffffffffffffffffffffffffffffff861680855260198452828520868652845282852091909155600c54818552601a84528285208686528452828520558352601c82528083208484529091528120805460019290612ebb90849061317f565b90915550506000818152601460205260408120805460019290612edf90849061317f565b90915550505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612f0c57600080fd5b919050565b600060208284031215612f2357600080fd5b610fef82612ee8565b60008060408385031215612f3f57600080fd5b612f4883612ee8565b9150612f5660208401612ee8565b90509250929050565b600080600060608486031215612f7457600080fd5b612f7d84612ee8565b9250612f8b60208501612ee8565b9150604084013590509250925092565b60008060408385031215612fae57600080fd5b612fb783612ee8565b946020939093013593505050565b60006020808385031215612fd857600080fd5b823567ffffffffffffffff80821115612ff057600080fd5b818501915085601f83011261300457600080fd5b8135818111156130165761301661330b565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156130595761305961330b565b604052828152858101935084860182860187018a101561307857600080fd5b600095505b838610156130a25761308e81612ee8565b85526001959095019493860193860161307d565b5098975050505050505050565b6000602082840312156130c157600080fd5b81358015158114610fef57600080fd5b6000602082840312156130e357600080fd5b5035919050565b600080604083850312156130fd57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156131395785810183015185820160400152820161311d565b8181111561314b576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115613192576131926132ad565b500190565b6000826131cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561320a5761320a6132ad565b500290565b600082821015613221576132216132ad565b500390565b600181811c9082168061323a57607f821691505b60208210811415612a08577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132a6576132a66132ad565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220c4a112b181899d8b52b5d1586c6fe55ceaa7a37229683c06c1ea952028f111b264736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106103365760003560e01c80637bd4e08f116101b2578063b5a2ac3b116100f9578063dd62ed3e116100a2578063e7877c361161007c578063e7877c36146107bd578063f6b5fc2e146107e8578063fd9ff94c14610813578063fddacd7b1461084657600080fd5b8063dd62ed3e14610757578063e11998171461079d578063e653723d146107aa57600080fd5b8063c5619050116100d3578063c56190501461070c578063ca6be7f114610731578063d6ef7af01461074457600080fd5b8063b5a2ac3b146106d3578063c4e4abc1146106e6578063c55897bf146106f957600080fd5b8063a457c2d71161015b578063a9059cbb11610135578063a9059cbb146106a4578063b2c5541f146106b7578063b316706c146106ca57600080fd5b8063a457c2d71461066b578063a694fc3a1461067e578063a6f9dae11461069157600080fd5b806395d89b411161018c57806395d89b411461062f5780639ecba7ea14610637578063a1ff4f911461064057600080fd5b80637bd4e08f146105dc5780638da5cb5b146105fc5780638ebfe95c1461061c57600080fd5b80632def6620116102815780633ee708aa1161022a5780635b7c132d116102045780635b7c132d1461058d5780636cfdc929146105a05780636eee7549146105a957806370a08231146105c957600080fd5b80633ee708aa146105445780634bc9500714610564578063577e59ea1461058457600080fd5b8063338b41a21161025b578063338b41a2146104f157806339509351146105115780633ec4c9681461052457600080fd5b80632def662014610485578063313ce5671461048d5780633221c93f146104ac57600080fd5b80631936f4b9116102e357806322d5ba98116102bd57806322d5ba981461042f57806323b872dd146104525780632c8aaf6c1461046557600080fd5b80631936f4b9146103db5780631ae3d5ff1461040657806320bc17b91461042657600080fd5b80630cdd53f6116103145780630cdd53f6146103915780630d1aba1f146103a457806318160ddd146103d257600080fd5b806306fdde031461033b578063095ea7b31461035957806309f1c80a1461037c575b600080fd5b61034361084f565b604051610350919061310c565b60405180910390f35b61036c610367366004612f9b565b6108dd565b6040519015158152602001610350565b61038f61038a3660046130d1565b610957565b005b61038f61039f3660046130ea565b61096b565b6103c46103b23660046130d1565b60156020526000908152604090205481565b604051908152602001610350565b6103c460015481565b6103c46103e9366004612f9b565b601960209081526000928352604080842090915290825290205481565b6103c46104143660046130d1565b60106020526000908152604090205481565b6103c4600a5481565b61036c61043d366004612f11565b60186020526000908152604090205460ff1681565b61036c610460366004612f5f565b6109f2565b6103c46104733660046130d1565b60146020526000908152604090205481565b61038f610ff6565b60005461049a9060ff1681565b60405160ff9091168152602001610350565b6008546104cc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610350565b6103c46104ff3660046130d1565b600f6020526000908152604090205481565b61036c61051f366004612f9b565b6111ea565b6103c46105323660046130d1565b60126020526000908152604090205481565b6103c46105523660046130d1565b60176020526000908152604090205481565b6103c46105723660046130d1565b60116020526000908152604090205481565b6103c4600e5481565b61038f61059b366004612f11565b61128a565b6103c460095481565b6103c46105b73660046130d1565b60136020526000908152604090205481565b6103c46105d7366004612f11565b6113a0565b6103c46105ea3660046130d1565b60166020526000908152604090205481565b6007546104cc9073ffffffffffffffffffffffffffffffffffffffff1681565b61038f61062a3660046130af565b6113d4565b610343611486565b6103c4600d5481565b6103c461064e366004612f9b565b601a60209081526000928352604080842090915290825290205481565b61036c610679366004612f9b565b611493565b61038f61068c3660046130d1565b6114cf565b61038f61069f366004612f11565b611758565b61036c6106b2366004612f9b565b611820565b6103c46106c5366004612f9b565b611ceb565b6103c4600c5481565b6103c46106e13660046130d1565b611f20565b61038f6106f43660046130ea565b611fd4565b61038f610707366004612f11565b612066565b6006546104cc90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61038f61073f366004612fc5565b6120a0565b61038f610752366004612f9b565b612372565b6103c4610765366004612f2c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60065461036c9060ff1681565b61038f6107b83660046130ea565b6127f1565b6103c46107cb366004612f9b565b601b60209081526000928352604080842090915290825290205481565b6103c46107f6366004612f9b565b601c60209081526000928352604080842090915290825290205481565b610826610821366004612f11565b612884565b604080519485526020850193909352918301526060820152608001610350565b6103c4600b5481565b6002805461085c90613226565b80601f016020809104026020016040519081016040528092919081815260200182805461088890613226565b80156108d55780601f106108aa576101008083540402835291602001916108d5565b820191906000526020600020905b8154815290600101906020018083116108b857829003601f168201915b505050505081565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109459086815260200190565b60405180910390a35060015b92915050565b61095f610ff6565b610968816114cf565b50565b6000600a548261097b91906131d2565b3360009081526004602052604081208054929350839290919061099f90849061320f565b909155505030600090815260046020526040812080548392906109c390849061317f565b90915550506000838152601160205260409020546109ed9084906109e890849061317f565b6128ef565b505050565b600a5473ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120549091610a2691613197565b821115610a3257600080fd5b610a3c8483612953565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600560209081526040808320338452909152902054909250610a7b90839061320f565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600560209081526040808320338452909152812091909155600a54610abc90846131d2565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260046020526040812080549293508392909190610af690849061320f565b909155505060075473ffffffffffffffffffffffffffffffffffffffff86811691161480610b26575060065460ff165b15610bd85773ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081208054839290610b6090849061317f565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610bc691815260200190565b60405180910390a36001915050610fef565b610be381600a612a0e565b610bed908261320f565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604081208054909190610c2290849061317f565b90915550610c339050816028612a0e565b610c3e82601e612a0e565b610c49836014612a0e565b610c53919061317f565b610c5d919061317f565b3060009081526004602052604081208054909190610c7c90849061317f565b90915550610c8d905081603c612a0e565b600654610100900473ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604081208054909190610cc990849061317f565b90915550600090505b6003811015610d2957610d1781610cfe84610cee83600a6131d2565b610cf990601461317f565b612a0e565b6000848152601160205260409020546109e8919061317f565b80610d2181613274565b915050610cd2565b50610d3d610d38826032612a0e565b612a6d565b60075473ffffffffffffffffffffffffffffffffffffffff868116911614801590610d88575060065473ffffffffffffffffffffffffffffffffffffffff8681166101009092041614155b8015610daf575060075473ffffffffffffffffffffffffffffffffffffffff858116911614155b8015610ddb575060065473ffffffffffffffffffffffffffffffffffffffff8581166101009092041614155b15610e415760085473ffffffffffffffffffffffffffffffffffffffff868116911614801590610e26575060085473ffffffffffffffffffffffffffffffffffffffff858116911614155b15610e3657610e36858585612b57565b610e41858585612bf2565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610e9b86600a612a0e565b610ea5908761320f565b60405190815260200160405180910390a33073ffffffffffffffffffffffffffffffffffffffff86167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610efa866028612a0e565b610f0587601e612a0e565b610f10886014612a0e565b610f1a919061317f565b610f24919061317f565b60405190815260200160405180910390a360065473ffffffffffffffffffffffffffffffffffffffff61010090910481169086167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610f8486603c612a0e565b60405190815260200160405180910390a38473ffffffffffffffffffffffffffffffffffffffff167ffb1cca2745e309250590c0f70d53bdbce480caeb94e9f16af0bf5b20ae9e16a7610fd8856032612a0e565b60405190815260200160405180910390a260019150505b9392505050565b336000908152601c602090815260408083206002845290915290205461107d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6e6f2063757272656e74207374616b696e6720706f736974696f6e000000000060448201526064015b60405180910390fd5b6110876002612c57565b6000611094336002611ceb565b11156110cf57600a546110a8336002611ceb565b6110b291906131d2565b336000908152601b60209081526040808320600284529091529020555b600854336000818152601c6020908152604080832060028452909152908190205490517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810192909252602482015273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb90604401600060405180830381600087803b15801561115e57600080fd5b505af1158015611172573d6000803e3d6000fd5b5050336000908152601c6020908152604080832060028452825282205460149091527fa1930aa930426c54c34daad2b9ada7c5d0ef0c96078a3c5bb79f6fa6602c4a7a805491945092506111c790849061320f565b9091555050336000908152601c6020908152604080832060028452909152812055565b33600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205461122690839061317f565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610945565b60075473ffffffffffffffffffffffffffffffffffffffff16331461130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401611074565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560005b600381101561139c5760085473ffffffffffffffffffffffffffffffffffffffff166000908152601c602090815260408083208484529091528120558061139481613274565b91505061134e565b5050565b600a5473ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812054909161095191613197565b60075473ffffffffffffffffffffffffffffffffffffffff163314611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401611074565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6003805461085c90613226565b33600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205461122690839061320f565b336000908152601c602090815260408083206002845290915290205415611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f7374616b696e6720706f736974696f6e20616c726561647920657869737473006044820152606401611074565b6008546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810183905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd90606401600060405180830381600087803b1580156115ca57600080fd5b505af11580156115de573d6000803e3d6000fd5b50506002600052505060126020527f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2546116405760026000526012602052427f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b2555b61164a6002612c57565b6000611657336002611ceb565b111561169257600a5461166b336002611ceb565b61167591906131d2565b336000908152601b60209081526040808320600284529091529020555b7fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeead54336000818152601960209081526040808320600280855290835281842095909555600c54848452601a8352818420868552835281842055928252601c8152828220938252929092528120805483929061170e90849061317f565b90915550506002600090815260146020527fa1930aa930426c54c34daad2b9ada7c5d0ef0c96078a3c5bb79f6fa6602c4a7a805483929061175090849061317f565b909155505050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146117d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401611074565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600a5433600090815260046020526040812054909161183e91613197565b82111561184a57600080fd5b6118543383612953565b91506000600a548361186691906131d2565b3360009081526004602052604081208054929350839290919061188a90849061320f565b909155505060075473ffffffffffffffffffffffffffffffffffffffff163314806118b7575060065460ff165b1561194d5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812080548392906118f190849061317f565b909155505060405183815273ffffffffffffffffffffffffffffffffffffffff85169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36001915050610951565b61195881600a612a0e565b611962908261320f565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260408120805490919061199790849061317f565b909155506119a89050816028612a0e565b6119b382601e612a0e565b6119be836014612a0e565b6119c8919061317f565b6119d2919061317f565b30600090815260046020526040812080549091906119f190849061317f565b90915550611a02905081603c612a0e565b600654610100900473ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604081208054909190611a3e90849061317f565b90915550600090505b6003811015611a7557611a6381610cfe84610cee83600a6131d2565b80611a6d81613274565b915050611a47565b50611a84610d38826032612a0e565b60075473ffffffffffffffffffffffffffffffffffffffff163314801590611ac95750600654610100900473ffffffffffffffffffffffffffffffffffffffff163314155b8015611af0575060075473ffffffffffffffffffffffffffffffffffffffff858116911614155b8015611b1c575060065473ffffffffffffffffffffffffffffffffffffffff8581166101009092041614155b15611b7f5760085473ffffffffffffffffffffffffffffffffffffffff163314801590611b64575060085473ffffffffffffffffffffffffffffffffffffffff858116911614155b15611b7457611b74338585612b57565b611b7f338585612bf2565b73ffffffffffffffffffffffffffffffffffffffff8416337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611bc386600a612a0e565b611bcd908761320f565b60405190815260200160405180910390a330337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c0c866028612a0e565b611c1787601e612a0e565b611c22886014612a0e565b611c2c919061317f565b611c36919061317f565b60405190815260200160405180910390a3600654610100900473ffffffffffffffffffffffffffffffffffffffff16337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c9286603c612a0e565b60405190815260200160405180910390a3337ffb1cca2745e309250590c0f70d53bdbce480caeb94e9f16af0bf5b20ae9e16a7611cd0856032612a0e565b60405190815260200160405180910390a25060019392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601a60209081526040808320848452909152812054611d2857506000610951565b600c546000838152600f602090815260408083205460149092529091205415801590611d6a5750611d5884611f20565b60008581526015602052604090205414155b15611e1f57600084815260156020526040812054611d8786611f20565b611d91919061320f565b90505b600081118015611dca5750600085815260146020526040902054633b9aca0090611dbe85846131d2565b611dc89190613197565b105b15611dee57611dda6002846131d2565b9250611de76002836131d2565b9150611d94565b600085815260146020526040902054611e0784836131d2565b611e119190613197565b611e1b908361317f565b9150505b73ffffffffffffffffffffffffffffffffffffffff85166000818152601a602090815260408083208884528252808320549383526019825280832088845290915281205490918491611e729083906131d2565b611e7c9190613197565b611e86908461320f565b73ffffffffffffffffffffffffffffffffffffffff88166000908152601c602090815260408083208a8452909152902054611ec191906131d2565b611ecb9190613197565b73ffffffffffffffffffffffffffffffffffffffff87166000908152601b60209081526040808320898452909152902054611f06919061317f565b9050600a5481611f169190613197565b9695505050505050565b600081815260126020526040812054611f3b57506000919050565b60008281526017602090815260408083205460138352818420546012909352922054611f67904261320f565b611f71919061317f565b611f7b919061320f565b60008381526013602090815260408083205460168352818420546011909352922054611fa7919061320f565b611fb191906131d2565b611fbb9190613197565b600083815260116020526040902054610951919061320f565b60075473ffffffffffffffffffffffffffffffffffffffff163314612055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401611074565b600090815260136020526040902055565b60005b600381101561139c57600061207e8383611ceb565b111561208e5761208e8282612372565b8061209881613274565b915050612069565b60005b81518110156121be57600a54600d546120bc91906131d2565b600460008484815181106120d2576120d26132dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612123919061317f565b9250508190555081818151811061213c5761213c6132dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040516121a491815260200190565b60405180910390a3806121b681613274565b9150506120a3565b508051600a54600d546121d191906131d2565b6121db91906131d2565b33600090815260046020526040812080549091906121fa90849061320f565b9091555050600160005260126020527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a35461225d5760016000526012602052427f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a3555b6122676001612c57565b6000612274336001611ceb565b11156122af57600a54612288336001611ceb565b61229291906131d2565b336000908152601b60209081526040808320600184529091529020555b7f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f88f54336000818152601960209081526040808320600180855290835281842095909555600c54848452601a83528184208685528352818420558551938352601c825280832094835293905291822080549192909161232e90849061317f565b909155505080516001600090815260146020527fb6c61a840592cc84133e4b25bd509abf4659307c57b160799b38490a5aa48f2c805490919061175090849061317f565b61237b81612c57565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601a602090815260408083208484529091529020546123b4575050565b600c5473ffffffffffffffffffffffffffffffffffffffff83166000818152601a60209081526040808320868452825280832054938352601982528083208684529091528120549092919061240a9083906131d2565b6124149190613197565b6000848152600f602052604090205461242d919061320f565b73ffffffffffffffffffffffffffffffffffffffff85166000908152601c6020908152604080832087845290915290205461246891906131d2565b6124729190613197565b73ffffffffffffffffffffffffffffffffffffffff84166000908152601b602090815260408083208684529091529020546124ad919061317f565b73ffffffffffffffffffffffffffffffffffffffff84166000818152601b602090815260408083208784528252808320839055600f82528083205484845260198352818420888552835281842055600c54938352601a825280832087845290915281209190915590915061252283600261317f565b61252d90600a6131d2565b905061253e82610cf983600161317f565b612548908361320f565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260408120805490919061257d90849061317f565b90915550612592905082610cf983600561317f565b600654610100900473ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040812080549091906125ce90849061317f565b909155506125e3905082610cf983600361317f565b6125f283610cf984600261317f565b6125fc908461320f565b612606919061320f565b306000908152600460205260408120805490919061262590849061320f565b90915550600090505b60028110156126a3576126916126458260026131d2565b85141561265357600161265e565b61265e8260026131d2565b612678858461266e87600261317f565b610cf9919061317f565b6000878152601160205260409020546109e8919061317f565b8061269b81613274565b91505061262e565b506126b6610d3883610cf984600461317f565b600a5473ffffffffffffffffffffffffffffffffffffffff85169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061270486610cf987600161317f565b61270e908761320f565b6127189190613197565b60405190815260200160405180910390a3600654600a5461010090910473ffffffffffffffffffffffffffffffffffffffff169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061277f86610cf987600561317f565b6127899190613197565b60405190815260200160405180910390a3600a5430907ffb1cca2745e309250590c0f70d53bdbce480caeb94e9f16af0bf5b20ae9e16a7906127d085610cf986600461317f565b6127da9190613197565b60405190815260200160405180910390a250505050565b60075473ffffffffffffffffffffffffffffffffffffffff163314612872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401611074565b60009182526010602052604090912055565b600080600080612895856000611ceb565b6128a0866001611ceb565b6128ab876002611ceb565b6128b6886002611ceb565b6128c1896001611ceb565b6128cc8a6000611ceb565b6128d6919061317f565b6128e0919061317f565b93509350935093509193509193565b600082815260126020526040902054156129415761290c82611f20565b600083815260166020908152604080832093909355601290522054612931904261320f565b6000838152601760205260409020555b60009182526011602052604090912055565b600b54600a5473ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812054909291849161298e9190613197565b612998919061320f565b1080156129c0575060085473ffffffffffffffffffffffffffffffffffffffff848116911614155b15612a0857600b54600a5473ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546129fb9190613197565b612a05919061320f565b91505b50919050565b6000601081612a1e84600a6131d2565b612a2990600161317f565b8152602001908152602001600020546010600084600a612a4991906131d2565b81526020019081526020016000205484612a6391906131d2565b610fef9190613197565b60085473ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040812054600a54600154612aa591906131d2565b612aaf919061320f565b90506000612abd838361320f565b90508181600a54612ace91906131d2565b612ad89190613197565b600a81905560011115612aeb576001600a555b60085473ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020548290612b209083906131d2565b612b2a9190613197565b60085473ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902055505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526018602052604090205460ff16158015612b8f5750600d548110155b156109ed57612b9f836001612dbb565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260186020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050565b600e5481106109ed5760085473ffffffffffffffffffffffffffffffffffffffff84811691161415612c2957612c29826000612dbb565b60085473ffffffffffffffffffffffffffffffffffffffff838116911614156109ed576109ed836000612dbb565b60008181526014602052604090205415801590612c8a5750612c7881611f20565b60008281526015602052604090205414155b1561096857600081815260156020526040812054612ca783611f20565b612cb1919061320f565b90505b600081118015612cee5750600082815260146020526040902054600c54633b9aca009190612ce290846131d2565b612cec9190613197565b105b15612d55576002600c6000828254612d0691906131d2565b90915550600090505b6003811015612d4f576000818152600f60205260408120805460029290612d379084906131d2565b90915550819050612d4781613274565b915050612d0f565b50612cb4565b600082815260146020526040902054600c54612d7190836131d2565b612d7b9190613197565b6000838152600f602052604081208054909190612d9990849061317f565b90915550612da8905082611f20565b6000838152601560205260409020555050565b600081815260126020526040902054612de05760008181526012602052604090204290555b612de981612c57565b6000612df58383611ceb565b1115612e4457600a54612e088383611ceb565b612e1291906131d2565b73ffffffffffffffffffffffffffffffffffffffff83166000908152601b602090815260408083208584529091529020555b6000818152600f602090815260408083205473ffffffffffffffffffffffffffffffffffffffff861680855260198452828520868652845282852091909155600c54818552601a84528285208686528452828520558352601c82528083208484529091528120805460019290612ebb90849061317f565b90915550506000818152601460205260408120805460019290612edf90849061317f565b90915550505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612f0c57600080fd5b919050565b600060208284031215612f2357600080fd5b610fef82612ee8565b60008060408385031215612f3f57600080fd5b612f4883612ee8565b9150612f5660208401612ee8565b90509250929050565b600080600060608486031215612f7457600080fd5b612f7d84612ee8565b9250612f8b60208501612ee8565b9150604084013590509250925092565b60008060408385031215612fae57600080fd5b612fb783612ee8565b946020939093013593505050565b60006020808385031215612fd857600080fd5b823567ffffffffffffffff80821115612ff057600080fd5b818501915085601f83011261300457600080fd5b8135818111156130165761301661330b565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156130595761305961330b565b604052828152858101935084860182860187018a101561307857600080fd5b600095505b838610156130a25761308e81612ee8565b85526001959095019493860193860161307d565b5098975050505050505050565b6000602082840312156130c157600080fd5b81358015158114610fef57600080fd5b6000602082840312156130e357600080fd5b5035919050565b600080604083850312156130fd57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156131395785810183015185820160400152820161311d565b8181111561314b576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115613192576131926132ad565b500190565b6000826131cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561320a5761320a6132ad565b500290565b600082821015613221576132216132ad565b500390565b600181811c9082168061323a57607f821691505b60208210811415612a08577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132a6576132a66132ad565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220c4a112b181899d8b52b5d1586c6fe55ceaa7a37229683c06c1ea952028f111b264736f6c63430008070033
Deployed Bytecode Sourcemap
221:18255:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;306:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5375:200;;;;;;:::i;:::-;;:::i;:::-;;;4276:14:1;;4269:22;4251:41;;4239:2;4224:18;5375:200:0;4111:187:1;16964:96:0;;;;;;:::i;:::-;;:::i;:::-;;17830:253;;;;;;:::i;:::-;;:::i;1113:51::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;6163:25:1;;;6151:2;6136:18;1113:51:0;6017:177:1;276:23:0;;;;;;1352:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;880:32;;;;;;:::i;:::-;;;;;;;;;;;;;;646:25;;;;;;1296:49;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7622:1463;;;;;;:::i;:::-;;:::i;1056:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;16468:484;;;:::i;248:21::-;;;;;;;;;;;;6767:4:1;6755:17;;;6737:36;;6725:2;6710:18;248:21:0;6595:184:1;578:31:0;;;;;;;;;;;;3351:42:1;3339:55;;;3321:74;;3309:2;3294:18;578:31:0;3175:226:1;843:30:0;;;;;;:::i;:::-;;;;;;;;;;;;;;5583:274;;;;;;:::i;:::-;;:::i;964:38::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1230:59;;;;;;:::i;:::-;;;;;;;;;;;;;;919:38;;;;;;:::i;:::-;;;;;;;;;;;;;;797:39;;;;;;17411:262;;;;;;:::i;:::-;;:::i;616:23::-;;;;;;1009:40;;;;;;:::i;:::-;;;;;;;;;;;;;;5104:123;;;;;;:::i;:::-;;:::i;1171:52::-;;;;;;:::i;:::-;;;;;;;;;;;;;;551:20;;;;;;;;;18095:154;;;;;;:::i;:::-;;:::i;331:20::-;;;:::i;751:39::-;;;;;;1410:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5865:284;;;;;;:::i;:::-;;:::i;15834:622::-;;;;;;:::i;:::-;;:::i;17685:133::-;;;;;;:::i;:::-;;:::i;6157:1457::-;;;;;;:::i;:::-;;:::i;13097:928::-;;;;;;:::i;:::-;;:::i;710:34::-;;;;;;10664:302;;;;;;:::i;:::-;;:::i;17223:176::-;;;;;;:::i;:::-;;:::i;15647:175::-;;;;;;:::i;:::-;;:::i;519:25::-;;;;;;;;;;;;9097:817;;;;;;:::i;:::-;;:::i;14367:1272::-;;;;;;:::i;:::-;;:::i;5235:132::-;;;;;;:::i;:::-;5335:15;;;;5308:7;5335:15;;;:7;:15;;;;;;;;:24;;;;;;;;;;;;;5235:132;481:31;;;;;;;;;17072:139;;;;;;:::i;:::-;;:::i;1469:62::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1538:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;14033:326;;;;;;:::i;:::-;;:::i;:::-;;;;6430:25:1;;;6486:2;6471:18;;6464:34;;;;6514:18;;;6507:34;6572:2;6557:18;;6550:34;6417:3;6402:19;14033:326:0;6199:391:1;678:25:0;;;;;;306:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5375:200::-;5465:10;5440:4;5457:19;;;:7;:19;;;;;;;;;:28;;;;;;;;;;:36;;;5509;5440:4;;5457:28;;5509:36;;;;5488:5;6163:25:1;;6151:2;6136:18;;6017:177;5509:36:0;;;;;;;;-1:-1:-1;5563:4:0;5375:200;;;;;:::o;16964:96::-;17019:9;:7;:9::i;:::-;17039:13;17045:6;17039:5;:13::i;:::-;16964:96;:::o;17830:253::-;17885:15;17911:13;;17903:5;:21;;;;:::i;:::-;17944:10;17935:20;;;;:8;:20;;;;;:34;;17885:39;;-1:-1:-1;17885:39:0;;17935:20;;;:34;;17885:39;;17935:34;:::i;:::-;;;;-1:-1:-1;;17997:4:0;17980:23;;;;:8;:23;;;;;:37;;18007:10;;17980:23;:37;;18007:10;;17980:37;:::i;:::-;;;;-1:-1:-1;;18048:13:0;;;;:9;:13;;;;;;18028:47;;18044:2;;18048:26;;18064:10;;18048:26;:::i;:::-;18028:15;:47::i;:::-;17874:209;17830:253;;:::o;7622:1463::-;7747:13;;7730:14;;;7701:4;7730:14;;;:8;:14;;;;;;7701:4;;7730:30;;;:::i;:::-;7722:5;:38;7718:52;;;7762:8;;;7718:52;7789:27;7804:4;7810:5;7789:14;:27::i;:::-;7855:13;;;;;;;:7;:13;;;;;;;;7869:10;7855:25;;;;;;;;7781:35;;-1:-1:-1;7855:33:0;;7781:35;;7855:33;:::i;:::-;7827:13;;;;;;;:7;:13;;;;;;;;7841:10;7827:25;;;;;;;:61;;;;7925:13;;7917:21;;:5;:21;:::i;:::-;7949:14;;;;;;;:8;:14;;;;;:28;;7899:39;;-1:-1:-1;7899:39:0;;7949:14;;;:28;;7899:39;;7949:28;:::i;:::-;;;;-1:-1:-1;;8000:5:0;;;7992:13;;;8000:5;;7992:13;;:28;;-1:-1:-1;8009:11:0;;;;7992:28;7988:158;;;8037:12;;;;;;;:8;:12;;;;;:26;;8053:10;;8037:12;:26;;8053:10;;8037:26;:::i;:::-;;;;;;;;8098:2;8083:25;;8092:4;8083:25;;;8102:5;8083:25;;;;6163::1;;6151:2;6136:18;;6017:177;8083:25:0;;;;;;;;8130:4;8123:11;;;;;7988:158;8185:22;8192:10;8204:2;8185:6;:22::i;:::-;8172:35;;:10;:35;:::i;:::-;8156:12;;;;;;;:8;:12;;;;;:51;;:12;;;:51;;;;;:::i;:::-;;;;-1:-1:-1;8295:22:0;;-1:-1:-1;8302:10:0;8314:2;8295:6;:22::i;:::-;8270;8277:10;8289:2;8270:6;:22::i;:::-;8245;8252:10;8264:2;8245:6;:22::i;:::-;:47;;;;:::i;:::-;:72;;;;:::i;:::-;8235:4;8218:23;;;;:8;:23;;;;;:99;;:23;;;:99;;;;;:::i;:::-;;;;-1:-1:-1;8352:22:0;;-1:-1:-1;8359:10:0;8371:2;8352:6;:22::i;:::-;8337:10;;;;;;;8328:20;;;;:8;:20;;;;;:46;;:20;;;:46;;;;;:::i;:::-;;;;-1:-1:-1;8390:6:0;;-1:-1:-1;8385:100:0;8406:1;8402;:5;8385:100;;;8416:66;8432:1;8450:31;8457:10;8474:6;8432:1;8478:2;8474:6;:::i;:::-;8469:11;;:2;:11;:::i;:::-;8450:6;:31::i;:::-;8435:12;;;;:9;:12;;;;;;:46;;;;:::i;8416:66::-;8409:3;;;;:::i;:::-;;;;8385:100;;;;8495:31;8503:22;8510:10;8522:2;8503:6;:22::i;:::-;8495:7;:31::i;:::-;8549:5;;;8541:13;;;8549:5;;8541:13;;;;:35;;-1:-1:-1;8566:10:0;;;8558:18;;;8566:10;;;;;8558:18;;8541:35;:50;;;;-1:-1:-1;8586:5:0;;;8580:11;;;8586:5;;8580:11;;8541:50;:70;;;;-1:-1:-1;8601:10:0;;;8595:16;;;8601:10;;;;;8595:16;;8541:70;8537:240;;;8640:16;;;8632:24;;;8640:16;;8632:24;;;;:50;;-1:-1:-1;8666:16:0;;;8660:22;;;8666:16;;8660:22;;8632:50;8628:89;;;8684:33;8701:4;8707:2;8711:5;8684:16;:33::i;:::-;8732;8749:4;8755:2;8759:5;8732:16;:33::i;:::-;8807:2;8792:45;;8801:4;8792:45;;;8819:17;8826:5;8833:2;8819:6;:17::i;:::-;8811:25;;:5;:25;:::i;:::-;8792:45;;6163:25:1;;;6151:2;6136:18;8792:45:0;;;;;;;8876:4;8853:88;;;;8923:17;8930:5;8937:2;8923:6;:17::i;:::-;8903;8910:5;8917:2;8903:6;:17::i;:::-;8883;8890:5;8897:2;8883:6;:17::i;:::-;:37;;;;:::i;:::-;:57;;;;:::i;:::-;8853:88;;6163:25:1;;;6151:2;6136:18;8853:88:0;;;;;;;8972:10;;;;;;;;;;8957:45;;;8984:17;8991:5;8998:2;8984:6;:17::i;:::-;8957:45;;6163:25:1;;;6151:2;6136:18;8957:45:0;;;;;;;9031:4;9018:37;;;9037:17;9044:5;9051:2;9037:6;:17::i;:::-;9018:37;;6163:25:1;;;6151:2;6136:18;9018:37:0;;;;;;;9073:4;9066:11;;;7622:1463;;;;;;:::o;16468:484::-;16530:10;16547:1;16513:28;;;:16;:28;;;;;;;;16542:1;16513:31;;;;;;;;16505:75;;;;;;;5166:2:1;16505:75:0;;;5148:21:1;5205:2;5185:18;;;5178:30;5244:29;5224:18;;;5217:57;5291:18;;16505:75:0;;;;;;;;;16591:13;16602:1;16591:10;:13::i;:::-;16656:1;16619:34;16639:10;16651:1;16619:19;:34::i;:::-;:38;16615:125;;;16727:13;;16690:34;16710:10;16722:1;16690:19;:34::i;:::-;:50;;;;:::i;:::-;16673:10;16659:25;;;;:13;:25;;;;;;;;16685:1;16659:28;;;;;;;:81;16615:125;16757:16;;16784:10;16757:16;16796:28;;;:16;:28;;;;;;;;16825:1;16796:31;;;;;;;;;;16751:77;;;;;;;;3983:74:1;;;;4073:18;;;4066:34;16757:16:0;;;;;16751:32;;3956:18:1;;16751:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16884:10:0;16867:28;;;;:16;:28;;;;;;;;16896:1;16867:31;;;;;;;16839:21;:24;;;;:59;;16867:31;;-1:-1:-1;16839:24:0;-1:-1:-1;16839:59:0;;16867:31;;16839:59;:::i;:::-;;;;-1:-1:-1;;16926:10:0;16943:1;16909:28;;;:16;:28;;;;;;;;16938:1;16909:31;;;;;;;:35;16468:484::o;5583:274::-;5719:10;5663:4;5711:19;;;:7;:19;;;;;;;;;:28;;;;;;;;;;:41;;5742:10;;5711:41;:::i;:::-;5688:10;5680:19;;;;:7;:19;;;;;;;;;:28;;;;;;;;;;;;:72;;;5768:59;6163:25:1;;;5680:28:0;;5768:59;;6136:18:1;5768:59:0;6017:177:1;17411:262:0;17512:5;;;;17498:10;:19;17490:41;;;;;;;5882:2:1;17490:41:0;;;5864:21:1;5921:1;5901:18;;;5894:29;5959:11;5939:18;;;5932:39;5988:18;;17490:41:0;5680:332:1;17490:41:0;17542:16;:38;;;;;;;;;;-1:-1:-1;17591:75:0;17612:1;17608;:5;17591:75;;;17639:16;;;;17662:1;17622:34;;;:16;:34;;;;;;;;:37;;;;;;;;:41;17657:1;17615:3;17657:1;17615:3;:::i;:::-;;;;17591:75;;;;17411:262;:::o;5104:123::-;5206:13;;5187:16;;;5160:7;5187:16;;;:8;:16;;;;;;5160:7;;5187:32;;;:::i;18095:154::-;18183:5;;;;18169:10;:19;18161:41;;;;;;;5882:2:1;18161:41:0;;;5864:21:1;5921:1;5901:18;;;5894:29;5959:11;5939:18;;;5932:39;5988:18;;18161:41:0;5680:332:1;18161:41:0;18213:11;:28;;;;;;;;;;;;;18095:154::o;331:20::-;;;;;;;:::i;5865:284::-;6006:10;5950:4;5998:19;;;:7;:19;;;;;;;;;:28;;;;;;;;;;:46;;6029:15;;5998:46;:::i;15834:622::-;15905:10;15888:28;;;;:16;:28;;;;;;;;15917:1;15888:31;;;;;;;;:36;15880:80;;;;;;;5522:2:1;15880:80:0;;;5504:21:1;5561:2;5541:18;;;5534:30;5600:33;5580:18;;;5573:61;5651:18;;15880:80:0;5320:355:1;15880:80:0;15977:16;;15971:71;;;;;16008:10;15971:71;;;3669:34:1;16028:4:0;3719:18:1;;;3712:43;3771:18;;;3764:34;;;15977:16:0;;;;;15971:36;;3581:18:1;;15971:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16067:1:0;16057:12;;-1:-1:-1;;16057:9:0;:12;;;;16053:53;;16086:1;16076:12;;:9;:12;;16091:15;16076:12;:30;16053:53;16117:13;16128:1;16117:10;:13::i;:::-;16182:1;16145:34;16165:10;16177:1;16145:19;:34::i;:::-;:38;16141:125;;;16253:13;;16216:34;16236:10;16248:1;16216:19;:34::i;:::-;:50;;;;:::i;:::-;16199:10;16185:25;;;;:13;:25;;;;;;;;16211:1;16185:28;;;;;;;:81;16141:125;16297:4;;16280:10;16297:4;16277:14;;;:2;16297:4;16277:14;;;16297:4;16277:14;;;16299:1;16277:17;;;;;;;;;:24;;;;16333:18;;16312:15;;;:3;:15;;;;;:18;;;;;;;;:39;16362:28;;;:16;:28;;;;;:31;;;;;;;;;:41;;16397:6;;16297:4;16362:41;;16397:6;;16362:41;:::i;:::-;;;;-1:-1:-1;;16436:1:0;16414:24;;;;:21;:24;;;:34;;16442:6;;16414:24;:34;;16442:6;;16414:34;:::i;:::-;;;;-1:-1:-1;;;15834:622:0:o;17685:133::-;17764:5;;;;17750:10;:19;17742:41;;;;;;;5882:2:1;17742:41:0;;;5864:21:1;5921:1;5901:18;;;5894:29;5959:11;5939:18;;;5932:39;5988:18;;17742:41:0;5680:332:1;17742:41:0;17794:5;:16;;;;;;;;;;;;;;;17685:133::o;6157:1457::-;6270:13;;6256:10;6218:4;6247:20;;;:8;:20;;;;;;6218:4;;6247:36;;;:::i;:::-;6239:5;:44;6235:58;;;6285:8;;;6235:58;6312:33;6327:10;6339:5;6312:14;:33::i;:::-;6304:41;;6356:15;6382:13;;6374:5;:21;;;;:::i;:::-;6415:10;6406:20;;;;:8;:20;;;;;:34;;6356:39;;-1:-1:-1;6356:39:0;;6406:20;;;:34;;6356:39;;6406:34;:::i;:::-;;;;-1:-1:-1;;6469:5:0;;;;6455:10;:19;;:34;;-1:-1:-1;6478:11:0;;;;6455:34;6451:170;;;6506:12;;;;;;;:8;:12;;;;;:26;;6522:10;;6506:12;:26;;6522:10;;6506:26;:::i;:::-;;;;-1:-1:-1;;6552:31:0;;6163:25:1;;;6552:31:0;;;;6561:10;;6552:31;;6151:2:1;6136:18;6552:31:0;;;;;;;6605:4;6598:11;;;;;6451:170;6660:22;6667:10;6679:2;6660:6;:22::i;:::-;6647:35;;:10;:35;:::i;:::-;6631:12;;;;;;;:8;:12;;;;;:51;;:12;;;:51;;;;;:::i;:::-;;;;-1:-1:-1;6770:22:0;;-1:-1:-1;6777:10:0;6789:2;6770:6;:22::i;:::-;6745;6752:10;6764:2;6745:6;:22::i;:::-;6720;6727:10;6739:2;6720:6;:22::i;:::-;:47;;;;:::i;:::-;:72;;;;:::i;:::-;6710:4;6693:23;;;;:8;:23;;;;;:99;;:23;;;:99;;;;;:::i;:::-;;;;-1:-1:-1;6827:22:0;;-1:-1:-1;6834:10:0;6846:2;6827:6;:22::i;:::-;6812:10;;;;;;;6803:20;;;;:8;:20;;;;;:46;;:20;;;:46;;;;;:::i;:::-;;;;-1:-1:-1;6865:6:0;;-1:-1:-1;6860:100:0;6881:1;6877;:5;6860:100;;;6891:66;6907:1;6925:31;6932:10;6949:6;6907:1;6953:2;6949:6;:::i;6891:66::-;6884:3;;;;:::i;:::-;;;;6860:100;;;;6970:31;6978:22;6985:10;6997:2;6978:6;:22::i;6970:31::-;7030:5;;;;7016:10;:19;;;;:47;;-1:-1:-1;7053:10:0;;;;;;;7039;:24;;7016:47;:62;;;;-1:-1:-1;7073:5:0;;;7067:11;;;7073:5;;7067:11;;7016:62;:82;;;;-1:-1:-1;7088:10:0;;;7082:16;;;7088:10;;;;;7082:16;;7016:82;7012:270;;;7133:16;;;;7119:10;:30;;;;:56;;-1:-1:-1;7159:16:0;;;7153:22;;;7159:16;;7153:22;;7119:56;7115:101;;;7177:39;7194:10;7206:2;7210:5;7177:16;:39::i;:::-;7231;7248:10;7260:2;7264:5;7231:16;:39::i;:::-;7297:51;;;7306:10;7297:51;7330:17;7337:5;7344:2;7330:6;:17::i;:::-;7322:25;;:5;:25;:::i;:::-;7297:51;;6163:25:1;;;6151:2;6136:18;7297:51:0;;;;;;;7393:4;7373:10;7364:94;7440:17;7447:5;7454:2;7440:6;:17::i;:::-;7420;7427:5;7434:2;7420:6;:17::i;:::-;7400;7407:5;7414:2;7400:6;:17::i;:::-;:37;;;;:::i;:::-;:57;;;;:::i;:::-;7364:94;;6163:25:1;;;6151:2;6136:18;7364:94:0;;;;;;;7495:10;;;;;;;7483;7474:51;7507:17;7514:5;7521:2;7507:6;:17::i;:::-;7474:51;;6163:25:1;;;6151:2;6136:18;7474:51:0;;;;;;;7554:10;7541:43;7566:17;7573:5;7580:2;7566:6;:17::i;:::-;7541:43;;6163:25:1;;;6151:2;6136:18;7541:43:0;;;;;;;-1:-1:-1;7602:4:0;;6157:1457;-1:-1:-1;;;6157:1457:0:o;13097:928::-;13195:13;;;13174:4;13195:13;;;:3;:13;;;;;;;;:17;;;;;;;;;13191:36;;-1:-1:-1;13226:1:0;13219:8;;13191:36;13265:18;;13238:24;13304:5;;;:1;:5;;;;;;;;;13324:21;:25;;;;;;;:30;;;;:85;;;13388:21;13406:2;13388:17;:21::i;:::-;13358:26;;;;:22;:26;;;;;;:51;;13324:85;13320:463;;;13426:16;13469:26;;;:22;:26;;;;;;13445:21;13492:2;13445:17;:21::i;:::-;:50;;;;:::i;:::-;13426:69;;13510:180;13531:1;13517:11;:15;:86;;;;-1:-1:-1;13572:25:0;;;;:21;:25;;;;;;13600:3;;13536:33;13550:19;13536:11;:33;:::i;:::-;:61;;;;:::i;:::-;:67;13517:86;13510:180;;;13624:24;13647:1;13624:24;;:::i;:::-;;-1:-1:-1;13667:7:0;13673:1;13667:7;;:::i;:::-;;;13510:180;;;13746:25;;;;:21;:25;;;;;;13710:33;13724:19;13710:11;:33;:::i;:::-;:61;;;;:::i;:::-;13704:67;;;;:::i;:::-;;;13411:372;13320:463;13927:13;;;13793:21;13927:13;;;:3;:13;;;;;;;;:17;;;;;;;;;13886:12;;;:2;:12;;;;;:16;;;;;;;;;13793:21;;13948:19;;13886:38;;13948:19;;13886:38;:::i;:::-;:58;;;;:::i;:::-;13881:63;;:2;:63;:::i;:::-;13847:26;;;;;;;:16;:26;;;;;;;;:30;;;;;;;;;:98;;;;:::i;:::-;:120;;;;:::i;:::-;13817:23;;;;;;;:13;:23;;;;;;;;:27;;;;;;;;;:150;;;;:::i;:::-;13793:174;;14004:13;;13985:16;:32;;;;:::i;:::-;13978:39;13097:928;-1:-1:-1;;;;;;13097:928:0:o;10664:302::-;10721:4;10742:13;;;:9;:13;;;;;;10738:32;;-1:-1:-1;10769:1:0;;10664:302;-1:-1:-1;10664:302:0:o;10738:32::-;10923:34;;;;:30;:34;;;;;;;;;10905:11;:15;;;;;;10889:9;:13;;;;;;10871:31;;:15;:31;:::i;:::-;:49;;;;:::i;:::-;:86;;;;:::i;:::-;10852:15;;;;:11;:15;;;;;;;;;10821:23;:27;;;;;;10805:9;:13;;;;;;:43;;10821:27;10805:43;:::i;:::-;10804:63;;;;:::i;:::-;:154;;;;:::i;:::-;10788:13;;;;:9;:13;;;;;;:170;;;;:::i;17223:176::-;17326:5;;;;17312:10;:19;17304:41;;;;;;;5882:2:1;17304:41:0;;;5864:21:1;5921:1;5901:18;;;5894:29;5959:11;5939:18;;;5932:39;5988:18;;17304:41:0;5680:332:1;17304:41:0;17356:15;;;;:11;:15;;;;;:35;17223:176::o;15647:175::-;15716:6;15711:104;15732:1;15728;:5;15711:104;;;15781:1;15746:32;15766:8;15776:1;15746:19;:32::i;:::-;:36;15742:70;;;15784:28;15800:8;15810:1;15784:15;:28::i;:::-;15735:3;;;;:::i;:::-;;;;15711:104;;9097:817;9166:6;9161:223;9182:9;:16;9178:1;:20;9161:223;;;9276:13;;9246:27;;:43;;;;:::i;:::-;9220:8;:22;9229:9;9239:1;9229:12;;;;;;;;:::i;:::-;;;;;;;9220:22;;;;;;;;;;;;;;;;:69;;;;;;;:::i;:::-;;;;;;;;9330:9;9340:1;9330:12;;;;;;;;:::i;:::-;;;;;;;9309:63;;9318:10;9309:63;;;9344:27;;9309:63;;;;6163:25:1;;6151:2;6136:18;;6017:177;9309:63:0;;;;;;;;9200:3;;;;:::i;:::-;;;;9161:223;;;;9464:9;:16;9448:13;;9418:27;;:43;;;;:::i;:::-;:62;;;;:::i;:::-;9403:10;9394:20;;;;:8;:20;;;;;:86;;:20;;;:86;;;;;:::i;:::-;;;;-1:-1:-1;;9505:1:0;9495:12;;:9;:12;;;;9491:53;;9524:1;9514:12;;:9;:12;;9529:15;9514:12;:30;9491:53;9555:13;9566:1;9555:10;:13::i;:::-;9620:1;9583:34;9603:10;9615:1;9583:19;:34::i;:::-;:38;9579:125;;;9691:13;;9654:34;9674:10;9686:1;9654:19;:34::i;:::-;:50;;;;:::i;:::-;9637:10;9623:25;;;;:13;:25;;;;;;;;9649:1;9623:28;;;;;;;:81;9579:125;9735:4;;9718:10;9735:4;9715:14;;;:2;9735:4;9715:14;;;9735:4;9715:14;;;9737:1;9715:17;;;;;;;;;:24;;;;9771:18;;9750:15;;;:3;:15;;;;;:18;;;;;;;;:39;9835:16;;9800:28;;;:16;:28;;;;;:31;;;;;;;;;:51;;9835:16;;9800:31;;:51;;9835:16;;9800:51;:::i;:::-;;;;-1:-1:-1;;9890:16:0;;9884:1;9862:24;;;;:21;:24;;;:44;;:24;;;:44;;9890:16;;9862:44;:::i;14367:1272::-;14437:14;14448:2;14437:10;:14::i;:::-;14466:13;;;;;;;:3;:13;;;;;;;;:17;;;;;;;;;14462:35;;14367:1272;;:::o;14462:35::-;14664:18;;14643:13;;;14507:21;14643:13;;;:3;:13;;;;;;;;:17;;;;;;;;;14603:12;;;:2;:12;;;;;:16;;;;;;;;;14507:21;;14664:18;14643:17;14603:37;;14664:18;;14603:37;:::i;:::-;:57;;;;:::i;:::-;14595:5;;;;:1;:5;;;;;;:65;;;;:::i;:::-;14561:26;;;;;;;:16;:26;;;;;;;;:30;;;;;;;;;:100;;;;:::i;:::-;:121;;;;:::i;:::-;14531:23;;;;;;;:13;:23;;;;;;;;:27;;;;;;;;;:151;;;;:::i;:::-;14693:23;;;14723:1;14693:23;;;:13;:23;;;;;;;;:27;;;;;;;;:31;;;14754:1;:5;;;;;;14735:12;;;:2;:12;;;;;:16;;;;;;;;:24;14790:18;;14770:13;;;:3;:13;;;;;:17;;;;;;;;:38;;;;14507:175;;-1:-1:-1;14831:6:0;14717:2;14836:1;14831:6;:::i;:::-;14830:13;;14841:2;14830:13;:::i;:::-;14819:24;-1:-1:-1;14895:33:0;14902:16;14920:7;14819:24;14926:1;14920:7;:::i;14895:33::-;14876:52;;:16;:52;:::i;:::-;14854:18;;;;;;;:8;:18;;;;;:74;;:18;;;:74;;;;;:::i;:::-;;;;-1:-1:-1;14963:33:0;;-1:-1:-1;14970:16:0;14988:7;:3;14994:1;14988:7;:::i;14963:33::-;14948:10;;;;;;;14939:20;;;;:8;:20;;;;;:57;;:20;;;:57;;;;;:::i;:::-;;;;-1:-1:-1;15089:33:0;;-1:-1:-1;15096:16:0;15114:7;:3;15120:1;15114:7;:::i;15089:33::-;15053;15060:16;15078:7;:3;15084:1;15078:7;:::i;15053:33::-;15034:52;;:16;:52;:::i;:::-;:88;;;;:::i;:::-;15024:4;15007:23;;;;:8;:23;;;;;:115;;:23;;;:115;;;;;:::i;:::-;;;;-1:-1:-1;15138:6:0;;-1:-1:-1;15133:129:0;15154:1;15150;:5;15133:129;;;15164:95;15186:5;:1;15190;15186:5;:::i;:::-;15180:2;:11;;:23;;15202:1;15180:23;;;15194:5;:1;15198;15194:5;:::i;:::-;15221:37;15228:16;15256:1;15246:7;:3;15252:1;15246:7;:::i;:::-;:11;;;;:::i;15221:37::-;15205:13;;;;:9;:13;;;;;;:53;;;;:::i;15164:95::-;15157:3;;;;:::i;:::-;;;;15133:129;;;-1:-1:-1;15272:42:0;15280:33;15287:16;15305:7;:3;15311:1;15305:7;:::i;15272:42::-;15421:13;;15330:105;;;;15347:4;;15330:105;;15384:33;15391:16;15409:7;:3;15415:1;15409:7;:::i;15384:33::-;15365:52;;:16;:52;:::i;:::-;15364:70;;;;:::i;:::-;15330:105;;6163:25:1;;;6151:2;6136:18;15330:105:0;;;;;;;15475:10;;15523:13;;15475:10;;;;;;;15468:4;;15451:86;;15487:33;15494:16;15512:7;:3;15518:1;15512:7;:::i;15487:33::-;:49;;;;:::i;:::-;15451:86;;6163:25:1;;;6151:2;6136:18;15451:86:0;;;;;;;15617:13;;15574:4;;15553:78;;15581:33;15588:16;15606:7;:3;15612:1;15606:7;:::i;15581:33::-;:49;;;;:::i;:::-;15553:78;;6163:25:1;;;6151:2;6136:18;15553:78:0;;;;;;;14426:1213;;14367:1272;;:::o;17072:139::-;17158:5;;;;17144:10;:19;17136:41;;;;;;;5882:2:1;17136:41:0;;;5864:21:1;5921:1;5901:18;;;5894:29;5959:11;5939:18;;;5932:39;5988:18;;17136:41:0;5680:332:1;17136:41:0;17188:7;;;;:3;:7;;;;;;:15;17072:139::o;14033:326::-;14103:4;14109;14115;14121;14146:32;14166:8;14176:1;14146:19;:32::i;:::-;14180;14200:8;14210:1;14180:19;:32::i;:::-;14214;14234:8;14244:1;14214:19;:32::i;:::-;14318;14338:8;14348:1;14318:19;:32::i;:::-;14283;14303:8;14313:1;14283:19;:32::i;:::-;14248;14268:8;14278:1;14248:19;:32::i;:::-;:67;;;;:::i;:::-;:102;;;;:::i;:::-;14138:213;;;;;;;;14033:326;;;;;:::o;10353:303::-;10446:1;10430:13;;;:9;:13;;;;;;:17;10426:184;;10494:21;10512:2;10494:17;:21::i;:::-;10464:27;;;;:23;:27;;;;;;;;:51;;;;10585:9;:13;;;;10567:31;;:15;:31;:::i;:::-;10530:34;;;;:30;:34;;;;;:68;10426:184;10620:13;;;;:9;:13;;;;;;:28;10353:303::o;9922:284::-;10061:13;;10037;;10018:16;;;9997:4;10018:16;;;:8;:16;;;;;;9997:4;;10061:13;10053:5;;10018:32;;10037:13;10018:32;:::i;:::-;:40;;;;:::i;:::-;:56;:86;;;;-1:-1:-1;10088:16:0;;;10078:26;;;10088:16;;10078:26;;10018:86;10014:161;;;10162:13;;10146;;10127:16;;;;;;;:8;:16;;;;;;:32;;10146:13;10127:32;:::i;:::-;:48;;;;:::i;:::-;10119:56;;10014:161;-1:-1:-1;10193:5:0;9922:284;-1:-1:-1;9922:284:0:o;10214:131::-;10274:4;10321:3;10274:4;10325:7;:2;10330;10325:7;:::i;:::-;:11;;10335:1;10325:11;:::i;:::-;10321:16;;;;;;;;;;;;10306:3;:12;10310:2;10315;10310:7;;;;:::i;:::-;10306:12;;;;;;;;;;;;10298:5;:20;;;;:::i;:::-;:39;;;;:::i;10974:390::-;11083:16;;;;11031:10;11074:26;;;:8;:26;;;;;;11058:13;;11083:16;11044:11;:27;;11058:13;11044:27;:::i;:::-;:56;;;;:::i;:::-;11031:69;-1:-1:-1;11111:13:0;11127:21;11135:13;11031:69;11127:21;:::i;:::-;11111:37;;11202:5;11191:8;11175:13;;:24;;;;:::i;:::-;:32;;;;:::i;:::-;11159:13;:48;;;11238:1;-1:-1:-1;11218:53:0;;;11270:1;11254:13;:17;11218:53;11320:16;;;;11311:26;;;;:8;:26;;;;;;11351:5;;11311:37;;11340:8;;11311:37;:::i;:::-;:45;;;;:::i;:::-;11291:16;;;;11282:26;;;;:8;:26;;;;;:74;-1:-1:-1;;;10974:390:0:o;11372:287::-;11468:27;;;;;;;:17;:27;;;;;;;;:36;;;:76;;;11517:27;;11508:5;:36;;11468:76;11464:188;;;11561:30;11581:6;11589:1;11561:19;:30::i;:::-;11606:27;;;;;;;:17;:27;;;;;:34;;;;11636:4;11606:34;;;11372:287;;;:::o;11671:311::-;11776:27;;11767:5;:36;11763:212;;11834:16;;;11824:26;;;11834:16;;11824:26;11820:64;;;11852:32;11872:8;11882:1;11852:19;:32::i;:::-;11915:16;;;11903:28;;;11915:16;;11903:28;11899:64;;;11933:30;11953:6;11961:1;11933:19;:30::i;12478:611::-;12531:25;;;;:21;:25;;;;;;:30;;;;:85;;;12595:21;12613:2;12595:17;:21::i;:::-;12565:26;;;;:22;:26;;;;;;:51;;12531:85;12527:555;;;12633:16;12676:26;;;:22;:26;;;;;;12652:21;12699:2;12652:17;:21::i;:::-;:50;;;;:::i;:::-;12633:69;;12717:205;12738:1;12724:11;:15;:85;;;;-1:-1:-1;12778:25:0;;;;:21;:25;;;;;;12757:18;;12806:3;;12778:25;12743:32;;:11;:32;:::i;:::-;:60;;;;:::i;:::-;:66;12724:85;12717:205;;;12852:1;12830:18;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;12877:6:0;;-1:-1:-1;12872:34:0;12889:1;12885;:5;12872:34;;;12897:4;;;;:1;:4;;;;;:9;;12905:1;;12897:4;:9;;12905:1;;12897:9;:::i;:::-;;;;-1:-1:-1;12892:3:0;;-1:-1:-1;12892:3:0;;;:::i;:::-;;;;12872:34;;;;12717:205;;;12980:25;;;;:21;:25;;;;;;12959:18;;12945:32;;:11;:32;:::i;:::-;:60;;;;:::i;:::-;12936:5;;;;:1;:5;;;;;:69;;:5;;;:69;;;;;:::i;:::-;;;;-1:-1:-1;13049:21:0;;-1:-1:-1;13067:2:0;13049:17;:21::i;:::-;13020:26;;;;:22;:26;;;;;:50;-1:-1:-1;12478:611:0;:::o;11994:476::-;12076:13;;;;:9;:13;;;;;;12072:55;;12096:13;;;;:9;:13;;;;;12112:15;12096:31;;12072:55;12138:14;12149:2;12138:10;:14::i;:::-;12204:1;12167:34;12187:9;12198:2;12167:19;:34::i;:::-;:38;12163:125;;;12275:13;;12238:34;12258:9;12269:2;12238:19;:34::i;:::-;:50;;;;:::i;:::-;12207:24;;;;;;;:13;:24;;;;;;;;:28;;;;;;;;:81;12163:125;12319:5;;;;:1;:5;;;;;;;;;12299:13;;;;;;:2;:13;;;;;:17;;;;;;;;:25;;;;12356:18;;12335:14;;;:3;:14;;;;;:18;;;;;;;;:39;12385:27;;:16;:27;;;;;:31;;;;;;;;:36;;12420:1;;12319:5;12385:36;;12420:1;;12385:36;:::i;:::-;;;;-1:-1:-1;;12432:25:0;;;;:21;:25;;;;;:30;;12461:1;;12432:25;:30;;12461:1;;12432:30;:::i;:::-;;;;-1:-1:-1;;;;11994:476:0:o;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;406:260::-;474:6;482;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;574:29;593:9;574:29;:::i;:::-;564:39;;622:38;656:2;645:9;641:18;622:38;:::i;:::-;612:48;;406:260;;;;;:::o;671:328::-;748:6;756;764;817:2;805:9;796:7;792:23;788:32;785:52;;;833:1;830;823:12;785:52;856:29;875:9;856:29;:::i;:::-;846:39;;904:38;938:2;927:9;923:18;904:38;:::i;:::-;894:48;;989:2;978:9;974:18;961:32;951:42;;671:328;;;;;:::o;1004:254::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1172:29;1191:9;1172:29;:::i;:::-;1162:39;1248:2;1233:18;;;;1220:32;;-1:-1:-1;;;1004:254:1:o;1263:1191::-;1347:6;1378:2;1421;1409:9;1400:7;1396:23;1392:32;1389:52;;;1437:1;1434;1427:12;1389:52;1477:9;1464:23;1506:18;1547:2;1539:6;1536:14;1533:34;;;1563:1;1560;1553:12;1533:34;1601:6;1590:9;1586:22;1576:32;;1646:7;1639:4;1635:2;1631:13;1627:27;1617:55;;1668:1;1665;1658:12;1617:55;1704:2;1691:16;1726:2;1722;1719:10;1716:36;;;1732:18;;:::i;:::-;1778:2;1775:1;1771:10;1810:2;1804:9;1869:66;1864:2;1860;1856:11;1852:84;1844:6;1840:97;1987:6;1975:10;1972:22;1967:2;1955:10;1952:18;1949:46;1946:72;;;1998:18;;:::i;:::-;2034:2;2027:22;2084:18;;;2118:15;;;;-1:-1:-1;2153:11:1;;;2183;;;2179:20;;2176:33;-1:-1:-1;2173:53:1;;;2222:1;2219;2212:12;2173:53;2244:1;2235:10;;2254:169;2268:2;2265:1;2262:9;2254:169;;;2325:23;2344:3;2325:23;:::i;:::-;2313:36;;2286:1;2279:9;;;;;2369:12;;;;2401;;2254:169;;;-1:-1:-1;2442:6:1;1263:1191;-1:-1:-1;;;;;;;;1263:1191:1:o;2459:273::-;2515:6;2568:2;2556:9;2547:7;2543:23;2539:32;2536:52;;;2584:1;2581;2574:12;2536:52;2623:9;2610:23;2676:5;2669:13;2662:21;2655:5;2652:32;2642:60;;2698:1;2695;2688:12;2737:180;2796:6;2849:2;2837:9;2828:7;2824:23;2820:32;2817:52;;;2865:1;2862;2855:12;2817:52;-1:-1:-1;2888:23:1;;2737:180;-1:-1:-1;2737:180:1:o;2922:248::-;2990:6;2998;3051:2;3039:9;3030:7;3026:23;3022:32;3019:52;;;3067:1;3064;3057:12;3019:52;-1:-1:-1;;3090:23:1;;;3160:2;3145:18;;;3132:32;;-1:-1:-1;2922:248:1:o;4303:656::-;4415:4;4444:2;4473;4462:9;4455:21;4505:6;4499:13;4548:6;4543:2;4532:9;4528:18;4521:34;4573:1;4583:140;4597:6;4594:1;4591:13;4583:140;;;4692:14;;;4688:23;;4682:30;4658:17;;;4677:2;4654:26;4647:66;4612:10;;4583:140;;;4741:6;4738:1;4735:13;4732:91;;;4811:1;4806:2;4797:6;4786:9;4782:22;4778:31;4771:42;4732:91;-1:-1:-1;4875:2:1;4863:15;4880:66;4859:88;4844:104;;;;4950:2;4840:113;;4303:656;-1:-1:-1;;;4303:656:1:o;6784:128::-;6824:3;6855:1;6851:6;6848:1;6845:13;6842:39;;;6861:18;;:::i;:::-;-1:-1:-1;6897:9:1;;6784:128::o;6917:274::-;6957:1;6983;6973:189;;7018:77;7015:1;7008:88;7119:4;7116:1;7109:15;7147:4;7144:1;7137:15;6973:189;-1:-1:-1;7176:9:1;;6917:274::o;7196:228::-;7236:7;7362:1;7294:66;7290:74;7287:1;7284:81;7279:1;7272:9;7265:17;7261:105;7258:131;;;7369:18;;:::i;:::-;-1:-1:-1;7409:9:1;;7196:228::o;7429:125::-;7469:4;7497:1;7494;7491:8;7488:34;;;7502:18;;:::i;:::-;-1:-1:-1;7539:9:1;;7429:125::o;7559:437::-;7638:1;7634:12;;;;7681;;;7702:61;;7756:4;7748:6;7744:17;7734:27;;7702:61;7809:2;7801:6;7798:14;7778:18;7775:38;7772:218;;;7846:77;7843:1;7836:88;7947:4;7944:1;7937:15;7975:4;7972:1;7965:15;8001:195;8040:3;8071:66;8064:5;8061:77;8058:103;;;8141:18;;:::i;:::-;-1:-1:-1;8188:1:1;8177:13;;8001:195::o;8201:184::-;8253:77;8250:1;8243:88;8350:4;8347:1;8340:15;8374:4;8371:1;8364:15;8390:184;8442:77;8439:1;8432:88;8539:4;8536:1;8529:15;8563:4;8560:1;8553:15;8579:184;8631:77;8628:1;8621:88;8728:4;8725:1;8718:15;8752:4;8749:1;8742:15
Swarm Source
ipfs://c4a112b181899d8b52b5d1586c6fe55ceaa7a37229683c06c1ea952028f111b2
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.