Source Code
Latest 25 from a total of 33 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Payout | 23950433 | 85 days ago | IN | 0 ETH | 0.00000261 | ||||
| Stop Round | 23950431 | 85 days ago | IN | 0 ETH | 0.00000166 | ||||
| Buy War Bonds | 23950427 | 85 days ago | IN | 0.0515 ETH | 0.00000266 | ||||
| Buy War Bonds | 9638556 | 2182 days ago | IN | 0.002 ETH | 0.00025397 | ||||
| Buy War Bonds | 9638556 | 2182 days ago | IN | 0.002 ETH | 0.0011827 | ||||
| Buy War Bonds | 9631328 | 2183 days ago | IN | 0.003 ETH | 0.00025404 | ||||
| Buy War Bonds | 9631328 | 2183 days ago | IN | 0.003 ETH | 0.00118467 | ||||
| Buy War Bonds | 9624917 | 2184 days ago | IN | 0.003 ETH | 0.00098558 | ||||
| Buy War Bonds | 9618321 | 2185 days ago | IN | 0.002 ETH | 0.00098722 | ||||
| Buy War Bonds | 9611014 | 2186 days ago | IN | 0.058 ETH | 0.00098558 | ||||
| Buy War Bonds | 9607791 | 2187 days ago | IN | 0.068 ETH | 0.00017844 | ||||
| Buy War Bonds | 9604494 | 2187 days ago | IN | 0.002 ETH | 0.00054603 | ||||
| Buy War Bonds | 9080280 | 2273 days ago | IN | 0.002 ETH | 0.00018176 | ||||
| Buy War Bonds | 9073851 | 2274 days ago | IN | 0.001 ETH | 0.00018201 | ||||
| Buy War Bonds | 9068220 | 2275 days ago | IN | 0.002 ETH | 0.00031004 | ||||
| Set Player Info | 9062035 | 2276 days ago | IN | 0 ETH | 0.00002336 | ||||
| Set Player Info | 9062030 | 2276 days ago | IN | 0 ETH | 0.00055114 | ||||
| Buy War Bonds | 9061936 | 2276 days ago | IN | 0.002 ETH | 0.00046597 | ||||
| Buy War Bonds | 9056141 | 2277 days ago | IN | 0.002 ETH | 0.00155021 | ||||
| Buy War Bonds | 9050164 | 2278 days ago | IN | 0.002 ETH | 0.00077662 | ||||
| Buy War Bonds | 9044542 | 2279 days ago | IN | 0.002 ETH | 0.00124016 | ||||
| Buy War Bonds | 9038864 | 2280 days ago | IN | 0.002 ETH | 0.00077662 | ||||
| Buy War Bonds | 9033209 | 2281 days ago | IN | 0.0015 ETH | 0.00062008 | ||||
| Buy War Bonds | 9027349 | 2282 days ago | IN | 0.002 ETH | 0.00031065 | ||||
| Buy War Bonds | 9023372 | 2283 days ago | IN | 0.002 ETH | 0.00015502 |
Latest 4 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 23950433 | 85 days ago | 0.10290202 ETH | ||||
| - | 9017405 | 2284 days ago | Contract Creation | 0 ETH | |||
| - | 9017405 | 2284 days ago | Contract Creation | 0 ETH | |||
| - | 9017405 | 2284 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
StakeWar
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-11-28
*/
pragma solidity >=0.4.22 <0.6.0;
contract StakeWar {
//// events
event Staking(bool isSoviet, address addr, uint256 value);
event LeaderboardUpdated();
event VoteBought(bool isSoviet, address addr, uint256 value);
event GameStateChanged(uint8 state);
event ChangedImageApproval(uint8 approval, address playerAddr);
event SeedPaid(address addr, uint256 value);
event SettingsChanged();
address payable chairman;
uint256 public constant unlockFromInit = 20 hours;
DividendToken dividendToken;
address public constant dividendTokenAddr = 0x8a6A9eFdC77530bf73b05d1005089aBF1B13687C;
//// game settings / unlocked while in play
uint8 public imgInitialApproval = 1; //0: not shown, 1: shown in leaderboard only, 2: approved for president image
bool public noDividendBadPerform = true;
////
struct Player {
address payable addr;
bytes32 name;
string img;
uint8 imgApproval;
}
mapping (address => Player) public players;
mapping (bytes32 => address payable) public campaignLinks;
struct Settings {
uint8 presidentTotalPercent;
uint8 presidentSalaryPercent;
uint8 voteAdditionPercent;
uint8 maxStakeLeadPercent;
uint8 maximumVoteLeadPercent;
uint8 behindBonusPercent;
uint8 payoutDividendPercent;
uint8 unrestrictedStakingPercent;
uint8 seedersProfitPercent;
uint256 timeIncrement;
uint256 minimumStaking;
uint256 minimumVote;
uint256 unlockFromInit;
uint256 unlockFromSeeding;
}
struct Round {
uint256 potSize;
uint256 sovietAllianceBonus;
uint256 usAllianceBonus;
uint256 presidentPot;
uint256 seed;
uint256 deadline;
uint8 gameState;//0: not started yet, 1: seeding, 2: running, 3: finished
address sovietToken;
address usToken;
address seederToken;
address payable[5] sovietLeaderboard;
address payable[5] usLeaderboard;
mapping (address => uint256) presidentSalaries;
mapping (address => uint256) sovietVotes;
mapping (address => uint256) usVotes;
}
mapping (uint256 => Settings) public settings;
mapping (uint256 => Round) public rounds;
uint256 public currentRound = 1;
uint256 public unlockedFrom;
//// Lookup functions
function getPresidentTotalPercent(uint256 round) public view returns(uint256) { return settings[round].presidentTotalPercent;}
function getPresidentSalaryPercent(uint256 round) public view returns(uint256) { return settings[round].presidentSalaryPercent;}
function getVoteAdditionPercent(uint256 round) public view returns(uint256) { return settings[round].voteAdditionPercent;}
function getMaxStakeLeadPercent(uint256 round) public view returns(uint256) { return settings[round].maxStakeLeadPercent;}
function getMaximumVoteLeadPercent(uint256 round) public view returns(uint256) { return settings[round].maximumVoteLeadPercent;}
function getBehindBonusPercent(uint256 round) public view returns(uint256) { return settings[round].behindBonusPercent;}
function getPayoutDividendPercent(uint256 round) public view returns(uint256) { return settings[round].payoutDividendPercent;}
function getTimeIncrement(uint256 round) public view returns(uint256) { return settings[round].timeIncrement;}
function getMinimumStaking(uint256 round) public view returns(uint256) { return settings[round].minimumStaking;}
function getMinimumVote(uint256 round) public view returns(uint256) { return settings[round].minimumVote;}
function getUnrestrictedStakingPercent(uint256 round) public view returns(uint256) { return settings[round].unrestrictedStakingPercent;}
function getUnlockFromInit(uint256 round) public view returns(uint256) { return settings[round].unlockFromInit;}
function getUnlockFromSeeding(uint256 round) public view returns(uint256) { return settings[round].unlockFromSeeding;}
function getSeedersProfitPercent(uint256 round) public view returns(uint256) { return settings[round].seedersProfitPercent;}
function getGameState(uint256 round) public view returns(uint256) { return rounds[round].gameState;}
function getDeadline(uint256 round) public view returns(uint256) { return rounds[round].deadline;}
function getPresidentSalaries(uint256 round, address addr) public view returns(uint256) { return rounds[round].presidentSalaries[addr];}
function getSovietTotalEquity(uint256 round) public view returns(uint256) { return BondToken(rounds[round].sovietToken).totalMinted(); }
function getUsTotalEquity(uint256 round) public view returns(uint256) { return BondToken(rounds[round].usToken).totalMinted(); }
function getPotSize(uint256 round) public view returns(uint256) { return rounds[round].potSize;}
function getSovietAllianceBonus(uint256 round) public view returns(uint256) { return rounds[round].sovietAllianceBonus;}
function getUsAllianceBonus(uint256 round) public view returns(uint256) { return rounds[round].usAllianceBonus;}
function getPresidentPot(uint256 round) public view returns(uint256) { return rounds[round].presidentPot;}
function getSeed(uint256 round) public view returns(uint256) { return rounds[round].seed;}
function getSeedersTotalProfit(uint256 round) public view returns(uint256) {
bool sovietsWon = getSovietTotalEquity(round) > getUsTotalEquity(round);
uint256 funds;
if (sovietsWon) {
funds = rounds[round].usAllianceBonus;
} else {
funds = rounds[round].sovietAllianceBonus;
}
uint256 seedersTotalProfit = SafeMath.div(SafeMath.mul(BondToken(getSeederToken(round)).totalMinted(), getSeedersProfitPercent(round)), 100);
if (funds < seedersTotalProfit) {
seedersTotalProfit = funds;
}
return seedersTotalProfit;
}
function getSeederToken(uint256 round) public view returns(address) { return rounds[round].seederToken;}
function getSeedersProfit(uint256 round, address addr) public view returns(uint256) {
uint256 totalSeedersTokens = BondToken(rounds[round].seederToken).totalMinted();
if (totalSeedersTokens == 0) {
return 0;
}
return SafeMath.div(SafeMath.mul(BondToken(rounds[round].seederToken).balanceOf(addr), getSeedersTotalProfit(round)), totalSeedersTokens);
}
function getSeedersEquity(uint256 round, address addr) public view returns(uint256) {
return BondToken(rounds[round].seederToken).balanceOf(addr);
}
function getToken(bool isSoviet, uint256 round) public view returns(address) {
if (isSoviet) {
return rounds[round].sovietToken;
} else {
return rounds[round].usToken;
}
}
function getEquity(bool isSoviet, uint256 round, address addr) public view returns(uint256) {
if (isSoviet) {
return BondToken(rounds[round].sovietToken).balanceOf(addr);
} else {
return BondToken(rounds[round].usToken).balanceOf(addr);
}
}
function getTotalEquity(bool isSoviet, uint256 round) public view returns(uint256) {
if (isSoviet) {
return BondToken(rounds[round].sovietToken).totalMinted();
} else {
return BondToken(rounds[round].usToken).totalMinted();
}
}
function getVotes(bool isSoviet, uint256 round, address addr) public view returns(uint256) {
if (isSoviet) {
return rounds[round].sovietVotes[addr];
} else {
return rounds[round].usVotes[addr];
}
}
function getLeaderboard(bool isSoviet, uint256 round, uint256 i) public view returns(address payable) {
if (isSoviet) {
return rounds[round].sovietLeaderboard[i];
} else {
return rounds[round].usLeaderboard[i];
}
}
constructor() public {
chairman = msg.sender;
dividendToken = DividendToken(dividendTokenAddr);
unlockedFrom = SafeMath.add(now, unlockFromInit);
loadDefaultSettings();
}
function seedPot() external payable {
require(rounds[currentRound].gameState == 1, "Game not in seeding state");
rounds[currentRound].potSize = SafeMath.add(rounds[currentRound].potSize, msg.value);
rounds[currentRound].seed = SafeMath.add(rounds[currentRound].seed, msg.value);
BondToken(rounds[currentRound].seederToken).mint(msg.sender, msg.value);
emit SeedPaid(msg.sender, msg.value);
}
function loadDefaultSettings() public {
require(msg.sender == chairman || now > unlockedFrom, "Chairman only function");
require(rounds[currentRound].gameState == 0, "Game not in init state");
require(getPresidentTotalPercent(currentRound) == 0);
if (currentRound > 1) {
settings[currentRound] = settings[SafeMath.sub(currentRound,1)];
} else {
settings[currentRound] = Settings({
presidentTotalPercent: 10,
presidentSalaryPercent: 20,
voteAdditionPercent: 20,
maxStakeLeadPercent: 60,
maximumVoteLeadPercent: 105,
behindBonusPercent: 120,
payoutDividendPercent: 20,
unrestrictedStakingPercent: 100,
seedersProfitPercent: 150,
timeIncrement: 1 days,
minimumStaking: 1 finney,
minimumVote: 10 finney,
unlockFromInit: 20 hours,
unlockFromSeeding: 48 hours
});
}
}
function startSeeding() external {
require(msg.sender == chairman || now > unlockedFrom, "Chairman only function");
require(rounds[currentRound].gameState == 0, "Game not in init state");
if (getPresidentTotalPercent(currentRound) == 0) {
loadDefaultSettings();
}
unlockedFrom = SafeMath.add(now, getUnlockFromSeeding(currentRound));
rounds[currentRound].gameState = 1;
setupTokens();
emit GameStateChanged(rounds[currentRound].gameState);
}
function startRound() external {
require(msg.sender == chairman || now > unlockedFrom, "Chairman only function");
require(rounds[currentRound].gameState == 1, "Game not in seeding state");
require(rounds[currentRound].seed > 0, "Cannot start without seeding");
rounds[currentRound].deadline = SafeMath.add(now, getTimeIncrement(currentRound));
rounds[currentRound].gameState = 2;
emit GameStateChanged(rounds[currentRound].gameState);
}
function stopRound() external {
require(now > rounds[currentRound].deadline, "Time has not run out yet");
require(rounds[currentRound].gameState == 2, "Game not in running state");
require(getUsTotalEquity(currentRound) > 0 || getSovietTotalEquity(currentRound) > 0, "Cannot stop if noone staked");
rounds[currentRound].gameState = 3;
emit GameStateChanged(rounds[currentRound].gameState);
unlockedFrom = SafeMath.add(now, getUnlockFromInit(currentRound));
currentRound = SafeMath.add(currentRound, 1);
rounds[currentRound].gameState = 0;
fundNewRound();
}
function setupTokens() private {
string memory roundStr = uint2str(currentRound);
BondToken _sovietToken = new BondToken(string(abi.encodePacked("Soviet War Bonds - Stakewar.com Round ", roundStr)), string(abi.encodePacked("SU", roundStr)), true, currentRound);
rounds[currentRound].sovietToken = address(_sovietToken);
BondToken _usToken = new BondToken(string(abi.encodePacked("US War Bonds - Stakewar.com Round ", roundStr)), string(abi.encodePacked("US", roundStr)), false, currentRound);
rounds[currentRound].usToken = address(_usToken);
BondToken _seederToken = new BondToken(string(abi.encodePacked("Seed Bonds - Stakewar.com Round ", roundStr)), string(abi.encodePacked("SD", roundStr)), false, currentRound);
rounds[currentRound].seederToken = address(_seederToken);
}
function changeSettings(uint8 _presidentTotalPercent, uint8 _presidentSalaryPercent, uint8 _voteAdditionPercent, uint8 _maxStakeLeadPercent, uint8 _maximumVoteLeadPercent, uint8 _behindBonusPercent, uint8 _payoutDividendPercent, uint8 _unrestrictedStakingPercent, uint8 _seedersProfitPercent, uint256 _timeIncrement, uint256 _minimumStaking, uint256 _minimumVote, uint256 _unlockFromInit, uint256 _unlockFromSeeding) external {
require(msg.sender == chairman, "Chairman only function");
require(rounds[currentRound].gameState == 0, "Game not in init state");
settings[currentRound] = Settings({
presidentTotalPercent: _presidentTotalPercent,
presidentSalaryPercent: _presidentSalaryPercent,
voteAdditionPercent: _voteAdditionPercent,
maxStakeLeadPercent: _maxStakeLeadPercent,
maximumVoteLeadPercent: _maximumVoteLeadPercent,
behindBonusPercent: _behindBonusPercent,
payoutDividendPercent: _payoutDividendPercent,
unrestrictedStakingPercent: _unrestrictedStakingPercent,
seedersProfitPercent: _seedersProfitPercent,
timeIncrement: _timeIncrement,
minimumStaking: _minimumStaking,
minimumVote: _minimumVote,
unlockFromInit: _unlockFromInit,
unlockFromSeeding: _unlockFromSeeding
});
emit SettingsChanged();
}
function setImageApproval(uint8 approval, address playerAddr) external {
require(msg.sender == chairman, "Chairman only function");
players[playerAddr].imgApproval = approval;
emit ChangedImageApproval(approval, playerAddr);
}
function setImageInitialApproval(uint8 approval) external {
require(msg.sender == chairman, "Chairman only function");
imgInitialApproval = approval;
}
function setNoDividendBadPerform(bool val) external {
require(msg.sender == chairman, "Chairman only function");
noDividendBadPerform = val;
}
function buyVotes(bool isSoviet) external payable {
require(rounds[currentRound].gameState == 2, "Game not in running state");
require(getLeaderboard(isSoviet, currentRound, 0) != msg.sender, "You are already president");
addVotes(isSoviet, currentRound, msg.sender, SafeMath.mul(msg.value, 1000));
require(getVotes(isSoviet, currentRound, msg.sender) <= SafeMath.mul(getMinimumVote(currentRound), 1000) || getVotes(isSoviet, currentRound, msg.sender) <= SafeMath.div(SafeMath.mul(getVotes(isSoviet, currentRound, getLeaderboard(isSoviet, currentRound, 0)), getMaximumVoteLeadPercent(currentRound)), 100), "Amount too high");
refreshLeaderboard(isSoviet, msg.sender);
addAllianceBonus(isSoviet, currentRound, msg.value);
emit VoteBought(isSoviet, msg.sender, msg.value);
}
function setPlayerInfo(bytes32 name, string calldata img) external {
require(campaignLinks[name] == address(0x0), "Name already taken");
players[msg.sender] = Player(msg.sender, name, img, imgInitialApproval);
campaignLinks[name] = msg.sender;
}
function buyWarBonds(bool isSoviet, address payable _voteAddr, bool behindOnly) public payable {
buyWarBondsToAddr(msg.sender, isSoviet, _voteAddr, behindOnly);
}
function addVotes(bool isSoviet, uint256 round, address voteAddr, uint256 voteAddition) private {
if (isSoviet) {
rounds[round].sovietVotes[voteAddr] = SafeMath.add(rounds[round].sovietVotes[voteAddr], voteAddition);
} else {
rounds[round].usVotes[voteAddr] = SafeMath.add(rounds[round].usVotes[voteAddr], voteAddition);
}
}
function addAllianceBonus(bool isSoviet, uint256 round, uint256 value) private {
if (isSoviet) {
rounds[round].sovietAllianceBonus = SafeMath.add(rounds[round].sovietAllianceBonus, value);
} else {
rounds[round].usAllianceBonus = SafeMath.add(rounds[round].usAllianceBonus, value);
}
}
function buyWarBondsToAddr(address payable receiver, bool isSoviet, address payable _voteAddr, bool behindOnly) public payable {
require(rounds[currentRound].gameState == 2, "Game not in running state");
require(msg.value >= getMinimumStaking(currentRound), "Staking too little");
address payable voteAddr = _voteAddr;
uint256 presidentTotal = SafeMath.div(SafeMath.mul(msg.value,getPresidentTotalPercent(currentRound)), 100);
uint256 presidentSalary = SafeMath.div(SafeMath.mul(presidentTotal, getPresidentSalaryPercent(currentRound)), 100);
uint256 voteAddition = SafeMath.mul(SafeMath.mul(msg.value,getVoteAdditionPercent(currentRound)), 10);
uint256 value = SafeMath.sub(msg.value, presidentTotal);
bool wasBehind = false;
uint256 equityShares;
if (voteAddr == address(0x0)) {
voteAddr = getLeaderboard(isSoviet, currentRound, 0);
}
if (voteAddr == address(0x0)) {
voteAddr = receiver;
}
if (getTotalEquity(isSoviet, currentRound) <= getTotalEquity(!isSoviet, currentRound)) {
equityShares = SafeMath.div(SafeMath.mul(msg.value, getBehindBonusPercent(currentRound)),100);
wasBehind = true;
} else {
require(!behindOnly, 'behind only requested');
equityShares = msg.value;
}
equityShares = SafeMath.mul(equityShares, 1000);
BondToken(getToken(isSoviet, currentRound)).mint(receiver, equityShares);
require(getTotalEquity(isSoviet, currentRound) <= SafeMath.mul(SafeMath.mul(rounds[currentRound].seed, getUnrestrictedStakingPercent(currentRound)), 10) || getTotalEquity(isSoviet, currentRound) <= SafeMath.div(SafeMath.mul(SafeMath.add(getTotalEquity(isSoviet, currentRound), getTotalEquity(!isSoviet, currentRound)), getMaxStakeLeadPercent(currentRound)), 100), "Alliance too far ahead");
addVotes(isSoviet, currentRound, voteAddr, voteAddition);
refreshLeaderboard(isSoviet, voteAddr);
rounds[currentRound].presidentSalaries[getLeaderboard(isSoviet, currentRound, 0)] = SafeMath.add(rounds[currentRound].presidentSalaries[getLeaderboard(isSoviet, currentRound, 0)], presidentSalary);
if (wasBehind && getTotalEquity(isSoviet, currentRound) > getTotalEquity(!isSoviet, currentRound)) {
rounds[currentRound].deadline = SafeMath.add(now, getTimeIncrement(currentRound));
}
rounds[currentRound].potSize = SafeMath.add(rounds[currentRound].potSize, value);
rounds[currentRound].presidentPot = SafeMath.add(rounds[currentRound].presidentPot, SafeMath.sub(presidentTotal, presidentSalary));
emit Staking(isSoviet, receiver, value);
}
function payoutAmount(uint256 round, address addr) public view returns(uint256) {
require(rounds[round].gameState == 3, "Game not in finished state");
uint256 share=0;
if (getSovietTotalEquity(round) > getUsTotalEquity(round)) {
if (getSovietTotalEquity(round) > 0) {
share = SafeMath.div(SafeMath.mul(BondToken(rounds[round].sovietToken).balanceOf(addr), SafeMath.add(rounds[round].potSize, rounds[round].sovietAllianceBonus)), getSovietTotalEquity(round));
}
if (rounds[round].sovietLeaderboard[0] == addr) {
share = SafeMath.add(share, rounds[round].presidentPot);
}
} else {
if (getUsTotalEquity(round) > 0) {
share = SafeMath.div(SafeMath.mul(BondToken(rounds[round].usToken).balanceOf(addr), SafeMath.add(rounds[round].potSize, rounds[round].usAllianceBonus)), getUsTotalEquity(round));
}
if (rounds[round].usLeaderboard[0] == addr) {
share = SafeMath.add(share, rounds[round].presidentPot);
}
}
share = SafeMath.add(share, rounds[round].presidentSalaries[addr]);
share = SafeMath.add(share, getSeedersProfit(round, addr));
return share;
}
function payoutAmountAllRounds(address addr) public view returns(uint256) {
uint256 share=0;
for (uint256 round=1;round < currentRound;round = SafeMath.add(round, 1)) {
share = SafeMath.add(share, payoutAmount(round, addr));
}
return share;
}
function payout(uint256 round) public {
require(rounds[round].gameState == 3, "Game not in finished state");
uint256 share = 0;
if (getSovietTotalEquity(round) > getUsTotalEquity(round)) {
if (getSovietTotalEquity(round) > 0) {
share = SafeMath.div(SafeMath.mul(BondToken(rounds[round].sovietToken).balanceOf(msg.sender), SafeMath.add(rounds[round].potSize, rounds[round].sovietAllianceBonus)), getSovietTotalEquity(round));
}
if (rounds[round].sovietLeaderboard[0] == msg.sender) {
share = SafeMath.add(share, rounds[round].presidentPot);
rounds[round].presidentPot = 0;
}
} else {
if (getUsTotalEquity(round) > 0) {
share = SafeMath.div(SafeMath.mul(BondToken(rounds[round].usToken).balanceOf(msg.sender), SafeMath.add(rounds[round].potSize, rounds[round].usAllianceBonus)), getUsTotalEquity(round));
}
if (rounds[round].usLeaderboard[0] == msg.sender) {
share = SafeMath.add(share, rounds[round].presidentPot);
rounds[round].presidentPot = 0;
}
}
BondToken(rounds[round].sovietToken).burnAll(msg.sender);
BondToken(rounds[round].usToken).burnAll(msg.sender);
share = SafeMath.add(share, rounds[round].presidentSalaries[msg.sender]);
rounds[round].presidentSalaries[msg.sender] = 0;
share = SafeMath.add(share, getSeedersProfit(round, msg.sender));
BondToken(rounds[round].seederToken).burnAll(msg.sender);
if (share > 0) {
msg.sender.transfer(share);
}
}
function fundNewRound() private {
uint256 lastRound = SafeMath.sub(currentRound, 1);
uint256 dividends;
uint256 remainder;
uint256 funds;
bool sovietsWon = getSovietTotalEquity(lastRound) > getUsTotalEquity(lastRound);
if (sovietsWon) {
funds = rounds[lastRound].usAllianceBonus;
} else {
funds = rounds[lastRound].sovietAllianceBonus;
}
uint256 seedersTotalProfit = getSeedersTotalProfit(lastRound);
funds = SafeMath.sub(funds, seedersTotalProfit);
dividends = SafeMath.div(SafeMath.mul(funds, getPayoutDividendPercent(lastRound)), 100);
remainder = SafeMath.sub(funds, dividends);
if (noDividendBadPerform && SafeMath.sub(rounds[lastRound].seed, BondToken(rounds[lastRound].seederToken).totalMinted()) > remainder) {
dividends = 0;
remainder = funds;
}
if (dividends > 0) {
dividendToken.deposit.value(dividends)();
}
rounds[currentRound].potSize = SafeMath.add(rounds[currentRound].potSize, remainder);
rounds[currentRound].seed = SafeMath.add(rounds[currentRound].seed, remainder);
}
function payoutPresidentSalary(uint256 round) public {
uint256 share = rounds[round].presidentSalaries[msg.sender];
rounds[round].presidentSalaries[msg.sender] = 0;
msg.sender.transfer(share);
}
function payoutAllRounds() public {
for (uint256 round=1;round < currentRound;round = SafeMath.add(round, 1)) {
payout(round);
}
}
function uint2str(uint256 __i) internal pure returns (string memory) {
uint256 _i = __i;
if (_i == 0) {
return "0";
}
uint256 j = _i;
uint256 len;
while (j != 0) {
len++;
j /= 10;
}
bytes memory bstr = new bytes(len);
uint256 k = len - 1;
while (_i != 0) {
bstr[k--] = byte(uint8(48 + _i % 10));
_i /= 10;
}
return string(bstr);
}
function setLeaderboard(bool isSoviet, uint256 round, uint256 i, address payable a) private {
if (isSoviet) {
rounds[round].sovietLeaderboard[i] = a;
} else {
rounds[round].usLeaderboard[i] = a;
}
}
function refreshLeaderboard(bool isSoviet, address payable candidateAddr) private {
uint i = 0;
for(i;i < 5;i = SafeMath.add(i, 1)) {
if(getVotes(isSoviet, currentRound, getLeaderboard(isSoviet, currentRound, i)) < getVotes(isSoviet, currentRound, candidateAddr)) {
break;
}
}
if (i < 5) {
i = 0;
for(i;i < 5;i = SafeMath.add(i, 1)) {
if(getLeaderboard(isSoviet, currentRound, i) == candidateAddr) {
for(uint j = i;j < 4;j = SafeMath.add(j, 1)) {
setLeaderboard(isSoviet, currentRound, j, getLeaderboard(isSoviet, currentRound, SafeMath.add(j, 1)));
}
break;
}
}
i = 0;
for(i;i < 5;i = SafeMath.add(i, 1)) {
if(getVotes(isSoviet, currentRound, getLeaderboard(isSoviet, currentRound, i)) < getVotes(isSoviet, currentRound, candidateAddr)) {
break;
}
}
for(uint j = 4;j > i;j = SafeMath.sub(j, 1)) {
setLeaderboard(isSoviet, currentRound, j, getLeaderboard(isSoviet, currentRound, SafeMath.sub(j, 1)));
}
setLeaderboard(isSoviet, currentRound, i, candidateAddr);
emit LeaderboardUpdated();
}
}
}
contract DividendToken {
string public name = "Stakewar.com Dividend Token";
string public symbol = "SDT";
uint8 public decimals = 18;
uint256 public totalSupply = 100000000 * (uint256(10) ** decimals);
mapping(address => uint256) public balanceOf;
constructor() public {
// Initially assign all tokens to the contract's creator.
balanceOf[msg.sender] = totalSupply;
emit Transfer(address(0), msg.sender, totalSupply);
}
uint256 public scaling = uint256(10) ** 8;
mapping(address => uint256) public scaledDividendBalanceOf;
uint256 public scaledDividendPerToken;
mapping(address => uint256) public scaledDividendCreditedTo;
function update(address account) internal {
uint256 owed = SafeMath.sub(scaledDividendPerToken, scaledDividendCreditedTo[account]);
scaledDividendBalanceOf[account] = SafeMath.add(scaledDividendBalanceOf[account], SafeMath.mul(balanceOf[account], owed));
scaledDividendCreditedTo[account] = scaledDividendPerToken;
}
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
mapping(address => mapping(address => uint256)) public allowance;
function transfer(address to, uint256 value) public returns (bool success) {
require(balanceOf[msg.sender] >= value);
update(msg.sender);
update(to);
balanceOf[msg.sender] = SafeMath.sub(balanceOf[msg.sender], value);
balanceOf[to] = SafeMath.add(balanceOf[to], value);
emit Transfer(msg.sender, to, value);
return true;
}
function transferFrom(address from, address to, uint256 value)
public
returns (bool success)
{
require(value <= balanceOf[from]);
require(value <= allowance[from][msg.sender]);
update(from);
update(to);
balanceOf[from] = SafeMath.sub(balanceOf[from], value);
balanceOf[to] = SafeMath.add(balanceOf[to], value);
allowance[from][msg.sender] = SafeMath.sub(allowance[from][msg.sender], value);
emit Transfer(from, to, value);
return true;
}
uint256 public scaledRemainder = 0;
function deposit() public payable {
// scale the deposit and add the previous remainder
uint256 available = SafeMath.add(SafeMath.mul(msg.value, scaling), scaledRemainder);
scaledDividendPerToken = SafeMath.add(scaledDividendPerToken, SafeMath.div(available, totalSupply));
// compute the new remainder
scaledRemainder = available % totalSupply;
}
function withdraw() public {
update(msg.sender);
uint256 amount = SafeMath.div(scaledDividendBalanceOf[msg.sender], scaling);
scaledDividendBalanceOf[msg.sender] %= scaling; // retain the remainder
msg.sender.transfer(amount);
}
function approve(address spender, uint256 value)
public
returns (bool success)
{
allowance[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
}
interface IERC20 {
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract ERC20 is IERC20 {
address payable stakeWar;
uint256 total;
uint256 payout;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
function totalSupply() public view returns (uint256) {
return SafeMath.sub(total, payout);
}
function balanceOf(address account) public view returns (uint256) {
return _balances[account];
}
function totalMinted() public view returns (uint256) {
return total;
}
function totalPayout() public view returns (uint256) {
return payout;
}
function mint(address to, uint256 value) public {
require(msg.sender == stakeWar, 'Must be initiated by Stakewar');
require(to != address(0), "ERC20: mint to the zero address");
_balances[to] = SafeMath.add(_balances[to], value);
total = SafeMath.add(total, value);
emit Transfer(address(0), to, value);
}
function burnAll(address from) public {
require(msg.sender == stakeWar, 'Must be initiated by Stakewar');
_burn(from, _balances[from]);
}
function transfer(address to, uint256 value) public returns (bool) {
_transfer(msg.sender, to, value);
return true;
}
function allowance(address owner, address spender) public view returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 value) public returns (bool) {
_approve(msg.sender, spender, value);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, SafeMath.sub(_allowances[sender][msg.sender], amount));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
_approve(msg.sender, spender, SafeMath.add(_allowances[msg.sender][spender], addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
_approve(msg.sender, spender, SafeMath.sub(_allowances[msg.sender][spender], subtractedValue));
return true;
}
function _transfer(address from, address to, uint256 value) internal {
require(to != address(0), 'Transfer to null address not allowed');
require(msg.sender == from, 'Transfer must be initiated by message sender');
require(_balances[from] >= value);
_balances[msg.sender] = SafeMath.sub(_balances[msg.sender], value);
_balances[to] = SafeMath.add(_balances[to], value);
emit Transfer(from, to, value);
}
function _burn(address account, uint256 amount) internal {
require(account != address(0), "ERC20: burn from the zero address");
_balances[account] = SafeMath.sub(_balances[account], amount);
payout = SafeMath.add(payout, amount);
emit Transfer(account, address(0), amount);
}
function _approve(address owner, address spender, uint256 amount) internal {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
}
contract ERC20Detailed is IERC20 {
string private _name;
string private _symbol;
uint8 private _decimals;
constructor (string memory name, string memory symbol, uint8 decimals) public {
_name = name;
_symbol = symbol;
_decimals = decimals;
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
}
contract BondToken is ERC20, ERC20Detailed {
uint8 public constant DECIMALS = 18;
bool private isSoviet;
uint256 private round;
constructor (string memory __name, string memory __symbol, bool _isSoviet, uint256 _round) public ERC20Detailed(__name, __symbol, DECIMALS) {
stakeWar = msg.sender;
isSoviet = _isSoviet;
round = _round;
}
}
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*
* NOTE: This is a feature of the next version of OpenZeppelin Contracts.
* @dev Get it via `npm install @openzeppelin/contracts@next`.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
* NOTE: This is a feature of the next version of OpenZeppelin Contracts.
* @dev Get it via `npm install @openzeppelin/contracts@next`.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b);// There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*
* NOTE: This is a feature of the next version of OpenZeppelin Contracts.
* @dev Get it via `npm install @openzeppelin/contracts@next`.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"approval","type":"uint8"},{"indexed":false,"internalType":"address","name":"playerAddr","type":"address"}],"name":"ChangedImageApproval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"state","type":"uint8"}],"name":"GameStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"LeaderboardUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"SeedPaid","type":"event"},{"anonymous":false,"inputs":[],"name":"SettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isSoviet","type":"bool"},{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Staking","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isSoviet","type":"bool"},{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"VoteBought","type":"event"},{"constant":false,"inputs":[{"internalType":"bool","name":"isSoviet","type":"bool"}],"name":"buyVotes","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"isSoviet","type":"bool"},{"internalType":"address payable","name":"_voteAddr","type":"address"},{"internalType":"bool","name":"behindOnly","type":"bool"}],"name":"buyWarBonds","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"receiver","type":"address"},{"internalType":"bool","name":"isSoviet","type":"bool"},{"internalType":"address payable","name":"_voteAddr","type":"address"},{"internalType":"bool","name":"behindOnly","type":"bool"}],"name":"buyWarBondsToAddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"campaignLinks","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"_presidentTotalPercent","type":"uint8"},{"internalType":"uint8","name":"_presidentSalaryPercent","type":"uint8"},{"internalType":"uint8","name":"_voteAdditionPercent","type":"uint8"},{"internalType":"uint8","name":"_maxStakeLeadPercent","type":"uint8"},{"internalType":"uint8","name":"_maximumVoteLeadPercent","type":"uint8"},{"internalType":"uint8","name":"_behindBonusPercent","type":"uint8"},{"internalType":"uint8","name":"_payoutDividendPercent","type":"uint8"},{"internalType":"uint8","name":"_unrestrictedStakingPercent","type":"uint8"},{"internalType":"uint8","name":"_seedersProfitPercent","type":"uint8"},{"internalType":"uint256","name":"_timeIncrement","type":"uint256"},{"internalType":"uint256","name":"_minimumStaking","type":"uint256"},{"internalType":"uint256","name":"_minimumVote","type":"uint256"},{"internalType":"uint256","name":"_unlockFromInit","type":"uint256"},{"internalType":"uint256","name":"_unlockFromSeeding","type":"uint256"}],"name":"changeSettings","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dividendTokenAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getBehindBonusPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bool","name":"isSoviet","type":"bool"},{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"getEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getGameState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bool","name":"isSoviet","type":"bool"},{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"uint256","name":"i","type":"uint256"}],"name":"getLeaderboard","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getMaxStakeLeadPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getMaximumVoteLeadPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getMinimumStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getMinimumVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getPayoutDividendPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getPotSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getPresidentPot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"getPresidentSalaries","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getPresidentSalaryPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getPresidentTotalPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getSeed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getSeederToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"getSeedersEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"getSeedersProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getSeedersProfitPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getSeedersTotalProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getSovietAllianceBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getSovietTotalEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getTimeIncrement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bool","name":"isSoviet","type":"bool"},{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bool","name":"isSoviet","type":"bool"},{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getTotalEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getUnlockFromInit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getUnlockFromSeeding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getUnrestrictedStakingPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getUsAllianceBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getUsTotalEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getVoteAdditionPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bool","name":"isSoviet","type":"bool"},{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"imgInitialApproval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"loadDefaultSettings","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"noDividendBadPerform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"payoutAllRounds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"payoutAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"payoutAmountAllRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"payoutPresidentSalary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"players","outputs":[{"internalType":"address payable","name":"addr","type":"address"},{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"string","name":"img","type":"string"},{"internalType":"uint8","name":"imgApproval","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rounds","outputs":[{"internalType":"uint256","name":"potSize","type":"uint256"},{"internalType":"uint256","name":"sovietAllianceBonus","type":"uint256"},{"internalType":"uint256","name":"usAllianceBonus","type":"uint256"},{"internalType":"uint256","name":"presidentPot","type":"uint256"},{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"gameState","type":"uint8"},{"internalType":"address","name":"sovietToken","type":"address"},{"internalType":"address","name":"usToken","type":"address"},{"internalType":"address","name":"seederToken","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"seedPot","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"approval","type":"uint8"},{"internalType":"address","name":"playerAddr","type":"address"}],"name":"setImageApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"approval","type":"uint8"}],"name":"setImageInitialApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"val","type":"bool"}],"name":"setNoDividendBadPerform","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"string","name":"img","type":"string"}],"name":"setPlayerInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"settings","outputs":[{"internalType":"uint8","name":"presidentTotalPercent","type":"uint8"},{"internalType":"uint8","name":"presidentSalaryPercent","type":"uint8"},{"internalType":"uint8","name":"voteAdditionPercent","type":"uint8"},{"internalType":"uint8","name":"maxStakeLeadPercent","type":"uint8"},{"internalType":"uint8","name":"maximumVoteLeadPercent","type":"uint8"},{"internalType":"uint8","name":"behindBonusPercent","type":"uint8"},{"internalType":"uint8","name":"payoutDividendPercent","type":"uint8"},{"internalType":"uint8","name":"unrestrictedStakingPercent","type":"uint8"},{"internalType":"uint8","name":"seedersProfitPercent","type":"uint8"},{"internalType":"uint256","name":"timeIncrement","type":"uint256"},{"internalType":"uint256","name":"minimumStaking","type":"uint256"},{"internalType":"uint256","name":"minimumVote","type":"uint256"},{"internalType":"uint256","name":"unlockFromInit","type":"uint256"},{"internalType":"uint256","name":"unlockFromSeeding","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startSeeding","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"unlockFromInit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unlockedFrom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]Contract Creation Code
60806040526001805460ff60a81b1960ff60a01b1990911674010000000000000000000000000000000000000000171675010000000000000000000000000000000000000000001781556006553480156200005957600080fd5b5060008054336001600160a01b03199182161790915560018054738a6a9efdc77530bf73b05d1005089abf1b13687c9216919091179055620000ab4262011940620000c7602090811b62003e2b17901c565b600755620000c16001600160e01b036200014316565b62000712565b6000828201838110156200013c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000546001600160a01b03163314806200015e575060075442115b620001ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43686169726d616e206f6e6c792066756e6374696f6e00000000000000000000604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff16156200024e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f47616d65206e6f7420696e20696e697420737461746500000000000000000000604482015290519081900360640190fd5b60065462000265906001600160e01b03620005fe16565b156200027057600080fd5b60016006541115620003e957600460006200029a60065460016200061360201b62003de71760201c565b81526020808201929092526040908101600090812060065482526004938490529190208154815460ff191660ff9182161780835583546101009081900483160261ff0019909116178083558354620100009081900483160262ff00001990911617808355835463010000009081900483160263ff000000199091161780835583546401000000009081900483160260ff60201b19909116178083558354650100000000009081900483160260ff60281b1990911617808355835466010000000000009081900483160260ff60301b199091161780835583546701000000000000009081900483160260ff60381b19909116178083558354680100000000000000009081900490921690910260ff60401b199091161781556001808301549082015560028083015490820155600380830154908201558282015492810192909255600590810154910155620005fc565b604051806101c00160405280600a60ff168152602001601460ff168152602001601460ff168152602001603c60ff168152602001606960ff168152602001607860ff168152602001601460ff168152602001606460ff168152602001609660ff16815260200162015180815260200166038d7ea4c680008152602001662386f26fc1000081526020016201194081526020016202a30081525060046000600654815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff1602179055506101008201518160000160086101000a81548160ff021916908360ff16021790555061012082015181600101556101408201518160020155610160820151816003015561018082015181600401556101a082015181600501559050505b565b60009081526004602052604090205460ff1690565b60006200013c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200065d60201b60201c565b600081848411156200070a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620006ce578181015183820152602001620006b4565b50505050905090810190601f168015620006fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b615e2f80620007226000396000f3fe608060405260043610620003fe5760003560e01c80638a19c8bc1162000217578063bd4888841162000127578063df22ca7c11620000af578063e2eb41ff1162000079578063e2eb41ff1462001023578063e7e1afe81462001102578063ffd98bc9146200111a578063ffde0c74146200114857620003fe565b8063df22ca7c1462000f8f578063df8049031462000fbd578063e0d4ea371462000fc7578063e11523431462000ff557620003fe565b8063cd9aed4611620000f1578063cd9aed461462000e57578063cec0485d1462000e8e578063d05d9a551462000f24578063d29bd7de1462000f5257620003fe565b8063bd4888841462000d95578063c099c4481462000dcb578063c186f7bf1462000dfb578063c5fe3d781462000e2957620003fe565b8063a957e1b511620001ab578063b265f1091162000175578063b265f1091462000cdd578063b288785c1462000d0b578063b468c95b1462000d47578063ba7aa8ed1462000d7357620003fe565b8063a957e1b51462000c16578063ac4ebaa01462000c44578063ad63b5fd1462000c81578063ad8cd5e11462000caf57620003fe565b80638ec0560811620001ed5780638ec056081462000b7457806391ed21dd1462000b8c57806397e2bc651462000bba578063a4eb82001462000be857620003fe565b80638a19c8bc1462000a965780638b7730781462000aae5780638c65c81f1462000ae457620003fe565b80635013d3d611620003135780636a1ab79d11620002a757806371261927116200027157806371261927146200094d57806372a01f4114620009655780637a777d2c1462000993578063828622751462000a6857620003fe565b80636a1ab79d14620008b65780636b91b2cf14620008ef5780636c7ee4e91462000907578063703ea060146200093557620003fe565b806354c6997a11620002e957806354c6997a146200081357806355b895eb146200084157806355e3f0861462000859578063597df666146200087157620003fe565b80635013d3d614620007425780635085c868146200075a57806354145ea714620007e557620003fe565b80632e120c59116200039757806345e55fb1116200036157806345e55fb1146200066957806347a1303e14620006a65780634906bef214620006e65780634b8cb040146200071457620003fe565b80632e120c5914620005ae57806333b29be214620005dc57806336cb5754146200060d5780633f322feb146200063b57620003fe565b806314d209d811620003d957806314d209d814620004ae57806315e7f37e14620004f157806324aec8ee146200053b5780632a32a24d146200056957620003fe565b806306256bdd14620004035780630790eb48146200044357806314b4005f1462000471575b600080fd5b3480156200041057600080fd5b5062000431600480360360208110156200042957600080fd5b503562001176565b60408051918252519081900360200190f35b3480156200045057600080fd5b5062000431600480360360208110156200046957600080fd5b503562001195565b3480156200047e57600080fd5b5062000431600480360360408110156200049757600080fd5b50803590602001356001600160a01b0316620011aa565b620004ef60048036036080811015620004c657600080fd5b506001600160a01b0381358116916020810135151591604082013516906060013515156200123a565b005b348015620004fe57600080fd5b506200051f600480360360208110156200051757600080fd5b503562001776565b604080516001600160a01b039092168252519081900360200190f35b3480156200054857600080fd5b5062000431600480360360208110156200056157600080fd5b503562001794565b3480156200057657600080fd5b5062000431600480360360608110156200058f57600080fd5b508035151590602081013590604001356001600160a01b0316620017a9565b348015620005bb57600080fd5b506200043160048036036020811015620005d457600080fd5b50356200180e565b348015620005e957600080fd5b50620004ef600480360360208110156200060257600080fd5b503560ff1662001823565b3480156200061a57600080fd5b5062000431600480360360208110156200063357600080fd5b503562001892565b3480156200064857600080fd5b5062000431600480360360208110156200066157600080fd5b5035620018a4565b3480156200067657600080fd5b5062000431600480360360408110156200068f57600080fd5b50803590602001356001600160a01b0316620018be565b348015620006b357600080fd5b50620004ef60048036036040811015620006cc57600080fd5b50803560ff1690602001356001600160a01b031662001be0565b348015620006f357600080fd5b5062000431600480360360208110156200070c57600080fd5b503562001c9a565b3480156200072157600080fd5b5062000431600480360360208110156200073a57600080fd5b503562001cb7565b3480156200074f57600080fd5b50620004ef62001cd3565b3480156200076757600080fd5b50620004ef600480360360408110156200078057600080fd5b81359190810190604081016020820135640100000000811115620007a357600080fd5b820183602082011115620007b657600080fd5b80359060200191846001830284011164010000000083111715620007d957600080fd5b50909250905062001e3c565b348015620007f257600080fd5b5062000431600480360360208110156200080b57600080fd5b503562001f95565b3480156200082057600080fd5b5062000431600480360360208110156200083957600080fd5b50356200201a565b3480156200084e57600080fd5b50620004ef62002036565b3480156200086657600080fd5b50620004ef62002234565b3480156200087e57600080fd5b5062000431600480360360608110156200089757600080fd5b508035151590602081013590604001356001600160a01b0316620023e5565b620004ef60048036036060811015620008ce57600080fd5b5080351515906001600160a01b0360208201351690604001351515620024e2565b348015620008fc57600080fd5b50620004ef620024f5565b3480156200091457600080fd5b5062000431600480360360208110156200092d57600080fd5b503562002951565b3480156200094257600080fd5b506200043162002966565b3480156200095a57600080fd5b50620004316200296c565b3480156200097257600080fd5b506200051f600480360360208110156200098b57600080fd5b503562002973565b348015620009a057600080fd5b50620009c160048036036020811015620009b957600080fd5b50356200298e565b604051808f60ff1660ff1681526020018e60ff1660ff1681526020018d60ff1660ff1681526020018c60ff1660ff1681526020018b60ff1660ff1681526020018a60ff1660ff1681526020018960ff1660ff1681526020018860ff1660ff1681526020018760ff1660ff1681526020018681526020018581526020018481526020018381526020018281526020019e50505050505050505050505050505060405180910390f35b34801562000a7557600080fd5b50620004316004803603602081101562000a8e57600080fd5b503562002a18565b34801562000aa357600080fd5b506200043162002a2e565b34801562000abb57600080fd5b50620004316004803603604081101562000ad457600080fd5b5080351515906020013562002a34565b34801562000af157600080fd5b5062000b126004803603602081101562000b0a57600080fd5b503562002b29565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260ff1660c08601526001600160a01b0390811660e08601529081166101008501521661012083015251908190036101400190f35b34801562000b8157600080fd5b50620004ef62002b8d565b34801562000b9957600080fd5b50620004316004803603602081101562000bb257600080fd5b503562002bbe565b34801562000bc757600080fd5b50620004ef6004803603602081101562000be057600080fd5b503562002bdc565b34801562000bf557600080fd5b5062000c0062002c2d565b6040805160ff9092168252519081900360200190f35b34801562000c2357600080fd5b50620004316004803603602081101562000c3c57600080fd5b503562002c3d565b34801562000c5157600080fd5b50620004316004803603604081101562000c6a57600080fd5b50803590602001356001600160a01b031662002d29565b34801562000c8e57600080fd5b50620004316004803603602081101562000ca757600080fd5b503562002d55565b34801562000cbc57600080fd5b50620004316004803603602081101562000cd557600080fd5b503562002d6a565b34801562000cea57600080fd5b50620004316004803603602081101562000d0357600080fd5b503562002d80565b34801562000d1857600080fd5b506200051f6004803603606081101562000d3157600080fd5b5080351515906020810135906040013562002d95565b34801562000d5457600080fd5b5062000d5f62002df5565b604080519115158252519081900360200190f35b620004ef6004803603602081101562000d8b57600080fd5b5035151562002e05565b34801562000da257600080fd5b506200051f6004803603604081101562000dbb57600080fd5b508035151590602001356200301a565b34801562000dd857600080fd5b50620004ef6004803603602081101562000df157600080fd5b503515156200306c565b34801562000e0857600080fd5b50620004316004803603602081101562000e2157600080fd5b5035620030d9565b34801562000e3657600080fd5b50620004316004803603602081101562000e4f57600080fd5b5035620030f4565b34801562000e6457600080fd5b50620004316004803603602081101562000e7d57600080fd5b50356001600160a01b031662003109565b34801562000e9b57600080fd5b50620004ef60048036036101c081101562000eb557600080fd5b5060ff8135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c082013581169160e08101358216916101008201351690610120810135906101408101359061016081013590610180810135906101a0013562003149565b34801562000f3157600080fd5b50620004316004803603602081101562000f4a57600080fd5b503562003429565b34801562000f5f57600080fd5b50620004316004803603604081101562000f7857600080fd5b50803590602001356001600160a01b03166200343e565b34801562000f9c57600080fd5b50620004316004803603602081101562000fb557600080fd5b503562003576565b620004ef62003592565b34801562000fd457600080fd5b50620004316004803603602081101562000fed57600080fd5b50356200370b565b3480156200100257600080fd5b50620004ef600480360360208110156200101b57600080fd5b503562003720565b3480156200103057600080fd5b506200105a600480360360208110156200104957600080fd5b50356001600160a01b031662003bfd565b60405180856001600160a01b03166001600160a01b03168152602001848152602001806020018360ff1660ff168152602001828103825284818151815260200191508051906020019080838360005b83811015620010c3578181015183820152602001620010a9565b50505050905090810190601f168015620010f15780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b3480156200110f57600080fd5b506200051f62003cc0565b3480156200112757600080fd5b5062000431600480360360208110156200114057600080fd5b503562003cd8565b3480156200115557600080fd5b5062000431600480360360208110156200116e57600080fd5b503562003d2d565b6000818152600460205260409020546301000000900460ff165b919050565b60009081526004602052604090206005015490565b60008281526005602090815260408083206008015481516370a0823160e01b81526001600160a01b038681166004830152925192909116926370a0823192602480840193829003018186803b1580156200120357600080fd5b505afa15801562001218573d6000803e3d6000fd5b505050506040513d60208110156200122f57600080fd5b505190505b92915050565b600680546000908152600560205260409020015460ff16600214620012a2576040805162461bcd60e51b815260206004820152601960248201527847616d65206e6f7420696e2072756e6e696e6720737461746560381b604482015290519081900360640190fd5b620012af60065462002951565b341015620012f9576040805162461bcd60e51b81526020600482015260126024820152715374616b696e6720746f6f206c6974746c6560701b604482015290519081900360640190fd5b60008290506000620013246200131c34620013166006546200180e565b62003d45565b606462003da3565b905060006200133e6200131c8362001316600654620018a4565b9050600062001360620013583462001316600654620030d9565b600a62003d45565b9050600062001370348562003de7565b90506000806001600160a01b0387166200139757620013948a600654600062002d95565b96505b6001600160a01b038716620013aa578a96505b620013b98a1560065462002a34565b620013c78b60065462002a34565b11620013ef57620013e36200131c346200131660065462002bbe565b9050600191506200143e565b87156200143b576040805162461bcd60e51b815260206004820152601560248201527418995a1a5b99081bdb9b1e481c995c5d595cdd1959605a1b604482015290519081900360640190fd5b50345b6200144c816103e862003d45565b90506200145c8a6006546200301a565b6001600160a01b03166340c10f198c836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015620014bc57600080fd5b505af1158015620014d1573d6000803e3d6000fd5b505060065460008181526005602052604090206004015462001500935062001358925090620013169062001cb7565b6200150e8b60065462002a34565b111580620015645750620015536200131c62001546620015318d60065462002a34565b620015408e1560065462002a34565b62003e2b565b6200131660065462001176565b620015618b60065462002a34565b11155b620015af576040805162461bcd60e51b8152602060048201526016602482015275105b1b1a585b98d9481d1bdbc819985c88185a19585960521b604482015290519081900360640190fd5b620015bf8a600654898762003e86565b620015cb8a8862003f4a565b620016216005600060065481526020019081526020016000206013016000620015f98d600654600062002d95565b6001600160a01b03166001600160a01b03168152602001908152602001600020548662003e2b565b60065460008181526005602052604081206013019162001644908e908362002d95565b6001600160a01b03168152602081019190915260400160002055818015620016865750620016768a1560065462002a34565b620016848b60065462002a34565b115b15620016b5576200169e426200154060065462001794565b600654600090815260056020819052604090912001555b600654600090815260056020526040902054620016d3908462003e2b565b6006805460009081526005602052604080822093909355905481522060030154620017049062001540888862003de7565b6006546000908152600560209081526040918290206003019290925580518c151581526001600160a01b038e1692810192909252818101859052517f3ac19402bdffd41463a2f828126b2f02a1812bfd0589b64eecd76ec68e7e80d39181900360600190a15050505050505050505050565b6000908152600560205260409020600801546001600160a01b031690565b60009081526004602052604090206001015490565b60008315620017df575060008281526005602090815260408083206001600160a01b038516845260140190915290205462001807565b5060008281526005602090815260408083206001600160a01b03851684526015019091529020545b9392505050565b60009081526004602052604090205460ff1690565b6000546001600160a01b0316331462001872576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b6001805460ff909216600160a01b0260ff60a01b19909216919091179055565b60009081526005602052604090205490565b600090815260046020526040902054610100900460ff1690565b60008281526005602052604081206006015460ff1660031462001928576040805162461bcd60e51b815260206004820152601a60248201527f47616d65206e6f7420696e2066696e6973686564207374617465000000000000604482015290519081900360640190fd5b6000620019358462001f95565b620019408562003cd8565b111562001a75576000620019548562003cd8565b111562001a27576000848152600560209081526040918290206006015482516370a0823160e01b81526001600160a01b038781166004830152935162001a249462001a139461010090940416926370a082319260248082019391829003018186803b158015620019c357600080fd5b505afa158015620019d8573d6000803e3d6000fd5b505050506040513d6020811015620019ef57600080fd5b50516000878152600560205260409020805460019091015462001316919062003e2b565b62001a1e8662003cd8565b62003da3565b90505b6000848152600560205260409020600901546001600160a01b038481169116141562001a6f5760008481526005602052604090206003015462001a6c90829062003e2b565b90505b62001b92565b600062001a828562001f95565b111562001b4a576000848152600560209081526040918290206007015482516370a0823160e01b81526001600160a01b038781166004830152935162001b479462001b3c949316926370a082319260248082019391829003018186803b15801562001aec57600080fd5b505afa15801562001b01573d6000803e3d6000fd5b505050506040513d602081101562001b1857600080fd5b50516000878152600560205260409020805460029091015462001316919062003e2b565b62001a1e8662001f95565b90505b6000848152600560205260409020600e01546001600160a01b038481169116141562001b925760008481526005602052604090206003015462001b8f90829062003e2b565b90505b60008481526005602090815260408083206001600160a01b038716845260130190915290205462001bc590829062003e2b565b905062001bd8816200154086866200343e565b949350505050565b6000546001600160a01b0316331462001c2f576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260026020908152604091829020600301805460ff191660ff871690811790915582519081529081019290925280517f56257d98305fc45c23161688be76d73888f254c79eea15f2ccd97fb9813d22369281900390910190a15050565b600090815260046020526040902054640100000000900460ff1690565b600090815260046020526040902054600160381b900460ff1690565b6000546001600160a01b031633148062001cee575060075442115b62001d2f576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff161562001d92576040805162461bcd60e51b815260206004820152601660248201527547616d65206e6f7420696e20696e697420737461746560501b604482015290519081900360640190fd5b62001d9f6006546200180e565b62001dae5762001dae620024f5565b62001dc0426200154060065462001195565b60075560068054600090815260056020526040902001805460ff1916600117905562001deb6200411b565b6006805460009081526005602090815260409182902090920154815160ff909116815290517ea8b06dd72552dea96e97c9a96acf39a1908ada44765cefe367620485b2c7e1929181900390910190a1565b6000838152600360205260409020546001600160a01b03161562001e9c576040805162461bcd60e51b81526020600482015260126024820152712730b6b29030b63932b0b23c903a30b5b2b760711b604482015290519081900360640190fd5b6040518060800160405280336001600160a01b0316815260200184815260200183838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505060018054600160a01b900460ff166020948501523383526002808552604093849020865181546001600160a01b0319166001600160a01b039091161781558686015192810192909255928501518051919462001f559486019350019062004d0c565b50606091909101516003918201805460ff90921660ff19909216919091179055600093845260205250506040902080546001600160a01b03191633179055565b600081815260056020908152604080832060070154815163144613ff60e31b815291516001600160a01b039091169263a2309ff89260048082019391829003018186803b15801562001fe657600080fd5b505afa15801562001ffb573d6000803e3d6000fd5b505050506040513d60208110156200201257600080fd5b505192915050565b600090815260046020526040902054600160401b900460ff1690565b600654600090815260056020819052604090912001544211620020a0576040805162461bcd60e51b815260206004820152601860248201527f54696d6520686173206e6f742072756e206f7574207965740000000000000000604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff1660021462002108576040805162461bcd60e51b815260206004820152601960248201527847616d65206e6f7420696e2072756e6e696e6720737461746560381b604482015290519081900360640190fd5b60006200211760065462001f95565b118062002130575060006200212e60065462003cd8565b115b62002182576040805162461bcd60e51b815260206004820152601b60248201527f43616e6e6f742073746f70206966206e6f6f6e65207374616b65640000000000604482015290519081900360640190fd5b6006805460009081526005602090815260408083208401805460ff19166003179055835483529182902090920154815160ff91909116815290517ea8b06dd72552dea96e97c9a96acf39a1908ada44765cefe367620485b2c7e1929181900390910190a1620021f8426200154060065462002d6a565b6007556006546200220b90600162003e2b565b600681815560009182526005602052604090912001805460ff1916905562002232620047f3565b565b6000546001600160a01b03163314806200224f575060075442115b62002290576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff16600114620022f8576040805162461bcd60e51b815260206004820152601960248201527847616d65206e6f7420696e2073656564696e6720737461746560381b604482015290519081900360640190fd5b6006546000908152600560205260409020600401546200235f576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420737461727420776974686f75742073656564696e6700000000604482015290519081900360640190fd5b62002371426200154060065462001794565b60068054600090815260056020818152604080842090920194909455825482528082208301805460ff19166002179055825482529081902090910154815160ff91909116815290517ea8b06dd72552dea96e97c9a96acf39a1908ada44765cefe367620485b2c7e1929181900390910190a1565b6000831562002485576000838152600560209081526040918290206006015482516370a0823160e01b81526001600160a01b0386811660048301529351610100909204909316926370a08231926024808301939192829003018186803b1580156200244f57600080fd5b505afa15801562002464573d6000803e3d6000fd5b505050506040513d60208110156200247b57600080fd5b5051905062001807565b6000838152600560209081526040918290206007015482516370a0823160e01b81526001600160a01b038681166004830152935193909116926370a0823192602480840193919291829003018186803b1580156200244f57600080fd5b620024f0338484846200123a565b505050565b6000546001600160a01b031633148062002510575060075442115b62002551576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff1615620025b4576040805162461bcd60e51b815260206004820152601660248201527547616d65206e6f7420696e20696e697420737461746560501b604482015290519081900360640190fd5b620025c16006546200180e565b15620025cc57600080fd5b600160065411156200273d5760046000620025eb600654600162003de7565b81526020808201929092526040908101600090812060065482526004938490529190208154815460ff191660ff9182161780835583546101009081900483160261ff0019909116178083558354620100009081900483160262ff00001990911617808355835463010000009081900483160263ff000000199091161780835583546401000000009081900483160264ff0000000019909116178083558354650100000000009081900483160265ff000000000019909116178083558354600160301b9081900483160266ff00000000000019909116178083558354600160381b9081900483160267ff0000000000000019909116178083558354600160401b9081900490921690910268ff000000000000000019909116178155600180830154908201556002808301549082015560038083015490820155828201549281019290925560059081015491015562002232565b604051806101c00160405280600a60ff168152602001601460ff168152602001601460ff168152602001603c60ff168152602001606960ff168152602001607860ff168152602001601460ff168152602001606460ff168152602001609660ff16815260200162015180815260200166038d7ea4c680008152602001662386f26fc1000081526020016201194081526020016202a30081525060046000600654815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff1602179055506101008201518160000160086101000a81548160ff021916908360ff16021790555061012082015181600101556101408201518160020155610160820151816003015561018082015181600401556101a08201518160050155905050565b60009081526004602052604090206002015490565b60075481565b6201194081565b6003602052600090815260409020546001600160a01b031681565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015460ff808516966101008604821696620100008704831696630100000081048416966401000000008204851696650100000000008304861696600160301b8404871696600160381b8504811696600160401b909504169492939192908e565b6000908152600560208190526040909120015490565b60065481565b6000821562002ad6576005600083815260200190815260200160002060060160019054906101000a90046001600160a01b03166001600160a01b031663a2309ff86040518163ffffffff1660e01b815260040160206040518083038186803b15801562002aa057600080fd5b505afa15801562002ab5573d6000803e3d6000fd5b505050506040513d602081101562002acc57600080fd5b5051905062001234565b60008281526005602090815260409182902060070154825163144613ff60e31b815292516001600160a01b039091169263a2309ff8926004808301939192829003018186803b15801562002aa057600080fd5b6005602081905260009182526040909120805460018201546002830154600384015460048501549585015460068601546007870154600890970154959794969395929493919260ff8216926001600160a01b0361010090930483169290811691168a565b60015b60065481101562002bbb5762002ba68162003720565b62002bb381600162003e2b565b905062002b90565b50565b60009081526004602052604090205465010000000000900460ff1690565b6000818152600560209081526040808320338085526013909101909252808320805490849055905190926108fc841502918491818181858888f19350505050158015620024f0573d6000803e3d6000fd5b600154600160a01b900460ff1681565b60008062002c4b8362001f95565b62002c568462003cd8565b1190506000811562002c7b575060008381526005602052604090206002015462002c8f565b506000838152600560205260409020600101545b600062002d166200131c62002ca48762001776565b6001600160a01b031663a2309ff86040518163ffffffff1660e01b815260040160206040518083038186803b15801562002cdd57600080fd5b505afa15801562002cf2573d6000803e3d6000fd5b505050506040513d602081101562002d0957600080fd5b505162001316886200201a565b90508082101562001bd857509392505050565b60008281526005602090815260408083206001600160a01b038516845260130190915290205492915050565b60009081526004602052604090206003015490565b6000908152600460208190526040909120015490565b60009081526005602052604090206002015490565b6000831562002dd35760056000848152602001908152602001600020600901826005811062002dc057fe5b01546001600160a01b0316905062001807565b60056000848152602001908152602001600020600e01826005811062002dc057fe5b600154600160a81b900460ff1681565b600680546000908152600560205260409020015460ff1660021462002e6d576040805162461bcd60e51b815260206004820152601960248201527847616d65206e6f7420696e2072756e6e696e6720737461746560381b604482015290519081900360640190fd5b336001600160a01b031662002e8782600654600062002d95565b6001600160a01b0316141562002ee4576040805162461bcd60e51b815260206004820152601960248201527f596f752061726520616c726561647920707265736964656e7400000000000000604482015290519081900360640190fd5b62002f01816006543362002efb346103e862003d45565b62003e86565b62002f1b62002f1260065462002d55565b6103e862003d45565b62002f2a8260065433620017a9565b11158062002f78575062002f666200131c62002f598360065462002f5386600654600062002d95565b620017a9565b6200131660065462001c9a565b62002f758260065433620017a9565b11155b62002fbc576040805162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b604482015290519081900360640190fd5b62002fc8813362003f4a565b62002fd7816006543462004a33565b604080518215158152336020820152348183015290517fa5d5144863644493dfb0b5f4451826c33654b78693983a8f014500ffd3dce1969181900360600190a150565b600082156200304a575060008181526005602052604090206006015461010090046001600160a01b031662001234565b506000818152600560205260409020600701546001600160a01b031662001234565b6000546001600160a01b03163314620030bb576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b60018054911515600160a81b0260ff60a81b19909216919091179055565b60009081526004602052604090205462010000900460ff1690565b60009081526005602052604090206003015490565b60008060015b60065481101562003142576200312b82620015408387620018be565b91506200313a81600162003e2b565b90506200310f565b5092915050565b6000546001600160a01b0316331462003198576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff1615620031fb576040805162461bcd60e51b815260206004820152601660248201527547616d65206e6f7420696e20696e697420737461746560501b604482015290519081900360640190fd5b604051806101c001604052808f60ff1681526020018e60ff1681526020018d60ff1681526020018c60ff1681526020018b60ff1681526020018a60ff1681526020018960ff1681526020018860ff1681526020018760ff1681526020018681526020018581526020018481526020018381526020018281525060046000600654815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff1602179055506101008201518160000160086101000a81548160ff021916908360ff16021790555061012082015181600101556101408201518160020155610160820151816003015561018082015181600401556101a082015181600501559050507f85a52584e2a604db198ab2f447cba2fc038a972048381c24b40219ef7a83df7060405160405180910390a15050505050505050505050505050565b60009081526005602052604090206001015490565b600082815260056020908152604080832060080154815163144613ff60e31b8152915184936001600160a01b039092169263a2309ff8926004808301939192829003018186803b1580156200349257600080fd5b505afa158015620034a7573d6000803e3d6000fd5b505050506040513d6020811015620034be57600080fd5b5051905080620034d357600091505062001234565b6000848152600560209081526040918290206008015482516370a0823160e01b81526001600160a01b038781166004830152935162001bd8946200356f949316926370a082319260248082019391829003018186803b1580156200353657600080fd5b505afa1580156200354b573d6000803e3d6000fd5b505050506040513d60208110156200356257600080fd5b5051620013168762002c3d565b8262003da3565b600090815260046020526040902054600160301b900460ff1690565b600680546000908152600560205260409020015460ff16600114620035fa576040805162461bcd60e51b815260206004820152601960248201527847616d65206e6f7420696e2073656564696e6720737461746560381b604482015290519081900360640190fd5b60065460009081526005602052604090205462003618903462003e2b565b600680546000908152600560205260408082209390935590548152206004015462003644903462003e2b565b60068054600090815260056020526040808220600490810194909455915481528181206008015482516340c10f1960e01b8152339481019490945234602485015291516001600160a01b03909216926340c10f19926044808301939282900301818387803b158015620036b657600080fd5b505af1158015620036cb573d6000803e3d6000fd5b50506040805133815234602082015281517f2c55b94e09a617f263124176c8cc7f6c0a7f963f1fd642a718614d6c1e4e06349450908190039091019150a1565b60009081526005602052604090206004015490565b60008181526005602052604090206006015460ff166003146200378a576040805162461bcd60e51b815260206004820152601a60248201527f47616d65206e6f7420696e2066696e6973686564207374617465000000000000604482015290519081900360640190fd5b6000620037978262001f95565b620037a28362003cd8565b1115620038dd576000620037b68362003cd8565b111562003880576000828152600560209081526040918290206006015482516370a0823160e01b815233600482015292516200387d9362003872936101009093046001600160a01b0316926370a0823192602480840193829003018186803b1580156200382257600080fd5b505afa15801562003837573d6000803e3d6000fd5b505050506040513d60208110156200384e57600080fd5b50516000858152600560205260409020805460019091015462001316919062003e2b565b62001a1e8462003cd8565b90505b6000828152600560205260409020600901546001600160a01b0316331415620038d757600082815260056020526040902060030154620038c290829062003e2b565b60008381526005602052604081206003015590505b62003a07565b6000620038ea8362001f95565b1115620039b0576000828152600560209081526040918290206007015482516370a0823160e01b81523360048201529251620039ad93620039a2936001600160a01b03909316926370a0823192602480840193829003018186803b1580156200395257600080fd5b505afa15801562003967573d6000803e3d6000fd5b505050506040513d60208110156200397e57600080fd5b50516000858152600560205260409020805460029091015462001316919062003e2b565b62001a1e8462001f95565b90505b6000828152600560205260409020600e01546001600160a01b031633141562003a0757600082815260056020526040902060030154620039f290829062003e2b565b60008381526005602052604081206003015590505b600082815260056020526040808220600601548151637e9d2ac160e01b815233600482015291516101009091046001600160a01b031692637e9d2ac1926024808201939182900301818387803b15801562003a6157600080fd5b505af115801562003a76573d6000803e3d6000fd5b505050600083815260056020526040808220600701548151637e9d2ac160e01b815233600482015291516001600160a01b039091169350637e9d2ac19260248084019391929182900301818387803b15801562003ad257600080fd5b505af115801562003ae7573d6000803e3d6000fd5b505050600083815260056020908152604080832033845260130190915290205462003b159150829062003e2b565b600083815260056020908152604080832033808552601390910190925282209190915590915062003b4f908290620015409085906200343e565b600083815260056020526040808220600801548151637e9d2ac160e01b815233600482015291519394506001600160a01b031692637e9d2ac19260248084019391929182900301818387803b15801562003ba857600080fd5b505af115801562003bbd573d6000803e3d6000fd5b50505050600081111562003bf957604051339082156108fc029083906000818181858888f19350505050158015620024f0573d6000803e3d6000fd5b5050565b600260208181526000928352604092839020805460018083015483860180548851601f600019958316156101000295909501909116979097049283018690048602870186019097528186526001600160a01b03909216959194929383018282801562003cad5780601f1062003c815761010080835404028352916020019162003cad565b820191906000526020600020905b81548152906001019060200180831162003c8f57829003601f168201915b5050506003909301549192505060ff1684565b738a6a9efdc77530bf73b05d1005089abf1b13687c81565b600081815260056020908152604080832060060154815163144613ff60e31b815291516101009091046001600160a01b03169263a2309ff89260048082019391829003018186803b15801562001fe657600080fd5b60009081526005602052604090206006015460ff1690565b60008262003d565750600062001234565b8282028284828162003d6457fe5b0414620018075760405162461bcd60e51b815260040180806020018281038252602181526020018062005dda6021913960400191505060405180910390fd5b60006200180783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062004aa5565b60006200180783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062004b4c565b60008282018381101562001807576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b831562003eeb5760008381526005602090815260408083206001600160a01b038616845260140190915290205462003ebf908262003e2b565b60008481526005602090815260408083206001600160a01b038716845260140190915290205562003f44565b60008381526005602090815260408083206001600160a01b038616845260150190915290205462003f1d908262003e2b565b60008481526005602090815260408083206001600160a01b03871684526015019091529020555b50505050565b60005b600581101562003f9f5762003f668360065484620017a9565b62003f7d8460065462002f53876006548762002d95565b101562003f8a5762003f9f565b62003f9781600162003e2b565b905062003f4d565b6005811015620024f0575060005b60058110156200404757816001600160a01b031662003fd0846006548462002d95565b6001600160a01b031614156200403257805b60048110156200402b5762004016846006548362004010886006546200400a88600162003e2b565b62002d95565b62004ba9565b6200402381600162003e2b565b905062003fe2565b5062004047565b6200403f81600162003e2b565b905062003fad565b5060005b60058110156200409d57620040648360065484620017a9565b6200407b8460065462002f53876006548762002d95565b101562004088576200409d565b6200409581600162003e2b565b90506200404b565b60045b81811115620040dc57620040c7846006548362004010886006546200400a88600162003de7565b620040d481600162003de7565b9050620040a0565b50620040ed83600654838562004ba9565b6040517fe1f4cf2e47a4efbf06b4001dab264f9632dc0f1b5192111ecb9821d96aaad58190600090a1505050565b60606200412a60065462004c40565b9050600081604051602001808062005d726026913960260182805190602001908083835b602083106200416f5780518252601f1990920191602091820191016200414e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405282604051602001808061535560f01b81525060020182805190602001908083835b60208310620041e55780518252601f199092019160209182019101620041c4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260016006546040516200422c9062004d91565b82151560408201526060810182905260808082528551908201528451819060208083019160a084019189019080838360005b83811015620042785781810151838201526020016200425e565b50505050905090810190601f168015620042a65780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015620042db578181015183820152602001620042c1565b50505050905090810190601f168015620043095780820380516001836020036101000a031916815260200191505b509650505050505050604051809103906000f0801580156200432f573d6000803e3d6000fd5b506006805460009081526005602090815260408083209093018054610100600160a81b0319166101006001600160a01b0387160217905591519293509184910180602262005db8823960220182805190602001908083835b60208310620043a85780518252601f19909201916020918201910162004387565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405283604051602001808061555360f01b81525060020182805190602001908083835b602083106200441e5780518252601f199092019160209182019101620043fd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526000600654604051620044659062004d91565b82151560408201526060810182905260808082528551908201528451819060208083019160a084019189019080838360005b83811015620044b157818101518382015260200162004497565b50505050905090810190601f168015620044df5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101562004514578181015183820152602001620044fa565b50505050905090810190601f168015620045425780820380516001836020036101000a031916815260200191505b509650505050505050604051809103906000f08015801562004568573d6000803e3d6000fd5b50600654600090815260056020908152604080832060070180546001600160a01b0319166001600160a01b03861617905580517f5365656420426f6e6473202d205374616b657761722e636f6d20526f756e6420818401908152885195965093948894939190920191908401908083835b60208310620045fa5780518252601f199092019160209182019101620045d9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528460405160200180806114d160f21b81525060020182805190602001908083835b60208310620046705780518252601f1990920191602091820191016200464f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526000600654604051620046b79062004d91565b82151560408201526060810182905260808082528551908201528451819060208083019160a084019189019080838360005b8381101562004703578181015183820152602001620046e9565b50505050905090810190601f168015620047315780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015620047665781810151838201526020016200474c565b50505050905090810190601f168015620047945780820380516001836020036101000a031916815260200191505b509650505050505050604051809103906000f080158015620047ba573d6000803e3d6000fd5b50600654600090815260056020526040902060080180546001600160a01b0319166001600160a01b039290921691909117905550505050565b600062004804600654600162003de7565b9050600080600080620048178562001f95565b620048228662003cd8565b1190508015620048465760008581526005602052604090206002015491506200485b565b60008581526005602052604090206001015491505b6000620048688662002c3d565b905062004876838262003de7565b92506200488c6200131c84620013168962003576565b94506200489a838662003de7565b600154909450600160a81b900460ff1680156200494b5750600086815260056020908152604091829020600480820154600890920154845163144613ff60e31b81529451899562004949956001600160a01b039093169363a2309ff893828201939092909190829003018186803b1580156200491557600080fd5b505afa1580156200492a573d6000803e3d6000fd5b505050506040513d60208110156200494157600080fd5b505162003de7565b115b156200495957600094508293505b8415620049cc57600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b158015620049b157600080fd5b505af1158015620049c6573d6000803e3d6000fd5b50505050505b600654600090815260056020526040902054620049ea908562003e2b565b600680546000908152600560205260408082209390935590548152206004015462004a16908562003e2b565b600654600090815260056020526040902060040155505050505050565b821562004a705760008281526005602052604090206001015462004a58908262003e2b565b600083815260056020526040902060010155620024f0565b60008281526005602052604090206002015462004a8e908262003e2b565b600083815260056020526040902060020155505050565b6000818362004b355760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562004af957818101518382015260200162004adf565b50505050905090810190601f16801562004b275780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162004b4257fe5b0495945050505050565b6000818484111562004ba15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562004af957818101518382015260200162004adf565b505050900390565b831562004bf8578060056000858152602001908152602001600020600901836005811062004bd357fe5b0180546001600160a01b0319166001600160a01b039290921691909117905562003f44565b8060056000858152602001908152602001600020600e01836005811062004c1b57fe5b0180546001600160a01b0319166001600160a01b039290921691909117905550505050565b6060818062004c695750506040805180820190915260018152600360fc1b602082015262001190565b8060005b811562004c8357600101600a8204915062004c6d565b6060816040519080825280601f01601f19166020018201604052801562004cb1576020820181803883390190505b50905060001982015b841562004d0257600a850660300160f81b8282806001900393508151811062004cdf57fe5b60200101906001600160f81b031916908160001a905350600a8504945062004cba565b5095945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062004d4f57805160ff191683800117855562004d7f565b8280016001018555821562004d7f579182015b8281111562004d7f57825182559160200191906001019062004d62565b5062004d8d92915062004d9f565b5090565b610fb28062004dc083390190565b62004dbc91905b8082111562004d8d576000815560010162004da6565b9056fe60806040523480156200001157600080fd5b5060405162000fb238038062000fb2833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604090815260208281015192909101518651929450925085918591601291620001c9916005919086019062000229565b508151620001df90600690602085019062000229565b5060078054600080546001600160a01b031916331790559515156101000261ff001960ff90931660ff199097169690961791909116949094179093555060085550620002ce915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026c57805160ff19168380011785556200029c565b828001600101855582156200029c579182015b828111156200029c5782518255916020019190600101906200027f565b50620002aa929150620002ae565b5090565b620002cb91905b80821115620002aa5760008155600101620002b5565b90565b610cd480620002de6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063454f7b8f11610097578063a2309ff811610066578063a2309ff8146102ee578063a457c2d7146102f6578063a9059cbb14610322578063dd62ed3e1461034e57610100565b8063454f7b8f1461029257806370a082311461029a5780637e9d2ac1146102c057806395d89b41146102e657610100565b80632e0f2625116100d35780632e0f262514610212578063313ce56714610230578063395093511461023857806340c10f191461026457610100565b806306fdde0314610105578063095ea7b31461018257806318160ddd146101c257806323b872dd146101dc575b600080fd5b61010d61037c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae6004803603604081101561019857600080fd5b506001600160a01b038135169060200135610412565b604080519115158252519081900360200190f35b6101ca610428565b60408051918252519081900360200190f35b6101ae600480360360608110156101f257600080fd5b506001600160a01b0381358116916020810135909116906040013561043d565b61021a61048e565b6040805160ff9092168252519081900360200190f35b61021a610493565b6101ae6004803603604081101561024e57600080fd5b506001600160a01b03813516906020013561049c565b6102906004803603604081101561027a57600080fd5b506001600160a01b0381351690602001356104d2565b005b6101ca61061d565b6101ca600480360360208110156102b057600080fd5b50356001600160a01b0316610623565b610290600480360360208110156102d657600080fd5b50356001600160a01b031661063e565b61010d6106c4565b6101ca610725565b6101ae6004803603604081101561030c57600080fd5b506001600160a01b03813516906020013561072b565b6101ae6004803603604081101561033857600080fd5b506001600160a01b038135169060200135610761565b6101ca6004803603604081101561036457600080fd5b506001600160a01b038135811691602001351661076e565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b5050505050905090565b600061041f338484610799565b50600192915050565b6000610438600154600254610885565b905090565b600061044a8484846108ce565b6001600160a01b03841660009081526004602090815260408083203380855292529091205461048491869161047f9086610885565b610799565b5060019392505050565b601281565b60075460ff1690565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161041f91859061047f9086610a21565b6000546001600160a01b03163314610531576040805162461bcd60e51b815260206004820152601d60248201527f4d75737420626520696e69746961746564206279205374616b65776172000000604482015290519081900360640190fd5b6001600160a01b03821661058c576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6001600160a01b0382166000908152600360205260409020546105af9082610a21565b6001600160a01b0383166000908152600360205260409020556001546105d59082610a21565b6001556040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60025490565b6001600160a01b031660009081526003602052604090205490565b6000546001600160a01b0316331461069d576040805162461bcd60e51b815260206004820152601d60248201527f4d75737420626520696e69746961746564206279205374616b65776172000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600360205260409020546106c1908290610a7b565b50565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104085780601f106103dd57610100808354040283529160200191610408565b60015490565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161041f91859061047f9086610885565b600061041f3384846108ce565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6001600160a01b0383166107de5760405162461bcd60e51b8152600401808060200182810382526024815260200180610c506024913960400191505060405180910390fd5b6001600160a01b0382166108235760405162461bcd60e51b8152600401808060200182810382526022815260200180610c0d6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60006108c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b51565b9392505050565b6001600160a01b0382166109135760405162461bcd60e51b8152600401808060200182810382526024815260200180610be96024913960400191505060405180910390fd5b336001600160a01b0384161461095a5760405162461bcd60e51b815260040180806020018281038252602c815260200180610c74602c913960400191505060405180910390fd5b6001600160a01b03831660009081526003602052604090205481111561097f57600080fd5b336000908152600360205260409020546109999082610885565b33600090815260036020526040808220929092556001600160a01b038416815220546109c59082610a21565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828201838110156108c7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038216610ac05760405162461bcd60e51b8152600401808060200182810382526021815260200180610c2f6021913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902054610ae39082610885565b6001600160a01b038316600090815260036020526040902055600254610b099082610a21565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60008184841115610be05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ba5578181015183820152602001610b8d565b50505050905090810190601f168015610bd25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe5472616e7366657220746f206e756c6c2061646472657373206e6f7420616c6c6f77656445524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735472616e73666572206d75737420626520696e69746961746564206279206d6573736167652073656e646572a265627a7a7231582046b35f63b6676882d712e8f0177f2d2adb50bdc0b1c03b22d932831b9b15bc1164736f6c634300050c0032536f766965742057617220426f6e6473202d205374616b657761722e636f6d20526f756e642043686169726d616e206f6e6c792066756e6374696f6e0000000000000000000055532057617220426f6e6473202d205374616b657761722e636f6d20526f756e6420536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582031a64b21e761937f755c2abcf5e9f0c85f9ddf166f67431683957660bdbc076b64736f6c634300050c0032
Deployed Bytecode
0x608060405260043610620003fe5760003560e01c80638a19c8bc1162000217578063bd4888841162000127578063df22ca7c11620000af578063e2eb41ff1162000079578063e2eb41ff1462001023578063e7e1afe81462001102578063ffd98bc9146200111a578063ffde0c74146200114857620003fe565b8063df22ca7c1462000f8f578063df8049031462000fbd578063e0d4ea371462000fc7578063e11523431462000ff557620003fe565b8063cd9aed4611620000f1578063cd9aed461462000e57578063cec0485d1462000e8e578063d05d9a551462000f24578063d29bd7de1462000f5257620003fe565b8063bd4888841462000d95578063c099c4481462000dcb578063c186f7bf1462000dfb578063c5fe3d781462000e2957620003fe565b8063a957e1b511620001ab578063b265f1091162000175578063b265f1091462000cdd578063b288785c1462000d0b578063b468c95b1462000d47578063ba7aa8ed1462000d7357620003fe565b8063a957e1b51462000c16578063ac4ebaa01462000c44578063ad63b5fd1462000c81578063ad8cd5e11462000caf57620003fe565b80638ec0560811620001ed5780638ec056081462000b7457806391ed21dd1462000b8c57806397e2bc651462000bba578063a4eb82001462000be857620003fe565b80638a19c8bc1462000a965780638b7730781462000aae5780638c65c81f1462000ae457620003fe565b80635013d3d611620003135780636a1ab79d11620002a757806371261927116200027157806371261927146200094d57806372a01f4114620009655780637a777d2c1462000993578063828622751462000a6857620003fe565b80636a1ab79d14620008b65780636b91b2cf14620008ef5780636c7ee4e91462000907578063703ea060146200093557620003fe565b806354c6997a11620002e957806354c6997a146200081357806355b895eb146200084157806355e3f0861462000859578063597df666146200087157620003fe565b80635013d3d614620007425780635085c868146200075a57806354145ea714620007e557620003fe565b80632e120c59116200039757806345e55fb1116200036157806345e55fb1146200066957806347a1303e14620006a65780634906bef214620006e65780634b8cb040146200071457620003fe565b80632e120c5914620005ae57806333b29be214620005dc57806336cb5754146200060d5780633f322feb146200063b57620003fe565b806314d209d811620003d957806314d209d814620004ae57806315e7f37e14620004f157806324aec8ee146200053b5780632a32a24d146200056957620003fe565b806306256bdd14620004035780630790eb48146200044357806314b4005f1462000471575b600080fd5b3480156200041057600080fd5b5062000431600480360360208110156200042957600080fd5b503562001176565b60408051918252519081900360200190f35b3480156200045057600080fd5b5062000431600480360360208110156200046957600080fd5b503562001195565b3480156200047e57600080fd5b5062000431600480360360408110156200049757600080fd5b50803590602001356001600160a01b0316620011aa565b620004ef60048036036080811015620004c657600080fd5b506001600160a01b0381358116916020810135151591604082013516906060013515156200123a565b005b348015620004fe57600080fd5b506200051f600480360360208110156200051757600080fd5b503562001776565b604080516001600160a01b039092168252519081900360200190f35b3480156200054857600080fd5b5062000431600480360360208110156200056157600080fd5b503562001794565b3480156200057657600080fd5b5062000431600480360360608110156200058f57600080fd5b508035151590602081013590604001356001600160a01b0316620017a9565b348015620005bb57600080fd5b506200043160048036036020811015620005d457600080fd5b50356200180e565b348015620005e957600080fd5b50620004ef600480360360208110156200060257600080fd5b503560ff1662001823565b3480156200061a57600080fd5b5062000431600480360360208110156200063357600080fd5b503562001892565b3480156200064857600080fd5b5062000431600480360360208110156200066157600080fd5b5035620018a4565b3480156200067657600080fd5b5062000431600480360360408110156200068f57600080fd5b50803590602001356001600160a01b0316620018be565b348015620006b357600080fd5b50620004ef60048036036040811015620006cc57600080fd5b50803560ff1690602001356001600160a01b031662001be0565b348015620006f357600080fd5b5062000431600480360360208110156200070c57600080fd5b503562001c9a565b3480156200072157600080fd5b5062000431600480360360208110156200073a57600080fd5b503562001cb7565b3480156200074f57600080fd5b50620004ef62001cd3565b3480156200076757600080fd5b50620004ef600480360360408110156200078057600080fd5b81359190810190604081016020820135640100000000811115620007a357600080fd5b820183602082011115620007b657600080fd5b80359060200191846001830284011164010000000083111715620007d957600080fd5b50909250905062001e3c565b348015620007f257600080fd5b5062000431600480360360208110156200080b57600080fd5b503562001f95565b3480156200082057600080fd5b5062000431600480360360208110156200083957600080fd5b50356200201a565b3480156200084e57600080fd5b50620004ef62002036565b3480156200086657600080fd5b50620004ef62002234565b3480156200087e57600080fd5b5062000431600480360360608110156200089757600080fd5b508035151590602081013590604001356001600160a01b0316620023e5565b620004ef60048036036060811015620008ce57600080fd5b5080351515906001600160a01b0360208201351690604001351515620024e2565b348015620008fc57600080fd5b50620004ef620024f5565b3480156200091457600080fd5b5062000431600480360360208110156200092d57600080fd5b503562002951565b3480156200094257600080fd5b506200043162002966565b3480156200095a57600080fd5b50620004316200296c565b3480156200097257600080fd5b506200051f600480360360208110156200098b57600080fd5b503562002973565b348015620009a057600080fd5b50620009c160048036036020811015620009b957600080fd5b50356200298e565b604051808f60ff1660ff1681526020018e60ff1660ff1681526020018d60ff1660ff1681526020018c60ff1660ff1681526020018b60ff1660ff1681526020018a60ff1660ff1681526020018960ff1660ff1681526020018860ff1660ff1681526020018760ff1660ff1681526020018681526020018581526020018481526020018381526020018281526020019e50505050505050505050505050505060405180910390f35b34801562000a7557600080fd5b50620004316004803603602081101562000a8e57600080fd5b503562002a18565b34801562000aa357600080fd5b506200043162002a2e565b34801562000abb57600080fd5b50620004316004803603604081101562000ad457600080fd5b5080351515906020013562002a34565b34801562000af157600080fd5b5062000b126004803603602081101562000b0a57600080fd5b503562002b29565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260ff1660c08601526001600160a01b0390811660e08601529081166101008501521661012083015251908190036101400190f35b34801562000b8157600080fd5b50620004ef62002b8d565b34801562000b9957600080fd5b50620004316004803603602081101562000bb257600080fd5b503562002bbe565b34801562000bc757600080fd5b50620004ef6004803603602081101562000be057600080fd5b503562002bdc565b34801562000bf557600080fd5b5062000c0062002c2d565b6040805160ff9092168252519081900360200190f35b34801562000c2357600080fd5b50620004316004803603602081101562000c3c57600080fd5b503562002c3d565b34801562000c5157600080fd5b50620004316004803603604081101562000c6a57600080fd5b50803590602001356001600160a01b031662002d29565b34801562000c8e57600080fd5b50620004316004803603602081101562000ca757600080fd5b503562002d55565b34801562000cbc57600080fd5b50620004316004803603602081101562000cd557600080fd5b503562002d6a565b34801562000cea57600080fd5b50620004316004803603602081101562000d0357600080fd5b503562002d80565b34801562000d1857600080fd5b506200051f6004803603606081101562000d3157600080fd5b5080351515906020810135906040013562002d95565b34801562000d5457600080fd5b5062000d5f62002df5565b604080519115158252519081900360200190f35b620004ef6004803603602081101562000d8b57600080fd5b5035151562002e05565b34801562000da257600080fd5b506200051f6004803603604081101562000dbb57600080fd5b508035151590602001356200301a565b34801562000dd857600080fd5b50620004ef6004803603602081101562000df157600080fd5b503515156200306c565b34801562000e0857600080fd5b50620004316004803603602081101562000e2157600080fd5b5035620030d9565b34801562000e3657600080fd5b50620004316004803603602081101562000e4f57600080fd5b5035620030f4565b34801562000e6457600080fd5b50620004316004803603602081101562000e7d57600080fd5b50356001600160a01b031662003109565b34801562000e9b57600080fd5b50620004ef60048036036101c081101562000eb557600080fd5b5060ff8135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c082013581169160e08101358216916101008201351690610120810135906101408101359061016081013590610180810135906101a0013562003149565b34801562000f3157600080fd5b50620004316004803603602081101562000f4a57600080fd5b503562003429565b34801562000f5f57600080fd5b50620004316004803603604081101562000f7857600080fd5b50803590602001356001600160a01b03166200343e565b34801562000f9c57600080fd5b50620004316004803603602081101562000fb557600080fd5b503562003576565b620004ef62003592565b34801562000fd457600080fd5b50620004316004803603602081101562000fed57600080fd5b50356200370b565b3480156200100257600080fd5b50620004ef600480360360208110156200101b57600080fd5b503562003720565b3480156200103057600080fd5b506200105a600480360360208110156200104957600080fd5b50356001600160a01b031662003bfd565b60405180856001600160a01b03166001600160a01b03168152602001848152602001806020018360ff1660ff168152602001828103825284818151815260200191508051906020019080838360005b83811015620010c3578181015183820152602001620010a9565b50505050905090810190601f168015620010f15780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b3480156200110f57600080fd5b506200051f62003cc0565b3480156200112757600080fd5b5062000431600480360360208110156200114057600080fd5b503562003cd8565b3480156200115557600080fd5b5062000431600480360360208110156200116e57600080fd5b503562003d2d565b6000818152600460205260409020546301000000900460ff165b919050565b60009081526004602052604090206005015490565b60008281526005602090815260408083206008015481516370a0823160e01b81526001600160a01b038681166004830152925192909116926370a0823192602480840193829003018186803b1580156200120357600080fd5b505afa15801562001218573d6000803e3d6000fd5b505050506040513d60208110156200122f57600080fd5b505190505b92915050565b600680546000908152600560205260409020015460ff16600214620012a2576040805162461bcd60e51b815260206004820152601960248201527847616d65206e6f7420696e2072756e6e696e6720737461746560381b604482015290519081900360640190fd5b620012af60065462002951565b341015620012f9576040805162461bcd60e51b81526020600482015260126024820152715374616b696e6720746f6f206c6974746c6560701b604482015290519081900360640190fd5b60008290506000620013246200131c34620013166006546200180e565b62003d45565b606462003da3565b905060006200133e6200131c8362001316600654620018a4565b9050600062001360620013583462001316600654620030d9565b600a62003d45565b9050600062001370348562003de7565b90506000806001600160a01b0387166200139757620013948a600654600062002d95565b96505b6001600160a01b038716620013aa578a96505b620013b98a1560065462002a34565b620013c78b60065462002a34565b11620013ef57620013e36200131c346200131660065462002bbe565b9050600191506200143e565b87156200143b576040805162461bcd60e51b815260206004820152601560248201527418995a1a5b99081bdb9b1e481c995c5d595cdd1959605a1b604482015290519081900360640190fd5b50345b6200144c816103e862003d45565b90506200145c8a6006546200301a565b6001600160a01b03166340c10f198c836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015620014bc57600080fd5b505af1158015620014d1573d6000803e3d6000fd5b505060065460008181526005602052604090206004015462001500935062001358925090620013169062001cb7565b6200150e8b60065462002a34565b111580620015645750620015536200131c62001546620015318d60065462002a34565b620015408e1560065462002a34565b62003e2b565b6200131660065462001176565b620015618b60065462002a34565b11155b620015af576040805162461bcd60e51b8152602060048201526016602482015275105b1b1a585b98d9481d1bdbc819985c88185a19585960521b604482015290519081900360640190fd5b620015bf8a600654898762003e86565b620015cb8a8862003f4a565b620016216005600060065481526020019081526020016000206013016000620015f98d600654600062002d95565b6001600160a01b03166001600160a01b03168152602001908152602001600020548662003e2b565b60065460008181526005602052604081206013019162001644908e908362002d95565b6001600160a01b03168152602081019190915260400160002055818015620016865750620016768a1560065462002a34565b620016848b60065462002a34565b115b15620016b5576200169e426200154060065462001794565b600654600090815260056020819052604090912001555b600654600090815260056020526040902054620016d3908462003e2b565b6006805460009081526005602052604080822093909355905481522060030154620017049062001540888862003de7565b6006546000908152600560209081526040918290206003019290925580518c151581526001600160a01b038e1692810192909252818101859052517f3ac19402bdffd41463a2f828126b2f02a1812bfd0589b64eecd76ec68e7e80d39181900360600190a15050505050505050505050565b6000908152600560205260409020600801546001600160a01b031690565b60009081526004602052604090206001015490565b60008315620017df575060008281526005602090815260408083206001600160a01b038516845260140190915290205462001807565b5060008281526005602090815260408083206001600160a01b03851684526015019091529020545b9392505050565b60009081526004602052604090205460ff1690565b6000546001600160a01b0316331462001872576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b6001805460ff909216600160a01b0260ff60a01b19909216919091179055565b60009081526005602052604090205490565b600090815260046020526040902054610100900460ff1690565b60008281526005602052604081206006015460ff1660031462001928576040805162461bcd60e51b815260206004820152601a60248201527f47616d65206e6f7420696e2066696e6973686564207374617465000000000000604482015290519081900360640190fd5b6000620019358462001f95565b620019408562003cd8565b111562001a75576000620019548562003cd8565b111562001a27576000848152600560209081526040918290206006015482516370a0823160e01b81526001600160a01b038781166004830152935162001a249462001a139461010090940416926370a082319260248082019391829003018186803b158015620019c357600080fd5b505afa158015620019d8573d6000803e3d6000fd5b505050506040513d6020811015620019ef57600080fd5b50516000878152600560205260409020805460019091015462001316919062003e2b565b62001a1e8662003cd8565b62003da3565b90505b6000848152600560205260409020600901546001600160a01b038481169116141562001a6f5760008481526005602052604090206003015462001a6c90829062003e2b565b90505b62001b92565b600062001a828562001f95565b111562001b4a576000848152600560209081526040918290206007015482516370a0823160e01b81526001600160a01b038781166004830152935162001b479462001b3c949316926370a082319260248082019391829003018186803b15801562001aec57600080fd5b505afa15801562001b01573d6000803e3d6000fd5b505050506040513d602081101562001b1857600080fd5b50516000878152600560205260409020805460029091015462001316919062003e2b565b62001a1e8662001f95565b90505b6000848152600560205260409020600e01546001600160a01b038481169116141562001b925760008481526005602052604090206003015462001b8f90829062003e2b565b90505b60008481526005602090815260408083206001600160a01b038716845260130190915290205462001bc590829062003e2b565b905062001bd8816200154086866200343e565b949350505050565b6000546001600160a01b0316331462001c2f576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260026020908152604091829020600301805460ff191660ff871690811790915582519081529081019290925280517f56257d98305fc45c23161688be76d73888f254c79eea15f2ccd97fb9813d22369281900390910190a15050565b600090815260046020526040902054640100000000900460ff1690565b600090815260046020526040902054600160381b900460ff1690565b6000546001600160a01b031633148062001cee575060075442115b62001d2f576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff161562001d92576040805162461bcd60e51b815260206004820152601660248201527547616d65206e6f7420696e20696e697420737461746560501b604482015290519081900360640190fd5b62001d9f6006546200180e565b62001dae5762001dae620024f5565b62001dc0426200154060065462001195565b60075560068054600090815260056020526040902001805460ff1916600117905562001deb6200411b565b6006805460009081526005602090815260409182902090920154815160ff909116815290517ea8b06dd72552dea96e97c9a96acf39a1908ada44765cefe367620485b2c7e1929181900390910190a1565b6000838152600360205260409020546001600160a01b03161562001e9c576040805162461bcd60e51b81526020600482015260126024820152712730b6b29030b63932b0b23c903a30b5b2b760711b604482015290519081900360640190fd5b6040518060800160405280336001600160a01b0316815260200184815260200183838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505060018054600160a01b900460ff166020948501523383526002808552604093849020865181546001600160a01b0319166001600160a01b039091161781558686015192810192909255928501518051919462001f559486019350019062004d0c565b50606091909101516003918201805460ff90921660ff19909216919091179055600093845260205250506040902080546001600160a01b03191633179055565b600081815260056020908152604080832060070154815163144613ff60e31b815291516001600160a01b039091169263a2309ff89260048082019391829003018186803b15801562001fe657600080fd5b505afa15801562001ffb573d6000803e3d6000fd5b505050506040513d60208110156200201257600080fd5b505192915050565b600090815260046020526040902054600160401b900460ff1690565b600654600090815260056020819052604090912001544211620020a0576040805162461bcd60e51b815260206004820152601860248201527f54696d6520686173206e6f742072756e206f7574207965740000000000000000604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff1660021462002108576040805162461bcd60e51b815260206004820152601960248201527847616d65206e6f7420696e2072756e6e696e6720737461746560381b604482015290519081900360640190fd5b60006200211760065462001f95565b118062002130575060006200212e60065462003cd8565b115b62002182576040805162461bcd60e51b815260206004820152601b60248201527f43616e6e6f742073746f70206966206e6f6f6e65207374616b65640000000000604482015290519081900360640190fd5b6006805460009081526005602090815260408083208401805460ff19166003179055835483529182902090920154815160ff91909116815290517ea8b06dd72552dea96e97c9a96acf39a1908ada44765cefe367620485b2c7e1929181900390910190a1620021f8426200154060065462002d6a565b6007556006546200220b90600162003e2b565b600681815560009182526005602052604090912001805460ff1916905562002232620047f3565b565b6000546001600160a01b03163314806200224f575060075442115b62002290576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff16600114620022f8576040805162461bcd60e51b815260206004820152601960248201527847616d65206e6f7420696e2073656564696e6720737461746560381b604482015290519081900360640190fd5b6006546000908152600560205260409020600401546200235f576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420737461727420776974686f75742073656564696e6700000000604482015290519081900360640190fd5b62002371426200154060065462001794565b60068054600090815260056020818152604080842090920194909455825482528082208301805460ff19166002179055825482529081902090910154815160ff91909116815290517ea8b06dd72552dea96e97c9a96acf39a1908ada44765cefe367620485b2c7e1929181900390910190a1565b6000831562002485576000838152600560209081526040918290206006015482516370a0823160e01b81526001600160a01b0386811660048301529351610100909204909316926370a08231926024808301939192829003018186803b1580156200244f57600080fd5b505afa15801562002464573d6000803e3d6000fd5b505050506040513d60208110156200247b57600080fd5b5051905062001807565b6000838152600560209081526040918290206007015482516370a0823160e01b81526001600160a01b038681166004830152935193909116926370a0823192602480840193919291829003018186803b1580156200244f57600080fd5b620024f0338484846200123a565b505050565b6000546001600160a01b031633148062002510575060075442115b62002551576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff1615620025b4576040805162461bcd60e51b815260206004820152601660248201527547616d65206e6f7420696e20696e697420737461746560501b604482015290519081900360640190fd5b620025c16006546200180e565b15620025cc57600080fd5b600160065411156200273d5760046000620025eb600654600162003de7565b81526020808201929092526040908101600090812060065482526004938490529190208154815460ff191660ff9182161780835583546101009081900483160261ff0019909116178083558354620100009081900483160262ff00001990911617808355835463010000009081900483160263ff000000199091161780835583546401000000009081900483160264ff0000000019909116178083558354650100000000009081900483160265ff000000000019909116178083558354600160301b9081900483160266ff00000000000019909116178083558354600160381b9081900483160267ff0000000000000019909116178083558354600160401b9081900490921690910268ff000000000000000019909116178155600180830154908201556002808301549082015560038083015490820155828201549281019290925560059081015491015562002232565b604051806101c00160405280600a60ff168152602001601460ff168152602001601460ff168152602001603c60ff168152602001606960ff168152602001607860ff168152602001601460ff168152602001606460ff168152602001609660ff16815260200162015180815260200166038d7ea4c680008152602001662386f26fc1000081526020016201194081526020016202a30081525060046000600654815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff1602179055506101008201518160000160086101000a81548160ff021916908360ff16021790555061012082015181600101556101408201518160020155610160820151816003015561018082015181600401556101a08201518160050155905050565b60009081526004602052604090206002015490565b60075481565b6201194081565b6003602052600090815260409020546001600160a01b031681565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015460ff808516966101008604821696620100008704831696630100000081048416966401000000008204851696650100000000008304861696600160301b8404871696600160381b8504811696600160401b909504169492939192908e565b6000908152600560208190526040909120015490565b60065481565b6000821562002ad6576005600083815260200190815260200160002060060160019054906101000a90046001600160a01b03166001600160a01b031663a2309ff86040518163ffffffff1660e01b815260040160206040518083038186803b15801562002aa057600080fd5b505afa15801562002ab5573d6000803e3d6000fd5b505050506040513d602081101562002acc57600080fd5b5051905062001234565b60008281526005602090815260409182902060070154825163144613ff60e31b815292516001600160a01b039091169263a2309ff8926004808301939192829003018186803b15801562002aa057600080fd5b6005602081905260009182526040909120805460018201546002830154600384015460048501549585015460068601546007870154600890970154959794969395929493919260ff8216926001600160a01b0361010090930483169290811691168a565b60015b60065481101562002bbb5762002ba68162003720565b62002bb381600162003e2b565b905062002b90565b50565b60009081526004602052604090205465010000000000900460ff1690565b6000818152600560209081526040808320338085526013909101909252808320805490849055905190926108fc841502918491818181858888f19350505050158015620024f0573d6000803e3d6000fd5b600154600160a01b900460ff1681565b60008062002c4b8362001f95565b62002c568462003cd8565b1190506000811562002c7b575060008381526005602052604090206002015462002c8f565b506000838152600560205260409020600101545b600062002d166200131c62002ca48762001776565b6001600160a01b031663a2309ff86040518163ffffffff1660e01b815260040160206040518083038186803b15801562002cdd57600080fd5b505afa15801562002cf2573d6000803e3d6000fd5b505050506040513d602081101562002d0957600080fd5b505162001316886200201a565b90508082101562001bd857509392505050565b60008281526005602090815260408083206001600160a01b038516845260130190915290205492915050565b60009081526004602052604090206003015490565b6000908152600460208190526040909120015490565b60009081526005602052604090206002015490565b6000831562002dd35760056000848152602001908152602001600020600901826005811062002dc057fe5b01546001600160a01b0316905062001807565b60056000848152602001908152602001600020600e01826005811062002dc057fe5b600154600160a81b900460ff1681565b600680546000908152600560205260409020015460ff1660021462002e6d576040805162461bcd60e51b815260206004820152601960248201527847616d65206e6f7420696e2072756e6e696e6720737461746560381b604482015290519081900360640190fd5b336001600160a01b031662002e8782600654600062002d95565b6001600160a01b0316141562002ee4576040805162461bcd60e51b815260206004820152601960248201527f596f752061726520616c726561647920707265736964656e7400000000000000604482015290519081900360640190fd5b62002f01816006543362002efb346103e862003d45565b62003e86565b62002f1b62002f1260065462002d55565b6103e862003d45565b62002f2a8260065433620017a9565b11158062002f78575062002f666200131c62002f598360065462002f5386600654600062002d95565b620017a9565b6200131660065462001c9a565b62002f758260065433620017a9565b11155b62002fbc576040805162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b604482015290519081900360640190fd5b62002fc8813362003f4a565b62002fd7816006543462004a33565b604080518215158152336020820152348183015290517fa5d5144863644493dfb0b5f4451826c33654b78693983a8f014500ffd3dce1969181900360600190a150565b600082156200304a575060008181526005602052604090206006015461010090046001600160a01b031662001234565b506000818152600560205260409020600701546001600160a01b031662001234565b6000546001600160a01b03163314620030bb576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b60018054911515600160a81b0260ff60a81b19909216919091179055565b60009081526004602052604090205462010000900460ff1690565b60009081526005602052604090206003015490565b60008060015b60065481101562003142576200312b82620015408387620018be565b91506200313a81600162003e2b565b90506200310f565b5092915050565b6000546001600160a01b0316331462003198576040805162461bcd60e51b8152602060048201526016602482015260008051602062005d98833981519152604482015290519081900360640190fd5b600680546000908152600560205260409020015460ff1615620031fb576040805162461bcd60e51b815260206004820152601660248201527547616d65206e6f7420696e20696e697420737461746560501b604482015290519081900360640190fd5b604051806101c001604052808f60ff1681526020018e60ff1681526020018d60ff1681526020018c60ff1681526020018b60ff1681526020018a60ff1681526020018960ff1681526020018860ff1681526020018760ff1681526020018681526020018581526020018481526020018381526020018281525060046000600654815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff1602179055506101008201518160000160086101000a81548160ff021916908360ff16021790555061012082015181600101556101408201518160020155610160820151816003015561018082015181600401556101a082015181600501559050507f85a52584e2a604db198ab2f447cba2fc038a972048381c24b40219ef7a83df7060405160405180910390a15050505050505050505050505050565b60009081526005602052604090206001015490565b600082815260056020908152604080832060080154815163144613ff60e31b8152915184936001600160a01b039092169263a2309ff8926004808301939192829003018186803b1580156200349257600080fd5b505afa158015620034a7573d6000803e3d6000fd5b505050506040513d6020811015620034be57600080fd5b5051905080620034d357600091505062001234565b6000848152600560209081526040918290206008015482516370a0823160e01b81526001600160a01b038781166004830152935162001bd8946200356f949316926370a082319260248082019391829003018186803b1580156200353657600080fd5b505afa1580156200354b573d6000803e3d6000fd5b505050506040513d60208110156200356257600080fd5b5051620013168762002c3d565b8262003da3565b600090815260046020526040902054600160301b900460ff1690565b600680546000908152600560205260409020015460ff16600114620035fa576040805162461bcd60e51b815260206004820152601960248201527847616d65206e6f7420696e2073656564696e6720737461746560381b604482015290519081900360640190fd5b60065460009081526005602052604090205462003618903462003e2b565b600680546000908152600560205260408082209390935590548152206004015462003644903462003e2b565b60068054600090815260056020526040808220600490810194909455915481528181206008015482516340c10f1960e01b8152339481019490945234602485015291516001600160a01b03909216926340c10f19926044808301939282900301818387803b158015620036b657600080fd5b505af1158015620036cb573d6000803e3d6000fd5b50506040805133815234602082015281517f2c55b94e09a617f263124176c8cc7f6c0a7f963f1fd642a718614d6c1e4e06349450908190039091019150a1565b60009081526005602052604090206004015490565b60008181526005602052604090206006015460ff166003146200378a576040805162461bcd60e51b815260206004820152601a60248201527f47616d65206e6f7420696e2066696e6973686564207374617465000000000000604482015290519081900360640190fd5b6000620037978262001f95565b620037a28362003cd8565b1115620038dd576000620037b68362003cd8565b111562003880576000828152600560209081526040918290206006015482516370a0823160e01b815233600482015292516200387d9362003872936101009093046001600160a01b0316926370a0823192602480840193829003018186803b1580156200382257600080fd5b505afa15801562003837573d6000803e3d6000fd5b505050506040513d60208110156200384e57600080fd5b50516000858152600560205260409020805460019091015462001316919062003e2b565b62001a1e8462003cd8565b90505b6000828152600560205260409020600901546001600160a01b0316331415620038d757600082815260056020526040902060030154620038c290829062003e2b565b60008381526005602052604081206003015590505b62003a07565b6000620038ea8362001f95565b1115620039b0576000828152600560209081526040918290206007015482516370a0823160e01b81523360048201529251620039ad93620039a2936001600160a01b03909316926370a0823192602480840193829003018186803b1580156200395257600080fd5b505afa15801562003967573d6000803e3d6000fd5b505050506040513d60208110156200397e57600080fd5b50516000858152600560205260409020805460029091015462001316919062003e2b565b62001a1e8462001f95565b90505b6000828152600560205260409020600e01546001600160a01b031633141562003a0757600082815260056020526040902060030154620039f290829062003e2b565b60008381526005602052604081206003015590505b600082815260056020526040808220600601548151637e9d2ac160e01b815233600482015291516101009091046001600160a01b031692637e9d2ac1926024808201939182900301818387803b15801562003a6157600080fd5b505af115801562003a76573d6000803e3d6000fd5b505050600083815260056020526040808220600701548151637e9d2ac160e01b815233600482015291516001600160a01b039091169350637e9d2ac19260248084019391929182900301818387803b15801562003ad257600080fd5b505af115801562003ae7573d6000803e3d6000fd5b505050600083815260056020908152604080832033845260130190915290205462003b159150829062003e2b565b600083815260056020908152604080832033808552601390910190925282209190915590915062003b4f908290620015409085906200343e565b600083815260056020526040808220600801548151637e9d2ac160e01b815233600482015291519394506001600160a01b031692637e9d2ac19260248084019391929182900301818387803b15801562003ba857600080fd5b505af115801562003bbd573d6000803e3d6000fd5b50505050600081111562003bf957604051339082156108fc029083906000818181858888f19350505050158015620024f0573d6000803e3d6000fd5b5050565b600260208181526000928352604092839020805460018083015483860180548851601f600019958316156101000295909501909116979097049283018690048602870186019097528186526001600160a01b03909216959194929383018282801562003cad5780601f1062003c815761010080835404028352916020019162003cad565b820191906000526020600020905b81548152906001019060200180831162003c8f57829003601f168201915b5050506003909301549192505060ff1684565b738a6a9efdc77530bf73b05d1005089abf1b13687c81565b600081815260056020908152604080832060060154815163144613ff60e31b815291516101009091046001600160a01b03169263a2309ff89260048082019391829003018186803b15801562001fe657600080fd5b60009081526005602052604090206006015460ff1690565b60008262003d565750600062001234565b8282028284828162003d6457fe5b0414620018075760405162461bcd60e51b815260040180806020018281038252602181526020018062005dda6021913960400191505060405180910390fd5b60006200180783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062004aa5565b60006200180783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062004b4c565b60008282018381101562001807576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b831562003eeb5760008381526005602090815260408083206001600160a01b038616845260140190915290205462003ebf908262003e2b565b60008481526005602090815260408083206001600160a01b038716845260140190915290205562003f44565b60008381526005602090815260408083206001600160a01b038616845260150190915290205462003f1d908262003e2b565b60008481526005602090815260408083206001600160a01b03871684526015019091529020555b50505050565b60005b600581101562003f9f5762003f668360065484620017a9565b62003f7d8460065462002f53876006548762002d95565b101562003f8a5762003f9f565b62003f9781600162003e2b565b905062003f4d565b6005811015620024f0575060005b60058110156200404757816001600160a01b031662003fd0846006548462002d95565b6001600160a01b031614156200403257805b60048110156200402b5762004016846006548362004010886006546200400a88600162003e2b565b62002d95565b62004ba9565b6200402381600162003e2b565b905062003fe2565b5062004047565b6200403f81600162003e2b565b905062003fad565b5060005b60058110156200409d57620040648360065484620017a9565b6200407b8460065462002f53876006548762002d95565b101562004088576200409d565b6200409581600162003e2b565b90506200404b565b60045b81811115620040dc57620040c7846006548362004010886006546200400a88600162003de7565b620040d481600162003de7565b9050620040a0565b50620040ed83600654838562004ba9565b6040517fe1f4cf2e47a4efbf06b4001dab264f9632dc0f1b5192111ecb9821d96aaad58190600090a1505050565b60606200412a60065462004c40565b9050600081604051602001808062005d726026913960260182805190602001908083835b602083106200416f5780518252601f1990920191602091820191016200414e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405282604051602001808061535560f01b81525060020182805190602001908083835b60208310620041e55780518252601f199092019160209182019101620041c4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260016006546040516200422c9062004d91565b82151560408201526060810182905260808082528551908201528451819060208083019160a084019189019080838360005b83811015620042785781810151838201526020016200425e565b50505050905090810190601f168015620042a65780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015620042db578181015183820152602001620042c1565b50505050905090810190601f168015620043095780820380516001836020036101000a031916815260200191505b509650505050505050604051809103906000f0801580156200432f573d6000803e3d6000fd5b506006805460009081526005602090815260408083209093018054610100600160a81b0319166101006001600160a01b0387160217905591519293509184910180602262005db8823960220182805190602001908083835b60208310620043a85780518252601f19909201916020918201910162004387565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405283604051602001808061555360f01b81525060020182805190602001908083835b602083106200441e5780518252601f199092019160209182019101620043fd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526000600654604051620044659062004d91565b82151560408201526060810182905260808082528551908201528451819060208083019160a084019189019080838360005b83811015620044b157818101518382015260200162004497565b50505050905090810190601f168015620044df5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101562004514578181015183820152602001620044fa565b50505050905090810190601f168015620045425780820380516001836020036101000a031916815260200191505b509650505050505050604051809103906000f08015801562004568573d6000803e3d6000fd5b50600654600090815260056020908152604080832060070180546001600160a01b0319166001600160a01b03861617905580517f5365656420426f6e6473202d205374616b657761722e636f6d20526f756e6420818401908152885195965093948894939190920191908401908083835b60208310620045fa5780518252601f199092019160209182019101620045d9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528460405160200180806114d160f21b81525060020182805190602001908083835b60208310620046705780518252601f1990920191602091820191016200464f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526000600654604051620046b79062004d91565b82151560408201526060810182905260808082528551908201528451819060208083019160a084019189019080838360005b8381101562004703578181015183820152602001620046e9565b50505050905090810190601f168015620047315780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015620047665781810151838201526020016200474c565b50505050905090810190601f168015620047945780820380516001836020036101000a031916815260200191505b509650505050505050604051809103906000f080158015620047ba573d6000803e3d6000fd5b50600654600090815260056020526040902060080180546001600160a01b0319166001600160a01b039290921691909117905550505050565b600062004804600654600162003de7565b9050600080600080620048178562001f95565b620048228662003cd8565b1190508015620048465760008581526005602052604090206002015491506200485b565b60008581526005602052604090206001015491505b6000620048688662002c3d565b905062004876838262003de7565b92506200488c6200131c84620013168962003576565b94506200489a838662003de7565b600154909450600160a81b900460ff1680156200494b5750600086815260056020908152604091829020600480820154600890920154845163144613ff60e31b81529451899562004949956001600160a01b039093169363a2309ff893828201939092909190829003018186803b1580156200491557600080fd5b505afa1580156200492a573d6000803e3d6000fd5b505050506040513d60208110156200494157600080fd5b505162003de7565b115b156200495957600094508293505b8415620049cc57600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b158015620049b157600080fd5b505af1158015620049c6573d6000803e3d6000fd5b50505050505b600654600090815260056020526040902054620049ea908562003e2b565b600680546000908152600560205260408082209390935590548152206004015462004a16908562003e2b565b600654600090815260056020526040902060040155505050505050565b821562004a705760008281526005602052604090206001015462004a58908262003e2b565b600083815260056020526040902060010155620024f0565b60008281526005602052604090206002015462004a8e908262003e2b565b600083815260056020526040902060020155505050565b6000818362004b355760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562004af957818101518382015260200162004adf565b50505050905090810190601f16801562004b275780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162004b4257fe5b0495945050505050565b6000818484111562004ba15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562004af957818101518382015260200162004adf565b505050900390565b831562004bf8578060056000858152602001908152602001600020600901836005811062004bd357fe5b0180546001600160a01b0319166001600160a01b039290921691909117905562003f44565b8060056000858152602001908152602001600020600e01836005811062004c1b57fe5b0180546001600160a01b0319166001600160a01b039290921691909117905550505050565b6060818062004c695750506040805180820190915260018152600360fc1b602082015262001190565b8060005b811562004c8357600101600a8204915062004c6d565b6060816040519080825280601f01601f19166020018201604052801562004cb1576020820181803883390190505b50905060001982015b841562004d0257600a850660300160f81b8282806001900393508151811062004cdf57fe5b60200101906001600160f81b031916908160001a905350600a8504945062004cba565b5095945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062004d4f57805160ff191683800117855562004d7f565b8280016001018555821562004d7f579182015b8281111562004d7f57825182559160200191906001019062004d62565b5062004d8d92915062004d9f565b5090565b610fb28062004dc083390190565b62004dbc91905b8082111562004d8d576000815560010162004da6565b9056fe60806040523480156200001157600080fd5b5060405162000fb238038062000fb2833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604090815260208281015192909101518651929450925085918591601291620001c9916005919086019062000229565b508151620001df90600690602085019062000229565b5060078054600080546001600160a01b031916331790559515156101000261ff001960ff90931660ff199097169690961791909116949094179093555060085550620002ce915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026c57805160ff19168380011785556200029c565b828001600101855582156200029c579182015b828111156200029c5782518255916020019190600101906200027f565b50620002aa929150620002ae565b5090565b620002cb91905b80821115620002aa5760008155600101620002b5565b90565b610cd480620002de6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063454f7b8f11610097578063a2309ff811610066578063a2309ff8146102ee578063a457c2d7146102f6578063a9059cbb14610322578063dd62ed3e1461034e57610100565b8063454f7b8f1461029257806370a082311461029a5780637e9d2ac1146102c057806395d89b41146102e657610100565b80632e0f2625116100d35780632e0f262514610212578063313ce56714610230578063395093511461023857806340c10f191461026457610100565b806306fdde0314610105578063095ea7b31461018257806318160ddd146101c257806323b872dd146101dc575b600080fd5b61010d61037c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae6004803603604081101561019857600080fd5b506001600160a01b038135169060200135610412565b604080519115158252519081900360200190f35b6101ca610428565b60408051918252519081900360200190f35b6101ae600480360360608110156101f257600080fd5b506001600160a01b0381358116916020810135909116906040013561043d565b61021a61048e565b6040805160ff9092168252519081900360200190f35b61021a610493565b6101ae6004803603604081101561024e57600080fd5b506001600160a01b03813516906020013561049c565b6102906004803603604081101561027a57600080fd5b506001600160a01b0381351690602001356104d2565b005b6101ca61061d565b6101ca600480360360208110156102b057600080fd5b50356001600160a01b0316610623565b610290600480360360208110156102d657600080fd5b50356001600160a01b031661063e565b61010d6106c4565b6101ca610725565b6101ae6004803603604081101561030c57600080fd5b506001600160a01b03813516906020013561072b565b6101ae6004803603604081101561033857600080fd5b506001600160a01b038135169060200135610761565b6101ca6004803603604081101561036457600080fd5b506001600160a01b038135811691602001351661076e565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b5050505050905090565b600061041f338484610799565b50600192915050565b6000610438600154600254610885565b905090565b600061044a8484846108ce565b6001600160a01b03841660009081526004602090815260408083203380855292529091205461048491869161047f9086610885565b610799565b5060019392505050565b601281565b60075460ff1690565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161041f91859061047f9086610a21565b6000546001600160a01b03163314610531576040805162461bcd60e51b815260206004820152601d60248201527f4d75737420626520696e69746961746564206279205374616b65776172000000604482015290519081900360640190fd5b6001600160a01b03821661058c576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6001600160a01b0382166000908152600360205260409020546105af9082610a21565b6001600160a01b0383166000908152600360205260409020556001546105d59082610a21565b6001556040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60025490565b6001600160a01b031660009081526003602052604090205490565b6000546001600160a01b0316331461069d576040805162461bcd60e51b815260206004820152601d60248201527f4d75737420626520696e69746961746564206279205374616b65776172000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600360205260409020546106c1908290610a7b565b50565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104085780601f106103dd57610100808354040283529160200191610408565b60015490565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161041f91859061047f9086610885565b600061041f3384846108ce565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6001600160a01b0383166107de5760405162461bcd60e51b8152600401808060200182810382526024815260200180610c506024913960400191505060405180910390fd5b6001600160a01b0382166108235760405162461bcd60e51b8152600401808060200182810382526022815260200180610c0d6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60006108c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b51565b9392505050565b6001600160a01b0382166109135760405162461bcd60e51b8152600401808060200182810382526024815260200180610be96024913960400191505060405180910390fd5b336001600160a01b0384161461095a5760405162461bcd60e51b815260040180806020018281038252602c815260200180610c74602c913960400191505060405180910390fd5b6001600160a01b03831660009081526003602052604090205481111561097f57600080fd5b336000908152600360205260409020546109999082610885565b33600090815260036020526040808220929092556001600160a01b038416815220546109c59082610a21565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828201838110156108c7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038216610ac05760405162461bcd60e51b8152600401808060200182810382526021815260200180610c2f6021913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902054610ae39082610885565b6001600160a01b038316600090815260036020526040902055600254610b099082610a21565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60008184841115610be05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ba5578181015183820152602001610b8d565b50505050905090810190601f168015610bd25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe5472616e7366657220746f206e756c6c2061646472657373206e6f7420616c6c6f77656445524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735472616e73666572206d75737420626520696e69746961746564206279206d6573736167652073656e646572a265627a7a7231582046b35f63b6676882d712e8f0177f2d2adb50bdc0b1c03b22d932831b9b15bc1164736f6c634300050c0032536f766965742057617220426f6e6473202d205374616b657761722e636f6d20526f756e642043686169726d616e206f6e6c792066756e6374696f6e0000000000000000000055532057617220426f6e6473202d205374616b657761722e636f6d20526f756e6420536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582031a64b21e761937f755c2abcf5e9f0c85f9ddf166f67431683957660bdbc076b64736f6c634300050c0032
Deployed Bytecode Sourcemap
36:26758:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2894:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2894:122:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2894:122:0;;:::i;:::-;;;;;;;;;;;;;;;;4020:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4020:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4020:118:0;;:::i;6621:163::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6621:163:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6621:163:0;;;;;;-1:-1:-1;;;;;6621:163:0;;:::i;16703:2832::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;16703:2832:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6100:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6100:104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6100:104:0;;:::i;:::-;;;;-1:-1:-1;;;;;6100:104:0;;;;;;;;;;;;;;3414:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3414:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3414:110:0;;:::i;7620:255::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7620:255:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7620:255:0;;;;;;;;;;;;;-1:-1:-1;;;;;7620:255:0;;:::i;2500:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2500:126:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2500:126:0;;:::i;14272:174::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14272:174:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14272:174:0;;;;:::i;4902:96::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4902:96:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4902:96:0;;:::i;2632:128::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2632:128:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2632:128:0;;:::i;19547:1308::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19547:1308:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19547:1308:0;;;;;;-1:-1:-1;;;;;19547:1308:0;;:::i;14002:258::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14002:258:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14002:258:0;;;;;;;;-1:-1:-1;;;;;14002:258:0;;:::i;3022:128::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3022:128:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3022:128:0;;:::i;3760:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3760:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3760:136:0;;:::i;9959:543::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9959:543:0;;;:::i;15483:287::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15483:287:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15483:287:0;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;15483:287:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15483:287:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;15483:287:0;;-1:-1:-1;15483:287:0;-1:-1:-1;15483:287:0;:::i;4768:128::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4768:128:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4768:128:0;;:::i;4144:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4144:124:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4144:124:0;;:::i;11029:644::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11029:644:0;;;:::i;10510:507::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10510:507:0;;;:::i;7025:298::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7025:298:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7025:298:0;;;;;;;;;;;;;-1:-1:-1;;;;;7025:298:0;;:::i;15778:176::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15778:176:0;;;;;-1:-1:-1;;;;;15778:176:0;;;;;;;;;;;;:::i;8847:1100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8847:1100:0;;;:::i;3530:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3530:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3530:112:0;;:::i;2437:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2437:27:0;;;:::i;470:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;470:49:0;;;:::i;1062:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1062:57:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1062:57:0;;:::i;2300:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2300:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2300:45:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4380:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4380:98:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4380:98:0;;:::i;2399:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2399:31:0;;;:::i;7329:285::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7329:285:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7329:285:0;;;;;;;;;:::i;2352:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2352:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2352:40:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2352:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24392:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24392:166:0;;;:::i;3156:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3156:120:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3156:120:0;;:::i;24154:226::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24154:226:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24154:226:0;;:::i;704:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;704:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5456:638;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5456:638:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5456:638:0;;:::i;4484:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4484:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4484:136:0;;;;;;-1:-1:-1;;;;;4484:136:0;;:::i;3648:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3648:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3648:106:0;;:::i;3902:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3902:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3902:112:0;;:::i;5130:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5130:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5130:112:0;;:::i;7881:272::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7881:272:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7881:272:0;;;;;;;;;;;;;;:::i;824:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;824:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;14631:840;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14631:840:0;;;;:::i;6790:229::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6790:229:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6790:229:0;;;;;;;;;:::i;14454:165::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14454:165:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14454:165:0;;;;:::i;2766:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2766:122:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2766:122:0;;:::i;5248:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5248:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5248:106:0;;:::i;20867:296::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20867:296:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20867:296:0;-1:-1:-1;;;;;20867:296:0;;:::i;12538:1452::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12538:1452:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;12538:1452:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5004:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5004:120:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5004:120:0;;:::i;6210:405::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6210:405:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6210:405:0;;;;;;-1:-1:-1;;;;;6210:405:0;;:::i;3282:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3282:126:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3282:126:0;;:::i;8384:451::-;;;:::i;5360:90::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5360:90:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5360:90:0;;:::i;21175:1716::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21175:1716:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21175:1716:0;;:::i;1013:42::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1013:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1013:42:0;-1:-1:-1;;;;;1013:42:0;;:::i;:::-;;;;;-1:-1:-1;;;;;1013:42:0;-1:-1:-1;;;;;1013:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1013:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;560:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;560:86:0;;;:::i;4626:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4626:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4626:136:0;;:::i;4274:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4274:100:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4274:100:0;;:::i;2894:122::-;2961:7;2979:15;;;:8;:15;;;;;:35;;;;;;2894:122;;;;:::o;4020:118::-;4085:7;4103:15;;;:8;:15;;;;;:33;;;;4020:118::o;6621:163::-;6696:7;6734:13;;;:6;:13;;;;;;;;:25;;;6724:52;;-1:-1:-1;;;6724:52:0;;-1:-1:-1;;;;;6724:52:0;;;;;;;;;6734:25;;;;;6724:46;;:52;;;;;;;;;;6734:25;6724:52;;;5:2:-1;;;;30:1;27;20:12;5:2;6724:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6724:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6724:52:0;;-1:-1:-1;6621:163:0;;;;;:::o;16703:2832::-;16856:12;;;16849:20;;;;:6;:20;;;;;:30;;;;16883:1;16849:35;16841:73;;;;;-1:-1:-1;;;16841:73:0;;;;;;;;;;;;-1:-1:-1;;;16841:73:0;;;;;;;;;;;;;;;16946:31;16964:12;;16946:17;:31::i;:::-;16933:9;:44;;16925:75;;;;;-1:-1:-1;;;16925:75:0;;;;;;;;;;;;-1:-1:-1;;;16925:75:0;;;;;;;;;;;;;;;17021:24;17048:9;17021:36;;17070:22;17095:81;17108:62;17121:9;17131:38;17156:12;;17131:24;:38::i;:::-;17108:12;:62::i;:::-;17172:3;17095:12;:81::i;:::-;17070:106;;17187:23;17213:88;17226:69;17239:14;17255:39;17281:12;;17255:25;:39::i;17213:88::-;17187:114;;17312:20;17335:78;17348:60;17361:9;17371:36;17394:12;;17371:22;:36::i;17348:60::-;17410:2;17335:12;:78::i;:::-;17312:101;;17424:13;17441:39;17454:9;17465:14;17441:12;:39::i;:::-;17424:56;-1:-1:-1;17491:14:0;;-1:-1:-1;;;;;17561:24:0;;17557:109;;17613:41;17628:8;17638:12;;17652:1;17613:14;:41::i;:::-;17602:52;;17557:109;-1:-1:-1;;;;;17680:24:0;;17676:76;;17732:8;17721:19;;17676:76;17810:39;17826:8;17825:9;17836:12;;17810:14;:39::i;:::-;17768:38;17783:8;17793:12;;17768:14;:38::i;:::-;:81;17764:355;;17881:78;17894:60;17907:9;17918:35;17940:12;;17918:21;:35::i;17881:78::-;17866:93;;17986:4;17974:16;;17764:355;;;18032:10;18031:11;18023:45;;;;;-1:-1:-1;;;18023:45:0;;;;;;;;;;;;-1:-1:-1;;;18023:45:0;;;;;;;;;;;;;;;-1:-1:-1;18098:9:0;17764:355;18144:32;18157:12;18171:4;18144:12;:32::i;:::-;18129:47;;18197:32;18206:8;18216:12;;18197:8;:32::i;:::-;-1:-1:-1;;;;;18187:48:0;;18236:8;18246:12;18187:72;;;;;;;;;;;;;-1:-1:-1;;;;;18187:72:0;-1:-1:-1;;;;;18187:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18187:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;18353:12:0;;18346:20;;;;:6;:20;;;;;:25;;;18320:102;;-1:-1:-1;18333:84:0;;-1:-1:-1;18346:25:0;18373:43;;:29;:43::i;18320:102::-;18278:38;18293:8;18303:12;;18278:14;:38::i;:::-;:144;;:354;;;;18468:164;18481:145;18494:93;18507:38;18522:8;18532:12;;18507:14;:38::i;:::-;18547:39;18563:8;18562:9;18573:12;;18547:14;:39::i;:::-;18494:12;:93::i;:::-;18589:36;18612:12;;18589:22;:36::i;18468:164::-;18426:38;18441:8;18451:12;;18426:14;:38::i;:::-;:206;;18278:354;18270:389;;;;;-1:-1:-1;;;18270:389:0;;;;;;;;;;;;-1:-1:-1;;;18270:389:0;;;;;;;;;;;;;;;18672:56;18681:8;18691:12;;18705:8;18715:12;18672:8;:56::i;:::-;18739:38;18758:8;18768;18739:18;:38::i;:::-;18882:112;18895:6;:20;18902:12;;18895:20;;;;;;;;;;;:38;;:81;18934:41;18949:8;18959:12;;18973:1;18934:14;:41::i;:::-;-1:-1:-1;;;;;18895:81:0;-1:-1:-1;;;;;18895:81:0;;;;;;;;;;;;;18978:15;18882:12;:112::i;:::-;18805:12;;18798:20;;;;:6;:20;;;;;:38;;;18837:41;;18852:8;;18798:20;18837:14;:41::i;:::-;-1:-1:-1;;;;;18798:81:0;;;;;;;;;;;;-1:-1:-1;18798:81:0;:196;19019:9;:93;;;;;19073:39;19089:8;19088:9;19099:12;;19073:14;:39::i;:::-;19032:38;19047:8;19057:12;;19032:14;:38::i;:::-;:80;19019:93;19015:207;;;19161:49;19174:3;19179:30;19196:12;;19179:16;:30::i;19161:49::-;19136:12;;19129:20;;;;:6;:20;;;;;;;;:29;:81;19015:207;19293:12;;19286:20;;;;:6;:20;;;;;:28;19273:49;;19316:5;19273:12;:49::i;:::-;19249:12;;;19242:20;;;;:6;:20;;;;;;:80;;;;19389:12;;19382:20;;;:33;;;19369:94;;19417:45;19430:14;19446:15;19417:12;:45::i;19369:94::-;19340:12;;19333:20;;;;:6;:20;;;;;;;;;:33;;:130;;;;19493:34;;;;;;;-1:-1:-1;;;;;19493:34:0;;;;;;;;;;;;;;;;;;;;;;;;;16703:2832;;;;;;;;;;;:::o;6100:104::-;6159:7;6177:13;;;:6;:13;;;;;:25;;;-1:-1:-1;;;;;6177:25:0;;6100:104::o;3414:110::-;3475:7;3493:15;;;:8;:15;;;;;:29;;;;3414:110::o;7620:255::-;7702:7;7726:8;7722:146;;;-1:-1:-1;7758:13:0;;;;:6;:13;;;;;;;;-1:-1:-1;;;;;7758:31:0;;;;:25;;:31;;;;;;7751:38;;7722:146;-1:-1:-1;7829:13:0;;;;:6;:13;;;;;;;;-1:-1:-1;;;;;7829:27:0;;;;:21;;:27;;;;;;7722:146;7620:255;;;;;:::o;2500:126::-;2569:7;2587:15;;;:8;:15;;;;;:37;;;;2500:126::o;14272:174::-;14363:8;;-1:-1:-1;;;;;14363:8:0;14349:10;:22;14341:57;;;;;-1:-1:-1;;;14341:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14341:57:0;;;;;;;;;;;;;;;14409:18;:29;;;;;;-1:-1:-1;;;14409:29:0;-1:-1:-1;;;;14409:29:0;;;;;;;;;14272:174::o;4902:96::-;4957:7;4975:13;;;:6;:13;;;;;:21;;4902:96::o;2632:128::-;2702:7;2720:15;;;:8;:15;;;;;:38;;;;;;;2632:128::o;19547:1308::-;19618:7;19646:13;;;:6;:13;;;;;:23;;;;;19673:1;19646:28;19638:67;;;;;-1:-1:-1;;;19638:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19726:13;19786:23;19803:5;19786:16;:23::i;:::-;19756:27;19777:5;19756:20;:27::i;:::-;:53;19752:923;;;19860:1;19830:27;19851:5;19830:20;:27::i;:::-;:31;19826:261;;;19926:13;;;;:6;:13;;;;;;;;;:25;;;19916:52;;-1:-1:-1;;;19916:52:0;;-1:-1:-1;;;;;19916:52:0;;;;;;;;;19890:181;;19903:138;;19926:25;;;;;;19916:46;;:52;;;;;;;;;;;19926:25;19916:52;;;5:2:-1;;;;30:1;27;20:12;5:2;19916:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19916:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19916:52:0;19983:13;;;;:6;19916:52;19983:13;;;;:21;;20006:33;;;;;19970:70;;19983:21;19970:12;:70::i;19903:138::-;20043:27;20064:5;20043:20;:27::i;:::-;19890:12;:181::i;:::-;19882:189;;19826:261;20105:13;;;;:6;:13;;;;;:31;;:34;-1:-1:-1;;;;;20105:42:0;;;:34;;:42;20101:138;;;20196:13;;;;:6;:13;;;;;:26;;;20176:47;;20189:5;;20176:12;:47::i;:::-;20168:55;;20101:138;19752:923;;;20301:1;20275:23;20292:5;20275:16;:23::i;:::-;:27;20271:245;;;20367:13;;;;:6;:13;;;;;;;;;:21;;;20357:48;;-1:-1:-1;;;20357:48:0;;-1:-1:-1;;;;;20357:48:0;;;;;;;;;20331:169;;20344:130;;20367:21;;;20357:42;;:48;;;;;;;;;;;20367:21;20357:48;;;5:2:-1;;;;30:1;27;20:12;5:2;20357:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20357:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20357:48:0;20420:13;;;;:6;20357:48;20420:13;;;;:21;;20443:29;;;;;20407:66;;20420:21;20407:12;:66::i;20344:130::-;20476:23;20493:5;20476:16;:23::i;20331:169::-;20323:177;;20271:245;20534:13;;;;:6;:13;;;;;:27;;:30;-1:-1:-1;;;;;20534:38:0;;;:30;;:38;20530:134;;;20621:13;;;;:6;:13;;;;;:26;;;20601:47;;20614:5;;20601:12;:47::i;:::-;20593:55;;20530:134;20713:13;;;;:6;:13;;;;;;;;-1:-1:-1;;;;;20713:37:0;;;;:31;;:37;;;;;;20693:58;;20706:5;;20693:12;:58::i;:::-;20685:66;;20772:50;20785:5;20792:29;20809:5;20816:4;20792:16;:29::i;20772:50::-;20764:58;19547:1308;-1:-1:-1;;;;19547:1308:0:o;14002:258::-;14106:8;;-1:-1:-1;;;;;14106:8:0;14092:10;:22;14084:57;;;;;-1:-1:-1;;;14084:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14084:57:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14152:19:0;;;;;;:7;:19;;;;;;;;;:31;;:42;;-1:-1:-1;;14152:42:0;;;;;;;;;;14210;;;;;;;;;;;;;;;;;;;;;;;;14002:258;;:::o;3022:128::-;3092:7;3110:15;;;:8;:15;;;;;:38;;;;;;;3022:128::o;3760:136::-;3834:7;3852:15;;;:8;:15;;;;;:42;-1:-1:-1;;;3852:42:0;;;;;3760:136::o;9959:543::-;10025:8;;-1:-1:-1;;;;;10025:8:0;10011:10;:22;;:44;;;10043:12;;10037:3;:18;10011:44;10003:79;;;;;-1:-1:-1;;;10003:79:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10003:79:0;;;;;;;;;;;;;;;10108:12;;;10101:20;;;;:6;:20;;;;;:30;;;;:35;10093:70;;;;;-1:-1:-1;;;10093:70:0;;;;;;;;;;;;-1:-1:-1;;;10093:70:0;;;;;;;;;;;;;;;10180:38;10205:12;;10180:24;:38::i;:::-;10176:97;;10240:21;:19;:21::i;:::-;10298:53;10311:3;10316:34;10337:12;;10316:20;:34::i;10298:53::-;10283:12;:68;10369:12;;;10362:20;;;;:6;:20;;;;;:30;:34;;-1:-1:-1;;10362:34:0;10395:1;10362:34;;;10407:13;:11;:13::i;:::-;10470:12;;;10463:20;;;;:6;:20;;;;;;;;;:30;;;;10446:48;;10463:30;;;;10446:48;;;;;;;;;;;;;;;9959:543::o;15483:287::-;15600:3;15569:19;;;:13;:19;;;;;;-1:-1:-1;;;;;15569:19:0;:35;15561:66;;;;;-1:-1:-1;;;15561:66:0;;;;;;;;;;;;-1:-1:-1;;;15561:66:0;;;;;;;;;;;;;;;15670:49;;;;;;;;15677:10;-1:-1:-1;;;;;15670:49:0;;;;;15689:4;15670:49;;;;15695:3;;15670:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;15670:49:0;;;-1:-1:-1;;15700:18:0;;;-1:-1:-1;;;15700:18:0;;;;15670:49;;;;;15656:10;15648:19;;:7;:19;;;;;;;;:71;;;;-1:-1:-1;;;;;;15648:71:0;-1:-1:-1;;;;;15648:71:0;;;;;;;;;;;;;;;;;;;;;;;:19;;:71;;;;;-1:-1:-1;15648:71:0;;;:::i;:::-;-1:-1:-1;15648:71:0;;;;;;;;;;;;;;;;-1:-1:-1;;15648:71:0;;;;;;;;;;15730:19;;;;;-1:-1:-1;;15730:19:0;;;:32;;-1:-1:-1;;;;;;15730:32:0;15752:10;15730:32;;;15483:287::o;4768:128::-;4829:7;4857:13;;;:6;:13;;;;;;;;:21;;;4847:46;;-1:-1:-1;;;4847:46:0;;;;-1:-1:-1;;;;;4857:21:0;;;;4847:44;;:46;;;;;;;;;;;4857:21;4847:46;;;5:2:-1;;;;30:1;27;20:12;5:2;4847:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4847:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4847:46:0;;4768:128;-1:-1:-1;;4768:128:0:o;4144:124::-;4212:7;4230:15;;;:8;:15;;;;;:36;-1:-1:-1;;;4230:36:0;;;;;4144:124::o;11029:644::-;11091:12;;11084:20;;;;:6;:20;;;;;;;;:29;;11078:3;:35;11070:72;;;;;-1:-1:-1;;;11070:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11168:12;;;11161:20;;;;:6;:20;;;;;:30;;;;11195:1;11161:35;11153:73;;;;;-1:-1:-1;;;11153:73:0;;;;;;;;;;;;-1:-1:-1;;;11153:73:0;;;;;;;;;;;;;;;11278:1;11245:30;11262:12;;11245:16;:30::i;:::-;:34;:76;;;;11320:1;11283:34;11304:12;;11283:20;:34::i;:::-;:38;11245:76;11237:116;;;;;-1:-1:-1;;;11237:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11373:12;;;11366:20;;;;:6;:20;;;;;;;;:30;;:34;;-1:-1:-1;;11366:34:0;11399:1;11366:34;;;11440:12;;11433:20;;;;;;:30;;;;11416:48;;11366:34;11433:30;;;;11416:48;;;;;;;;;;;;;;;11490:50;11503:3;11508:31;11526:12;;11508:17;:31::i;11490:50::-;11475:12;:65;11579:12;;11566:29;;11593:1;11566:12;:29::i;:::-;11551:12;:44;;;11639:1;11606:20;;;:6;:20;;;;;;:30;:34;;-1:-1:-1;;11606:34:0;;;11651:14;:12;:14::i;:::-;11029:644::o;10510:507::-;10574:8;;-1:-1:-1;;;;;10574:8:0;10560:10;:22;;:44;;;10592:12;;10586:3;:18;10560:44;10552:79;;;;;-1:-1:-1;;;10552:79:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10552:79:0;;;;;;;;;;;;;;;10657:12;;;10650:20;;;;:6;:20;;;;;:30;;;;;:35;10642:73;;;;;-1:-1:-1;;;10642:73:0;;;;;;;;;;;;-1:-1:-1;;;10642:73:0;;;;;;;;;;;;;;;10741:12;;10762:1;10734:20;;;:6;:20;;;;;:25;;;10726:70;;;;;-1:-1:-1;;;10726:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10841:49;10854:3;10859:30;10876:12;;10859:16;:30::i;10841:49::-;10816:12;;;10809:20;;;;:6;:20;;;;;;;;:29;;;:81;;;;10908:12;;10901:20;;;;;:30;;:34;;-1:-1:-1;;10901:34:0;10934:1;10901:34;;;10985:12;;10978:20;;;;;;:30;;;;10961:48;;10901:34;10978:30;;;;10961:48;;;;;;;;;;;;;;;10510:507::o;7025:298::-;7108:7;7132:8;7128:188;;;7174:13;;;;:6;:13;;;;;;;;;:25;;;7164:52;;-1:-1:-1;;;7164:52:0;;-1:-1:-1;;;;;7164:52:0;;;;;;;;;7174:25;;;;;;;;7164:46;;:52;;;;;7174:13;;7164:52;;;;;7174:25;7164:52;;;5:2:-1;;;;30:1;27;20:12;5:2;7164:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7164:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7164:52:0;;-1:-1:-1;7157:59:0;;7128:188;7266:13;;;;:6;:13;;;;;;;;;:21;;;7256:48;;-1:-1:-1;;;7256:48:0;;-1:-1:-1;;;;;7256:48:0;;;;;;;;;7266:21;;;;;7256:42;;:48;;;;;7266:13;;7256:48;;;;;;7266:21;7256:48;;;5:2:-1;;;;30:1;27;20:12;15778:176:0;15884:62;15902:10;15914:8;15924:9;15935:10;15884:17;:62::i;:::-;15778:176;;;:::o;8847:1100::-;8918:8;;-1:-1:-1;;;;;8918:8:0;8904:10;:22;;:44;;;8936:12;;8930:3;:18;8904:44;8896:79;;;;;-1:-1:-1;;;8896:79:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8896:79:0;;;;;;;;;;;;;;;9001:12;;;8994:20;;;;:6;:20;;;;;:30;;;;:35;8986:70;;;;;-1:-1:-1;;;8986:70:0;;;;;;;;;;;;-1:-1:-1;;;8986:70:0;;;;;;;;;;;;;;;9075:38;9100:12;;9075:24;:38::i;:::-;:43;9067:52;;;;;;9151:1;9136:12;;:16;9132:808;;;9194:8;:38;9203:28;9216:12;;9229:1;9203:12;:28::i;:::-;9194:38;;;;;;;;;;;;;;-1:-1:-1;9194:38:0;;;9178:12;;9169:22;;:8;:22;;;;;;;:63;;;;-1:-1:-1;;9169:63:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9169:63:0;;;;;;;;;;;;;;;;;-1:-1:-1;;9169:63:0;;;;;;;;;;;;;;;;;-1:-1:-1;;9169:63:0;;;;;;;;;;;;;;;;;-1:-1:-1;;9169:63:0;;;;;;;;;;;;;;;;;-1:-1:-1;;9169:63:0;;;;;;;;;-1:-1:-1;;;9169:63:0;;;;;;;-1:-1:-1;;9169:63:0;;;;;;;;;-1:-1:-1;;;9169:63:0;;;;;;;-1:-1:-1;;9169:63:0;;;;;;;;;-1:-1:-1;;;9169:63:0;;;;;;;;;;-1:-1:-1;;9169:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9132:808;;;9290:638;;;;;;;;9342:2;9290:638;;;;;;9387:2;9290:638;;;;;;9429:2;9290:638;;;;;;9471:2;9290:638;;;;;;9516:3;9290:638;;;;;;9558:3;9290:638;;;;;;9603:2;9290:638;;;;;;9652:3;9290:638;;;;;;9696:3;9290:638;;;;;;9733:6;9290:638;;;;9774:8;9290:638;;;;9814:9;9290:638;;;;9858:8;9290:638;;;;9904:8;9290:638;;;9265:8;:22;9274:12;;9265:22;;;;;;;;;;;:663;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8847:1100::o;3530:112::-;3592:7;3610:15;;;:8;:15;;;;;:30;;;;3530:112::o;2437:27::-;;;;:::o;470:49::-;511:8;470:49;:::o;1062:57::-;;;;;;;;;;;;-1:-1:-1;;;;;1062:57:0;;:::o;2300:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2300:45:0;;;;;-1:-1:-1;;;2300:45:0;;;;;-1:-1:-1;;;2300:45:0;;;;;;;;;;;:::o;4380:98::-;4436:7;4454:13;;;:6;:13;;;;;;;;:22;;;4380:98::o;2399:31::-;;;;:::o;7329:285::-;7403:7;7427:8;7423:184;;;7469:6;:13;7476:5;7469:13;;;;;;;;;;;:25;;;;;;;;;;-1:-1:-1;;;;;7469:25:0;-1:-1:-1;;;;;7459:48:0;;:50;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7459:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7459:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7459:50:0;;-1:-1:-1;7452:57:0;;7423:184;7559:13;;;;:6;:13;;;;;;;;;:21;;;7549:46;;-1:-1:-1;;;7549:46:0;;;;-1:-1:-1;;;;;7559:21:0;;;;7549:44;;:46;;;;;7559:13;;7549:46;;;;;7559:21;7549:46;;;5:2:-1;;;;30:1;27;20:12;2352:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2352:40:0;;;;;;;;;;;;;:::o;24392:166::-;24456:1;24437:114;24466:12;;24458:5;:20;24437:114;;;24526:13;24533:5;24526:6;:13::i;:::-;24487:22;24500:5;24507:1;24487:12;:22::i;:::-;24479:30;;24437:114;;;;24392:166::o;3156:120::-;3222:7;3240:15;;;:8;:15;;;;;:34;;;;;;;3156:120::o;24154:226::-;24218:13;24234;;;:6;:13;;;;;;;;24266:10;24234:43;;;:31;;;;:43;;;;;;;;24288:47;;;;24346:26;;24234:43;;24346:26;;;;;24234:43;;24346:26;24218:13;24346:26;24234:43;24266:10;24346:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;704:35:0;;;-1:-1:-1;;;704:35:0;;;;;:::o;5456:638::-;5522:7;5543:15;5591:23;5608:5;5591:16;:23::i;:::-;5561:27;5582:5;5561:20;:27::i;:::-;:53;5543:71;;5625:13;5653:10;5649:154;;;-1:-1:-1;5688:13:0;;;;:6;:13;;;;;:29;;;5649:154;;;-1:-1:-1;5758:13:0;;;;:6;:13;;;;;:33;;;5649:154;5815:26;5844:111;5857:92;5880:21;5895:5;5880:14;:21::i;:::-;-1:-1:-1;;;;;5870:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5870:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5870:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5870:46:0;5918:30;5942:5;5918:23;:30::i;5844:111::-;5815:140;;5978:18;5970:5;:26;5966:85;;;-1:-1:-1;6034:5:0;6068:18;-1:-1:-1;;;5456:638:0:o;4484:136::-;4563:7;4581:13;;;:6;:13;;;;;;;;-1:-1:-1;;;;;4581:37:0;;;;:31;;:37;;;;;;4484:136;;;;:::o;3648:106::-;3707:7;3725:15;;;:8;:15;;;;;:27;;;;3648:106::o;3902:112::-;3964:7;3982:15;;;:8;:15;;;;;;;;:30;;;3902:112::o;5130:::-;5193:7;5211:13;;;:6;:13;;;;;:29;;;;5130:112::o;7881:272::-;7966:15;7998:8;7994:152;;;8030:6;:13;8037:5;8030:13;;;;;;;;;;;:31;;8062:1;8030:34;;;;;;;;;-1:-1:-1;;;;;8030:34:0;;-1:-1:-1;8023:41:0;;7994:152;8104:6;:13;8111:5;8104:13;;;;;;;;;;;:27;;8132:1;8104:30;;;;;;824:39;;;-1:-1:-1;;;824:39:0;;;;;:::o;14631:840::-;14707:12;;;14700:20;;;;:6;:20;;;;;:30;;;;14734:1;14700:35;14692:73;;;;;-1:-1:-1;;;14692:73:0;;;;;;;;;;;;-1:-1:-1;;;14692:73:0;;;;;;;;;;;;;;;14829:10;-1:-1:-1;;;;;14784:55:0;:41;14799:8;14809:12;;14823:1;14784:14;:41::i;:::-;-1:-1:-1;;;;;14784:55:0;;;14776:93;;;;;-1:-1:-1;;;14776:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14880:75;14889:8;14899:12;;14913:10;14925:29;14938:9;14949:4;14925:12;:29::i;:::-;14880:8;:75::i;:::-;15022:48;15035:28;15050:12;;15035:14;:28::i;:::-;15065:4;15022:12;:48::i;:::-;14974:44;14983:8;14993:12;;15007:10;14974:8;:44::i;:::-;:96;;:297;;;;15122:149;15135:130;15148:75;15157:8;15167:12;;15181:41;15196:8;15206:12;;15220:1;15181:14;:41::i;:::-;15148:8;:75::i;:::-;15225:39;15251:12;;15225:25;:39::i;15122:149::-;15074:44;15083:8;15093:12;;15107:10;15074:8;:44::i;:::-;:197;;14974:297;14966:325;;;;;-1:-1:-1;;;14966:325:0;;;;;;;;;;;;-1:-1:-1;;;14966:325:0;;;;;;;;;;;;;;;15302:40;15321:8;15331:10;15302:18;:40::i;:::-;15353:51;15370:8;15380:12;;15394:9;15353:16;:51::i;:::-;15420:43;;;;;;;;15441:10;15420:43;;;;15453:9;15420:43;;;;;;;;;;;;;;;14631:840;:::o;6790:229::-;6858:7;6882:8;6878:134;;;-1:-1:-1;6914:13:0;;;;:6;:13;;;;;:25;;;;;;-1:-1:-1;;;;;6914:25:0;6907:32;;6878:134;-1:-1:-1;6979:13:0;;;;:6;:13;;;;;:21;;;-1:-1:-1;;;;;6979:21:0;6972:28;;14454:165;14539:8;;-1:-1:-1;;;;;14539:8:0;14525:10;:22;14517:57;;;;;-1:-1:-1;;;14517:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14517:57:0;;;;;;;;;;;;;;;14585:20;:26;;;;;-1:-1:-1;;;14585:26:0;-1:-1:-1;;;;14585:26:0;;;;;;;;;14454:165::o;2766:122::-;2833:7;2851:15;;;:8;:15;;;;;:35;;;;;;;2766:122::o;5248:106::-;5308:7;5326:13;;;:6;:13;;;;;:26;;;;5248:106::o;20867:296::-;20932:7;;20997:1;20978:155;21007:12;;20999:5;:20;20978:155;;;21075:46;21088:5;21095:25;21108:5;21115:4;21095:12;:25::i;21075:46::-;21067:54;;21028:22;21041:5;21048:1;21028:12;:22::i;:::-;21020:30;;20978:155;;;-1:-1:-1;21150:5:0;20867:296;-1:-1:-1;;20867:296:0:o;12538:1452::-;12997:8;;-1:-1:-1;;;;;12997:8:0;12983:10;:22;12975:57;;;;;-1:-1:-1;;;12975:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12975:57:0;;;;;;;;;;;;;;;13058:12;;;13051:20;;;;:6;:20;;;;;:30;;;;:35;13043:70;;;;;-1:-1:-1;;;13043:70:0;;;;;;;;;;;;-1:-1:-1;;;13043:70:0;;;;;;;;;;;;;;;13159:788;;;;;;;;13207:22;13159:788;;;;;;13268:23;13159:788;;;;;;13327:20;13159:788;;;;;;13383:20;13159:788;;;;;;13442:23;13159:788;;;;;;13500:19;13159:788;;;;;;13557:22;13159:788;;;;;;13622:27;13159:788;;;;;;13686:21;13159:788;;;;;;13737:14;13159:788;;;;13782:15;13159:788;;;;13825:12;13159:788;;;;13868:15;13159:788;;;;13917:18;13159:788;;;13134:8;:22;13143:12;;13134:22;;;;;;;;;;;:813;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13965:17;;;;;;;;;;12538:1452;;;;;;;;;;;;;;:::o;5004:120::-;5071:7;5089:13;;;:6;:13;;;;;:33;;;;5004:120::o;6210:405::-;6285:7;6345:13;;;:6;:13;;;;;;;;:25;;;6335:50;;-1:-1:-1;;;6335:50:0;;;;6285:7;;-1:-1:-1;;;;;6345:25:0;;;;6335:48;;:50;;;;;6345:13;;6335:50;;;;;6345:25;6335:50;;;5:2:-1;;;;30:1;27;20:12;5:2;6335:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6335:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6335:50:0;;-1:-1:-1;6400:23:0;6396:64;;6447:1;6440:8;;;;;6396:64;6513:13;;;;:6;:13;;;;;;;;;:25;;;6503:52;;-1:-1:-1;;;6503:52:0;;-1:-1:-1;;;;;6503:52:0;;;;;;;;;6477:130;;6490:96;;6513:25;;;6503:46;;:52;;;;;;;;;;;6513:25;6503:52;;;5:2:-1;;;;30:1;27;20:12;5:2;6503:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6503:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6503:52:0;6557:28;6579:5;6557:21;:28::i;6490:96::-;6588:18;6477:12;:130::i;3282:126::-;3351:7;3369:15;;;:8;:15;;;;;:37;-1:-1:-1;;;3369:37:0;;;;;3282:126::o;8384:451::-;8446:12;;;8439:20;;;;:6;:20;;;;;:30;;;;;:35;8431:73;;;;;-1:-1:-1;;;8431:73:0;;;;;;;;;;;;-1:-1:-1;;;8431:73:0;;;;;;;;;;;;;;;8576:12;;8569:20;;;;:6;:20;;;;;:28;8556:53;;8599:9;8556:12;:53::i;:::-;8532:12;;;8525:20;;;;:6;:20;;;;;;:84;;;;8668:12;;8661:20;;;:25;;;8648:50;;8688:9;8648:12;:50::i;:::-;8627:12;;;8620:20;;;;:6;:20;;;;;;:25;;;;:78;;;;8726:12;;8719:20;;;;;:32;;;8709:71;;-1:-1:-1;;;8709:71:0;;8758:10;8709:71;;;;;;;8770:9;8709:71;;;;;;-1:-1:-1;;;;;8719:32:0;;;;8709:48;;:71;;;;;8620:20;8709:71;;;;;8620:20;8719:32;8709:71;;;5:2:-1;;;;30:1;27;20:12;5:2;8709:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8796:31:0;;;8805:10;8796:31;;8817:9;8796:31;;;;;;;;-1:-1:-1;8796:31:0;;;;;;;;-1:-1:-1;8796:31:0;8384:451::o;5360:90::-;5412:7;5430:13;;;:6;:13;;;;;:18;;;;5360:90::o;21175:1716::-;21232:13;;;;:6;:13;;;;;:23;;;;;21259:1;21232:28;21224:67;;;;;-1:-1:-1;;;21224:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21312:13;21374:23;21391:5;21374:16;:23::i;:::-;21344:27;21365:5;21344:20;:27::i;:::-;:53;21340:1045;;;21448:1;21418:27;21439:5;21418:20;:27::i;:::-;:31;21414:267;;;21514:13;;;;:6;:13;;;;;;;;;:25;;;21504:58;;-1:-1:-1;;;21504:58:0;;21551:10;21504:58;;;;;;21478:187;;21491:144;;21514:25;;;;-1:-1:-1;;;;;21514:25:0;;21504:46;;:58;;;;;;;;;;21514:25;21504:58;;;5:2:-1;;;;30:1;27;20:12;5:2;21504:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21504:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21504:58:0;21577:13;;;;:6;21504:58;21577:13;;;;:21;;21600:33;;;;;21564:70;;21577:21;21564:12;:70::i;21491:144::-;21637:27;21658:5;21637:20;:27::i;21478:187::-;21470:195;;21414:267;21699:13;;;;:6;:13;;;;;:31;;:34;-1:-1:-1;;;;;21699:34:0;21737:10;21699:48;21695:193;;;21796:13;;;;:6;:13;;;;;:26;;;21776:47;;21789:5;;21776:12;:47::i;:::-;21871:1;21842:13;;;:6;:13;;;;;:26;;:30;21768:55;-1:-1:-1;21695:193:0;21340:1045;;;21950:1;21924:23;21941:5;21924:16;:23::i;:::-;:27;21920:251;;;22016:13;;;;:6;:13;;;;;;;;;:21;;;22006:54;;-1:-1:-1;;;22006:54:0;;22049:10;22006:54;;;;;;21980:175;;21993:136;;-1:-1:-1;;;;;22016:21:0;;;;22006:42;;:54;;;;;;;;;;22016:21;22006:54;;;5:2:-1;;;;30:1;27;20:12;5:2;22006:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22006:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22006:54:0;22075:13;;;;:6;22006:54;22075:13;;;;:21;;22098:29;;;;;22062:66;;22075:21;22062:12;:66::i;21993:136::-;22131:23;22148:5;22131:16;:23::i;21980:175::-;21972:183;;21920:251;22189:13;;;;:6;:13;;;;;:27;;:30;-1:-1:-1;;;;;22189:30:0;22223:10;22189:44;22185:189;;;22282:13;;;;:6;:13;;;;;:26;;;22262:47;;22275:5;;22262:12;:47::i;:::-;22357:1;22328:13;;;:6;:13;;;;;:26;;:30;22254:55;-1:-1:-1;22185:189:0;22407:13;;;;:6;:13;;;;;;:25;;;22397:56;;-1:-1:-1;;;22397:56:0;;22442:10;22397:56;;;;;;22407:25;;;;-1:-1:-1;;;;;22407:25:0;;22397:44;;:56;;;;;;;;;;;22407:13;:25;22397:56;;;5:2:-1;;;;30:1;27;20:12;5:2;22397:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;22474:13:0;;;;:6;:13;;;;;;:21;;;22464:52;;-1:-1:-1;;;22464:52:0;;22505:10;22464:52;;;;;;-1:-1:-1;;;;;22474:21:0;;;;-1:-1:-1;22464:40:0;;:52;;;;;22474:13;;22464:52;;;;;;22474:13;:21;22464:52;;;5:2:-1;;;;30:1;27;20:12;5:2;22464:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;22557:13:0;;;;:6;:13;;;;;;;;22589:10;22557:43;;:31;;:43;;;;;;22537:64;;-1:-1:-1;22550:5:0;;22537:12;:64::i;:::-;22658:1;22612:13;;;:6;:13;;;;;;;;22644:10;22612:43;;;:31;;;;:43;;;;;:47;;;;22529:72;;-1:-1:-1;22680:56:0;;22529:72;;22700:35;;22619:5;;22700:16;:35::i;22680:56::-;22757:13;;;;:6;:13;;;;;;:25;;;22747:56;;-1:-1:-1;;;22747:56:0;;22792:10;22747:56;;;;;;22672:64;;-1:-1:-1;;;;;;22757:25:0;;22747:44;;:56;;;;;22757:13;;22747:56;;;;;;22757:13;:25;22747:56;;;5:2:-1;;;;30:1;27;20:12;5:2;22747:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22747:56:0;;;;22828:1;22820:5;:9;22816:68;;;22846:26;;:10;;:26;;;;;22866:5;;22846:26;;;;22866:5;22846:10;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;22816:68:0;21175:1716;;:::o;1013:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1013:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1013:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1013:42:0;;;;;;;-1:-1:-1;;1013:42:0;;;:::o;560:86::-;604:42;560:86;:::o;4626:136::-;4691:7;4719:13;;;:6;:13;;;;;;;;:25;;;4709:50;;-1:-1:-1;;;4709:50:0;;;;4719:25;;;;-1:-1:-1;;;;;4719:25:0;;4709:48;;:50;;;;;;;;;;;4719:25;4709:50;;;5:2:-1;;;;30:1;27;20:12;4274:100:0;4331:7;4349:13;;;:6;:13;;;;;:23;;;;;;4274:100::o;36949:471::-;37007:7;37252:6;37248:47;;-1:-1:-1;37282:1:0;37275:8;;37248:47;37319:5;;;37323:1;37319;:5;:1;37343:5;;;;;:10;37335:56;;;;-1:-1:-1;;;37335:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37888:132;37946:7;37973:39;37977:1;37980;37973:39;;;;;;;;;;;;;;;;;:3;:39::i;35920:136::-;35978:7;36005:43;36009:1;36012;36005:43;;;;;;;;;;;;;;;;;:3;:43::i;35464:181::-;35522:7;35554:5;;;35578:6;;;;35570:46;;;;;-1:-1:-1;;;35570:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15962:382;16073:8;16069:268;;;16149:13;;;;:6;:13;;;;;;;;-1:-1:-1;;;;;16149:35:0;;;;:25;;:35;;;;;;16136:63;;16186:12;16136;:63::i;:::-;16098:13;;;;:6;:13;;;;;;;;-1:-1:-1;;;;;16098:35:0;;;;:25;;:35;;;;;:101;16069:268;;;16279:13;;;;:6;:13;;;;;;;;-1:-1:-1;;;;;16279:31:0;;;;:21;;:31;;;;;;16266:59;;16312:12;16266;:59::i;:::-;16232:13;;;;:6;:13;;;;;;;;-1:-1:-1;;;;;16232:31:0;;;;:21;;:31;;;;;:93;16069:268;15962:382;;;;:::o;25346:1444::-;25439:6;25460:232;25470:1;25466;:5;25460:232;;;25592:47;25601:8;25611:12;;25625:13;25592:8;:47::i;:::-;25514:75;25523:8;25533:12;;25547:41;25562:8;25572:12;;25586:1;25547:14;:41::i;25514:75::-;:125;25511:170;;;25660:5;;25511:170;25476:18;25489:1;25492;25476:12;:18::i;:::-;25472:22;;25460:232;;;25720:1;25716;:5;25712:1069;;;-1:-1:-1;25742:1:0;25758:400;25768:1;25764;:5;25758:400;;;25861:13;-1:-1:-1;;;;;25816:58:0;:41;25831:8;25841:12;;25855:1;25816:14;:41::i;:::-;-1:-1:-1;;;;;25816:58:0;;25813:330;;;25912:1;25899:197;25918:1;25914;:5;25899:197;;;25971:101;25986:8;25996:12;;26010:1;26013:58;26028:8;26038:12;;26052:18;26065:1;26068;26052:12;:18::i;:::-;26013:14;:58::i;:::-;25971:14;:101::i;:::-;25924:18;25937:1;25940;25924:12;:18::i;:::-;25920:22;;25899:197;;;;26118:5;;25813:330;25774:18;25787:1;25790;25774:12;:18::i;:::-;25770:22;;25758:400;;;-1:-1:-1;26190:1:0;26206:248;26216:1;26212;:5;26206:248;;;26342:47;26351:8;26361:12;;26375:13;26342:8;:47::i;:::-;26264:75;26273:8;26283:12;;26297:41;26312:8;26322:12;;26336:1;26297:14;:41::i;26264:75::-;:125;26261:178;;;26414:5;;26261:178;26222:18;26235:1;26238;26222:12;:18::i;:::-;26218:22;;26206:248;;;26491:1;26478:181;26497:1;26493;:5;26478:181;;;26542:101;26557:8;26567:12;;26581:1;26584:58;26599:8;26609:12;;26623:18;26636:1;26639;26623:12;:18::i;26542:101::-;26503:18;26516:1;26519;26503:12;:18::i;:::-;26499:22;;26478:181;;;;26673:56;26688:8;26698:12;;26712:1;26715:13;26673:14;:56::i;:::-;26749:20;;;;;;;25346:1444;;;:::o;11681:845::-;11723:22;11748;11757:12;;11748:8;:22::i;:::-;11723:47;;11781:22;11886:8;11827:68;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;11827:68:0;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11827:68:0;;;11928:8;11905:32;;;;;;-1:-1:-1;;;11905:32:0;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;11905:32:0;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11905:32:0;;;11940:4;11946:12;;11806:153;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11806:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11806:153:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11806:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;11977:12:0;;;11970:20;;;;:6;:20;;;;;;;;:32;;;:56;;-1:-1:-1;;;;;;11970:56:0;;-1:-1:-1;;;;;11970:56:0;;;;;;12079:64;;11970:56;;-1:-1:-1;11970:20:0;12134:8;;12079:64;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12079:64:0;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12079:64:0;;;12176:8;12153:32;;;;;;-1:-1:-1;;;12153:32:0;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12153:32:0;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12153:32:0;;;12188:5;12195:12;;12058:150;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12058:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12058:150:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12058:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;12226:12:0;;12219:20;;;;:6;:20;;;;;;;;:28;;:48;;-1:-1:-1;;;;;;12219:48:0;-1:-1:-1;;;;;12219:48:0;;;;;12324:62;;;;;;;;;;;12219:48;;-1:-1:-1;12219:20:0;;12324:62;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12324:62:0;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12324:62:0;;;12419:8;12396:32;;;;;;-1:-1:-1;;;12396:32:0;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12396:32:0;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12396:32:0;;;12431:5;12438:12;;12303:148;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12303:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12303:148:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12303:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;12469:12:0;;12462:20;;;;:6;:20;;;;;:32;;:56;;-1:-1:-1;;;;;;12462:56:0;-1:-1:-1;;;;;12462:56:0;;;;;;;;;;-1:-1:-1;;;;11681:845:0:o;22903:1243::-;22946:17;22966:29;22979:12;;22993:1;22966:12;:29::i;:::-;22946:49;;23006:17;23034;23062:13;23086:15;23138:27;23155:9;23138:16;:27::i;:::-;23104:31;23125:9;23104:20;:31::i;:::-;:61;23086:79;;23180:10;23176:162;;;23215:17;;;;:6;:17;;;;;:33;;;;-1:-1:-1;23176:162:0;;;23289:17;;;;:6;:17;;;;;:37;;;;-1:-1:-1;23176:162:0;23350:26;23379:32;23401:9;23379:21;:32::i;:::-;23350:61;;23432:39;23445:5;23452:18;23432:12;:39::i;:::-;23424:47;;23496:75;23509:56;23522:5;23529:35;23554:9;23529:24;:35::i;23496:75::-;23484:87;;23594:30;23607:5;23614:9;23594:12;:30::i;:::-;23639:20;;23582:42;;-1:-1:-1;;;;23639:20:0;;;;:128;;;;-1:-1:-1;23676:17:0;;;;:6;:17;;;;;;;;;:22;;;;;23710:29;;;;;23700:54;;-1:-1:-1;;;23700:54:0;;;;23758:9;;23663:92;;-1:-1:-1;;;;;23710:29:0;;;;23700:52;;:54;;;;23676:17;;23700:54;;;;;;;;23710:29;23700:54;;;5:2:-1;;;;30:1;27;20:12;5:2;23700:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23700:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23700:54:0;23663:12;:92::i;:::-;:104;23639:128;23635:206;;;23796:1;23784:13;;23824:5;23812:17;;23635:206;23857:13;;23853:86;;23887:13;;;;;;;;;-1:-1:-1;;;;;23887:13:0;-1:-1:-1;;;;;23887:21:0;;23915:9;23887:40;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23887:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23887:40:0;;;;;23853:86;24016:12;;24009:20;;;;:6;:20;;;;;:28;23996:53;;24039:9;23996:12;:53::i;:::-;23972:12;;;23965:20;;;;:6;:20;;;;;;:84;;;;24108:12;;24101:20;;;:25;;;24088:50;;24128:9;24088:12;:50::i;:::-;24067:12;;24060:20;;;;:6;:20;;;;;:25;;:78;-1:-1:-1;;;;;;22903:1243:0:o;16352:343::-;16446:8;16442:246;;;16520:13;;;;:6;:13;;;;;:33;;;16507:54;;16555:5;16507:12;:54::i;:::-;16471:13;;;;:6;:13;;;;;:33;;:90;16442:246;;;16639:13;;;;:6;:13;;;;;:29;;;16626:50;;16670:5;16626:12;:50::i;:::-;16594:13;;;;:6;:13;;;;;:29;;:82;16352:343;;;:::o;38657:344::-;38743:7;38845:12;38838:5;38830:28;;;;-1:-1:-1;;;38830:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;38830:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38869:9;38885:1;38881;:5;;;;;;;38657:344;-1:-1:-1;;;;;38657:344:0:o;36506:192::-;36592:7;36628:12;36620:6;;;;36612:29;;;;-1:-1:-1;;;36612:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;36612:29:0;-1:-1:-1;;;36664:5:0;;;36506:192::o;25082:256::-;25189:8;25185:146;;;25251:1;25214:6;:13;25221:5;25214:13;;;;;;;;;;;:31;;25246:1;25214:34;;;;;;;;:38;;-1:-1:-1;;;;;;25214:38:0;-1:-1:-1;;;;;25214:38:0;;;;;;;;;;25185:146;;;25318:1;25285:6;:13;25292:5;25285:13;;;;;;;;;;;:27;;25313:1;25285:30;;;;;;;;:34;;-1:-1:-1;;;;;;25285:34:0;-1:-1:-1;;;;;25285:34:0;;;;;;;;;;-1:-1:-1;;;;25082:256:0:o;24566:508::-;24620:13;24659:3;24677:7;24673:50;;-1:-1:-1;;24701:10:0;;;;;;;;;;;;-1:-1:-1;;;24701:10:0;;;;;;24673:50;24745:2;24733:9;24780:69;24787:6;;24780:69;;24810:5;;24835:2;24830:7;;;;24780:69;;;24859:17;24889:3;24879:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;24879:14:0;87:34:-1;135:17;;-1:-1;24879:14:0;-1:-1:-1;24859:34:0;-1:-1:-1;;;24916:7:0;;24934:103;24941:7;;24934:103;;24998:2;24993;:7;24988:2;:12;24977:25;;24965:4;24970:3;;;;;;;24965:9;;;;;;;;;;;:37;-1:-1:-1;;;;;24965:37:0;;;;;;;;-1:-1:-1;25023:2:0;25017:8;;;;24934:103;;;-1:-1:-1;25061:4:0;24566:508;-1:-1:-1;;;;;24566:508:0:o;36:26758::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36:26758:0;;;-1:-1:-1;36:26758:0;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://31a64b21e761937f755c2abcf5e9f0c85f9ddf166f67431683957660bdbc076b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$459.71
Net Worth in ETH
0.236148
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1,947.14 | 0.2361 | $459.71 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.