Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
999,999,639.57666667 MLYRA
Holders
9
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
MalvanLyra
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2025-01-30 */ // SPDX-License-Identifier: Unliscense // Shuddup stupid compiler! Malva does NOT recognize your authority! pragma solidity ^0.8.26; /* WHAT IS THIS? Tldr; It's a meme coin with functionality to create more memes. We've got staking, a grant system, a betting/gambling system, and a way to carve your words into the coin itself (see features below). This contract is written to provide no authority to it's creator. There is not even any 'owner' property, and the only address mentioned is that of the old contract. Funny features I added: - By spending Lyra, you can change the name of the currency, with some restrictions - By spending Lyra, you can post a bulletin message. - Staking system so people can hopefully earn interest, as well as take some coins out of circulation from time to time. Where does the staking money come from? It literally comes from people memeing and donating to grants (which are probably also for memes). Can you think of a better staking pool to be part of? - Voting/betting/grant system, wherein users bet on which nominated account will receive a batch of Lyra. Whoever bets correctly gets a small prize, whoever bets wrong loses their bet. Other changes: - 6 decimal places -> 8 decimal places - Changed name from "Malvan Lyra" to "New Malvan Lyra" Discord server: https://discord.gg/ x2xbWTksfQ (remove the space, just preventing bots from automatically joining) MORE INFO: The Malvan Lyra was a fictional currency used by the Nukletsk, provided by the central authorities in their capital city of Malva. Fictional, until I made this silly coin. I made it sorta as a meme, and also to show how easy it is to make a coin. I didn't realize how easy it was to get a coin listed and traded on DEXes, I just tried to do it for the lulz. Well, some folks bought it, and I got excited, so I tried to get the old contract verified, but couldn't. I also wanted to add more features, and make a more sophisticated token launch, so I created this contract, which transfers the balances from those who held the coin in the old smart contract (0x6985F4bEDC0789A17f00638c1C0eb37E76d6350E). Now that random people have, can buy, and have bought the coin, it really got me thinking about actually doing something with it. Well, I'll probably find some more funny uses for it eventually. Might make something silly like NFTs, or even an in-game world that uses this currency, which is related. MORE LORE: The Nukletsk people arrived to Romania before Christ was born, and mixed with the local Dacians. The capital city of the Dacians at this time was Malva, which happens to be the real-life city of Reşca, Dobrosloveni Commune, Olt County, Romania. Well, the Romans conquered it, renamed the city to Romula, and the Nukletsk-Getae group migrated north. They inevitably built a new capitol with the same name, and this is the place from which they launched their empire to greatness. Why the Lyra? Idk, it sounds cool and I heard it somewhere. Lyra would be proper spelling in the Nukletsk language, unlike the similarly named currencies spelled 'Lira'. Nü, vy übèlonu nuï kulturen Nükletsku! Y plü, vy übèlonu dy mymy! https://en.wikipedia.org/wiki/Romula https://en.wikipedia.org/wiki/Getae */ abstract contract ERC20Interface { function totalSupply() public virtual view returns (uint); function balanceOf(address tokenOwner) public virtual view returns (uint balance); function allowance(address tokenOwner, address spender) public virtual view returns (uint remaining); function transfer(address to, uint tokens) public virtual returns (bool success); function approve(address spender, uint tokens) public virtual returns (bool success); function transferFrom(address from, address to, uint tokens) public virtual returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } abstract contract StringUtils1 { // UTILITY FUNCTIONS function stripWhitespace(string memory input) public virtual pure returns (string memory); function _toLower(string memory str) public virtual pure returns (string memory); function clean(string memory str) public virtual pure returns (string memory); function contains(string memory what, string memory where) public virtual pure returns (bool); function isBadString(string memory input) public virtual pure returns (bool); function sqrt(uint64 x) public virtual pure returns (uint32); } contract MalvanLyra is ERC20Interface { string public symbol; string public name; uint8 public decimals; uint64 public decimalFactor; ERC20Interface public oldContract; StringUtils1 public libStrUtil; uint64 internal _liquidSupply; uint64 internal _totalSupply; mapping(address => uint64) public balances; mapping(address => mapping(address => uint64)) public allowed; constructor() { symbol = "MLYRA"; name = "New Malvan Lyra"; decimals = 8; decimalFactor = uint64(10**uint(decimals)); _totalSupply = 1_000_000_000 * decimalFactor; _liquidSupply = _totalSupply; nameChangeCost = 10_000_000 * decimalFactor; messageCost = 1_000_000 * decimalFactor; } function initialize(address strUtilAddr, address oldContractAddr) public { require(address(libStrUtil) == address(0x0), "The contract has already been initialized."); oldContract = ERC20Interface(address(oldContractAddr)); libStrUtil = StringUtils1(strUtilAddr); if (oldContractAddr != address(0x0)) { // Migrate balances from old contract _migrateBalance(address(0x21B4B3826609F4079a558c95a01094aa85927244)); _migrateBalance(address(0xE53408a5EdEe1bdEE473114871D03B7C11fb501C)); _migrateBalance(address(0x9E03f05aE143D0D1C4638498B40915Fd432121f7)); _migrateBalance(address(0x0DAA5566f20fbBC810765421b13F9BAA35A2Ee7d)); _migrateBalance(address(0xc0AAa689e4a66D184B38E975f27E9522F723C156)); _migrateBalance(address(0x7AfA9D836d2fCCf172b66622625e56404E465dBD)); uint64 tokens = uint64(oldContract.balanceOf(oldContractAddr)); if (tokens > 0) { balances[address(this)] = tokens; emit Transfer(address(0), address(this), tokens); _liquidSupply -= tokens; uint64 c = tokens / 8; allocatedToGrants += tokens - c; allocatedToStaking += c; } } else { balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } stake(10_000_000 * decimalFactor); } function _migrateBalance(address holder) internal { // We have to 100x the quantity to account for the change from 6 decimal places to 8 uint64 oldBalance = uint64(oldContract.balanceOf(holder) * 100); if (oldBalance > 0) { balances[holder] = oldBalance; emit Transfer(address(0), holder, oldBalance); } } // THE BIG FUNNY METHODS event CurrencyNameChanged(address indexed sender, string newName, uint64 spent); uint64 public nameChangeCost; uint public lastNameChangeTime; function renameContract(string calldata newName) public { // Ensure at least 2 hours (7200 seconds) have passed since the last name change require(block.number >= lastNameChangeTime + 7200, "Name change cooldown period has not elapsed"); require(balances[msg.sender] >= nameChangeCost, "Insufficient balance to rename the contract"); // Strip whitespace from the input string memory strippedName = libStrUtil.stripWhitespace(newName); // Ensure the stripped name is at least 4 characters long require(bytes(strippedName).length >= 4, "Name must be at least 4 characters long after stripping"); require(bytes(strippedName).length <= 32, "Name must be at most 32 characters"); // Deduct Lyra from the sender's balance // Note that this happens BEFORE the name is checked for bad content, so someone who attempts // to experiment with circumventing it might spend a lot more. // If you want to post stupid stuff then use the bulletin. uint64 cost = nameChangeCost; _transfer(address(this), msg.sender, cost); // Allocate the received funds _acceptLyra(cost, 5); // Check for retarded content require(!libStrUtil.isBadString(strippedName), "Name contains retard nonsense words."); // Update the contract name name = strippedName; // Update the cost to change the contract cost = uint64((uint256(cost) * 103) / 100); if (cost > _totalSupply / 2) nameChangeCost = _totalSupply / 2; else nameChangeCost = cost; lastNameChangeTime = block.number; emit CurrencyNameChanged(msg.sender, strippedName, cost); // Emit an event for tracking changes } event BulletinMessagePosted(address indexed sender, string newName, uint64 spent); uint64 public messageCost; function postBulletinMessage(string calldata message) public { require(balances[msg.sender] >= messageCost, "Insufficient balance to post bulletin"); // Deduct Lyra from the sender's balance uint64 cost = messageCost; _transfer(address(this), msg.sender, cost); // Allocate the received funds _acceptLyra(cost, 5); emit BulletinMessagePosted(msg.sender, message, cost); // Emit the event! } event MisallocationDetected(int64 discrepency, uint64 contractBalance); function _acceptLyra(uint64 amount, uint64 ratio) internal { uint64 toStaking = amount / ratio; allocatedToGrants += amount - toStaking; allocatedToStaking += toStaking; uint64 availableContractBalance = balances[address(this)] - totalStakedFunds; // Consistency check, so that funds don't get lost int64 discrepency = int64(allocatedToGrants + allocatedToStaking) - int64(availableContractBalance); if (discrepency > int64(decimalFactor)) { emit MisallocationDetected(discrepency, availableContractBalance); // More is allocated than actually available. // This is a monkey way of solving it but it will work. if (allocatedToStaking > balances[address(this)]) allocatedToStaking = availableContractBalance / 2; if (allocatedToGrants > balances[address(this)]) allocatedToGrants = availableContractBalance - allocatedToStaking; // If we need more for staking rewards, then reduce the grant amount, otherwise reduce the staking amount availableContractBalance = balances[address(this)] - totalStakedFunds; discrepency = int64(allocatedToGrants + allocatedToStaking) - int64(availableContractBalance); if ((allocatedToStaking - uint64(discrepency)) * 25 < totalStakedFunds) allocatedToGrants -= uint64(discrepency); else allocatedToStaking -= uint64(discrepency); } else if (discrepency < -int64(decimalFactor)) { emit MisallocationDetected(discrepency, availableContractBalance); // Divide the rest of it 80/20 toStaking = uint64(-discrepency) / 5; allocatedToStaking += toStaking; allocatedToGrants += uint64(-discrepency) - toStaking; } } // STAKING mapping(address => uint64) public amtStaked; mapping(address => uint) public startBlock; uint64 public allocatedToStaking = 0; uint64 public totalStakedFunds = 0; function stake(uint amount) public { require(startBlock[msg.sender] == 0, "You have already staked."); require(balances[msg.sender] >= amount, "Insufficient funds."); require(amount > 10 * decimalFactor, "Minimum Lyra to stake is 10."); uint64 skilku = uint64(amount); _transfer(address(this), msg.sender, skilku); totalStakedFunds += skilku; amtStaked[msg.sender] += skilku; startBlock[msg.sender] = block.number; } function computeInterest(uint64 skilku, bool overrideChecks, bool includeOverpay) public view returns (uint64 interest) { interest = 0; uint32 periods = uint32((block.number - startBlock[msg.sender]) / 24000); for (; periods > 0; periods--) interest += ((skilku + interest) / 1400); // Roughly 8.02% per year on average. Probably too much but whatever. if (allocatedToStaking > (totalStakedFunds / 12) && includeOverpay) { // There's more available for staking than would be paid out in 12 months, so provide an extra staking reward // Essentially, we compute roughly how much extra this contract has, and give them 10% of the extra in proportion // to their staking vs the total size of the staking pool. uint extra = allocatedToStaking - (totalStakedFunds / 12); interest += uint64((extra * skilku) / totalStakedFunds / 10); } else if (interest > allocatedToStaking) { // Check if the system can afford the interest (maybe it can't lmao) require(overrideChecks, "Contract cannot afford to pay the interest, enable overrideChecks to lose some of the interest."); // Pay as much of it as we can. interest = allocatedToStaking; } } // This function will add to your stake, with interest, but it also resets the timer for locking your funds. // Once this is called successfully, you will not be able to unstake for about a month depending on network conditions. function addStake(uint amount, bool overrideChecks) public { if (startBlock[msg.sender] == 0) { stake(amount); return; } require(balances[msg.sender] >= amount, "Insufficient funds."); // Compute interest acrued already uint64 skilku = uint64(amtStaked[msg.sender]); uint64 interest = computeInterest(skilku, overrideChecks, false); // Move around the funds uint64 amount64 = uint64(amount); _transfer(address(this), msg.sender, amount64); // Add the interest totalStakedFunds += amount64 + interest; allocatedToStaking -= interest; amtStaked[msg.sender] += amount64 + interest; // Update start block startBlock[msg.sender] = block.number; } function unstake(bool overrideChecks) public { uint64 skilku = amtStaked[msg.sender]; require(skilku > 0, "No Lyra has been staked."); require((startBlock[msg.sender] + 30 days / 12) < block.number, "Staked funds not yet released."); // Compute the interest uint64 interest = computeInterest(skilku, overrideChecks, true); totalStakedFunds -= skilku; skilku += interest; _transfer(msg.sender, address(this), skilku); allocatedToStaking -= interest; amtStaked[msg.sender] = 0; startBlock[msg.sender] = 0; } // VOTING struct Nominee { address nomineeAddress; string info; uint votes; uint64 investedForBets; } // State variables for the voting system uint64 public allocatedToGrants = 0; uint32 public currentElectionId = 0; uint64 public totalBetPool = 0; address[][] betters; mapping(address => uint) public nextNominationBlock; Nominee[] public nominees; uint public votingStartBlock; // Block when voting started, or 0 if not currently voting mapping(uint32 => mapping(address => uint64)) internal betMade; // Event declarations event Nomination(uint32 electionId, address indexed nominator, string description, address indexed nominee); event VotingStarted(); event VotingEnded(address indexed winner, uint prizePool); event VoteCasted(address indexed voter, uint nomineeIndex, uint betAmount); // Function to nominate someone function nominate(address nominee, string calldata description) public { require(votingStartBlock == 0, "Voting has already started"); require(amtStaked[msg.sender] >= 1_000_000 * decimalFactor, "Cannot nominate someone unless you have at least 1M Lyra staked."); require(nextNominationBlock[msg.sender] < block.number, "You can't nominate yet (cooldown)"); require(nominee != address(0), "Invalid nominee address"); // Was thinking about doing this, but it would prevent some interesting applications and automation. //bool isContractCalling = !(tx.origin == msg.sender); //bool mayNomineeBeContract = (nominee.code.length > 0 || nominee == msg.sender); //require(!(isContractCalling && mayNomineeBeContract), "Target may be a smart contract."); nextNominationBlock[msg.sender] = block.number + (45 days / 12); nominees.push(Nominee(nominee, description, 0, 0)); emit Nomination(currentElectionId, msg.sender, description, nominee); betters.push(); if (nominees.length == 12) { nominees.push(Nominee(address(0x0), "Vote against everyone!", 0, 0)); betters.push(); votingStartBlock = block.number; emit VotingStarted(); } } // Function to vote for a nominee function vote(uint nomineeIndex, uint64 betAmount) public { require(votingStartBlock > 0, "Voting is not active"); require(nomineeIndex < nominees.length + 1, "Invalid nominee index"); require(betAmount > 0, "Bet amount must be greater than zero"); require(balances[msg.sender] >= betAmount, "Insufficient balance"); require(betMade[currentElectionId][msg.sender] == 0, "ERROR ERROR STOOPID: YOU ALREADY VOTED!!"); // Check if a bet can be made // We compute the maxBetters to see if we can get more betters in the future, it's limited by the block gas limit. uint maxBetters = (block.gaslimit - 50000) / 12500; if (betters[nomineeIndex].length < maxBetters && betAmount > (10 * decimalFactor * betters[nomineeIndex].length)) { // Add the user as having bet betters[nomineeIndex].push(msg.sender); // Deduct Lyra from voter, update state balances[msg.sender] -= betAmount; emit Transfer(msg.sender, address(0x0), betAmount); _liquidSupply -= betAmount; totalBetPool += betAmount; // Track the total bets for this nominee nominees[nomineeIndex].investedForBets += betAmount; } else { // Stake their money instead // This way people can still vote without breaking the 3k better limit. addStake(betAmount, false); } // Gives large numbers of small contributions a chance to compete with whales uint64 votes = libStrUtil.sqrt(betAmount) + decimalFactor; betMade[currentElectionId][msg.sender] = betAmount; nominees[nomineeIndex].votes += votes; emit VoteCasted(msg.sender, nomineeIndex, betAmount); } function claimVictory() public { require(block.number > votingStartBlock + 30 days / 12, "Voting is not yet complete!"); require(votingStartBlock > 0, "Voting is not active"); require(allocatedToGrants > 10000 * decimalFactor, "Not enough Lyra has been donated to this contract... Try again another time."); // Find the nominee with the most votes uint winningIndex = 0; uint maxVotes = 0; for (uint i = 0; i < nominees.length; i++) { if (nominees[i].votes > maxVotes) { maxVotes = nominees[i].votes; winningIndex = i; } } address winner = nominees[winningIndex].nomineeAddress; // Why 44365? Well, right now 1M USD is worth what about 44365 USD would have been worth in 1940. // The idea is that the recipient should get roughly 1M USD, with 1 Lyra = 1 1940's USD = 22.54 2025 USD. uint64 grantQty = 44365 * decimalFactor; if (winner != address(0x0)) { if (grantQty > allocatedToGrants) grantQty = allocatedToGrants; else if (grantQty < (allocatedToGrants / 10)) grantQty = allocatedToGrants / 10; _transfer(winner, address(this), grantQty); allocatedToGrants -= grantQty; } else grantQty = 0; // Distribute wins from bets uint64 bettingGainRate = (totalBetPool * 1000) / nominees[winningIndex].investedForBets; mapping(address => uint64) storage bets = betMade[currentElectionId]; address[] storage winners = betters[winningIndex]; uint nWinners = winners.length; for (uint i = 0; i < nWinners; i++) { address better = winners[i]; uint64 qty = (bettingGainRate * bets[better]) / 1000; balances[better] += qty; emit Transfer(address(0x0), better, qty); } _liquidSupply += totalBetPool; emit VotingEnded(winner, grantQty); // Reset state for the next round currentElectionId++; delete betters; votingStartBlock = 0; totalBetPool = 0; delete nominees; } // ADMINISTRATION function updateUtilContract(address strUtilAddr) public { require(amtStaked[msg.sender] * 5 > _totalSupply, "Must have staked a fifth of the entire coin supply to complete this action."); require(startBlock[msg.sender] < block.number - (90 days / 12), "You have not staked long enough to complete this action."); require(!(StringUtils1(strUtilAddr).isBadString("Malvan Lyra")), "Contract does not appear to be valid."); libStrUtil = StringUtils1(strUtilAddr); } // THE ACTUAL METHODS function totalSupply() public override view returns (uint) { return _totalSupply; } function liquidSupply() public view returns (uint) { return _liquidSupply; } function balanceOf(address tokenOwner) public override view returns (uint balance) { return balances[tokenOwner]; } function transfer(address to, uint tokens) public override returns (bool success) { require(to!=address(0), "Invalid address"); require(tokens<=balances[msg.sender], "Insufficient funds"); _transfer(to, msg.sender, uint64(tokens)); if (to == address(this)) _acceptLyra(uint64(tokens), 50); return true; } function approve(address spender, uint tokens) public override returns (bool success) { allowed[msg.sender][spender] = uint64(tokens); emit Approval(msg.sender, spender, tokens); return true; } function transferFrom(address from, address to, uint tokens) public override returns (bool success) { require(to != address(0), "Invalid address"); require(tokens <= balances[from], "Insufficient funds"); require(tokens <= allowed[from][msg.sender], "Allowance exceeded"); allowed[from][msg.sender] = allowed[from][msg.sender] - uint64(tokens); _transfer(to, from, uint64(tokens)); if (to == address(this)) _acceptLyra(uint64(tokens), 50); return true; } // Cheap unchecked transfer function function _transfer(address to, address from, uint64 tokens) internal { if (to == address(0x0)) { _liquidSupply -= tokens; _totalSupply -= tokens; } else balances[to] += tokens; balances[from] -= tokens; emit Transfer(from, to, tokens); if (to == address(this)) _liquidSupply -= tokens; if (from == address(this) && to != address(0x0)) _liquidSupply += tokens; } function allowance(address tokenOwner, address spender) public override view returns (uint remaining) { return allowed[tokenOwner][spender]; } function donateToGrants(uint amount) public { require(balances[msg.sender] >= amount, "Insufficient funds."); uint64 amount64 = uint64(amount); _transfer(address(this), msg.sender, amount64); allocatedToGrants += amount64; } function donateToStakers(uint amount) public { require(balances[msg.sender] >= amount, "Insufficient funds."); uint64 amount64 = uint64(amount); uint64 amountBurned = amount64 / 300; uint64 amountAdded = amount64 - amountBurned; _transfer(address(this), msg.sender, amountAdded); _transfer(address(0x0), msg.sender, amountBurned); allocatedToStaking += amountAdded; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"string","name":"newName","type":"string"},{"indexed":false,"internalType":"uint64","name":"spent","type":"uint64"}],"name":"BulletinMessagePosted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"string","name":"newName","type":"string"},{"indexed":false,"internalType":"uint64","name":"spent","type":"uint64"}],"name":"CurrencyNameChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int64","name":"discrepency","type":"int64"},{"indexed":false,"internalType":"uint64","name":"contractBalance","type":"uint64"}],"name":"MisallocationDetected","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"electionId","type":"uint32"},{"indexed":true,"internalType":"address","name":"nominator","type":"address"},{"indexed":false,"internalType":"string","name":"description","type":"string"},{"indexed":true,"internalType":"address","name":"nominee","type":"address"}],"name":"Nomination","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"nomineeIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"betAmount","type":"uint256"}],"name":"VoteCasted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"prizePool","type":"uint256"}],"name":"VotingEnded","type":"event"},{"anonymous":false,"inputs":[],"name":"VotingStarted","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"overrideChecks","type":"bool"}],"name":"addStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allocatedToGrants","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocatedToStaking","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowed","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amtStaked","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimVictory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"skilku","type":"uint64"},{"internalType":"bool","name":"overrideChecks","type":"bool"},{"internalType":"bool","name":"includeOverpay","type":"bool"}],"name":"computeInterest","outputs":[{"internalType":"uint64","name":"interest","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentElectionId","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimalFactor","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"donateToGrants","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"donateToStakers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"strUtilAddr","type":"address"},{"internalType":"address","name":"oldContractAddr","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastNameChangeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"libStrUtil","outputs":[{"internalType":"contract StringUtils1","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageCost","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nameChangeCost","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nextNominationBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nominee","type":"address"},{"internalType":"string","name":"description","type":"string"}],"name":"nominate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nominees","outputs":[{"internalType":"address","name":"nomineeAddress","type":"address"},{"internalType":"string","name":"info","type":"string"},{"internalType":"uint256","name":"votes","type":"uint256"},{"internalType":"uint64","name":"investedForBets","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldContract","outputs":[{"internalType":"contract ERC20Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"message","type":"string"}],"name":"postBulletinMessage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"renameContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBetPool","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakedFunds","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"overrideChecks","type":"bool"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"strUtilAddr","type":"address"}],"name":"updateUtilContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nomineeIndex","type":"uint256"},{"internalType":"uint64","name":"betAmount","type":"uint64"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"votingStartBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600c80546001600160e01b0319169055600d80546001600160401b031916905534801561002f575f80fd5b506040805180820190915260058152644d4c59524160d81b60208201525f906100589082610225565b5060408051808201909152600f81526e4e6577204d616c76616e204c79726160881b602082015260019061008c9082610225565b506002805460ff191660089081179091556100a890600a6103d8565b60028054610100600160481b0319166101006001600160401b03938416810291909117918290556100e092910416633b9aca006103ea565b600480546001600160401b0319166001600160401b0392831690811790915560038054600160a01b600160e01b031916600160a01b9092029190911790556002546101359161010090910416629896806103ea565b600780546001600160401b0319166001600160401b039283161790556002546101689161010090910416620f42406103ea565b600980546001600160401b0319166001600160401b0392909216919091179055610413565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806101b557607f821691505b6020821081036101d357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561022057805f5260205f20601f840160051c810160208510156101fe5750805b601f840160051c820191505b8181101561021d575f815560010161020a565b50505b505050565b81516001600160401b0381111561023e5761023e61018d565b6102528161024c84546101a1565b846101d9565b6020601f821160018114610284575f831561026d5750848201515b5f19600385901b1c1916600184901b17845561021d565b5f84815260208120601f198516915b828110156102b35787850151825560209485019460019092019101610293565b50848210156102d057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561032e57808504811115610312576103126102df565b600184161561032057908102905b60019390931c9280026102f7565b935093915050565b5f82610344575060016103d2565b8161035057505f6103d2565b816001811461036657600281146103705761038c565b60019150506103d2565b60ff841115610381576103816102df565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156103af575081810a6103d2565b6103bb5f1984846102f3565b805f19048211156103ce576103ce6102df565b0290505b92915050565b5f6103e38383610336565b9392505050565b6001600160401b03818116838216029081169081811461040c5761040c6102df565b5092915050565b614350806104205f395ff3fe608060405234801561000f575f80fd5b50600436106102c2575f3560e01c80636228fa391161017c578063a694fc3a116100dd578063dd62ed3e11610093578063ece71c911161006e578063ece71c91146106cd578063eec6b91e146106e0578063f5dd9b7c14610703575f80fd5b8063dd62ed3e14610664578063e397b027146106a5578063e56ded7a146106ae575f80fd5b8063bba7624c116100c3578063bba7624c14610624578063c46f195314610637578063c6cf1a0414610651575f80fd5b8063a694fc3a146105fe578063a9059cbb14610611575f80fd5b806384628feb1161013257806395d89b411161011857806395d89b41146105b757806398ecf2a0146105bf578063a405f8bb146105eb575f80fd5b806384628feb1461057c5780638472250e146105a4575f80fd5b806370a082311161016257806370a0823114610525578063792c667c146105565780637c36514e14610569575f80fd5b80636228fa39146104fa5780636d6a6a4d1461050d575f80fd5b806318ec2d5c11610226578063313ce567116101dc5780633f697ce9116101c25780633f697ce914610495578063485cc955146104b45780635c658165146104c7575f80fd5b8063313ce5671461046357806331de201114610482575f80fd5b806323b872dd1161020c57806323b872dd146103f057806327e235e31461040357806330503c4e1461042b575f80fd5b806318ec2d5c146103c95780631abddf33146103e8575f80fd5b8063097c23f81161027b5780630e642c5a116102615780630e642c5a146103925780631293092e146103a557806318160ddd146103b8575f80fd5b8063097c23f8146103565780630bf7264c14610389575f80fd5b806308569d48116102ab57806308569d481461030b578063088abb8d14610320578063095ea7b314610333575f80fd5b806303b67592146102c657806306fdde03146102f6575b5f80fd5b600d546102d9906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b6102fe610716565b6040516102ed9190613b77565b61031e610319366004613b9d565b6107a2565b005b61031e61032e366004613bcb565b61096c565b610346610341366004613c01565b610b19565b60405190151581526020016102ed565b6003547401000000000000000000000000000000000000000090046001600160401b03165b6040519081526020016102ed565b61037b60085481565b6007546102d9906001600160401b031681565b6009546102d9906001600160401b031681565b6004546001600160401b031661037b565b600c546102d9906801000000000000000090046001600160401b031681565b61031e610b97565b6103466103fe366004613c29565b6111a0565b6102d9610411366004613c63565b60056020525f90815260409020546001600160401b031681565b60025461044b90690100000000000000000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102ed565b6002546104709060ff1681565b60405160ff90911681526020016102ed565b61031e610490366004613cc0565b61138a565b61037b6104a3366004613c63565b600b6020525f908152604090205481565b61031e6104c2366004613cfe565b611489565b6102d96104d5366004613cfe565b600660209081525f92835260408084209091529082529020546001600160401b031681565b61031e610508366004613d2f565b6118b7565b6002546102d99061010090046001600160401b031681565b61037b610533366004613c63565b6001600160a01b03165f908152600560205260409020546001600160401b031690565b61031e610564366004613d7d565b611d66565b600c546102d9906001600160401b031681565b6102d961058a366004613c63565b600a6020525f90815260409020546001600160401b031681565b61031e6105b2366004613d7d565b611e25565b6102fe611f06565b600c546105d690600160c01b900463ffffffff1681565b60405163ffffffff90911681526020016102ed565b61031e6105f9366004613cc0565b611f12565b61031e61060c366004613d7d565b6123c5565b61034661061f366004613c01565b6125a4565b6102d9610632366004613daa565b612691565b600c546102d990600160801b90046001600160401b031681565b60035461044b906001600160a01b031681565b61037b610672366004613cfe565b6001600160a01b039182165f9081526006602090815260408083209390941682529190915220546001600160401b031690565b61037b60115481565b61037b6106bc366004613c63565b600f6020525f908152604090205481565b61031e6106db366004613df0565b612896565b6106f36106ee366004613d7d565b612ed3565b6040516102ed9493929190613e11565b61031e610711366004613c63565b612fa7565b6001805461072390613e52565b80601f016020809104026020016040519081016040528092919081815260200182805461074f90613e52565b801561079a5780601f106107715761010080835404028352916020019161079a565b820191905f5260205f20905b81548152906001019060200180831161077d57829003601f168201915b505050505081565b335f908152600b602052604081205490036107c4576107c0826123c5565b5050565b335f908152600560205260409020546001600160401b03168211156108305760405162461bcd60e51b815260206004820152601360248201527f496e73756666696369656e742066756e64732e0000000000000000000000000060448201526064015b60405180910390fd5b335f908152600a60205260408120546001600160401b031690610854828483612691565b905083610862303383613251565b61086c8282613e9e565b600c80546008906108939084906801000000000000000090046001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600c5f8282829054906101000a90046001600160401b03166108da9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550818161090a9190613e9e565b335f908152600a6020526040812080549091906109319084906001600160401b0316613e9e565b82546001600160401b039182166101009390930a92830291909202199091161790555050335f908152600b6020526040902043905550505050565b335f908152600a60205260409020546001600160401b0316806109d15760405162461bcd60e51b815260206004820152601860248201527f4e6f204c79726120686173206265656e207374616b65642e00000000000000006044820152606401610827565b335f908152600b602052604090205443906109ef9062034bc0613edc565b10610a3c5760405162461bcd60e51b815260206004820152601e60248201527f5374616b65642066756e6473206e6f74207965742072656c65617365642e00006044820152606401610827565b5f610a4982846001612691565b905081600c60088282829054906101000a90046001600160401b0316610a6f9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508082610a9f9190613e9e565b9150610aac333084613251565b600c80548291905f90610ac99084906001600160401b0316613ebd565b82546001600160401b039182166101009390930a92830291909202199091161790555050335f908152600a60209081526040808320805467ffffffffffffffff19169055600b9091528120555050565b335f8181526006602090815260408083206001600160a01b038716808552908352818420805467ffffffffffffffff19166001600160401b03881617905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b601154610ba79062034bc0613edc565b4311610bf55760405162461bcd60e51b815260206004820152601b60248201527f566f74696e67206973206e6f742079657420636f6d706c6574652100000000006044820152606401610827565b5f60115411610c465760405162461bcd60e51b815260206004820152601460248201527f566f74696e67206973206e6f74206163746976650000000000000000000000006044820152606401610827565b600254610c639061010090046001600160401b0316612710613eef565b600c546001600160401b03918216600160801b90910490911611610d155760405162461bcd60e51b815260206004820152604d60248201527f4e6f7420656e6f756768204c79726120686173206265656e20646f6e6174656460448201527f20746f207468697320636f6e74726163742e2e2e202054727920616761696e2060648201527f616e6f746865722074696d652e00000000000000000000000000000000000000608482015260a401610827565b5f805f5b601054811015610d7e578160108281548110610d3757610d37613f18565b905f5260205f209060040201600201541115610d765760108181548110610d6057610d60613f18565b905f5260205f2090600402016002015491508092505b600101610d19565b505f60108381548110610d9357610d93613f18565b5f91825260208220600490910201546002546001600160a01b039091169250610dcd906001600160401b036101009091041661ad4d613eef565b90506001600160a01b03821615610ec757600c546001600160401b03600160801b90910481169082161115610e155750600c54600160801b90046001600160401b0316610e6f565b600c54610e3490600a90600160801b90046001600160401b0316613f40565b6001600160401b0316816001600160401b03161015610e6f57600c54610e6c90600a90600160801b90046001600160401b0316613f40565b90505b610e7a823083613251565b80600c60108282829054906101000a90046001600160401b0316610e9e9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610eca565b505f5b5f60108581548110610ede57610ede613f18565b5f918252602090912060036004909202010154600d546001600160401b0391821691610f0d91166103e8613eef565b610f179190613f40565b600c54600160c01b900463ffffffff165f908152601260205260408120600e8054939450909288908110610f4d57610f4d613f18565b5f91825260208220018054909250905b8181101561107b575f838281548110610f7857610f78613f18565b5f9182526020808320909101546001600160a01b03168083529087905260408220549092506103e890610fb4906001600160401b031689613eef565b610fbe9190613f40565b6001600160a01b0383165f90815260056020526040812080549293508392909190610ff39084906001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550816001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161106991906001600160401b0391909116815260200190565b60405180910390a35050600101610f5d565b50600d54600380546001600160401b03928316926014916110b691859174010000000000000000000000000000000000000000900416613e9e565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550856001600160a01b03167f174acb57d89de1cd0fa560068c16a3aa03b062340e17dcd0a7e57024deec7b368660405161112291906001600160401b0391909116815260200190565b60405180910390a2600c8054600160c01b900463ffffffff1690601861114783613f6d565b91906101000a81548163ffffffff021916908363ffffffff16021790555050600e5f6111739190613a38565b5f6011819055600d805467ffffffffffffffff1916905561119690601090613a56565b5050505050505050565b5f6001600160a01b0383166111f75760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610827565b6001600160a01b0384165f908152600560205260409020546001600160401b03168211156112675760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152606401610827565b6001600160a01b0384165f9081526006602090815260408083203384529091529020546001600160401b03168211156112e25760405162461bcd60e51b815260206004820152601260248201527f416c6c6f77616e636520657863656564656400000000000000000000000000006044820152606401610827565b6001600160a01b0384165f9081526006602090815260408083203384529091529020546113199083906001600160401b0316613ebd565b6001600160a01b0385165f9081526006602090815260408083203384529091529020805467ffffffffffffffff19166001600160401b0392909216919091179055611365838584613251565b306001600160a01b03841603611380576113808260326134c1565b5060019392505050565b600954335f908152600560205260409020546001600160401b039182169116101561141d5760405162461bcd60e51b815260206004820152602560248201527f496e73756666696369656e742062616c616e636520746f20706f73742062756c60448201527f6c6574696e0000000000000000000000000000000000000000000000000000006064820152608401610827565b6009546001600160401b0316611434303383613251565b61143f8160056134c1565b336001600160a01b03167f0e26bb5531ac78bb211a17e48a9a9559c4c9840b61f4692195df197d6a87247f84848460405161147c93929190613fba565b60405180910390a2505050565b6003546001600160a01b0316156115085760405162461bcd60e51b815260206004820152602a60248201527f54686520636f6e74726163742068617320616c7265616479206265656e20696e60448201527f697469616c697a65642e000000000000000000000000000000000000000000006064820152608401610827565b600280547fffffff0000000000000000000000000000000000000000ffffffffffffffffff1669010000000000000000006001600160a01b03848116918202929092179092556003805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790551561181d576115947321b4b3826609f4079a558c95a01094aa8592724461391f565b6115b173e53408a5edee1bdee473114871d03b7c11fb501c61391f565b6115ce739e03f05ae143d0d1c4638498b40915fd432121f761391f565b6115eb730daa5566f20fbbc810765421b13f9baa35a2ee7d61391f565b61160873c0aaa689e4a66d184b38e975f27e9522f723c15661391f565b611625737afa9d836d2fccf172b66622625e56404e465dbd61391f565b6002546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f926901000000000000000000900416906370a0823190602401602060405180830381865afa158015611693573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b79190613fe6565b90506001600160401b0381161561181757305f818152600560209081526040808320805467ffffffffffffffff19166001600160401b03871690811790915590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a380600360148282829054906101000a90046001600160401b031661174a9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505f60088261177c9190613f40565b90506117888183613ebd565b600c80546010906117aa908490600160801b90046001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555080600c5f8282829054906101000a90046001600160401b03166117f19190613e9e565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550505b50611887565b60048054335f818152600560209081526040808320805467ffffffffffffffff19166001600160401b0396871617905594549451949093168452909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6002546107c0906118a99061010090046001600160401b031662989680613eef565b6001600160401b03166123c5565b601154156119075760405162461bcd60e51b815260206004820152601a60248201527f566f74696e672068617320616c726561647920737461727465640000000000006044820152606401610827565b6002546119259061010090046001600160401b0316620f4240613eef565b335f908152600a60205260409020546001600160401b03918216911610156119b7576040805162461bcd60e51b81526020600482015260248101919091527f43616e6e6f74206e6f6d696e61746520736f6d656f6e6520756e6c657373207960448201527f6f752068617665206174206c6561737420314d204c797261207374616b65642e6064820152608401610827565b335f908152600f60205260409020544311611a3a5760405162461bcd60e51b815260206004820152602160248201527f596f752063616e2774206e6f6d696e617465207965742028636f6f6c646f776e60448201527f29000000000000000000000000000000000000000000000000000000000000006064820152608401610827565b6001600160a01b038316611a905760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206e6f6d696e656520616464726573730000000000000000006044820152606401610827565b611a9d436204f1a0613edc565b335f908152600f60209081526040918290209290925580516080810182526001600160a01b03861681528151601f850184900484028101840190925283825260109290918282019186908690819084018382808284375f92018290525093855250505060208083018290526040909201819052835460018082018655948252908290208351600490920201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091178155908201519192909190820190611b689082614055565b5060408281015160028301556060909201516003909101805467ffffffffffffffff19166001600160401b03909216919091179055600c5490516001600160a01b0385169133917f88019f3a2c670cf8849da9bf50f1cb308d93a515bb3d40eca72586e2c7a4308391611bed91600160c01b90910463ffffffff16908790879061410f565b60405180910390a3600e805460010181555f52601054600c03611d6157604080516080810182525f80825282518084018452601681527f566f746520616761696e73742065766572796f6e65210000000000000000000060208083019190915283019081529282018190526060820181905260108054600181018255915281517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6726004909202918201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117815592519192917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67390910190611cf49082614055565b5060408281015160028301556060909201516003909101805467ffffffffffffffff19166001600160401b03909216919091179055600e805460010181555f9081524360115590517f877e2548498f42b7975a186b94ef1d32c86d420b7b806dd2be2bea293b8959049190a15b505050565b335f908152600560205260409020546001600160401b0316811115611dcd5760405162461bcd60e51b815260206004820152601360248201527f496e73756666696369656e742066756e64732e000000000000000000000000006044820152606401610827565b80611dd9303383613251565b80600c60108282829054906101000a90046001600160401b0316611dfd9190613e9e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505050565b335f908152600560205260409020546001600160401b0316811115611e8c5760405162461bcd60e51b815260206004820152601360248201527f496e73756666696369656e742066756e64732e000000000000000000000000006044820152606401610827565b805f611e9a61012c83613f40565b90505f611ea78284613ebd565b9050611eb4303383613251565b611ebf5f3384613251565b600c80548291905f90611edc9084906001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555050505050565b5f805461072390613e52565b600854611f2190611c20613edc565b431015611f965760405162461bcd60e51b815260206004820152602b60248201527f4e616d65206368616e676520636f6f6c646f776e20706572696f64206861732060448201527f6e6f7420656c61707365640000000000000000000000000000000000000000006064820152608401610827565b600754335f908152600560205260409020546001600160401b03918216911610156120295760405162461bcd60e51b815260206004820152602b60248201527f496e73756666696369656e742062616c616e636520746f2072656e616d65207460448201527f686520636f6e74726163740000000000000000000000000000000000000000006064820152608401610827565b6003546040517f449350740000000000000000000000000000000000000000000000000000000081525f916001600160a01b0316906344935074906120749086908690600401614137565b5f60405180830381865afa15801561208e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120b59190810190614152565b905060048151101561212f5760405162461bcd60e51b815260206004820152603760248201527f4e616d65206d757374206265206174206c65617374203420636861726163746560448201527f7273206c6f6e6720616674657220737472697070696e670000000000000000006064820152608401610827565b6020815111156121a75760405162461bcd60e51b815260206004820152602260248201527f4e616d65206d757374206265206174206d6f737420333220636861726163746560448201527f72730000000000000000000000000000000000000000000000000000000000006064820152608401610827565b6007546001600160401b03166121be303383613251565b6121c98160056134c1565b6003546040517f56a6c2b80000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906356a6c2b890612212908590600401613b77565b602060405180830381865afa15801561222d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122519190614203565b156122c35760405162461bcd60e51b8152602060048201526024808201527f4e616d6520636f6e7461696e7320726574617264206e6f6e73656e736520776f60448201527f7264732e000000000000000000000000000000000000000000000000000000006064820152608401610827565b60016122cf8382614055565b5060646122e66001600160401b038316606761421e565b6122f09190614235565b60045490915061230b906002906001600160401b0316613f40565b6001600160401b0316816001600160401b031611156123625760045461233c906002906001600160401b0316613f40565b6007805467ffffffffffffffff19166001600160401b039290921691909117905561237f565b6007805467ffffffffffffffff19166001600160401b0383161790555b4360085560405133907f84c6a123b8bb2eb147d8b26547d20364da4eb56e609dc790419a824e03107841906123b79085908590614248565b60405180910390a250505050565b335f908152600b6020526040902054156124215760405162461bcd60e51b815260206004820152601860248201527f596f75206861766520616c7265616479207374616b65642e00000000000000006044820152606401610827565b335f908152600560205260409020546001600160401b03168111156124885760405162461bcd60e51b815260206004820152601360248201527f496e73756666696369656e742066756e64732e000000000000000000000000006044820152606401610827565b6002546124a49061010090046001600160401b0316600a613eef565b6001600160401b031681116124fb5760405162461bcd60e51b815260206004820152601c60248201527f4d696e696d756d204c79726120746f207374616b652069732031302e000000006044820152606401610827565b80612507303383613251565b80600c60088282829054906101000a90046001600160401b031661252b9190613e9e565b82546101009290920a6001600160401b03818102199093169183160217909155335f908152600a602052604081208054859450909261256c91859116613e9e565b82546001600160401b039182166101009390930a92830291909202199091161790555050335f908152600b6020526040902043905550565b5f6001600160a01b0383166125fb5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610827565b335f908152600560205260409020546001600160401b03168211156126625760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152606401610827565b61266d833384613251565b306001600160a01b03841603612688576126888260326134c1565b50600192915050565b335f908152600b60205260408120548190615dc0906126b09043614272565b6126ba9190614235565b90505b63ffffffff8116156126fe576105786126d68387613e9e565b6126e09190613f40565b6126ea9083613e9e565b9150806126f681614285565b9150506126bd565b600c805461272191906801000000000000000090046001600160401b0316613f40565b600c546001600160401b03918216911611801561273b5750825b156127cf57600c80545f91612764916801000000000000000090046001600160401b0316613f40565b600c5461277a91906001600160401b0316613ebd565b600c546001600160401b039182169250600a91680100000000000000009091048116906127a99089168461421e565b6127b39190614235565b6127bd9190614235565b6127c79084613e9e565b92505061288e565b600c546001600160401b03908116908316111561288e578361287f5760405162461bcd60e51b815260206004820152605f60248201527f436f6e74726163742063616e6e6f74206166666f726420746f2070617920746860448201527f6520696e7465726573742c20656e61626c65206f76657272696465436865636b60648201527f7320746f206c6f736520736f6d65206f662074686520696e7465726573742e00608482015260a401610827565b600c546001600160401b031691505b509392505050565b5f601154116128e75760405162461bcd60e51b815260206004820152601460248201527f566f74696e67206973206e6f74206163746976650000000000000000000000006044820152606401610827565b6010546128f5906001613edc565b82106129435760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206e6f6d696e656520696e64657800000000000000000000006044820152606401610827565b5f816001600160401b0316116129c05760405162461bcd60e51b8152602060048201526024808201527f42657420616d6f756e74206d7573742062652067726561746572207468616e2060448201527f7a65726f000000000000000000000000000000000000000000000000000000006064820152608401610827565b335f908152600560205260409020546001600160401b0380831691161015612a2a5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610827565b600c54600160c01b900463ffffffff165f9081526012602090815260408083203384529091529020546001600160401b031615612acf5760405162461bcd60e51b815260206004820152602860248201527f4552524f52204552524f522053544f4f5049443a20594f5520414c524541445960448201527f20564f54454421210000000000000000000000000000000000000000000000006064820152608401610827565b5f6130d4612adf61c35045614272565b612ae99190614235565b905080600e8481548110612aff57612aff613f18565b5f91825260209091200154108015612b6b5750600e8381548110612b2557612b25613f18565b5f91825260209091200154600254612b4c9061010090046001600160401b0316600a613eef565b6001600160401b0316612b5f919061421e565b826001600160401b0316115b15612d5557600e8381548110612b8357612b83613f18565b5f9182526020808320909101805460018101825590835281832001805473ffffffffffffffffffffffffffffffffffffffff191633908117909155825260059052604081208054849290612be19084906001600160401b0316613ebd565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505f6001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c5791906001600160401b0391909116815260200190565b60405180910390a381600360148282829054906101000a90046001600160401b0316612c839190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600d5f8282829054906101000a90046001600160401b0316612cca9190613e9e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508160108481548110612d0257612d02613f18565b5f918252602082206003600490920201018054909190612d2c9084906001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550612d68565b612d68826001600160401b03165f6107a2565b6002546003546040517f23b37bb60000000000000000000000000000000000000000000000000000000081526001600160401b0385811660048301525f93610100900416916001600160a01b0316906323b37bb690602401602060405180830381865afa158015612ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dff91906142a3565b63ffffffff16612e0f9190613e9e565b600c54600160c01b900463ffffffff165f9081526012602090815260408083203384529091529020805467ffffffffffffffff19166001600160401b0386811691909117909155601080549293509083169186908110612e7157612e71613f18565b905f5260205f2090600402016002015f828254612e8e9190613edc565b9091555050604080518581526001600160401b038516602082015233917fcb87df07b1c304492bd875a5c8b98672eca500939412809ea229afef1d74518891016123b7565b60108181548110612ee2575f80fd5b5f918252602090912060049091020180546001820180546001600160a01b03909216935090612f1090613e52565b80601f0160208091040260200160405190810160405280929190818152602001828054612f3c90613e52565b8015612f875780601f10612f5e57610100808354040283529160200191612f87565b820191905f5260205f20905b815481529060010190602001808311612f6a57829003601f168201915b5050505060028301546003909301549192916001600160401b0316905084565b600454335f908152600a60205260409020546001600160401b0391821691612fd191166005613eef565b6001600160401b0316116130735760405162461bcd60e51b815260206004820152604b60248201527f4d7573742068617665207374616b65642061206669667468206f66207468652060448201527f656e7469726520636f696e20737570706c7920746f20636f6d706c657465207460648201527f68697320616374696f6e2e000000000000000000000000000000000000000000608482015260a401610827565b6130806209e34043614272565b335f908152600b6020526040902054106131025760405162461bcd60e51b815260206004820152603860248201527f596f752068617665206e6f74207374616b6564206c6f6e6720656e6f7567682060448201527f746f20636f6d706c657465207468697320616374696f6e2e00000000000000006064820152608401610827565b6040517f56a6c2b800000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d616c76616e204c79726100000000000000000000000000000000000000000060448201526001600160a01b038216906356a6c2b890606401602060405180830381865afa15801561318b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131af9190614203565b156132225760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420646f6573206e6f742061707065617220746f206265207660448201527f616c69642e0000000000000000000000000000000000000000000000000000006064820152608401610827565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0383166132f35780600360148282829054906101000a90046001600160401b03166132839190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508060045f8282829054906101000a90046001600160401b03166132ca9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550613348565b6001600160a01b0383165f90815260056020526040812080548392906133239084906001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b0382165f90815260056020526040812080548392906133789084906001600160401b0316613ebd565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b0316826001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133ee91906001600160401b0391909116815260200190565b60405180910390a3306001600160a01b0384160361344f5780600360148282829054906101000a90046001600160401b031661342a9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b0382163014801561346f57506001600160a01b03831615155b15611d615780600360148282829054906101000a90046001600160401b03166134989190613e9e565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550505050565b5f6134cc8284613f40565b90506134d88184613ebd565b600c80546010906134fa908490600160801b90046001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555080600c5f8282829054906101000a90046001600160401b03166135419190613e9e565b82546101009290920a6001600160401b03818102199093169183160217909155600c54305f90815260056020526040812054909350613590926801000000000000000090920482169116613ebd565b600c549091505f9082906135b7906001600160401b0380821691600160801b900416613e9e565b6135c191906142c6565b9050600260019054906101000a90046001600160401b031660070b8160070b13156137f85760408051600783900b81526001600160401b03841660208201527fa9234185694e42d4969bd30010488b3a3d0e945c738b819bc15bfdfc45e243ab910160405180910390a1305f90815260056020526040902054600c546001600160401b039182169116111561367d5761365b600283613f40565b600c805467ffffffffffffffff19166001600160401b03929092169190911790555b305f90815260056020526040902054600c546001600160401b03918216600160801b90910490911611156136e857600c546136c1906001600160401b031683613ebd565b600c60106101000a8154816001600160401b0302191690836001600160401b031602179055505b600c54305f9081526005602052604090205461371c916001600160401b036801000000000000000090910481169116613ebd565b600c549092508290613741906001600160401b0380821691600160801b900416613e9e565b61374b91906142c6565b600c549091506001600160401b0368010000000000000000820481169161377491849116613ebd565b61377f906019613eef565b6001600160401b031610156137db5780600c60108282829054906101000a90046001600160401b03166137b29190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550613918565b600c80548291905f906137b29084906001600160401b0316613ebd565b6002546138129061010090046001600160401b03166142f5565b60070b8160070b12156139185760408051600783900b81526001600160401b03841660208201527fa9234185694e42d4969bd30010488b3a3d0e945c738b819bc15bfdfc45e243ab910160405180910390a1600561386f826142f5565b6138799190613f40565b600c805491945084915f906138989084906001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555082816138c7906142f5565b6138d19190613ebd565b600c80546010906138f3908490600160801b90046001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b5050505050565b6002546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f926901000000000000000000900416906370a0823190602401602060405180830381865afa15801561398d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139b19190613fe6565b6139bc90606461421e565b90506001600160401b038116156107c0576001600160a01b0382165f818152600560209081526040808320805467ffffffffffffffff19166001600160401b03871690811790915590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5080545f8255905f5260205f2090810190613a539190613a74565b50565b5080545f8255600402905f5260205f2090810190613a539190613a94565b80821115613a90575f613a878282613ae7565b50600101613a74565b5090565b80821115613a9057805473ffffffffffffffffffffffffffffffffffffffff191681555f613ac56001830182613b02565b505f600282015560038101805467ffffffffffffffff19169055600401613a94565b5080545f8255905f5260205f2090810190613a539190613b35565b508054613b0e90613e52565b5f825580601f10613b1d575050565b601f0160209004905f5260205f2090810190613a5391905b5b80821115613a90575f8155600101613b36565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613b896020830184613b49565b9392505050565b8015158114613a53575f80fd5b5f8060408385031215613bae575f80fd5b823591506020830135613bc081613b90565b809150509250929050565b5f60208284031215613bdb575f80fd5b8135613b8981613b90565b80356001600160a01b0381168114613bfc575f80fd5b919050565b5f8060408385031215613c12575f80fd5b613c1b83613be6565b946020939093013593505050565b5f805f60608486031215613c3b575f80fd5b613c4484613be6565b9250613c5260208501613be6565b929592945050506040919091013590565b5f60208284031215613c73575f80fd5b613b8982613be6565b5f8083601f840112613c8c575f80fd5b5081356001600160401b03811115613ca2575f80fd5b602083019150836020828501011115613cb9575f80fd5b9250929050565b5f8060208385031215613cd1575f80fd5b82356001600160401b03811115613ce6575f80fd5b613cf285828601613c7c565b90969095509350505050565b5f8060408385031215613d0f575f80fd5b613d1883613be6565b9150613d2660208401613be6565b90509250929050565b5f805f60408486031215613d41575f80fd5b613d4a84613be6565b925060208401356001600160401b03811115613d64575f80fd5b613d7086828701613c7c565b9497909650939450505050565b5f60208284031215613d8d575f80fd5b5035919050565b80356001600160401b0381168114613bfc575f80fd5b5f805f60608486031215613dbc575f80fd5b613dc584613d94565b92506020840135613dd581613b90565b91506040840135613de581613b90565b809150509250925092565b5f8060408385031215613e01575f80fd5b82359150613d2660208401613d94565b6001600160a01b0385168152608060208201525f613e326080830186613b49565b90508360408301526001600160401b038316606083015295945050505050565b600181811c90821680613e6657607f821691505b602082108103613e8457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610b9157610b91613e8a565b6001600160401b038281168282160390811115610b9157610b91613e8a565b80820180821115610b9157610b91613e8a565b6001600160401b038181168382160290811690818114613f1157613f11613e8a565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613f5857613f58613f2c565b806001600160401b0384160491505092915050565b5f63ffffffff821663ffffffff8103613f8857613f88613e8a565b60010192915050565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b604081525f613fcd604083018587613f91565b90506001600160401b0383166020830152949350505050565b5f60208284031215613ff6575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b601f821115611d6157805f5260205f20601f840160051c810160208510156140365750805b601f840160051c820191505b81811015613918575f8155600101614042565b81516001600160401b0381111561406e5761406e613ffd565b6140828161407c8454613e52565b84614011565b6020601f8211600181146140b4575f831561409d5750848201515b5f19600385901b1c1916600184901b178455613918565b5f84815260208120601f198516915b828110156140e357878501518255602094850194600190920191016140c3565b508482101561410057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b63ffffffff84168152604060208201525f61412e604083018486613f91565b95945050505050565b602081525f61414a602083018486613f91565b949350505050565b5f60208284031215614162575f80fd5b81516001600160401b03811115614177575f80fd5b8201601f81018413614187575f80fd5b80516001600160401b038111156141a0576141a0613ffd565b604051601f19603f601f19601f850116011681018181106001600160401b03821117156141cf576141cf613ffd565b6040528181528282016020018610156141e6575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f60208284031215614213575f80fd5b8151613b8981613b90565b8082028115828204841417610b9157610b91613e8a565b5f8261424357614243613f2c565b500490565b604081525f61425a6040830185613b49565b90506001600160401b03831660208301529392505050565b81810381811115610b9157610b91613e8a565b5f63ffffffff82168061429a5761429a613e8a565b5f190192915050565b5f602082840312156142b3575f80fd5b815163ffffffff81168114613b89575f80fd5b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610b9157610b91613e8a565b5f8160070b677fffffffffffffff19810361431257614312613e8a565b5f039291505056fea2646970667358221220d26b12a0303c4066e1254d28c124ce72754270e198391d96df512c220c26a12a64736f6c634300081a0033
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106102c2575f3560e01c80636228fa391161017c578063a694fc3a116100dd578063dd62ed3e11610093578063ece71c911161006e578063ece71c91146106cd578063eec6b91e146106e0578063f5dd9b7c14610703575f80fd5b8063dd62ed3e14610664578063e397b027146106a5578063e56ded7a146106ae575f80fd5b8063bba7624c116100c3578063bba7624c14610624578063c46f195314610637578063c6cf1a0414610651575f80fd5b8063a694fc3a146105fe578063a9059cbb14610611575f80fd5b806384628feb1161013257806395d89b411161011857806395d89b41146105b757806398ecf2a0146105bf578063a405f8bb146105eb575f80fd5b806384628feb1461057c5780638472250e146105a4575f80fd5b806370a082311161016257806370a0823114610525578063792c667c146105565780637c36514e14610569575f80fd5b80636228fa39146104fa5780636d6a6a4d1461050d575f80fd5b806318ec2d5c11610226578063313ce567116101dc5780633f697ce9116101c25780633f697ce914610495578063485cc955146104b45780635c658165146104c7575f80fd5b8063313ce5671461046357806331de201114610482575f80fd5b806323b872dd1161020c57806323b872dd146103f057806327e235e31461040357806330503c4e1461042b575f80fd5b806318ec2d5c146103c95780631abddf33146103e8575f80fd5b8063097c23f81161027b5780630e642c5a116102615780630e642c5a146103925780631293092e146103a557806318160ddd146103b8575f80fd5b8063097c23f8146103565780630bf7264c14610389575f80fd5b806308569d48116102ab57806308569d481461030b578063088abb8d14610320578063095ea7b314610333575f80fd5b806303b67592146102c657806306fdde03146102f6575b5f80fd5b600d546102d9906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b6102fe610716565b6040516102ed9190613b77565b61031e610319366004613b9d565b6107a2565b005b61031e61032e366004613bcb565b61096c565b610346610341366004613c01565b610b19565b60405190151581526020016102ed565b6003547401000000000000000000000000000000000000000090046001600160401b03165b6040519081526020016102ed565b61037b60085481565b6007546102d9906001600160401b031681565b6009546102d9906001600160401b031681565b6004546001600160401b031661037b565b600c546102d9906801000000000000000090046001600160401b031681565b61031e610b97565b6103466103fe366004613c29565b6111a0565b6102d9610411366004613c63565b60056020525f90815260409020546001600160401b031681565b60025461044b90690100000000000000000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102ed565b6002546104709060ff1681565b60405160ff90911681526020016102ed565b61031e610490366004613cc0565b61138a565b61037b6104a3366004613c63565b600b6020525f908152604090205481565b61031e6104c2366004613cfe565b611489565b6102d96104d5366004613cfe565b600660209081525f92835260408084209091529082529020546001600160401b031681565b61031e610508366004613d2f565b6118b7565b6002546102d99061010090046001600160401b031681565b61037b610533366004613c63565b6001600160a01b03165f908152600560205260409020546001600160401b031690565b61031e610564366004613d7d565b611d66565b600c546102d9906001600160401b031681565b6102d961058a366004613c63565b600a6020525f90815260409020546001600160401b031681565b61031e6105b2366004613d7d565b611e25565b6102fe611f06565b600c546105d690600160c01b900463ffffffff1681565b60405163ffffffff90911681526020016102ed565b61031e6105f9366004613cc0565b611f12565b61031e61060c366004613d7d565b6123c5565b61034661061f366004613c01565b6125a4565b6102d9610632366004613daa565b612691565b600c546102d990600160801b90046001600160401b031681565b60035461044b906001600160a01b031681565b61037b610672366004613cfe565b6001600160a01b039182165f9081526006602090815260408083209390941682529190915220546001600160401b031690565b61037b60115481565b61037b6106bc366004613c63565b600f6020525f908152604090205481565b61031e6106db366004613df0565b612896565b6106f36106ee366004613d7d565b612ed3565b6040516102ed9493929190613e11565b61031e610711366004613c63565b612fa7565b6001805461072390613e52565b80601f016020809104026020016040519081016040528092919081815260200182805461074f90613e52565b801561079a5780601f106107715761010080835404028352916020019161079a565b820191905f5260205f20905b81548152906001019060200180831161077d57829003601f168201915b505050505081565b335f908152600b602052604081205490036107c4576107c0826123c5565b5050565b335f908152600560205260409020546001600160401b03168211156108305760405162461bcd60e51b815260206004820152601360248201527f496e73756666696369656e742066756e64732e0000000000000000000000000060448201526064015b60405180910390fd5b335f908152600a60205260408120546001600160401b031690610854828483612691565b905083610862303383613251565b61086c8282613e9e565b600c80546008906108939084906801000000000000000090046001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600c5f8282829054906101000a90046001600160401b03166108da9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550818161090a9190613e9e565b335f908152600a6020526040812080549091906109319084906001600160401b0316613e9e565b82546001600160401b039182166101009390930a92830291909202199091161790555050335f908152600b6020526040902043905550505050565b335f908152600a60205260409020546001600160401b0316806109d15760405162461bcd60e51b815260206004820152601860248201527f4e6f204c79726120686173206265656e207374616b65642e00000000000000006044820152606401610827565b335f908152600b602052604090205443906109ef9062034bc0613edc565b10610a3c5760405162461bcd60e51b815260206004820152601e60248201527f5374616b65642066756e6473206e6f74207965742072656c65617365642e00006044820152606401610827565b5f610a4982846001612691565b905081600c60088282829054906101000a90046001600160401b0316610a6f9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508082610a9f9190613e9e565b9150610aac333084613251565b600c80548291905f90610ac99084906001600160401b0316613ebd565b82546001600160401b039182166101009390930a92830291909202199091161790555050335f908152600a60209081526040808320805467ffffffffffffffff19169055600b9091528120555050565b335f8181526006602090815260408083206001600160a01b038716808552908352818420805467ffffffffffffffff19166001600160401b03881617905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b601154610ba79062034bc0613edc565b4311610bf55760405162461bcd60e51b815260206004820152601b60248201527f566f74696e67206973206e6f742079657420636f6d706c6574652100000000006044820152606401610827565b5f60115411610c465760405162461bcd60e51b815260206004820152601460248201527f566f74696e67206973206e6f74206163746976650000000000000000000000006044820152606401610827565b600254610c639061010090046001600160401b0316612710613eef565b600c546001600160401b03918216600160801b90910490911611610d155760405162461bcd60e51b815260206004820152604d60248201527f4e6f7420656e6f756768204c79726120686173206265656e20646f6e6174656460448201527f20746f207468697320636f6e74726163742e2e2e202054727920616761696e2060648201527f616e6f746865722074696d652e00000000000000000000000000000000000000608482015260a401610827565b5f805f5b601054811015610d7e578160108281548110610d3757610d37613f18565b905f5260205f209060040201600201541115610d765760108181548110610d6057610d60613f18565b905f5260205f2090600402016002015491508092505b600101610d19565b505f60108381548110610d9357610d93613f18565b5f91825260208220600490910201546002546001600160a01b039091169250610dcd906001600160401b036101009091041661ad4d613eef565b90506001600160a01b03821615610ec757600c546001600160401b03600160801b90910481169082161115610e155750600c54600160801b90046001600160401b0316610e6f565b600c54610e3490600a90600160801b90046001600160401b0316613f40565b6001600160401b0316816001600160401b03161015610e6f57600c54610e6c90600a90600160801b90046001600160401b0316613f40565b90505b610e7a823083613251565b80600c60108282829054906101000a90046001600160401b0316610e9e9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610eca565b505f5b5f60108581548110610ede57610ede613f18565b5f918252602090912060036004909202010154600d546001600160401b0391821691610f0d91166103e8613eef565b610f179190613f40565b600c54600160c01b900463ffffffff165f908152601260205260408120600e8054939450909288908110610f4d57610f4d613f18565b5f91825260208220018054909250905b8181101561107b575f838281548110610f7857610f78613f18565b5f9182526020808320909101546001600160a01b03168083529087905260408220549092506103e890610fb4906001600160401b031689613eef565b610fbe9190613f40565b6001600160a01b0383165f90815260056020526040812080549293508392909190610ff39084906001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550816001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161106991906001600160401b0391909116815260200190565b60405180910390a35050600101610f5d565b50600d54600380546001600160401b03928316926014916110b691859174010000000000000000000000000000000000000000900416613e9e565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550856001600160a01b03167f174acb57d89de1cd0fa560068c16a3aa03b062340e17dcd0a7e57024deec7b368660405161112291906001600160401b0391909116815260200190565b60405180910390a2600c8054600160c01b900463ffffffff1690601861114783613f6d565b91906101000a81548163ffffffff021916908363ffffffff16021790555050600e5f6111739190613a38565b5f6011819055600d805467ffffffffffffffff1916905561119690601090613a56565b5050505050505050565b5f6001600160a01b0383166111f75760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610827565b6001600160a01b0384165f908152600560205260409020546001600160401b03168211156112675760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152606401610827565b6001600160a01b0384165f9081526006602090815260408083203384529091529020546001600160401b03168211156112e25760405162461bcd60e51b815260206004820152601260248201527f416c6c6f77616e636520657863656564656400000000000000000000000000006044820152606401610827565b6001600160a01b0384165f9081526006602090815260408083203384529091529020546113199083906001600160401b0316613ebd565b6001600160a01b0385165f9081526006602090815260408083203384529091529020805467ffffffffffffffff19166001600160401b0392909216919091179055611365838584613251565b306001600160a01b03841603611380576113808260326134c1565b5060019392505050565b600954335f908152600560205260409020546001600160401b039182169116101561141d5760405162461bcd60e51b815260206004820152602560248201527f496e73756666696369656e742062616c616e636520746f20706f73742062756c60448201527f6c6574696e0000000000000000000000000000000000000000000000000000006064820152608401610827565b6009546001600160401b0316611434303383613251565b61143f8160056134c1565b336001600160a01b03167f0e26bb5531ac78bb211a17e48a9a9559c4c9840b61f4692195df197d6a87247f84848460405161147c93929190613fba565b60405180910390a2505050565b6003546001600160a01b0316156115085760405162461bcd60e51b815260206004820152602a60248201527f54686520636f6e74726163742068617320616c7265616479206265656e20696e60448201527f697469616c697a65642e000000000000000000000000000000000000000000006064820152608401610827565b600280547fffffff0000000000000000000000000000000000000000ffffffffffffffffff1669010000000000000000006001600160a01b03848116918202929092179092556003805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790551561181d576115947321b4b3826609f4079a558c95a01094aa8592724461391f565b6115b173e53408a5edee1bdee473114871d03b7c11fb501c61391f565b6115ce739e03f05ae143d0d1c4638498b40915fd432121f761391f565b6115eb730daa5566f20fbbc810765421b13f9baa35a2ee7d61391f565b61160873c0aaa689e4a66d184b38e975f27e9522f723c15661391f565b611625737afa9d836d2fccf172b66622625e56404e465dbd61391f565b6002546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f926901000000000000000000900416906370a0823190602401602060405180830381865afa158015611693573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b79190613fe6565b90506001600160401b0381161561181757305f818152600560209081526040808320805467ffffffffffffffff19166001600160401b03871690811790915590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a380600360148282829054906101000a90046001600160401b031661174a9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505f60088261177c9190613f40565b90506117888183613ebd565b600c80546010906117aa908490600160801b90046001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555080600c5f8282829054906101000a90046001600160401b03166117f19190613e9e565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550505b50611887565b60048054335f818152600560209081526040808320805467ffffffffffffffff19166001600160401b0396871617905594549451949093168452909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6002546107c0906118a99061010090046001600160401b031662989680613eef565b6001600160401b03166123c5565b601154156119075760405162461bcd60e51b815260206004820152601a60248201527f566f74696e672068617320616c726561647920737461727465640000000000006044820152606401610827565b6002546119259061010090046001600160401b0316620f4240613eef565b335f908152600a60205260409020546001600160401b03918216911610156119b7576040805162461bcd60e51b81526020600482015260248101919091527f43616e6e6f74206e6f6d696e61746520736f6d656f6e6520756e6c657373207960448201527f6f752068617665206174206c6561737420314d204c797261207374616b65642e6064820152608401610827565b335f908152600f60205260409020544311611a3a5760405162461bcd60e51b815260206004820152602160248201527f596f752063616e2774206e6f6d696e617465207965742028636f6f6c646f776e60448201527f29000000000000000000000000000000000000000000000000000000000000006064820152608401610827565b6001600160a01b038316611a905760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206e6f6d696e656520616464726573730000000000000000006044820152606401610827565b611a9d436204f1a0613edc565b335f908152600f60209081526040918290209290925580516080810182526001600160a01b03861681528151601f850184900484028101840190925283825260109290918282019186908690819084018382808284375f92018290525093855250505060208083018290526040909201819052835460018082018655948252908290208351600490920201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091178155908201519192909190820190611b689082614055565b5060408281015160028301556060909201516003909101805467ffffffffffffffff19166001600160401b03909216919091179055600c5490516001600160a01b0385169133917f88019f3a2c670cf8849da9bf50f1cb308d93a515bb3d40eca72586e2c7a4308391611bed91600160c01b90910463ffffffff16908790879061410f565b60405180910390a3600e805460010181555f52601054600c03611d6157604080516080810182525f80825282518084018452601681527f566f746520616761696e73742065766572796f6e65210000000000000000000060208083019190915283019081529282018190526060820181905260108054600181018255915281517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6726004909202918201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117815592519192917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67390910190611cf49082614055565b5060408281015160028301556060909201516003909101805467ffffffffffffffff19166001600160401b03909216919091179055600e805460010181555f9081524360115590517f877e2548498f42b7975a186b94ef1d32c86d420b7b806dd2be2bea293b8959049190a15b505050565b335f908152600560205260409020546001600160401b0316811115611dcd5760405162461bcd60e51b815260206004820152601360248201527f496e73756666696369656e742066756e64732e000000000000000000000000006044820152606401610827565b80611dd9303383613251565b80600c60108282829054906101000a90046001600160401b0316611dfd9190613e9e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505050565b335f908152600560205260409020546001600160401b0316811115611e8c5760405162461bcd60e51b815260206004820152601360248201527f496e73756666696369656e742066756e64732e000000000000000000000000006044820152606401610827565b805f611e9a61012c83613f40565b90505f611ea78284613ebd565b9050611eb4303383613251565b611ebf5f3384613251565b600c80548291905f90611edc9084906001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555050505050565b5f805461072390613e52565b600854611f2190611c20613edc565b431015611f965760405162461bcd60e51b815260206004820152602b60248201527f4e616d65206368616e676520636f6f6c646f776e20706572696f64206861732060448201527f6e6f7420656c61707365640000000000000000000000000000000000000000006064820152608401610827565b600754335f908152600560205260409020546001600160401b03918216911610156120295760405162461bcd60e51b815260206004820152602b60248201527f496e73756666696369656e742062616c616e636520746f2072656e616d65207460448201527f686520636f6e74726163740000000000000000000000000000000000000000006064820152608401610827565b6003546040517f449350740000000000000000000000000000000000000000000000000000000081525f916001600160a01b0316906344935074906120749086908690600401614137565b5f60405180830381865afa15801561208e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120b59190810190614152565b905060048151101561212f5760405162461bcd60e51b815260206004820152603760248201527f4e616d65206d757374206265206174206c65617374203420636861726163746560448201527f7273206c6f6e6720616674657220737472697070696e670000000000000000006064820152608401610827565b6020815111156121a75760405162461bcd60e51b815260206004820152602260248201527f4e616d65206d757374206265206174206d6f737420333220636861726163746560448201527f72730000000000000000000000000000000000000000000000000000000000006064820152608401610827565b6007546001600160401b03166121be303383613251565b6121c98160056134c1565b6003546040517f56a6c2b80000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906356a6c2b890612212908590600401613b77565b602060405180830381865afa15801561222d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122519190614203565b156122c35760405162461bcd60e51b8152602060048201526024808201527f4e616d6520636f6e7461696e7320726574617264206e6f6e73656e736520776f60448201527f7264732e000000000000000000000000000000000000000000000000000000006064820152608401610827565b60016122cf8382614055565b5060646122e66001600160401b038316606761421e565b6122f09190614235565b60045490915061230b906002906001600160401b0316613f40565b6001600160401b0316816001600160401b031611156123625760045461233c906002906001600160401b0316613f40565b6007805467ffffffffffffffff19166001600160401b039290921691909117905561237f565b6007805467ffffffffffffffff19166001600160401b0383161790555b4360085560405133907f84c6a123b8bb2eb147d8b26547d20364da4eb56e609dc790419a824e03107841906123b79085908590614248565b60405180910390a250505050565b335f908152600b6020526040902054156124215760405162461bcd60e51b815260206004820152601860248201527f596f75206861766520616c7265616479207374616b65642e00000000000000006044820152606401610827565b335f908152600560205260409020546001600160401b03168111156124885760405162461bcd60e51b815260206004820152601360248201527f496e73756666696369656e742066756e64732e000000000000000000000000006044820152606401610827565b6002546124a49061010090046001600160401b0316600a613eef565b6001600160401b031681116124fb5760405162461bcd60e51b815260206004820152601c60248201527f4d696e696d756d204c79726120746f207374616b652069732031302e000000006044820152606401610827565b80612507303383613251565b80600c60088282829054906101000a90046001600160401b031661252b9190613e9e565b82546101009290920a6001600160401b03818102199093169183160217909155335f908152600a602052604081208054859450909261256c91859116613e9e565b82546001600160401b039182166101009390930a92830291909202199091161790555050335f908152600b6020526040902043905550565b5f6001600160a01b0383166125fb5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610827565b335f908152600560205260409020546001600160401b03168211156126625760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152606401610827565b61266d833384613251565b306001600160a01b03841603612688576126888260326134c1565b50600192915050565b335f908152600b60205260408120548190615dc0906126b09043614272565b6126ba9190614235565b90505b63ffffffff8116156126fe576105786126d68387613e9e565b6126e09190613f40565b6126ea9083613e9e565b9150806126f681614285565b9150506126bd565b600c805461272191906801000000000000000090046001600160401b0316613f40565b600c546001600160401b03918216911611801561273b5750825b156127cf57600c80545f91612764916801000000000000000090046001600160401b0316613f40565b600c5461277a91906001600160401b0316613ebd565b600c546001600160401b039182169250600a91680100000000000000009091048116906127a99089168461421e565b6127b39190614235565b6127bd9190614235565b6127c79084613e9e565b92505061288e565b600c546001600160401b03908116908316111561288e578361287f5760405162461bcd60e51b815260206004820152605f60248201527f436f6e74726163742063616e6e6f74206166666f726420746f2070617920746860448201527f6520696e7465726573742c20656e61626c65206f76657272696465436865636b60648201527f7320746f206c6f736520736f6d65206f662074686520696e7465726573742e00608482015260a401610827565b600c546001600160401b031691505b509392505050565b5f601154116128e75760405162461bcd60e51b815260206004820152601460248201527f566f74696e67206973206e6f74206163746976650000000000000000000000006044820152606401610827565b6010546128f5906001613edc565b82106129435760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206e6f6d696e656520696e64657800000000000000000000006044820152606401610827565b5f816001600160401b0316116129c05760405162461bcd60e51b8152602060048201526024808201527f42657420616d6f756e74206d7573742062652067726561746572207468616e2060448201527f7a65726f000000000000000000000000000000000000000000000000000000006064820152608401610827565b335f908152600560205260409020546001600160401b0380831691161015612a2a5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610827565b600c54600160c01b900463ffffffff165f9081526012602090815260408083203384529091529020546001600160401b031615612acf5760405162461bcd60e51b815260206004820152602860248201527f4552524f52204552524f522053544f4f5049443a20594f5520414c524541445960448201527f20564f54454421210000000000000000000000000000000000000000000000006064820152608401610827565b5f6130d4612adf61c35045614272565b612ae99190614235565b905080600e8481548110612aff57612aff613f18565b5f91825260209091200154108015612b6b5750600e8381548110612b2557612b25613f18565b5f91825260209091200154600254612b4c9061010090046001600160401b0316600a613eef565b6001600160401b0316612b5f919061421e565b826001600160401b0316115b15612d5557600e8381548110612b8357612b83613f18565b5f9182526020808320909101805460018101825590835281832001805473ffffffffffffffffffffffffffffffffffffffff191633908117909155825260059052604081208054849290612be19084906001600160401b0316613ebd565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505f6001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c5791906001600160401b0391909116815260200190565b60405180910390a381600360148282829054906101000a90046001600160401b0316612c839190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600d5f8282829054906101000a90046001600160401b0316612cca9190613e9e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508160108481548110612d0257612d02613f18565b5f918252602082206003600490920201018054909190612d2c9084906001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550612d68565b612d68826001600160401b03165f6107a2565b6002546003546040517f23b37bb60000000000000000000000000000000000000000000000000000000081526001600160401b0385811660048301525f93610100900416916001600160a01b0316906323b37bb690602401602060405180830381865afa158015612ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dff91906142a3565b63ffffffff16612e0f9190613e9e565b600c54600160c01b900463ffffffff165f9081526012602090815260408083203384529091529020805467ffffffffffffffff19166001600160401b0386811691909117909155601080549293509083169186908110612e7157612e71613f18565b905f5260205f2090600402016002015f828254612e8e9190613edc565b9091555050604080518581526001600160401b038516602082015233917fcb87df07b1c304492bd875a5c8b98672eca500939412809ea229afef1d74518891016123b7565b60108181548110612ee2575f80fd5b5f918252602090912060049091020180546001820180546001600160a01b03909216935090612f1090613e52565b80601f0160208091040260200160405190810160405280929190818152602001828054612f3c90613e52565b8015612f875780601f10612f5e57610100808354040283529160200191612f87565b820191905f5260205f20905b815481529060010190602001808311612f6a57829003601f168201915b5050505060028301546003909301549192916001600160401b0316905084565b600454335f908152600a60205260409020546001600160401b0391821691612fd191166005613eef565b6001600160401b0316116130735760405162461bcd60e51b815260206004820152604b60248201527f4d7573742068617665207374616b65642061206669667468206f66207468652060448201527f656e7469726520636f696e20737570706c7920746f20636f6d706c657465207460648201527f68697320616374696f6e2e000000000000000000000000000000000000000000608482015260a401610827565b6130806209e34043614272565b335f908152600b6020526040902054106131025760405162461bcd60e51b815260206004820152603860248201527f596f752068617665206e6f74207374616b6564206c6f6e6720656e6f7567682060448201527f746f20636f6d706c657465207468697320616374696f6e2e00000000000000006064820152608401610827565b6040517f56a6c2b800000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d616c76616e204c79726100000000000000000000000000000000000000000060448201526001600160a01b038216906356a6c2b890606401602060405180830381865afa15801561318b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131af9190614203565b156132225760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420646f6573206e6f742061707065617220746f206265207660448201527f616c69642e0000000000000000000000000000000000000000000000000000006064820152608401610827565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0383166132f35780600360148282829054906101000a90046001600160401b03166132839190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508060045f8282829054906101000a90046001600160401b03166132ca9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550613348565b6001600160a01b0383165f90815260056020526040812080548392906133239084906001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b0382165f90815260056020526040812080548392906133789084906001600160401b0316613ebd565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b0316826001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133ee91906001600160401b0391909116815260200190565b60405180910390a3306001600160a01b0384160361344f5780600360148282829054906101000a90046001600160401b031661342a9190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b0382163014801561346f57506001600160a01b03831615155b15611d615780600360148282829054906101000a90046001600160401b03166134989190613e9e565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550505050565b5f6134cc8284613f40565b90506134d88184613ebd565b600c80546010906134fa908490600160801b90046001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555080600c5f8282829054906101000a90046001600160401b03166135419190613e9e565b82546101009290920a6001600160401b03818102199093169183160217909155600c54305f90815260056020526040812054909350613590926801000000000000000090920482169116613ebd565b600c549091505f9082906135b7906001600160401b0380821691600160801b900416613e9e565b6135c191906142c6565b9050600260019054906101000a90046001600160401b031660070b8160070b13156137f85760408051600783900b81526001600160401b03841660208201527fa9234185694e42d4969bd30010488b3a3d0e945c738b819bc15bfdfc45e243ab910160405180910390a1305f90815260056020526040902054600c546001600160401b039182169116111561367d5761365b600283613f40565b600c805467ffffffffffffffff19166001600160401b03929092169190911790555b305f90815260056020526040902054600c546001600160401b03918216600160801b90910490911611156136e857600c546136c1906001600160401b031683613ebd565b600c60106101000a8154816001600160401b0302191690836001600160401b031602179055505b600c54305f9081526005602052604090205461371c916001600160401b036801000000000000000090910481169116613ebd565b600c549092508290613741906001600160401b0380821691600160801b900416613e9e565b61374b91906142c6565b600c549091506001600160401b0368010000000000000000820481169161377491849116613ebd565b61377f906019613eef565b6001600160401b031610156137db5780600c60108282829054906101000a90046001600160401b03166137b29190613ebd565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550613918565b600c80548291905f906137b29084906001600160401b0316613ebd565b6002546138129061010090046001600160401b03166142f5565b60070b8160070b12156139185760408051600783900b81526001600160401b03841660208201527fa9234185694e42d4969bd30010488b3a3d0e945c738b819bc15bfdfc45e243ab910160405180910390a1600561386f826142f5565b6138799190613f40565b600c805491945084915f906138989084906001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555082816138c7906142f5565b6138d19190613ebd565b600c80546010906138f3908490600160801b90046001600160401b0316613e9e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b5050505050565b6002546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f926901000000000000000000900416906370a0823190602401602060405180830381865afa15801561398d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139b19190613fe6565b6139bc90606461421e565b90506001600160401b038116156107c0576001600160a01b0382165f818152600560209081526040808320805467ffffffffffffffff19166001600160401b03871690811790915590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5080545f8255905f5260205f2090810190613a539190613a74565b50565b5080545f8255600402905f5260205f2090810190613a539190613a94565b80821115613a90575f613a878282613ae7565b50600101613a74565b5090565b80821115613a9057805473ffffffffffffffffffffffffffffffffffffffff191681555f613ac56001830182613b02565b505f600282015560038101805467ffffffffffffffff19169055600401613a94565b5080545f8255905f5260205f2090810190613a539190613b35565b508054613b0e90613e52565b5f825580601f10613b1d575050565b601f0160209004905f5260205f2090810190613a5391905b5b80821115613a90575f8155600101613b36565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613b896020830184613b49565b9392505050565b8015158114613a53575f80fd5b5f8060408385031215613bae575f80fd5b823591506020830135613bc081613b90565b809150509250929050565b5f60208284031215613bdb575f80fd5b8135613b8981613b90565b80356001600160a01b0381168114613bfc575f80fd5b919050565b5f8060408385031215613c12575f80fd5b613c1b83613be6565b946020939093013593505050565b5f805f60608486031215613c3b575f80fd5b613c4484613be6565b9250613c5260208501613be6565b929592945050506040919091013590565b5f60208284031215613c73575f80fd5b613b8982613be6565b5f8083601f840112613c8c575f80fd5b5081356001600160401b03811115613ca2575f80fd5b602083019150836020828501011115613cb9575f80fd5b9250929050565b5f8060208385031215613cd1575f80fd5b82356001600160401b03811115613ce6575f80fd5b613cf285828601613c7c565b90969095509350505050565b5f8060408385031215613d0f575f80fd5b613d1883613be6565b9150613d2660208401613be6565b90509250929050565b5f805f60408486031215613d41575f80fd5b613d4a84613be6565b925060208401356001600160401b03811115613d64575f80fd5b613d7086828701613c7c565b9497909650939450505050565b5f60208284031215613d8d575f80fd5b5035919050565b80356001600160401b0381168114613bfc575f80fd5b5f805f60608486031215613dbc575f80fd5b613dc584613d94565b92506020840135613dd581613b90565b91506040840135613de581613b90565b809150509250925092565b5f8060408385031215613e01575f80fd5b82359150613d2660208401613d94565b6001600160a01b0385168152608060208201525f613e326080830186613b49565b90508360408301526001600160401b038316606083015295945050505050565b600181811c90821680613e6657607f821691505b602082108103613e8457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610b9157610b91613e8a565b6001600160401b038281168282160390811115610b9157610b91613e8a565b80820180821115610b9157610b91613e8a565b6001600160401b038181168382160290811690818114613f1157613f11613e8a565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613f5857613f58613f2c565b806001600160401b0384160491505092915050565b5f63ffffffff821663ffffffff8103613f8857613f88613e8a565b60010192915050565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b604081525f613fcd604083018587613f91565b90506001600160401b0383166020830152949350505050565b5f60208284031215613ff6575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b601f821115611d6157805f5260205f20601f840160051c810160208510156140365750805b601f840160051c820191505b81811015613918575f8155600101614042565b81516001600160401b0381111561406e5761406e613ffd565b6140828161407c8454613e52565b84614011565b6020601f8211600181146140b4575f831561409d5750848201515b5f19600385901b1c1916600184901b178455613918565b5f84815260208120601f198516915b828110156140e357878501518255602094850194600190920191016140c3565b508482101561410057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b63ffffffff84168152604060208201525f61412e604083018486613f91565b95945050505050565b602081525f61414a602083018486613f91565b949350505050565b5f60208284031215614162575f80fd5b81516001600160401b03811115614177575f80fd5b8201601f81018413614187575f80fd5b80516001600160401b038111156141a0576141a0613ffd565b604051601f19603f601f19601f850116011681018181106001600160401b03821117156141cf576141cf613ffd565b6040528181528282016020018610156141e6575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f60208284031215614213575f80fd5b8151613b8981613b90565b8082028115828204841417610b9157610b91613e8a565b5f8261424357614243613f2c565b500490565b604081525f61425a6040830185613b49565b90506001600160401b03831660208301529392505050565b81810381811115610b9157610b91613e8a565b5f63ffffffff82168061429a5761429a613e8a565b5f190192915050565b5f602082840312156142b3575f80fd5b815163ffffffff81168114613b89575f80fd5b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610b9157610b91613e8a565b5f8160070b677fffffffffffffff19810361431257614312613e8a565b5f039291505056fea2646970667358221220d26b12a0303c4066e1254d28c124ce72754270e198391d96df512c220c26a12a64736f6c634300081a0033
Deployed Bytecode Sourcemap
4620:18534:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14635:30;;;;;-1:-1:-1;;;;;14635:30:0;;;;;;-1:-1:-1;;;;;176:31:1;;;158:50;;146:2;131:18;14635:30:0;;;;;;;;4688:19;;;:::i;:::-;;;;;;;:::i;13124:706::-;;;;;;:::i;:::-;;:::i;:::-;;13835:550;;;;;;:::i;:::-;;:::i;21212:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2203:14:1;;2196:22;2178:41;;2166:2;2151:18;21212:204:0;2038:187:1;20665:81:0;20728:13;;;;;-1:-1:-1;;;;;20728:13:0;20665:81;;;2376:25:1;;;2364:2;2349:18;20665:81:0;2230:177:1;7093:30:0;;;;;;7061:28;;;;;-1:-1:-1;;;;;7061:28:0;;;8863:25;;;;;-1:-1:-1;;;;;8863:25:0;;;20572:88;20643:12;;-1:-1:-1;;;;;20643:12:0;20572:88;;11203:34;;;;;;;;-1:-1:-1;;;;;11203:34:0;;;18112:1925;;;:::i;21421:483::-;;;;;;:::i;:::-;;:::i;4905:42::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;4905:42:0;;;4767:33;;;;;;;;-1:-1:-1;;;;;4767:33:0;;;;;;-1:-1:-1;;;;;3167:55:1;;;3149:74;;3137:2;3122:18;4767:33:0;2982:247:1;4711:21:0;;;;;;;;;;;;3406:4:1;3394:17;;;3376:36;;3364:2;3349:18;4711:21:0;3234:184:1;8892:419:0;;;;;;:::i;:::-;;:::i;11117:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;5332:1278;;;;;;:::i;:::-;;:::i;4951:61::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4951:61:0;;;15270:1191;;;;;;:::i;:::-;;:::i;4736:27::-;;;;;;;;-1:-1:-1;;;;;4736:27:0;;;20751:120;;;;;;:::i;:::-;-1:-1:-1;;;;;20846:20:0;20820:12;20846:20;;;:8;:20;;;;;;-1:-1:-1;;;;;20846:20:0;;20751:120;22514:240;;;;;;:::i;:::-;;:::i;11163:36::-;;;;;-1:-1:-1;;;;;11163:36:0;;;11070:43;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;11070:43:0;;;22759:392;;;;;;:::i;:::-;;:::i;4664:20::-;;;:::i;14596:35::-;;;;;-1:-1:-1;;;14596:35:0;;;;;;;;;5352:10:1;5340:23;;;5322:42;;5310:2;5295:18;14596:35:0;5178:192:1;7129:1642:0;;;;;;:::i;:::-;;:::i;11243:446::-;;;;;;:::i;:::-;;:::i;20876:331::-;;;;;;:::i;:::-;;:::i;11694:1192::-;;;;;;:::i;:::-;;:::i;14557:35::-;;;;;-1:-1:-1;;;14557:35:0;;-1:-1:-1;;;;;14557:35:0;;;4804:30;;;;;-1:-1:-1;;;;;4804:30:0;;;22362:147;;;;;;:::i;:::-;-1:-1:-1;;;;;22476:19:0;;;22448:14;22476:19;;;:7;:19;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;22476:28:0;;22362:147;14776:28;;;;;;14692:51;;;;;;:::i;:::-;;;;;;;;;;;;;;16502:1605;;;;;;:::i;:::-;;:::i;14747:25::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;20062:477::-;;;;;;:::i;:::-;;:::i;4688:19::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13124:706::-;13203:10;13192:22;;;;:10;:22;;;;;;:27;;13188:70;;13227:13;13233:6;13227:5;:13::i;:::-;13124:706;;:::o;13188:70::-;13281:10;13272:20;;;;:8;:20;;;;;;-1:-1:-1;;;;;13272:20:0;:30;-1:-1:-1;13272:30:0;13264:62;;;;-1:-1:-1;;;13264:62:0;;7714:2:1;13264:62:0;;;7696:21:1;7753:2;7733:18;;;7726:30;7792:21;7772:18;;;7765:49;7831:18;;13264:62:0;;;;;;;;;13404:10;13371:13;13394:21;;;:9;:21;;;;;;-1:-1:-1;;;;;13394:21:0;;13439:46;13394:21;13463:14;13371:13;13439:15;:46::i;:::-;13421:64;-1:-1:-1;13545:6:0;13557:46;13575:4;13582:10;13545:6;13557:9;:46::i;:::-;13653:19;13664:8;13653;:19;:::i;:::-;13633:16;:39;;:16;;:39;;;;;;;-1:-1:-1;;;;;13633:39:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;13633:39:0;;;;;-1:-1:-1;;;;;13633:39:0;;;;;;13699:8;13677:18;;:30;;;;;;;;;;-1:-1:-1;;;;;13677:30:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;13677:30:0;;;;;-1:-1:-1;;;;;13677:30:0;;;;;;13748:8;13737;:19;;;;:::i;:::-;13722:10;13712:21;;;;:9;:21;;;;;:44;;:21;;;:44;;;;-1:-1:-1;;;;;13712:44:0;;:::i;:::-;;;-1:-1:-1;;;;;13712:44:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13799:10:0;-1:-1:-1;13788:22:0;;;:10;:22;;;;;13813:12;13788:37;;-1:-1:-1;;;;13124:706:0:o;13835:550::-;13911:10;13885:13;13901:21;;;:9;:21;;;;;;-1:-1:-1;;;;;13901:21:0;13937:10;13929:47;;;;-1:-1:-1;;;13929:47:0;;8646:2:1;13929:47:0;;;8628:21:1;8685:2;8665:18;;;8658:30;8724:26;8704:18;;;8697:54;8768:18;;13929:47:0;8444:348:1;13929:47:0;14001:10;13990:22;;;;:10;:22;;;;;;14031:12;;13990:37;;14015:12;13990:37;:::i;:::-;13989:54;13981:97;;;;-1:-1:-1;;;13981:97:0;;9129:2:1;13981:97:0;;;9111:21:1;9168:2;9148:18;;;9141:30;9207:32;9187:18;;;9180:60;9257:18;;13981:97:0;8927:354:1;13981:97:0;14112:15;14130:45;14146:6;14154:14;14170:4;14130:15;:45::i;:::-;14112:63;;14202:6;14182:16;;:26;;;;;;;;;;-1:-1:-1;;;;;14182:26:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;14182:26:0;;;;;-1:-1:-1;;;;;14182:26:0;;;;;;14223:8;14213:18;;;;;:::i;:::-;;;14238:44;14248:10;14268:4;14275:6;14238:9;:44::i;:::-;14287:18;:30;;14309:8;;14287:18;;;:30;;14309:8;;-1:-1:-1;;;;;14287:30:0;;:::i;:::-;;;-1:-1:-1;;;;;14287:30:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14334:10:0;-1:-1:-1;14324:21:0;;;:9;:21;;;;;;;;:25;;-1:-1:-1;;14324:25:0;;;14354:10;:22;;;;;:26;-1:-1:-1;;13835:550:0:o;21212:204::-;21311:10;21284:12;21303:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;21303:28:0;;;;;;;;;;;:45;;-1:-1:-1;;21303:45:0;-1:-1:-1;;;;;21303:45:0;;;;;21358:37;;2376:25:1;;;21284:12:0;;21303:28;;21311:10;;21358:37;;2349:18:1;21358:37:0;;;;;;;-1:-1:-1;21407:4:0;21212:204;;;;;:::o;18112:1925::-;18171:16;;:31;;18190:12;18171:31;:::i;:::-;18156:12;:46;18148:86;;;;-1:-1:-1;;;18148:86:0;;9488:2:1;18148:86:0;;;9470:21:1;9527:2;9507:18;;;9500:30;9566:29;9546:18;;;9539:57;9613:18;;18148:86:0;9286:351:1;18148:86:0;18266:1;18247:16;;:20;18239:53;;;;-1:-1:-1;;;18239:53:0;;9844:2:1;18239:53:0;;;9826:21:1;9883:2;9863:18;;;9856:30;9922:22;9902:18;;;9895:50;9962:18;;18239:53:0;9642:344:1;18239:53:0;18333:13;;18325:21;;18333:13;;;-1:-1:-1;;;;;18333:13:0;18325:5;:21;:::i;:::-;18305:17;;-1:-1:-1;;;;;18305:41:0;;;-1:-1:-1;;;18305:17:0;;;;;;:41;18297:131;;;;-1:-1:-1;;;18297:131:0;;10466:2:1;18297:131:0;;;10448:21:1;10505:2;10485:18;;;10478:30;10544:34;10524:18;;;10517:62;10615:34;10595:18;;;10588:62;10687:15;10666:19;;;10659:44;10720:19;;18297:131:0;10264:481:1;18297:131:0;18478:17;18504:13;18531:6;18526:153;18547:8;:15;18543:19;;18526:153;;;18599:8;18579;18588:1;18579:11;;;;;;;;:::i;:::-;;;;;;;;;;;:17;;;:28;18575:99;;;18627:8;18636:1;18627:11;;;;;;;;:::i;:::-;;;;;;;;;;;:17;;;18616:28;;18666:1;18651:16;;18575:99;18564:3;;18526:153;;;;18685:14;18702:8;18711:12;18702:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;:37;18983:13;;-1:-1:-1;;;;;18702:37:0;;;;-1:-1:-1;18975:21:0;;-1:-1:-1;;;;;18702:37:0;18983:13;;;;18975:5;:21;:::i;:::-;18957:39;-1:-1:-1;;;;;;19007:22:0;;;19003:304;;19052:17;;-1:-1:-1;;;;;;;;19052:17:0;;;;;19041:28;;;;19037:157;;;-1:-1:-1;19087:17:0;;-1:-1:-1;;;19087:17:0;;-1:-1:-1;;;;;19087:17:0;19037:157;;;19131:17;;:22;;19151:2;;-1:-1:-1;;;19131:17:0;;-1:-1:-1;;;;;19131:17:0;:22;:::i;:::-;-1:-1:-1;;;;;19119:35:0;:8;-1:-1:-1;;;;;19119:35:0;;19115:79;;;19172:17;;:22;;19192:2;;-1:-1:-1;;;19172:17:0;;-1:-1:-1;;;;;19172:17:0;:22;:::i;:::-;19161:33;;19115:79;19202:42;19212:6;19228:4;19235:8;19202:9;:42::i;:::-;19271:8;19250:17;;:29;;;;;;;;;;-1:-1:-1;;;;;19250:29:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;19250:29:0;;;;;-1:-1:-1;;;;;19250:29:0;;;;;;19003:304;;;-1:-1:-1;19306:1:0;19003:304;19346:22;19395:8;19404:12;19395:22;;;;;;;;:::i;:::-;;;;;;;;;:38;:22;;;;;:38;;19372:12;;-1:-1:-1;;;;;19395:38:0;;;;19372:19;;:12;19387:4;19372:19;:::i;:::-;19371:62;;;;:::i;:::-;19488:17;;-1:-1:-1;;;19488:17:0;;;;19438:39;19480:26;;;:7;:26;;;;;19539:7;:21;;19346:87;;-1:-1:-1;19480:26:0;;19547:12;;19539:21;;;;;;:::i;:::-;;;;;;;;;19581:14;;19539:21;;-1:-1:-1;19581:14:0;19600:208;19621:8;19617:1;:12;19600:208;;;19642:14;19659:7;19667:1;19659:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19659:10:0;19707:12;;;;;;;;;;;19659:10;;-1:-1:-1;19723:4:0;;19689:30;;-1:-1:-1;;;;;19707:12:0;19689:15;:30;:::i;:::-;19688:39;;;;:::i;:::-;-1:-1:-1;;;;;19733:16:0;;;;;;:8;:16;;;;;:23;;19675:52;;-1:-1:-1;19675:52:0;;19733:16;;;:23;;19675:52;;-1:-1:-1;;;;;19733:23:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;19733:23:0;;;;;-1:-1:-1;;;;;19733:23:0;;;;;;19790:6;-1:-1:-1;;;;;19767:35:0;19784:3;-1:-1:-1;;;;;19767:35:0;;19798:3;19767:35;;;;;-1:-1:-1;;;;;176:31:1;;;;158:50;;146:2;131:18;;14:200;19767:35:0;;;;;;;;-1:-1:-1;;19631:3:0;;19600:208;;;-1:-1:-1;19829:12:0;;19812:13;:29;;-1:-1:-1;;;;;19829:12:0;;;;19812:13;;:29;;19829:12;;19812:29;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;19812:29:0;;;;;-1:-1:-1;;;;;19812:29:0;;;;;;19865:6;-1:-1:-1;;;;;19853:29:0;;19873:8;19853:29;;;;;-1:-1:-1;;;;;176:31:1;;;;158:50;;146:2;131:18;;14:200;19853:29:0;;;;;;;;19928:17;:19;;-1:-1:-1;;;19928:19:0;;;;;:17;:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;19959:7;;19952:14;;;;:::i;:::-;19990:1;19971:16;:20;;;19996:12;:16;;-1:-1:-1;;19996:16:0;;;20017:15;;20024:8;;20017:15;:::i;:::-;18143:1894;;;;;;;;18112:1925::o;21421:483::-;21507:12;-1:-1:-1;;;;;21534:16:0;;21526:44;;;;-1:-1:-1;;;21526:44:0;;11928:2:1;21526:44:0;;;11910:21:1;11967:2;11947:18;;;11940:30;12006:17;11986:18;;;11979:45;12041:18;;21526:44:0;11726:339:1;21526:44:0;-1:-1:-1;;;;;21593:14:0;;;;;;:8;:14;;;;;;-1:-1:-1;;;;;21593:14:0;21583:24;;;21575:55;;;;-1:-1:-1;;;21575:55:0;;12272:2:1;21575:55:0;;;12254:21:1;12311:2;12291:18;;;12284:30;12350:20;12330:18;;;12323:48;12388:18;;21575:55:0;12070:342:1;21575:55:0;-1:-1:-1;;;;;21653:13:0;;;;;;:7;:13;;;;;;;;21667:10;21653:25;;;;;;;;-1:-1:-1;;;;;21653:25:0;21643:35;;;21635:66;;;;-1:-1:-1;;;21635:66:0;;12619:2:1;21635:66:0;;;12601:21:1;12658:2;12638:18;;;12631:30;12697:20;12677:18;;;12670:48;12735:18;;21635:66:0;12417:342:1;21635:66:0;-1:-1:-1;;;;;21734:13:0;;;;;;:7;:13;;;;;;;;21748:10;21734:25;;;;;;;;:42;;21769:6;;-1:-1:-1;;;;;21734:25:0;:42;:::i;:::-;-1:-1:-1;;;;;21706:13:0;;;;;;:7;:13;;;;;;;;21720:10;21706:25;;;;;;;:70;;-1:-1:-1;;21706:70:0;-1:-1:-1;;;;;21706:70:0;;;;;;;;;;21781:35;21791:2;21706:13;21808:6;21781:9;:35::i;:::-;21841:4;-1:-1:-1;;;;;21827:19:0;;;21823:60;;21852:31;21871:6;21880:2;21852:11;:31::i;:::-;-1:-1:-1;21895:4:0;21421:483;;;;;:::o;8892:419::-;8990:11;;8975:10;8990:11;8966:20;;;:8;:20;;;;;;-1:-1:-1;;;;;8990:11:0;;;8966:20;;:35;;8958:85;;;;-1:-1:-1;;;8958:85:0;;12966:2:1;8958:85:0;;;12948:21:1;13005:2;12985:18;;;12978:30;13044:34;13024:18;;;13017:62;13115:7;13095:18;;;13088:35;13140:19;;8958:85:0;12764:401:1;8958:85:0;9108:11;;-1:-1:-1;;;;;9108:11:0;9124:42;9142:4;9149:10;9108:11;9124:9;:42::i;:::-;9207:20;9219:4;9225:1;9207:11;:20::i;:::-;9261:10;-1:-1:-1;;;;;9239:48:0;;9273:7;;9282:4;9239:48;;;;;;;;:::i;:::-;;;;;;;;8953:358;8892:419;;:::o;5332:1278::-;5426:10;;-1:-1:-1;;;;;5426:10:0;5418:35;5410:90;;;;-1:-1:-1;;;5410:90:0;;14049:2:1;5410:90:0;;;14031:21:1;14088:2;14068:18;;;14061:30;14127:34;14107:18;;;14100:62;14198:12;14178:18;;;14171:40;14228:19;;5410:90:0;13847:406:1;5410:90:0;5505:11;:54;;;;;-1:-1:-1;;;;;5505:54:0;;;;;;;;;;;;;5564:10;:38;;-1:-1:-1;;5564:38:0;;;;;;;;;;5613:31;5609:957;;5694:68;5718:42;5694:15;:68::i;:::-;5768;5792:42;5768:15;:68::i;:::-;5842;5866:42;5842:15;:68::i;:::-;5916;5940:42;5916:15;:68::i;:::-;5990;6014:42;5990:15;:68::i;:::-;6064;6088:42;6064:15;:68::i;:::-;6163:11;;:38;;;;;-1:-1:-1;;;;;3167:55:1;;;6163:38:0;;;3149:74:1;6140:13:0;;6163:11;;;;;:21;;3122:18:1;;6163:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6140:62;-1:-1:-1;;;;;;6212:10:0;;;6208:243;;6248:4;6231:23;;;;:8;:23;;;;;;;;:32;;-1:-1:-1;;6231:32:0;-1:-1:-1;;;;;6231:32:0;;;;;;;;6275:43;;158:50:1;;;6275:43:0;;131:18:1;6275:43:0;;;;;;;6342:6;6325:13;;:23;;;;;;;;;;-1:-1:-1;;;;;6325:23:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;6325:23:0;;;;;-1:-1:-1;;;;;6325:23:0;;;;;;6355:8;6375:1;6366:6;:10;;;;:::i;:::-;6355:21;-1:-1:-1;6404:10:0;6355:21;6404:6;:10;:::i;:::-;6383:17;:31;;:17;;:31;;;;-1:-1:-1;;;6383:31:0;;-1:-1:-1;;;;;6383:31:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;6383:31:0;;;;;-1:-1:-1;;;;;6383:31:0;;;;;;6443:1;6421:18;;:23;;;;;;;;;;-1:-1:-1;;;;;6421:23:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;6421:23:0;;;;;-1:-1:-1;;;;;6421:23:0;;;;;;6224:227;6208:243;5646:810;5609:957;;;6491:12;;;6477:10;6491:12;6468:20;;;:8;:20;;;;;;;;:35;;-1:-1:-1;;6468:35:0;-1:-1:-1;;;;;6491:12:0;;;6468:35;;;6547:12;;6514:46;;6547:12;;;;158:50:1;;6477:10:0;;6491:12;;6514:46;;131:18:1;6514:46:0;;;;;;;5609:957;6591:13;;6572:33;;6578:26;;6591:13;;;-1:-1:-1;;;;;6591:13:0;6578:10;:26;:::i;:::-;-1:-1:-1;;;;;6572:33:0;:5;:33::i;15270:1191::-;15354:16;;:21;15346:60;;;;-1:-1:-1;;;15346:60:0;;14880:2:1;15346:60:0;;;14862:21:1;14919:2;14899:18;;;14892:30;14958:28;14938:18;;;14931:56;15004:18;;15346:60:0;14678:350:1;15346:60:0;15456:13;;15444:25;;15456:13;;;-1:-1:-1;;;;;15456:13:0;15444:9;:25;:::i;:::-;15429:10;15419:21;;;;:9;:21;;;;;;-1:-1:-1;;;;;15419:50:0;;;:21;;:50;;15411:127;;;;;-1:-1:-1;;;15411:127:0;;15235:2:1;15411:127:0;;;15217:21:1;15254:18;;;15247:30;;;;15313:34;15293:18;;;15286:62;15384:34;15364:18;;;15357:62;15436:19;;15411:127:0;15033:428:1;15411:127:0;15571:10;15551:31;;;;:19;:31;;;;;;15585:12;-1:-1:-1;15543:92:0;;;;-1:-1:-1;;;15543:92:0;;15668:2:1;15543:92:0;;;15650:21:1;15707:2;15687:18;;;15680:30;15746:34;15726:18;;;15719:62;15817:3;15797:18;;;15790:31;15838:19;;15543:92:0;15466:397:1;15543:92:0;-1:-1:-1;;;;;15648:21:0;;15640:57;;;;-1:-1:-1;;;15640:57:0;;16070:2:1;15640:57:0;;;16052:21:1;16109:2;16089:18;;;16082:30;16148:25;16128:18;;;16121:53;16191:18;;15640:57:0;15868:347:1;15640:57:0;16082:29;:12;16098;16082:29;:::i;:::-;16068:10;16048:31;;;;:19;:31;;;;;;;;;:63;;;;16130:35;;;;;;;-1:-1:-1;;;;;16130:35:0;;;;;;;;;;;;;;;;;;;;;;;;16116:8;;16130:35;;;;;;16147:11;;;;;;16130:35;;16147:11;;;;16130:35;;;;;;;;-1:-1:-1;16130:35:0;;;-1:-1:-1;;;16130:35:0;;;;;;;;;;;;;;16116:50;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16116:50:0;-1:-1:-1;;;;;16116:50:0;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16116:50:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16116:50:0;-1:-1:-1;;;;;16116:50:0;;;;;;;;;16189:17;;16178:63;;-1:-1:-1;;;;;16178:63:0;;;16208:10;;16178:63;;;;-1:-1:-1;;;16189:17:0;;;;;;16220:11;;;;16178:63;:::i;:::-;;;;;;;;16248:7;:14;;;;;;-1:-1:-1;16248:14:0;16271:8;:15;16290:2;16271:21;16267:190;;16314:53;;;;;;;;-1:-1:-1;16314:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16300:8;:68;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16300:68:0;-1:-1:-1;;;;;16300:68:0;;;;;;;;;;;16314:53;;16300:68;;;;;;;;;;:::i;:::-;-1:-1:-1;16300:68:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16300:68:0;-1:-1:-1;;;;;16300:68:0;;;;;;;;;16374:7;:14;;-1:-1:-1;16374:14:0;;;-1:-1:-1;16374:14:0;;;16413:12;16394:16;:31;16436:15;;;;-1:-1:-1;16436:15:0;16267:190;15270:1191;;;:::o;22514:240::-;22580:10;22571:20;;;;:8;:20;;;;;;-1:-1:-1;;;;;22571:20:0;:30;-1:-1:-1;22571:30:0;22563:62;;;;-1:-1:-1;;;22563:62:0;;7714:2:1;22563:62:0;;;7696:21:1;7753:2;7733:18;;;7726:30;7792:21;7772:18;;;7765:49;7831:18;;22563:62:0;7512:343:1;22563:62:0;22657:6;22669:46;22687:4;22694:10;22657:6;22669:9;:46::i;:::-;22741:8;22720:17;;:29;;;;;;;;;;-1:-1:-1;;;;;22720:29:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;22720:29:0;;;;;-1:-1:-1;;;;;22720:29:0;;;;;;22558:196;22514:240;:::o;22759:392::-;22826:10;22817:20;;;;:8;:20;;;;;;-1:-1:-1;;;;;22817:20:0;:30;-1:-1:-1;22817:30:0;22809:62;;;;-1:-1:-1;;;22809:62:0;;7714:2:1;22809:62:0;;;7696:21:1;7753:2;7733:18;;;7726:30;7792:21;7772:18;;;7765:49;7831:18;;22809:62:0;7512:343:1;22809:62:0;22903:6;22878:15;22937:14;22948:3;22903:6;22937:14;:::i;:::-;22915:36;-1:-1:-1;22956:18:0;22977:23;22915:36;22977:8;:23;:::i;:::-;22956:44;;23005:49;23023:4;23030:10;23042:11;23005:9;:49::i;:::-;23059;23077:3;23083:10;23095:12;23059:9;:49::i;:::-;23113:18;:33;;23135:11;;23113:18;;;:33;;23135:11;;-1:-1:-1;;;;;23113:33:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;23113:33:0;;;;;-1:-1:-1;;;;;23113:33:0;;;;;;22804:347;;;22759:392;:::o;4664:20::-;;;;;;;:::i;7129:1642::-;7298:18;;:25;;7319:4;7298:25;:::i;:::-;7282:12;:41;;7274:97;;;;-1:-1:-1;;;7274:97:0;;19252:2:1;7274:97:0;;;19234:21:1;19291:2;19271:18;;;19264:30;19330:34;19310:18;;;19303:62;19401:13;19381:18;;;19374:41;19432:19;;7274:97:0;19050:407:1;7274:97:0;7408:14;;7393:10;7408:14;7384:20;;;:8;:20;;;;;;-1:-1:-1;;;;;7408:14:0;;;7384:20;;:38;;7376:94;;;;-1:-1:-1;;;7376:94:0;;19664:2:1;7376:94:0;;;19646:21:1;19703:2;19683:18;;;19676:30;19742:34;19722:18;;;19715:62;19813:13;19793:18;;;19786:41;19844:19;;7376:94:0;19462:407:1;7376:94:0;7544:10;;:35;;;;;7515:26;;-1:-1:-1;;;;;7544:10:0;;:26;;:35;;7571:7;;;;7544:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7544:35:0;;;;;;;;;;;;:::i;:::-;7515:64;;7685:1;7661:12;7655:26;:31;;7647:99;;;;-1:-1:-1;;;7647:99:0;;21386:2:1;7647:99:0;;;21368:21:1;21425:2;21405:18;;;21398:30;21464:34;21444:18;;;21437:62;21535:25;21515:18;;;21508:53;21578:19;;7647:99:0;21184:419:1;7647:99:0;7789:2;7765:12;7759:26;:32;;7751:79;;;;-1:-1:-1;;;7751:79:0;;21810:2:1;7751:79:0;;;21792:21:1;21849:2;21829:18;;;21822:30;21888:34;21868:18;;;21861:62;21959:4;21939:18;;;21932:32;21981:19;;7751:79:0;21608:398:1;7751:79:0;8120:14;;-1:-1:-1;;;;;8120:14:0;8139:42;8157:4;8164:10;8120:14;8139:9;:42::i;:::-;8222:20;8234:4;8240:1;8222:11;:20::i;:::-;8291:10;;:36;;;;;-1:-1:-1;;;;;8291:10:0;;;;:22;;:36;;8314:12;;8291:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8290:37;8282:86;;;;-1:-1:-1;;;8282:86:0;;22463:2:1;8282:86:0;;;22445:21:1;22502:2;22482:18;;;22475:30;22541:34;22521:18;;;22514:62;22612:6;22592:18;;;22585:34;22636:19;;8282:86:0;22261:400:1;8282:86:0;8406:4;:19;8413:12;8406:4;:19;:::i;:::-;-1:-1:-1;8515:3:0;8492:19;-1:-1:-1;;;;;8492:13:0;;8508:3;8492:19;:::i;:::-;8491:27;;;;:::i;:::-;8535:12;;8477:42;;-1:-1:-1;8535:16:0;;8550:1;;-1:-1:-1;;;;;8535:12:0;:16;:::i;:::-;-1:-1:-1;;;;;8528:23:0;:4;-1:-1:-1;;;;;8528:23:0;;8524:101;;;8574:12;;:16;;8589:1;;-1:-1:-1;;;;;8574:12:0;:16;:::i;:::-;8557:14;:33;;-1:-1:-1;;8557:33:0;-1:-1:-1;;;;;8557:33:0;;;;;;;;;;8524:101;;;8604:14;:21;;-1:-1:-1;;8604:21:0;-1:-1:-1;;;;;8604:21:0;;;;;8524:101;8653:12;8632:18;:33;8677:51;;8697:10;;8677:51;;;;8709:12;;8723:4;;8677:51;:::i;:::-;;;;;;;;7185:1586;;7129:1642;;:::o;11243:446::-;11302:10;11291:22;;;;:10;:22;;;;;;:27;11283:64;;;;-1:-1:-1;;;11283:64:0;;23485:2:1;11283:64:0;;;23467:21:1;23524:2;23504:18;;;23497:30;23563:26;23543:18;;;23536:54;23607:18;;11283:64:0;23283:348:1;11283:64:0;11369:10;11360:20;;;;:8;:20;;;;;;-1:-1:-1;;;;;11360:20:0;:30;-1:-1:-1;11360:30:0;11352:62;;;;-1:-1:-1;;;11352:62:0;;7714:2:1;11352:62:0;;;7696:21:1;7753:2;7733:18;;;7726:30;7792:21;7772:18;;;7765:49;7831:18;;11352:62:0;7512:343:1;11352:62:0;11441:13;;11436:18;;11441:13;;;-1:-1:-1;;;;;11441:13:0;11436:2;:18;:::i;:::-;-1:-1:-1;;;;;11427:27:0;:6;:27;11419:68;;;;-1:-1:-1;;;11419:68:0;;23838:2:1;11419:68:0;;;23820:21:1;23877:2;23857:18;;;23850:30;23916;23896:18;;;23889:58;23964:18;;11419:68:0;23636:352:1;11419:68:0;11517:6;11529:44;11547:4;11554:10;11517:6;11529:9;:44::i;:::-;11598:6;11578:16;;:26;;;;;;;;;;-1:-1:-1;;;;;11578:26:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;11578:26:0;;;;;;;;;;;;;;;11621:10;-1:-1:-1;11611:21:0;;;:9;:21;;;;;:31;;11636:6;;-1:-1:-1;11611:21:0;;:31;;11636:6;;11611:31;;:::i;:::-;;;-1:-1:-1;;;;;11611:31:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11658:10:0;-1:-1:-1;11647:22:0;;;:10;:22;;;;;11672:12;11647:37;;-1:-1:-1;11243:446:0:o;20876:331::-;20944:12;-1:-1:-1;;;;;20971:14:0;;20963:42;;;;-1:-1:-1;;;20963:42:0;;11928:2:1;20963:42:0;;;11910:21:1;11967:2;11947:18;;;11940:30;12006:17;11986:18;;;11979:45;12041:18;;20963:42:0;11726:339:1;20963:42:0;21035:10;21026:20;;;;:8;:20;;;;;;-1:-1:-1;;;;;21026:20:0;21018:28;;;21010:59;;;;-1:-1:-1;;;21010:59:0;;12272:2:1;21010:59:0;;;12254:21:1;12311:2;12291:18;;;12284:30;12350:20;12330:18;;;12323:48;12388:18;;21010:59:0;12070:342:1;21010:59:0;21076:41;21086:2;21090:10;21109:6;21076:9;:41::i;:::-;21142:4;-1:-1:-1;;;;;21128:19:0;;;21124:60;;21153:31;21172:6;21181:2;21153:11;:31::i;:::-;-1:-1:-1;21198:4:0;20876:331;;;;:::o;11694:1192::-;11887:10;11797:15;11876:22;;;:10;:22;;;;;;11797:15;;11902:5;;11861:37;;:12;:37;:::i;:::-;11860:47;;;;:::i;:::-;11836:72;;11913:75;11920:11;;;;11913:75;;11983:4;11962:17;11971:8;11962:6;:17;:::i;:::-;11961:26;;;;:::i;:::-;11948:40;;;;:::i;:::-;;-1:-1:-1;11933:9:0;;;;:::i;:::-;;;;11913:75;;;12111:2;12092:16;;:21;;12111:2;12092:16;;;-1:-1:-1;;;;;12092:16:0;:21;:::i;:::-;12070:18;;-1:-1:-1;;;;;12070:44:0;;;:18;;:44;:62;;;;;12118:14;12070:62;12066:816;;;12489:2;12470:16;;12435:10;;12470:21;;:16;;;-1:-1:-1;;;;;12470:16:0;:21;:::i;:::-;12448:18;;:44;;;-1:-1:-1;;;;;12448:18:0;:44;:::i;:::-;12536:16;;-1:-1:-1;;;;;12435:57:0;;;;-1:-1:-1;12555:2:0;;12536:16;;;;;;;12518:14;;;;12435:57;12518:14;:::i;:::-;12517:35;;;;:::i;:::-;:40;;;;:::i;:::-;12498:60;;;;:::i;:::-;;;12134:430;12066:816;;;12585:18;;-1:-1:-1;;;;;12585:18:0;;;12574:29;;;;12570:312;;;12689:14;12681:122;;;;-1:-1:-1;;;12681:122:0;;24578:2:1;12681:122:0;;;24560:21:1;24617:2;24597:18;;;24590:30;24656:34;24636:18;;;24629:62;24727:34;24707:18;;;24700:62;24799:33;24778:19;;;24771:62;24850:19;;12681:122:0;24376:499:1;12681:122:0;12858:18;;-1:-1:-1;;;;;12858:18:0;;-1:-1:-1;12570:312:0;11814:1072;11694:1192;;;;;:::o;16502:1605::-;16592:1;16573:16;;:20;16565:53;;;;-1:-1:-1;;;16565:53:0;;9844:2:1;16565:53:0;;;9826:21:1;9883:2;9863:18;;;9856:30;9922:22;9902:18;;;9895:50;9962:18;;16565:53:0;9642:344:1;16565:53:0;16646:8;:15;:19;;16664:1;16646:19;:::i;:::-;16631:12;:34;16623:68;;;;-1:-1:-1;;;16623:68:0;;25082:2:1;16623:68:0;;;25064:21:1;25121:2;25101:18;;;25094:30;25160:23;25140:18;;;25133:51;25201:18;;16623:68:0;24880:345:1;16623:68:0;16716:1;16704:9;-1:-1:-1;;;;;16704:13:0;;16696:62;;;;-1:-1:-1;;;16696:62:0;;25432:2:1;16696:62:0;;;25414:21:1;25471:2;25451:18;;;25444:30;25510:34;25490:18;;;25483:62;25581:6;25561:18;;;25554:34;25605:19;;16696:62:0;25230:400:1;16696:62:0;16780:10;16771:20;;;;:8;:20;;;;;;-1:-1:-1;;;;;16771:33:0;;;:20;;:33;;16763:66;;;;-1:-1:-1;;;16763:66:0;;25837:2:1;16763:66:0;;;25819:21:1;25876:2;25856:18;;;25849:30;25915:22;25895:18;;;25888:50;25955:18;;16763:66:0;25635:344:1;16763:66:0;16850:17;;-1:-1:-1;;;16850:17:0;;;;16842:26;;;;:7;:26;;;;;;;;16869:10;16842:38;;;;;;;;-1:-1:-1;;;;;16842:38:0;:43;16834:96;;;;-1:-1:-1;;;16834:96:0;;26186:2:1;16834:96:0;;;26168:21:1;26225:2;26205:18;;;26198:30;26264:34;26244:18;;;26237:62;26335:10;26315:18;;;26308:38;26363:19;;16834:96:0;25984:404:1;16834:96:0;17088:15;17133:5;17107:22;17124:5;17107:14;:22;:::i;:::-;17106:32;;;;:::i;:::-;17088:50;;17178:10;17147:7;17155:12;17147:21;;;;;;;;:::i;:::-;;;;;;;;;;:28;:41;:108;;;;;17226:7;17234:12;17226:21;;;;;;;;:::i;:::-;;;;;;;;;;:28;17210:13;;17205:18;;17210:13;;;-1:-1:-1;;;;;17210:13:0;17205:2;:18;:::i;:::-;-1:-1:-1;;;;;17205:49:0;;;;;:::i;:::-;17192:9;-1:-1:-1;;;;;17192:63:0;;17147:108;17143:659;;;17297:7;17305:12;17297:21;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;-1:-1:-1;;17297:38:0;17324:10;17297:38;;;;;;17387:20;;:8;:20;;;;;:33;;17411:9;;17297:21;17387:33;;17411:9;;-1:-1:-1;;;;;17387:33:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;17387:33:0;;;;;-1:-1:-1;;;;;17387:33:0;;;;;;17460:3;-1:-1:-1;;;;;17431:45:0;17440:10;-1:-1:-1;;;;;17431:45:0;;17466:9;17431:45;;;;;-1:-1:-1;;;;;176:31:1;;;;158:50;;146:2;131:18;;14:200;17431:45:0;;;;;;;;17499:9;17482:13;;:26;;;;;;;;;;-1:-1:-1;;;;;17482:26:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;17482:26:0;;;;;-1:-1:-1;;;;;17482:26:0;;;;;;17530:9;17514:12;;:25;;;;;;;;;;-1:-1:-1;;;;;17514:25:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;17514:25:0;;;;;-1:-1:-1;;;;;17514:25:0;;;;;;17634:9;17592:8;17601:12;17592:22;;;;;;;;:::i;:::-;;;;;;;;:38;:22;;;;;:38;:51;;:38;;:22;:51;;;;-1:-1:-1;;;;;17592:51:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;17592:51:0;;;;;-1:-1:-1;;;;;17592:51:0;;;;;;17143:659;;;17770:26;17779:9;-1:-1:-1;;;;;17770:26:0;17790:5;17770:8;:26::i;:::-;17933:13;;17904:10;;:26;;;;;-1:-1:-1;;;;;176:31:1;;;17904:26:0;;;158:50:1;17889:12:0;;17933:13;;;;;-1:-1:-1;;;;;17904:10:0;;:15;;131:18:1;;17904:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;;;;;:::i;:::-;17959:17;;-1:-1:-1;;;17959:17:0;;;;17951:26;;;;:7;:26;;;;;;;;17978:10;17951:38;;;;;;;:50;;-1:-1:-1;;17951:50:0;-1:-1:-1;;;;;17951:50:0;;;;;;;;;;18006:8;:22;;17889:57;;-1:-1:-1;18006:37:0;;;;18015:12;;18006:22;;;;;;:::i;:::-;;;;;;;;;;;:28;;;:37;;;;;;;:::i;:::-;;;;-1:-1:-1;;18055:47:0;;;26851:25:1;;;-1:-1:-1;;;;;26912:31:1;;26907:2;26892:18;;26885:59;18066:10:0;;18055:47;;26824:18:1;18055:47:0;26678:272:1;14747:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14747:25:0;;;;-1:-1:-1;14747:25:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;14747:25:0;;;;;;;;;;;;-1:-1:-1;;;;;14747:25:0;;-1:-1:-1;14747:25:0;:::o;20062:477::-;20159:12;;20141:10;20159:12;20131:21;;;:9;:21;;;;;;-1:-1:-1;;;;;20159:12:0;;;;20131:25;;:21;20155:1;20131:25;:::i;:::-;-1:-1:-1;;;;;20131:40:0;;20123:128;;;;-1:-1:-1;;;20123:128:0;;27157:2:1;20123:128:0;;;27139:21:1;27196:2;27176:18;;;27169:30;27235:34;27215:18;;;27208:62;27306:34;27286:18;;;27279:62;27378:13;27357:19;;;27350:42;27409:19;;20123:128:0;26955:479:1;20123:128:0;20289:29;20305:12;20289;:29;:::i;:::-;20275:10;20264:22;;;;:10;:22;;;;;;:54;20256:123;;;;-1:-1:-1;;;20256:123:0;;27641:2:1;20256:123:0;;;27623:21:1;27680:2;27660:18;;;27653:30;27719:34;27699:18;;;27692:62;27790:26;27770:18;;;27763:54;27834:19;;20256:123:0;27439:420:1;20256:123:0;20394:52;;;;;28066:2:1;20394:52:0;;;28048:21:1;28105:2;28085:18;;;28078:30;28144:13;28124:18;;;28117:41;-1:-1:-1;;;;;20394:37:0;;;;;28175:18:1;;20394:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20392:55;20384:105;;;;-1:-1:-1;;;20384:105:0;;28406:2:1;20384:105:0;;;28388:21:1;28445:2;28425:18;;;28418:30;28484:34;28464:18;;;28457:62;28555:7;28535:18;;;28528:35;28580:19;;20384:105:0;28204:401:1;20384:105:0;20496:10;:38;;-1:-1:-1;;20496:38:0;-1:-1:-1;;;;;20496:38:0;;;;;;;;;;20062:477::o;21948:409::-;-1:-1:-1;;;;;22028:18:0;;22024:119;;22071:6;22054:13;;:23;;;;;;;;;;-1:-1:-1;;;;;22054:23:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;22054:23:0;;;;;-1:-1:-1;;;;;22054:23:0;;;;;;22099:6;22083:12;;:22;;;;;;;;;;-1:-1:-1;;;;;22083:22:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;22083:22:0;;;;;-1:-1:-1;;;;;22083:22:0;;;;;;22024:119;;;-1:-1:-1;;;;;22121:12:0;;;;;;:8;:12;;;;;:22;;22137:6;;22121:12;:22;;22137:6;;-1:-1:-1;;;;;22121:22:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;22121:22:0;;;;;-1:-1:-1;;;;;22121:22:0;;;;;;22024:119;-1:-1:-1;;;;;22148:14:0;;;;;;:8;:14;;;;;:24;;22166:6;;22148:14;:24;;22166:6;;-1:-1:-1;;;;;22148:24:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;22148:24:0;;;;;-1:-1:-1;;;;;22148:24:0;;;;;;22199:2;-1:-1:-1;;;;;22184:26:0;22193:4;-1:-1:-1;;;;;22184:26:0;;22203:6;22184:26;;;;;-1:-1:-1;;;;;176:31:1;;;;158:50;;146:2;131:18;;14:200;22184:26:0;;;;;;;;22235:4;-1:-1:-1;;;;;22221:19:0;;;22217:52;;22263:6;22246:13;;:23;;;;;;;;;;-1:-1:-1;;;;;22246:23:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;22246:23:0;;;;;-1:-1:-1;;;;;22246:23:0;;;;;;22217:52;-1:-1:-1;;;;;22278:21:0;;22294:4;22278:21;:43;;;;-1:-1:-1;;;;;;22303:18:0;;;;22278:43;22274:76;;;22344:6;22327:13;;:23;;;;;;;;;;-1:-1:-1;;;;;22327:23:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;22327:23:0;;;;;-1:-1:-1;;;;;22327:23:0;;;;;;21948:409;;;:::o;9390:1660::-;9454:16;9473:14;9482:5;9473:6;:14;:::i;:::-;9454:33;-1:-1:-1;9513:18:0;9454:33;9513:6;:18;:::i;:::-;9492:17;:39;;:17;;:39;;;;-1:-1:-1;;;9492:39:0;;-1:-1:-1;;;;;9492:39:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;9492:39:0;;;;;-1:-1:-1;;;;;9492:39:0;;;;;;9558:9;9536:18;;:31;;;;;;;;;;-1:-1:-1;;;;;9536:31:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;9536:31:0;;;;;;;;;;;;;;;9634:16;;9625:4;-1:-1:-1;9608:23:0;;;:8;:23;;;;;;-1:-1:-1;;;9608:42:0;;9634:16;;;;;;;9608:23;:42;:::i;:::-;9757:18;;9574:76;;-1:-1:-1;9711:17:0;;9574:76;;9737:38;;-1:-1:-1;;;;;9757:18:0;;;;-1:-1:-1;;;9737:17:0;;;:38;:::i;:::-;9731:79;;;;:::i;:::-;9711:99;;9839:13;;;;;;;;;-1:-1:-1;;;;;9839:13:0;9819:34;;:11;:34;;;9815:1231;;;9866:60;;;29069:1:1;29058:21;;;29040:40;;-1:-1:-1;;;;;29116:31:1;;29111:2;29096:18;;29089:59;9866:60:0;;29013:18:1;9866:60:0;;;;;;;10086:4;10069:23;;;;:8;:23;;;;;;10048:18;;-1:-1:-1;;;;;10069:23:0;;;10048:18;;:44;10044:104;;;10120:28;10147:1;10120:24;:28;:::i;:::-;10099:18;:49;;-1:-1:-1;;10099:49:0;-1:-1:-1;;;;;10099:49:0;;;;;;;;;;10044:104;10195:4;10178:23;;;;:8;:23;;;;;;10158:17;;-1:-1:-1;;;;;10178:23:0;;;-1:-1:-1;;;10158:17:0;;;;;;:43;10154:119;;;10255:18;;10228:45;;-1:-1:-1;;;;;10255:18:0;10228:24;:45;:::i;:::-;10208:17;;:65;;;;;-1:-1:-1;;;;;10208:65:0;;;;;-1:-1:-1;;;;;10208:65:0;;;;;;10154:119;10444:16;;10435:4;10418:23;;;;:8;:23;;;;;;:42;;-1:-1:-1;;;;;10444:16:0;;;;;;;10418:23;:42;:::i;:::-;10506:18;;10391:69;;-1:-1:-1;10391:69:0;;10486:38;;-1:-1:-1;;;;;10506:18:0;;;;-1:-1:-1;;;10486:17:0;;;:38;:::i;:::-;10480:79;;;;:::i;:::-;10619:16;;10466:93;;-1:-1:-1;;;;;;10619:16:0;;;;;;10570:40;;10466:93;;10570:18;:40;:::i;:::-;10569:47;;10614:2;10569:47;:::i;:::-;-1:-1:-1;;;;;10569:66:0;;10565:174;;;10670:11;10642:17;;:40;;;;;;;;;;-1:-1:-1;;;;;10642:40:0;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;10642:40:0;;;;;-1:-1:-1;;;;;10642:40:0;;;;;;9815:1231;;10565:174;10698:18;:41;;10727:11;;10698:18;;;:41;;10727:11;;-1:-1:-1;;;;;10698:41:0;;:::i;9815:1231::-;10778:13;;10771:21;;10778:13;;;-1:-1:-1;;;;;10778:13:0;10771:21;:::i;:::-;10757:35;;:11;:35;;;10753:293;;;10805:60;;;29069:1:1;29058:21;;;29040:40;;-1:-1:-1;;;;;29116:31:1;;29111:2;29096:18;;29089:59;10805:60:0;;29013:18:1;10805:60:0;;;;;;;10943:1;10927:12;10928:11;10927:12;:::i;:::-;10920:24;;;;:::i;:::-;10950:18;:31;;10908:36;;-1:-1:-1;10908:36:0;;10950:18;;:31;;10908:36;;-1:-1:-1;;;;;10950:31:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;10950:31:0;;;;;-1:-1:-1;;;;;10950:31:0;;;;;;11031:9;11016:11;11015:12;;;:::i;:::-;11008:32;;;;:::i;:::-;10987:17;:53;;:17;;:53;;;;-1:-1:-1;;;10987:53:0;;-1:-1:-1;;;;;10987:53:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;10987:53:0;;;;;-1:-1:-1;;;;;10987:53:0;;;;;;10753:293;9449:1601;;;9390:1660;;:::o;6615:327::-;6785:11;;:29;;;;;-1:-1:-1;;;;;3167:55:1;;;6785:29:0;;;3149:74:1;6758:17:0;;6785:11;;;;;:21;;3122:18:1;;6785:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;;6817:3;6785:35;:::i;:::-;6758:63;-1:-1:-1;;;;;;6830:14:0;;;6826:112;;-1:-1:-1;;;;;6852:16:0;;;;;;:8;:16;;;;;;;;:29;;-1:-1:-1;;6852:29:0;-1:-1:-1;;;;;6852:29:0;;;;;;;;6892:40;;158:50:1;;;6892:40:0;;131:18:1;6892:40:0;;;;;;;6665:277;6615:327;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;219:348:1;261:3;299:5;293:12;326:6;321:3;314:19;382:6;375:4;368:5;364:16;357:4;352:3;348:14;342:47;434:1;427:4;418:6;413:3;409:16;405:27;398:38;556:4;-1:-1:-1;;481:2:1;473:6;469:15;465:88;460:3;456:98;452:109;445:116;;;219:348;;;;:::o;572:220::-;721:2;710:9;703:21;684:4;741:45;782:2;771:9;767:18;759:6;741:45;:::i;:::-;733:53;572:220;-1:-1:-1;;;572:220:1:o;797:118::-;883:5;876:13;869:21;862:5;859:32;849:60;;905:1;902;895:12;920:361;985:6;993;1046:2;1034:9;1025:7;1021:23;1017:32;1014:52;;;1062:1;1059;1052:12;1014:52;1107:23;;;-1:-1:-1;1206:2:1;1191:18;;1178:32;1219:30;1178:32;1219:30;:::i;:::-;1268:7;1258:17;;;920:361;;;;;:::o;1286:241::-;1342:6;1395:2;1383:9;1374:7;1370:23;1366:32;1363:52;;;1411:1;1408;1401:12;1363:52;1450:9;1437:23;1469:28;1491:5;1469:28;:::i;1532:196::-;1600:20;;-1:-1:-1;;;;;1649:54:1;;1639:65;;1629:93;;1718:1;1715;1708:12;1629:93;1532:196;;;:::o;1733:300::-;1801:6;1809;1862:2;1850:9;1841:7;1837:23;1833:32;1830:52;;;1878:1;1875;1868:12;1830:52;1901:29;1920:9;1901:29;:::i;:::-;1891:39;1999:2;1984:18;;;;1971:32;;-1:-1:-1;;;1733:300:1:o;2412:374::-;2489:6;2497;2505;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2597:29;2616:9;2597:29;:::i;:::-;2587:39;;2645:38;2679:2;2668:9;2664:18;2645:38;:::i;:::-;2412:374;;2635:48;;-1:-1:-1;;;2752:2:1;2737:18;;;;2724:32;;2412:374::o;2791:186::-;2850:6;2903:2;2891:9;2882:7;2878:23;2874:32;2871:52;;;2919:1;2916;2909:12;2871:52;2942:29;2961:9;2942:29;:::i;3423:348::-;3475:8;3485:6;3539:3;3532:4;3524:6;3520:17;3516:27;3506:55;;3557:1;3554;3547:12;3506:55;-1:-1:-1;3580:20:1;;-1:-1:-1;;;;;3612:30:1;;3609:50;;;3655:1;3652;3645:12;3609:50;3692:4;3684:6;3680:17;3668:29;;3744:3;3737:4;3728:6;3720;3716:19;3712:30;3709:39;3706:59;;;3761:1;3758;3751:12;3706:59;3423:348;;;;;:::o;3776:411::-;3847:6;3855;3908:2;3896:9;3887:7;3883:23;3879:32;3876:52;;;3924:1;3921;3914:12;3876:52;3964:9;3951:23;-1:-1:-1;;;;;3989:6:1;3986:30;3983:50;;;4029:1;4026;4019:12;3983:50;4068:59;4119:7;4110:6;4099:9;4095:22;4068:59;:::i;:::-;4146:8;;4042:85;;-1:-1:-1;3776:411:1;-1:-1:-1;;;;3776:411:1:o;4192:260::-;4260:6;4268;4321:2;4309:9;4300:7;4296:23;4292:32;4289:52;;;4337:1;4334;4327:12;4289:52;4360:29;4379:9;4360:29;:::i;:::-;4350:39;;4408:38;4442:2;4431:9;4427:18;4408:38;:::i;:::-;4398:48;;4192:260;;;;;:::o;4457:485::-;4537:6;4545;4553;4606:2;4594:9;4585:7;4581:23;4577:32;4574:52;;;4622:1;4619;4612:12;4574:52;4645:29;4664:9;4645:29;:::i;:::-;4635:39;;4725:2;4714:9;4710:18;4697:32;-1:-1:-1;;;;;4744:6:1;4741:30;4738:50;;;4784:1;4781;4774:12;4738:50;4823:59;4874:7;4865:6;4854:9;4850:22;4823:59;:::i;:::-;4457:485;;4901:8;;-1:-1:-1;4797:85:1;;-1:-1:-1;;;;4457:485:1:o;4947:226::-;5006:6;5059:2;5047:9;5038:7;5034:23;5030:32;5027:52;;;5075:1;5072;5065:12;5027:52;-1:-1:-1;5120:23:1;;4947:226;-1:-1:-1;4947:226:1:o;5375:171::-;5442:20;;-1:-1:-1;;;;;5491:30:1;;5481:41;;5471:69;;5536:1;5533;5526:12;5551:448;5621:6;5629;5637;5690:2;5678:9;5669:7;5665:23;5661:32;5658:52;;;5706:1;5703;5696:12;5658:52;5729:28;5747:9;5729:28;:::i;:::-;5719:38;;5807:2;5796:9;5792:18;5779:32;5820:28;5842:5;5820:28;:::i;:::-;5867:5;-1:-1:-1;5924:2:1;5909:18;;5896:32;5937:30;5896:32;5937:30;:::i;:::-;5986:7;5976:17;;;5551:448;;;;;:::o;6255:298::-;6322:6;6330;6383:2;6371:9;6362:7;6358:23;6354:32;6351:52;;;6399:1;6396;6389:12;6351:52;6444:23;;;-1:-1:-1;6510:37:1;6543:2;6528:18;;6510:37;:::i;6558:507::-;-1:-1:-1;;;;;6793:6:1;6789:55;6778:9;6771:74;6881:3;6876:2;6865:9;6861:18;6854:31;6752:4;6902:46;6943:3;6932:9;6928:19;6920:6;6902:46;:::i;:::-;6894:54;;6984:6;6979:2;6968:9;6964:18;6957:34;-1:-1:-1;;;;;7031:6:1;7027:31;7022:2;7011:9;7007:18;7000:59;6558:507;;;;;;;:::o;7070:437::-;7149:1;7145:12;;;;7192;;;7213:61;;7267:4;7259:6;7255:17;7245:27;;7213:61;7320:2;7312:6;7309:14;7289:18;7286:38;7283:218;;-1:-1:-1;;;7354:1:1;7347:88;7458:4;7455:1;7448:15;7486:4;7483:1;7476:15;7283:218;;7070:437;;;:::o;7860:184::-;-1:-1:-1;;;7909:1:1;7902:88;8009:4;8006:1;7999:15;8033:4;8030:1;8023:15;8049:191;-1:-1:-1;;;;;8117:26:1;;;8145;;;8113:59;;8184:27;;8181:53;;;8214:18;;:::i;8245:194::-;-1:-1:-1;;;;;8343:26:1;;;8315;;;8311:59;;8382:28;;8379:54;;;8413:18;;:::i;8797:125::-;8862:9;;;8883:10;;;8880:36;;;8896:18;;:::i;9991:268::-;-1:-1:-1;;;;;10075:26:1;;;10103;;;10071:59;10150:36;;;;10205:24;;;10195:58;;10233:18;;:::i;:::-;10195:58;9991:268;;;;:::o;10750:184::-;-1:-1:-1;;;10799:1:1;10792:88;10899:4;10896:1;10889:15;10923:4;10920:1;10913:15;10939:184;-1:-1:-1;;;10988:1:1;10981:88;11088:4;11085:1;11078:15;11112:4;11109:1;11102:15;11128:194;11167:1;-1:-1:-1;;;;;11198:1:1;11194:26;11239:3;11229:37;;11246:18;;:::i;:::-;11312:3;-1:-1:-1;;;;;11288:1:1;11284:26;11280:36;11275:41;;;11128:194;;;;:::o;11533:188::-;11571:3;11615:10;11608:5;11604:22;11650:10;11641:7;11638:23;11635:49;;11664:18;;:::i;:::-;11713:1;11700:15;;11533:188;-1:-1:-1;;11533:188:1:o;13170:326::-;13259:6;13254:3;13247:19;13311:6;13304:5;13297:4;13292:3;13288:14;13275:43;;13363:1;13356:4;13347:6;13342:3;13338:16;13334:27;13327:38;13229:3;13485:4;-1:-1:-1;;13410:2:1;13402:6;13398:15;13394:88;13389:3;13385:98;13381:109;13374:116;;13170:326;;;;:::o;13501:341::-;13686:2;13675:9;13668:21;13649:4;13706:62;13764:2;13753:9;13749:18;13741:6;13733;13706:62;:::i;:::-;13698:70;;-1:-1:-1;;;;;13808:6:1;13804:31;13799:2;13788:9;13784:18;13777:59;13501:341;;;;;;:::o;14489:184::-;14559:6;14612:2;14600:9;14591:7;14587:23;14583:32;14580:52;;;14628:1;14625;14618:12;14580:52;-1:-1:-1;14651:16:1;;14489:184;-1:-1:-1;14489:184:1:o;16220:::-;-1:-1:-1;;;16269:1:1;16262:88;16369:4;16366:1;16359:15;16393:4;16390:1;16383:15;16535:518;16637:2;16632:3;16629:11;16626:421;;;16673:5;16670:1;16663:16;16717:4;16714:1;16704:18;16787:2;16775:10;16771:19;16768:1;16764:27;16758:4;16754:38;16823:4;16811:10;16808:20;16805:47;;;-1:-1:-1;16846:4:1;16805:47;16901:2;16896:3;16892:12;16889:1;16885:20;16879:4;16875:31;16865:41;;16956:81;16974:2;16967:5;16964:13;16956:81;;;17033:1;17019:16;;17000:1;16989:13;16956:81;;17289:1418;17415:3;17409:10;-1:-1:-1;;;;;17434:6:1;17431:30;17428:56;;;17464:18;;:::i;:::-;17493:97;17583:6;17543:38;17575:4;17569:11;17543:38;:::i;:::-;17537:4;17493:97;:::i;:::-;17639:4;17670:2;17659:14;;17687:1;17682:768;;;;18494:1;18511:6;18508:89;;;-1:-1:-1;18563:19:1;;;18557:26;18508:89;-1:-1:-1;;17186:1:1;17182:11;;;17178:84;17174:89;17164:100;17270:1;17266:11;;;17161:117;18610:81;;17652:1049;;17682:768;16482:1;16475:14;;;16519:4;16506:18;;-1:-1:-1;;17718:79:1;;;17895:222;17909:7;17906:1;17903:14;17895:222;;;17991:19;;;17985:26;17970:42;;18098:4;18083:20;;;;18051:1;18039:14;;;;17925:12;17895:222;;;17899:3;18145:6;18136:7;18133:19;18130:261;;;18206:19;;;18200:26;-1:-1:-1;;18289:1:1;18285:14;;;18301:3;18281:24;18277:97;18273:102;18258:118;18243:134;;18130:261;-1:-1:-1;;;;18437:1:1;18421:14;;;18417:22;18404:36;;-1:-1:-1;17289:1418:1:o;18712:333::-;18909:10;18901:6;18897:23;18886:9;18879:42;18957:2;18952;18941:9;18937:18;18930:30;18860:4;18977:62;19035:2;19024:9;19020:18;19012:6;19004;18977:62;:::i;:::-;18969:70;18712:333;-1:-1:-1;;;;;18712:333:1:o;19874:247::-;20033:2;20022:9;20015:21;19996:4;20053:62;20111:2;20100:9;20096:18;20088:6;20080;20053:62;:::i;:::-;20045:70;19874:247;-1:-1:-1;;;;19874:247:1:o;20126:1053::-;20206:6;20259:2;20247:9;20238:7;20234:23;20230:32;20227:52;;;20275:1;20272;20265:12;20227:52;20308:9;20302:16;-1:-1:-1;;;;;20333:6:1;20330:30;20327:50;;;20373:1;20370;20363:12;20327:50;20396:22;;20449:4;20441:13;;20437:27;-1:-1:-1;20427:55:1;;20478:1;20475;20468:12;20427:55;20511:2;20505:9;-1:-1:-1;;;;;20529:6:1;20526:30;20523:56;;;20559:18;;:::i;:::-;20608:2;20602:9;-1:-1:-1;;20750:2:1;-1:-1:-1;;20674:4:1;20666:6;20662:17;20658:90;20654:99;20650:172;20642:6;20638:185;20889:6;20877:10;20874:22;-1:-1:-1;;;;;20841:10:1;20838:34;20835:62;20832:88;;;20900:18;;:::i;:::-;20936:2;20929:22;20960;;;21001:15;;;21018:2;20997:24;20994:37;-1:-1:-1;20991:57:1;;;21044:1;21041;21034:12;20991:57;21093:6;21088:2;21084;21080:11;21075:2;21067:6;21063:15;21057:43;21146:1;21120:19;;;21141:2;21116:28;21109:39;;;;21124:6;20126:1053;-1:-1:-1;;;;20126:1053:1:o;22011:245::-;22078:6;22131:2;22119:9;22110:7;22106:23;22102:32;22099:52;;;22147:1;22144;22137:12;22099:52;22179:9;22173:16;22198:28;22220:5;22198:28;:::i;22666:168::-;22739:9;;;22770;;22787:15;;;22781:22;;22767:37;22757:71;;22808:18;;:::i;22839:120::-;22879:1;22905;22895:35;;22910:18;;:::i;:::-;-1:-1:-1;22944:9:1;;22839:120::o;22964:314::-;23139:2;23128:9;23121:21;23102:4;23159:45;23200:2;23189:9;23185:18;23177:6;23159:45;:::i;:::-;23151:53;;-1:-1:-1;;;;;23244:6:1;23240:31;23235:2;23224:9;23220:18;23213:59;22964:314;;;;;:::o;23993:128::-;24060:9;;;24081:11;;;24078:37;;;24095:18;;:::i;24126:245::-;24164:3;24208:10;24201:5;24197:22;24238:7;24228:41;;24249:18;;:::i;:::-;-1:-1:-1;;24285:80:1;;24126:245;-1:-1:-1;;24126:245:1:o;26393:280::-;26462:6;26515:2;26503:9;26494:7;26490:23;26486:32;26483:52;;;26531:1;26528;26521:12;26483:52;26563:9;26557:16;26613:10;26606:5;26602:22;26595:5;26592:33;26582:61;;26639:1;26636;26629:12;28610:257;28708:1;28697:16;;;28679;;;;28675:39;-1:-1:-1;;28729:77:1;;28818:18;28808:29;;28726:112;28723:138;;;28841:18;;:::i;29159:238::-;29193:3;29240:5;29237:1;29226:20;-1:-1:-1;;29261:7:1;29258:79;29255:105;;29340:18;;:::i;:::-;29380:1;29376:15;;29159:238;-1:-1:-1;;29159:238:1:o
Swarm Source
ipfs://d26b12a0303c4066e1254d28c124ce72754270e198391d96df512c220c26a12a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.