More Info
Private Name Tags
ContractCreator
TokenTracker
Multichain Info
No addresses found
Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Remove Limits | 20218696 | 279 days ago | IN | 0 ETH | 0.00015843 | ||||
Approve | 20218693 | 279 days ago | IN | 0 ETH | 0.00023126 | ||||
Open Trade | 20218692 | 279 days ago | IN | 0 ETH | 0.00013599 | ||||
Approve | 20218146 | 279 days ago | IN | 0 ETH | 0.00040549 | ||||
Approve | 20217028 | 279 days ago | IN | 0 ETH | 0.00029377 | ||||
Launch The Sia L... | 20217001 | 279 days ago | IN | 5 ETH | 0.00101476 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Add Liquidity ET... | 20217001 | 279 days ago | 5 ETH |
Loading...
Loading
Contract Name:
SiaLabs
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-07-02 */ /** https://x.com/sialabsAI https://t.me/SialabsAi https://sialabs.ai/ **/ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; pragma experimental ABIEncoderV2; abstract contract Ownable { address private _owner; constructor() { _owner = msg.sender; } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _owner = address(0); } } library SafeERC20 { function safeTransfer(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: INTERNAL TRANSFER_FAILED'); } } interface IERC20 { function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } contract SiaLabs is Ownable { string private constant _name = unicode"Sia Labs"; string private constant _symbol = unicode"SIA"; uint256 private constant _totalSupply = 10_000_000 * 1e18; uint256 public maxTransactionAmount = 100_000 * 1e18; uint256 public maxWallet = 100_000 * 1e18; uint256 public swapTokensAtAmount = (_totalSupply * 2) / 10000; address private revWallet = 0x28C6f7B58A09504831B2A551D7fb004E28da789e; address private treasuryWallet = 0x05ecC9f6493df4Ec87AE0B41194A0392ba56A6Aa; address private teamWallet = 0x7E5A9A435304B8FfA44Be5eA76DE53f2A98B1d3F; address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; uint8 public buyTotalFees = 5; uint8 public sellTotalFees = 5; uint8 public revFee = 50; uint8 public treasuryFee = 25; uint8 public teamFee = 25; bool private swapping; bool public limitsInEffect = true; bool private launched; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; event SwapAndLiquify(uint256 tokensSwapped, uint256 teamETH, uint256 revETH, uint256 TreasuryETH); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public immutable uniswapV2Pair; constructor() { uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH); automatedMarketMakerPairs[uniswapV2Pair] = true; address airdropWallet = 0xaf3f4d384E96Ee4A32AaD27D99c882c798F4C3B9; setExcludedFromFees(owner(), true); setExcludedFromFees(address(this), true); setExcludedFromFees(address(0xdead), true); setExcludedFromFees(teamWallet, true); setExcludedFromFees(revWallet, true); setExcludedFromFees(treasuryWallet, true); setExcludedFromMaxTransaction(owner(), true); setExcludedFromMaxTransaction(address(uniswapV2Router), true); setExcludedFromMaxTransaction(address(this), true); setExcludedFromMaxTransaction(address(0xdead), true); setExcludedFromMaxTransaction(address(uniswapV2Pair), true); setExcludedFromMaxTransaction(teamWallet, true); setExcludedFromMaxTransaction(revWallet, true); setExcludedFromMaxTransaction(treasuryWallet, true); _balances[msg.sender] = 1_000_000 * 1e18; emit Transfer(address(0), msg.sender, _balances[msg.sender]); _balances[treasuryWallet] = 1_500_000 * 1e18; emit Transfer(address(0), treasuryWallet, _balances[treasuryWallet]); _balances[airdropWallet] = 2_000_000 * 1e18; emit Transfer(address(0), airdropWallet, _balances[airdropWallet]); _balances[address(this)] = 5_500_000 * 1e18; emit Transfer(address(0), address(this), _balances[address(this)]); _approve(address(this), address(uniswapV2Router), type(uint256).max); } receive() external payable {} function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return 18; } function totalSupply() public pure returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transfer(address recipient, uint256 amount) external returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) { uint256 currentAllowance = _allowances[sender][msg.sender]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, msg.sender, currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (!launched && (from != owner() && from != address(this) && to != owner())) { revert("Trading not enabled"); } if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTx"); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount,"Sell transfer amount exceeds the maxTx"); } else if (!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 senderBalance = _balances[from]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 100; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 100; } if (fees > 0) { unchecked { amount = amount - fees; _balances[from] -= fees; _balances[address(this)] += fees; } emit Transfer(from, address(this), fees); } } unchecked { _balances[from] -= amount; _balances[to] += amount; } emit Transfer(from, to, amount); } function removeLimits() external onlyOwner { limitsInEffect = false; } function setDistributionFees(uint8 _RevFee, uint8 _TreasuryFee, uint8 _teamFee) external onlyOwner { revFee = _RevFee; treasuryFee = _TreasuryFee; teamFee = _teamFee; require((revFee + treasuryFee + teamFee) == 100, "Distribution have to be equal to 100%"); } function setFees(uint8 _buyTotalFees, uint8 _sellTotalFees) external onlyOwner { require(_buyTotalFees <= 5, "Buy fees must be less than or equal to 5%"); require(_sellTotalFees <= 5, "Sell fees must be less than or equal to 5%"); buyTotalFees = _buyTotalFees; sellTotalFees = _sellTotalFees; } function setExcludedFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; } function setExcludedFromMaxTransaction(address account, bool excluded) public onlyOwner { _isExcludedMaxTransactionAmount[account] = excluded; } function airdropWallets(address[] memory addresses, uint256[] memory amounts) external onlyOwner { require(!launched, "Already launched"); for (uint256 i = 0; i < addresses.length; i++) { require(_balances[msg.sender] >= amounts[i], "ERC20: transfer amount exceeds balance"); _balances[addresses[i]] += amounts[i]; _balances[msg.sender] -= amounts[i]; emit Transfer(msg.sender, addresses[i], amounts[i]); } } function openTrade() external onlyOwner { require(!launched, "Already launched"); launched = true; } function LaunchTheSiaLabs() external payable onlyOwner { require(!launched, "Already launched"); uniswapV2Router.addLiquidityETH{value: msg.value}( address(this), _balances[address(this)], 0, 0, teamWallet, block.timestamp ); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed"); automatedMarketMakerPairs[pair] = value; } function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner { require(newSwapAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% of the supply"); require(newSwapAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% of the supply"); swapTokensAtAmount = newSwapAmount; } function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner { require(newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max transaction lower than 0.1%"); maxTransactionAmount = newMaxTx * (10**18); } function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner { require(newMaxWallet >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max wallet lower than 0.1%"); maxWallet = newMaxWallet * (10**18); } function updateRevWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); revWallet = newAddress; } function updateTreasuryWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); treasuryWallet = newAddress; } function updateTeamWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); teamWallet = newAddress; } function excludedFromFee(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function withdrawStuckToken(address token, address to) external onlyOwner { uint256 _contractBalance = IERC20(token).balanceOf(address(this)); SafeERC20.safeTransfer(token, to, _contractBalance); // Use safeTransfer } function withdrawStuckETH(address addr) external onlyOwner { require(addr != address(0), "Invalid address"); (bool success, ) = addr.call{value: address(this).balance}(""); require(success, "Withdrawal failed"); } function swapBack() private { uint256 swapThreshold = swapTokensAtAmount; bool success; if (balanceOf(address(this)) > swapTokensAtAmount * 20) { swapThreshold = swapTokensAtAmount * 20; } address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(swapThreshold, 0, path, address(this), block.timestamp); uint256 ethBalance = address(this).balance; if (ethBalance > 0) { uint256 ethForRev = (ethBalance * revFee) / 100; uint256 ethForTeam = (ethBalance * teamFee) / 100; uint256 ethForTreasury = ethBalance - ethForRev - ethForTeam; (success, ) = address(teamWallet).call{value: ethForTeam}(""); (success, ) = address(treasuryWallet).call{value: ethForTreasury}(""); (success, ) = address(revWallet).call{value: ethForRev}(""); emit SwapAndLiquify(swapThreshold, ethForTeam, ethForRev, ethForTreasury); } } }
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":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"revETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"TreasuryETH","type":"uint256"}],"name":"SwapAndLiquify","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LaunchTheSiaLabs","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_RevFee","type":"uint8"},{"internalType":"uint8","name":"_TreasuryFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","type":"uint8"}],"name":"setDistributionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"_sellTotalFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a060405269152d02c7e14af680000060015569152d02c7e14af68000006002556127106a084595161401484a00000060026200003d9190620006d2565b620000499190620006fc565b600355600480546001600160a01b03199081167328c6f7b58a09504831b2a551d7fb004e28da789e17909155600580549091167305ecc9f6493df4ec87ae0b41194a0392ba56a6aa179055600680547a010019193205057e5a9a435304b8ffa44be5ea76de53f2a98b1d3f600161ff0160c81b0319909116179055348015620000d0575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000131573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015791906200071c565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001b7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001dd91906200071c565b6001600160a01b031660808190525f908152600b60205260409020805460ff1916600117905573af3f4d384e96ee4a32aad27d99c882c798f4c3b9620002366200022e5f546001600160a01b031690565b6001620004a1565b62000243306001620004a1565b6200025261dead6001620004a1565b6006546200026b906001600160a01b03166001620004a1565b60045462000284906001600160a01b03166001620004a1565b6005546200029d906001600160a01b03166001620004a1565b620002bb620002b35f546001600160a01b031690565b600162000528565b620002dc737a250d5630b4cf539739df2c5dacb4c659f2488d600162000528565b620002e930600162000528565b620002f861dead600162000528565b6080516200030890600162000528565b60065462000321906001600160a01b0316600162000528565b6004546200033a906001600160a01b0316600162000528565b60055462000353906001600160a01b0316600162000528565b335f81815260076020908152604080832069d3c21bcecceda10000009081905590519081525f8051602062003157833981519152910160405180910390a3600580546001600160a01b039081165f908152600760205260408082206a013da329b63364718000009055925490911680825282822054925190925f805160206200315783398151915291620003e991815260200190565b60405180910390a36001600160a01b0381165f8181526007602090815260408083206a01a784379d99db420000009081905590519081525f8051602062003157833981519152910160405180910390a3305f8181526007602090815260408083206a048cab98f1671af58000009081905590519081525f8051602062003157833981519152910160405180910390a36200049a30737a250d5630b4cf539739df2c5dacb4c659f2488d5f19620005ab565b506200074b565b33620004b45f546001600160a01b031690565b6001600160a01b031614620004fe5760405162461bcd60e51b815260206004820181905260248201525f805160206200313783398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b336200053b5f546001600160a01b031690565b6001600160a01b031614620005815760405162461bcd60e51b815260206004820181905260248201525f80516020620031378339815191526044820152606401620004f5565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0383166200060f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620004f5565b6001600160a01b038216620006725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004f5565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8082028115828204841417620006f657634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200071757634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200072d575f80fd5b81516001600160a01b038116811462000744575f80fd5b9392505050565b6080516129cc6200076b5f395f81816103cd015261105c01526129cc5ff3fe608060405260043610610236575f3560e01c80637cb332bb11610129578063cc32d176116100a8578063e2f456051161006d578063e2f4560514610736578063e71079471461074b578063f7876a0c1461076a578063f8b45b0514610772578063fb201b1d14610787575f80fd5b8063cc32d17614610673578063d201b01e14610693578063d7c94efd146106b2578063d85ba063146106d2578063dd62ed3e146106f2575f80fd5b80639a7a23d6116100ee5780639a7a23d6146105e2578063a9059cbb14610601578063adfa29e514610620578063bc205ad31461063f578063c8c8ebe41461065e575f80fd5b80637cb332bb14610526578063809d458d1461054557806385ecafd7146105645780638da5cb5b1461059b57806395d89b41146105b7575f80fd5b80634a62bb65116101b55780636a486a8e1161017a5780636a486a8e1461048b57806370a08231146104ab578063715018a6146104df57806374010ece146104f3578063751039fc14610512575f80fd5b80634a62bb65146103ef5780634fcd24461461040f578063590ffdce1461042e5780636402511e1461044d57806366650dae1461046c575f80fd5b806323b872dd116101fb57806323b872dd1461034a57806327a14fc214610369578063313ce5671461038a5780633c090c461461039d57806349bd5a5e146103bc575f80fd5b806306fdde0314610241578063095ea7b3146102835780631694505e146102b257806318160ddd146102f157806321d37e3914610318575f80fd5b3661023d57005b5f80fd5b34801561024c575f80fd5b50604080518082019091526008815267536961204c61627360c01b60208201525b60405161027a91906123c8565b60405180910390f35b34801561028e575f80fd5b506102a261029d366004612415565b61079b565b604051901515815260200161027a565b3480156102bd575f80fd5b506102d9737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161027a565b3480156102fc575f80fd5b506a084595161401484a0000005b60405190815260200161027a565b348015610323575f80fd5b5060065461033890600160b01b900460ff1681565b60405160ff909116815260200161027a565b348015610355575f80fd5b506102a261036436600461243d565b6107b1565b348015610374575f80fd5b50610388610383366004612476565b610865565b005b348015610395575f80fd5b506012610338565b3480156103a8575f80fd5b506103886103b736600461249d565b610948565b3480156103c7575f80fd5b506102d97f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fa575f80fd5b506006546102a290600160d01b900460ff1681565b34801561041a575f80fd5b506103886104293660046124dd565b610a50565b348015610439575f80fd5b5061038861044836600461251e565b610b89565b348015610458575f80fd5b50610388610467366004612476565b610beb565b348015610477575f80fd5b5061038861048636600461251e565b610d48565b348015610496575f80fd5b5060065461033890600160a81b900460ff1681565b3480156104b6575f80fd5b5061030a6104c5366004612553565b6001600160a01b03165f9081526007602052604090205490565b3480156104ea575f80fd5b50610388610daa565b3480156104fe575f80fd5b5061038861050d366004612476565b610df3565b34801561051d575f80fd5b50610388610edb565b348015610531575f80fd5b50610388610540366004612553565b610f22565b348015610550575f80fd5b5061038861055f366004612553565b610fa2565b34801561056f575f80fd5b506102a261057e366004612553565b6001600160a01b03165f9081526009602052604090205460ff1690565b3480156105a6575f80fd5b505f546001600160a01b03166102d9565b3480156105c2575f80fd5b5060408051808201909152600381526253494160e81b602082015261026d565b3480156105ed575f80fd5b506103886105fc36600461251e565b611022565b34801561060c575f80fd5b506102a261061b366004612415565b611105565b34801561062b575f80fd5b5061038861063a366004612553565b611111565b34801561064a575f80fd5b50610388610659366004612573565b611191565b348015610669575f80fd5b5061030a60015481565b34801561067e575f80fd5b5060065461033890600160b81b900460ff1681565b34801561069e575f80fd5b506103886106ad366004612553565b61123e565b3480156106bd575f80fd5b5060065461033890600160c01b900460ff1681565b3480156106dd575f80fd5b5060065461033890600160a01b900460ff1681565b3480156106fd575f80fd5b5061030a61070c366004612573565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610741575f80fd5b5061030a60035481565b348015610756575f80fd5b5061038861076536600461266b565b611355565b61038861156c565b34801561077d575f80fd5b5061030a60025481565b348015610792575f80fd5b5061038861167f565b5f6107a73384846116f6565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f19811461084f57828110156108425760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61084f85338584036116f6565b61085a858585611819565b506001949350505050565b336108775f546001600160a01b031690565b6001600160a01b03161461089d5760405162461bcd60e51b815260040161083990612725565b670de0b6b3a76400006103e86108bf6a084595161401484a000000600161276e565b6108c99190612785565b6108d39190612785565b8110156109305760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b6064820152608401610839565b61094281670de0b6b3a764000061276e565b60025550565b3361095a5f546001600160a01b031690565b6001600160a01b0316146109805760405162461bcd60e51b815260040161083990612725565b6006805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b8685168102919091179485905584048316936109e1939181048216929004166127a4565b6109eb91906127a4565b60ff16606414610a4b5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b6064820152608401610839565b505050565b33610a625f546001600160a01b031690565b6001600160a01b031614610a885760405162461bcd60e51b815260040161083990612725565b60058260ff161115610aee5760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20352560b81b6064820152608401610839565b60058160ff161115610b555760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20352560b01b6064820152608401610839565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610b9b5f546001600160a01b031690565b6001600160a01b031614610bc15760405162461bcd60e51b815260040161083990612725565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610bfd5f546001600160a01b031690565b6001600160a01b031614610c235760405162461bcd60e51b815260040161083990612725565b620186a0610c3d6a084595161401484a000000600161276e565b610c479190612785565b811015610cb45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b6064820152608401610839565b6103e8610ccd6a084595161401484a000000600561276e565b610cd79190612785565b811115610d435760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b6064820152608401610839565b600355565b33610d5a5f546001600160a01b031690565b6001600160a01b031614610d805760405162461bcd60e51b815260040161083990612725565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610dbc5f546001600160a01b031690565b6001600160a01b031614610de25760405162461bcd60e51b815260040161083990612725565b5f80546001600160a01b0319169055565b33610e055f546001600160a01b031690565b6001600160a01b031614610e2b5760405162461bcd60e51b815260040161083990612725565b670de0b6b3a76400006103e8610e4d6a084595161401484a000000600161276e565b610e579190612785565b610e619190612785565b811015610ec35760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b6064820152608401610839565b610ed581670de0b6b3a764000061276e565b60015550565b33610eed5f546001600160a01b031690565b6001600160a01b031614610f135760405162461bcd60e51b815260040161083990612725565b6006805460ff60d01b19169055565b33610f345f546001600160a01b031690565b6001600160a01b031614610f5a5760405162461bcd60e51b815260040161083990612725565b6001600160a01b038116610f805760405162461bcd60e51b8152600401610839906127bd565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610fb45f546001600160a01b031690565b6001600160a01b031614610fda5760405162461bcd60e51b815260040161083990612725565b6001600160a01b0381166110005760405162461bcd60e51b8152600401610839906127bd565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336110345f546001600160a01b031690565b6001600160a01b03161461105a5760405162461bcd60e51b815260040161083990612725565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036110db5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610839565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6107a7338484611819565b336111235f546001600160a01b031690565b6001600160a01b0316146111495760405162461bcd60e51b815260040161083990612725565b6001600160a01b03811661116f5760405162461bcd60e51b8152600401610839906127bd565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b336111a35f546001600160a01b031690565b6001600160a01b0316146111c95760405162461bcd60e51b815260040161083990612725565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561120d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123191906127ed565b9050610a4b838383611f90565b336112505f546001600160a01b031690565b6001600160a01b0316146112765760405162461bcd60e51b815260040161083990612725565b6001600160a01b0381166112be5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610839565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611307576040519150601f19603f3d011682016040523d82523d5f602084013e61130c565b606091505b50509050806113515760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b6044820152606401610839565b5050565b336113675f546001600160a01b031690565b6001600160a01b03161461138d5760405162461bcd60e51b815260040161083990612725565b600654600160d81b900460ff16156113b75760405162461bcd60e51b815260040161083990612804565b5f5b8251811015610a4b578181815181106113d4576113d461282e565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f2054101561141e5760405162461bcd60e51b815260040161083990612842565b8181815181106114305761143061282e565b602002602001015160075f85848151811061144d5761144d61282e565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f8282546114829190612888565b9250508190555081818151811061149b5761149b61282e565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546114d4919061289b565b925050819055508281815181106114ed576114ed61282e565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84848151811061153b5761153b61282e565b602002602001015160405161155291815260200190565b60405180910390a380611564816128ae565b9150506113b9565b3361157e5f546001600160a01b031690565b6001600160a01b0316146115a45760405162461bcd60e51b815260040161083990612725565b600654600160d81b900460ff16156115ce5760405162461bcd60e51b815260040161083990612804565b305f8181526007602052604080822054600654915163f305d71960e01b8152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561165a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a4b91906128c6565b336116915f546001600160a01b031690565b6001600160a01b0316146116b75760405162461bcd60e51b815260040161083990612725565b600654600160d81b900460ff16156116e15760405162461bcd60e51b815260040161083990612804565b6006805460ff60d81b1916600160d81b179055565b6001600160a01b0383166117585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610839565b6001600160a01b0382166117b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610839565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661187d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610839565b6001600160a01b0382166118df5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610839565b5f81116119405760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610839565b600654600160d81b900460ff1615801561199457505f546001600160a01b0384811691161480159061197b57506001600160a01b0383163014155b801561199457505f546001600160a01b03838116911614155b156119d75760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610839565b600654600160d01b900460ff1615611c98575f546001600160a01b03848116911614801590611a1357505f546001600160a01b03838116911614155b8015611a2757506001600160a01b03821615155b8015611a3e57506001600160a01b03821661dead14155b8015611a545750600654600160c81b900460ff16155b15611c98576001600160a01b0383165f908152600b602052604090205460ff168015611a9857506001600160a01b0382165f908152600a602052604090205460ff16155b15611b6b57600154811115611afd5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b6064820152608401610839565b6002546001600160a01b0383165f90815260076020526040902054611b229083612888565b1115611b665760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610839565b611c98565b6001600160a01b0382165f908152600b602052604090205460ff168015611baa57506001600160a01b0383165f908152600a602052604090205460ff16155b15611c1057600154811115611b665760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b6064820152608401610839565b6001600160a01b0382165f908152600a602052604090205460ff16611c98576002546001600160a01b0383165f90815260076020526040902054611c549083612888565b1115611c985760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610839565b600354305f90815260076020526040902054108015908190611cc45750600654600160c81b900460ff16155b8015611ce857506001600160a01b0384165f908152600b602052604090205460ff16155b8015611d0c57506001600160a01b0384165f9081526009602052604090205460ff16155b8015611d3057506001600160a01b0383165f9081526009602052604090205460ff16155b15611d5e576006805460ff60c81b1916600160c81b179055611d506120b7565b6006805460ff60c81b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c81b909204821615911680611daa57506001600160a01b0384165f9081526009602052604090205460ff165b15611db257505f5b6001600160a01b0385165f9081526007602052604090205483811015611dea5760405162461bcd60e51b815260040161083990612842565b5f8215611f1e576001600160a01b0386165f908152600b602052604090205460ff168015611e235750600654600160a81b900460ff1615155b15611e5357600654606490611e4290600160a81b900460ff168761276e565b611e4c9190612785565b9050611eb1565b6001600160a01b0387165f908152600b602052604090205460ff168015611e855750600654600160a01b900460ff1615155b15611eb157600654606490611ea490600160a01b900460ff168761276e565b611eae9190612785565b90505b8015611f1e576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f7f9089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611feb91906128f1565b5f604051808303815f865af19150503d805f8114612024576040519150601f19603f3d011682016040523d82523d5f602084013e612029565b606091505b5091509150818015612053575080511580612053575080806020019051810190612053919061290c565b6120b05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b6064820152608401610839565b5050505050565b6003545f6120c682601461276e565b305f9081526007602052604090205411156120ec576003546120e990601461276e565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061211f5761211f61282e565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106121675761216761282e565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906121be9086905f90869030904290600401612927565b5f604051808303815f87803b1580156121d5575f80fd5b505af11580156121e7573d5f803e3d5ffd5b5047925050811590506123a0576006545f9060649061221090600160b01b900460ff168461276e565b61221a9190612785565b6006549091505f9060649061223990600160c01b900460ff168561276e565b6122439190612785565b90505f81612251848661289b565b61225b919061289b565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146122a6576040519150601f19603f3d011682016040523d82523d5f602084013e6122ab565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f81146122f8576040519150601f19603f3d011682016040523d82523d5f602084013e6122fd565b606091505b50506004546040519197506001600160a01b03169084905f81818185875af1925050503d805f811461234a576040519150601f19603f3d011682016040523d82523d5f602084013e61234f565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b838110156123c05781810151838201526020016123a8565b50505f910152565b602081525f82518060208401526123e68160408501602087016123a6565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612410575f80fd5b919050565b5f8060408385031215612426575f80fd5b61242f836123fa565b946020939093013593505050565b5f805f6060848603121561244f575f80fd5b612458846123fa565b9250612466602085016123fa565b9150604084013590509250925092565b5f60208284031215612486575f80fd5b5035919050565b803560ff81168114612410575f80fd5b5f805f606084860312156124af575f80fd5b6124b88461248d565b92506124c66020850161248d565b91506124d46040850161248d565b90509250925092565b5f80604083850312156124ee575f80fd5b6124f78361248d565b91506125056020840161248d565b90509250929050565b801515811461251b575f80fd5b50565b5f806040838503121561252f575f80fd5b612538836123fa565b915060208301356125488161250e565b809150509250929050565b5f60208284031215612563575f80fd5b61256c826123fa565b9392505050565b5f8060408385031215612584575f80fd5b61258d836123fa565b9150612505602084016123fa565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125d8576125d861259b565b604052919050565b5f67ffffffffffffffff8211156125f9576125f961259b565b5060051b60200190565b5f82601f830112612612575f80fd5b81356020612627612622836125e0565b6125af565b82815260059290921b84018101918181019086841115612645575f80fd5b8286015b848110156126605780358352918301918301612649565b509695505050505050565b5f806040838503121561267c575f80fd5b823567ffffffffffffffff80821115612693575f80fd5b818501915085601f8301126126a6575f80fd5b813560206126b6612622836125e0565b82815260059290921b840181019181810190898411156126d4575f80fd5b948201945b838610156126f9576126ea866123fa565b825294820194908201906126d9565b9650508601359250508082111561270e575f80fd5b5061271b85828601612603565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107ab576107ab61275a565b5f8261279f57634e487b7160e01b5f52601260045260245ffd5b500490565b60ff81811683821601908111156107ab576107ab61275a565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f602082840312156127fd575f80fd5b5051919050565b60208082526010908201526f105b1c9958591e481b185d5b98da195960821b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b808201808211156107ab576107ab61275a565b818103818111156107ab576107ab61275a565b5f600182016128bf576128bf61275a565b5060010190565b5f805f606084860312156128d8575f80fd5b8351925060208401519150604084015190509250925092565b5f82516129028184602087016123a6565b9190910192915050565b5f6020828403121561291c575f80fd5b815161256c8161250e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156129755784516001600160a01b031683529383019391830191600101612950565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e08042f9c6a2751087d586cbbb49da1c10561bfa78317429e5a6333024d3d21c64736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x608060405260043610610236575f3560e01c80637cb332bb11610129578063cc32d176116100a8578063e2f456051161006d578063e2f4560514610736578063e71079471461074b578063f7876a0c1461076a578063f8b45b0514610772578063fb201b1d14610787575f80fd5b8063cc32d17614610673578063d201b01e14610693578063d7c94efd146106b2578063d85ba063146106d2578063dd62ed3e146106f2575f80fd5b80639a7a23d6116100ee5780639a7a23d6146105e2578063a9059cbb14610601578063adfa29e514610620578063bc205ad31461063f578063c8c8ebe41461065e575f80fd5b80637cb332bb14610526578063809d458d1461054557806385ecafd7146105645780638da5cb5b1461059b57806395d89b41146105b7575f80fd5b80634a62bb65116101b55780636a486a8e1161017a5780636a486a8e1461048b57806370a08231146104ab578063715018a6146104df57806374010ece146104f3578063751039fc14610512575f80fd5b80634a62bb65146103ef5780634fcd24461461040f578063590ffdce1461042e5780636402511e1461044d57806366650dae1461046c575f80fd5b806323b872dd116101fb57806323b872dd1461034a57806327a14fc214610369578063313ce5671461038a5780633c090c461461039d57806349bd5a5e146103bc575f80fd5b806306fdde0314610241578063095ea7b3146102835780631694505e146102b257806318160ddd146102f157806321d37e3914610318575f80fd5b3661023d57005b5f80fd5b34801561024c575f80fd5b50604080518082019091526008815267536961204c61627360c01b60208201525b60405161027a91906123c8565b60405180910390f35b34801561028e575f80fd5b506102a261029d366004612415565b61079b565b604051901515815260200161027a565b3480156102bd575f80fd5b506102d9737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161027a565b3480156102fc575f80fd5b506a084595161401484a0000005b60405190815260200161027a565b348015610323575f80fd5b5060065461033890600160b01b900460ff1681565b60405160ff909116815260200161027a565b348015610355575f80fd5b506102a261036436600461243d565b6107b1565b348015610374575f80fd5b50610388610383366004612476565b610865565b005b348015610395575f80fd5b506012610338565b3480156103a8575f80fd5b506103886103b736600461249d565b610948565b3480156103c7575f80fd5b506102d97f000000000000000000000000c6821bc50a2812e59a75e4ef8c87092109f79e5481565b3480156103fa575f80fd5b506006546102a290600160d01b900460ff1681565b34801561041a575f80fd5b506103886104293660046124dd565b610a50565b348015610439575f80fd5b5061038861044836600461251e565b610b89565b348015610458575f80fd5b50610388610467366004612476565b610beb565b348015610477575f80fd5b5061038861048636600461251e565b610d48565b348015610496575f80fd5b5060065461033890600160a81b900460ff1681565b3480156104b6575f80fd5b5061030a6104c5366004612553565b6001600160a01b03165f9081526007602052604090205490565b3480156104ea575f80fd5b50610388610daa565b3480156104fe575f80fd5b5061038861050d366004612476565b610df3565b34801561051d575f80fd5b50610388610edb565b348015610531575f80fd5b50610388610540366004612553565b610f22565b348015610550575f80fd5b5061038861055f366004612553565b610fa2565b34801561056f575f80fd5b506102a261057e366004612553565b6001600160a01b03165f9081526009602052604090205460ff1690565b3480156105a6575f80fd5b505f546001600160a01b03166102d9565b3480156105c2575f80fd5b5060408051808201909152600381526253494160e81b602082015261026d565b3480156105ed575f80fd5b506103886105fc36600461251e565b611022565b34801561060c575f80fd5b506102a261061b366004612415565b611105565b34801561062b575f80fd5b5061038861063a366004612553565b611111565b34801561064a575f80fd5b50610388610659366004612573565b611191565b348015610669575f80fd5b5061030a60015481565b34801561067e575f80fd5b5060065461033890600160b81b900460ff1681565b34801561069e575f80fd5b506103886106ad366004612553565b61123e565b3480156106bd575f80fd5b5060065461033890600160c01b900460ff1681565b3480156106dd575f80fd5b5060065461033890600160a01b900460ff1681565b3480156106fd575f80fd5b5061030a61070c366004612573565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610741575f80fd5b5061030a60035481565b348015610756575f80fd5b5061038861076536600461266b565b611355565b61038861156c565b34801561077d575f80fd5b5061030a60025481565b348015610792575f80fd5b5061038861167f565b5f6107a73384846116f6565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f19811461084f57828110156108425760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61084f85338584036116f6565b61085a858585611819565b506001949350505050565b336108775f546001600160a01b031690565b6001600160a01b03161461089d5760405162461bcd60e51b815260040161083990612725565b670de0b6b3a76400006103e86108bf6a084595161401484a000000600161276e565b6108c99190612785565b6108d39190612785565b8110156109305760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b6064820152608401610839565b61094281670de0b6b3a764000061276e565b60025550565b3361095a5f546001600160a01b031690565b6001600160a01b0316146109805760405162461bcd60e51b815260040161083990612725565b6006805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b8685168102919091179485905584048316936109e1939181048216929004166127a4565b6109eb91906127a4565b60ff16606414610a4b5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b6064820152608401610839565b505050565b33610a625f546001600160a01b031690565b6001600160a01b031614610a885760405162461bcd60e51b815260040161083990612725565b60058260ff161115610aee5760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20352560b81b6064820152608401610839565b60058160ff161115610b555760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20352560b01b6064820152608401610839565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610b9b5f546001600160a01b031690565b6001600160a01b031614610bc15760405162461bcd60e51b815260040161083990612725565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610bfd5f546001600160a01b031690565b6001600160a01b031614610c235760405162461bcd60e51b815260040161083990612725565b620186a0610c3d6a084595161401484a000000600161276e565b610c479190612785565b811015610cb45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b6064820152608401610839565b6103e8610ccd6a084595161401484a000000600561276e565b610cd79190612785565b811115610d435760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b6064820152608401610839565b600355565b33610d5a5f546001600160a01b031690565b6001600160a01b031614610d805760405162461bcd60e51b815260040161083990612725565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610dbc5f546001600160a01b031690565b6001600160a01b031614610de25760405162461bcd60e51b815260040161083990612725565b5f80546001600160a01b0319169055565b33610e055f546001600160a01b031690565b6001600160a01b031614610e2b5760405162461bcd60e51b815260040161083990612725565b670de0b6b3a76400006103e8610e4d6a084595161401484a000000600161276e565b610e579190612785565b610e619190612785565b811015610ec35760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b6064820152608401610839565b610ed581670de0b6b3a764000061276e565b60015550565b33610eed5f546001600160a01b031690565b6001600160a01b031614610f135760405162461bcd60e51b815260040161083990612725565b6006805460ff60d01b19169055565b33610f345f546001600160a01b031690565b6001600160a01b031614610f5a5760405162461bcd60e51b815260040161083990612725565b6001600160a01b038116610f805760405162461bcd60e51b8152600401610839906127bd565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610fb45f546001600160a01b031690565b6001600160a01b031614610fda5760405162461bcd60e51b815260040161083990612725565b6001600160a01b0381166110005760405162461bcd60e51b8152600401610839906127bd565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336110345f546001600160a01b031690565b6001600160a01b03161461105a5760405162461bcd60e51b815260040161083990612725565b7f000000000000000000000000c6821bc50a2812e59a75e4ef8c87092109f79e546001600160a01b0316826001600160a01b0316036110db5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610839565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6107a7338484611819565b336111235f546001600160a01b031690565b6001600160a01b0316146111495760405162461bcd60e51b815260040161083990612725565b6001600160a01b03811661116f5760405162461bcd60e51b8152600401610839906127bd565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b336111a35f546001600160a01b031690565b6001600160a01b0316146111c95760405162461bcd60e51b815260040161083990612725565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561120d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123191906127ed565b9050610a4b838383611f90565b336112505f546001600160a01b031690565b6001600160a01b0316146112765760405162461bcd60e51b815260040161083990612725565b6001600160a01b0381166112be5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610839565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611307576040519150601f19603f3d011682016040523d82523d5f602084013e61130c565b606091505b50509050806113515760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b6044820152606401610839565b5050565b336113675f546001600160a01b031690565b6001600160a01b03161461138d5760405162461bcd60e51b815260040161083990612725565b600654600160d81b900460ff16156113b75760405162461bcd60e51b815260040161083990612804565b5f5b8251811015610a4b578181815181106113d4576113d461282e565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f2054101561141e5760405162461bcd60e51b815260040161083990612842565b8181815181106114305761143061282e565b602002602001015160075f85848151811061144d5761144d61282e565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f8282546114829190612888565b9250508190555081818151811061149b5761149b61282e565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546114d4919061289b565b925050819055508281815181106114ed576114ed61282e565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84848151811061153b5761153b61282e565b602002602001015160405161155291815260200190565b60405180910390a380611564816128ae565b9150506113b9565b3361157e5f546001600160a01b031690565b6001600160a01b0316146115a45760405162461bcd60e51b815260040161083990612725565b600654600160d81b900460ff16156115ce5760405162461bcd60e51b815260040161083990612804565b305f8181526007602052604080822054600654915163f305d71960e01b8152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561165a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a4b91906128c6565b336116915f546001600160a01b031690565b6001600160a01b0316146116b75760405162461bcd60e51b815260040161083990612725565b600654600160d81b900460ff16156116e15760405162461bcd60e51b815260040161083990612804565b6006805460ff60d81b1916600160d81b179055565b6001600160a01b0383166117585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610839565b6001600160a01b0382166117b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610839565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661187d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610839565b6001600160a01b0382166118df5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610839565b5f81116119405760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610839565b600654600160d81b900460ff1615801561199457505f546001600160a01b0384811691161480159061197b57506001600160a01b0383163014155b801561199457505f546001600160a01b03838116911614155b156119d75760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610839565b600654600160d01b900460ff1615611c98575f546001600160a01b03848116911614801590611a1357505f546001600160a01b03838116911614155b8015611a2757506001600160a01b03821615155b8015611a3e57506001600160a01b03821661dead14155b8015611a545750600654600160c81b900460ff16155b15611c98576001600160a01b0383165f908152600b602052604090205460ff168015611a9857506001600160a01b0382165f908152600a602052604090205460ff16155b15611b6b57600154811115611afd5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b6064820152608401610839565b6002546001600160a01b0383165f90815260076020526040902054611b229083612888565b1115611b665760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610839565b611c98565b6001600160a01b0382165f908152600b602052604090205460ff168015611baa57506001600160a01b0383165f908152600a602052604090205460ff16155b15611c1057600154811115611b665760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b6064820152608401610839565b6001600160a01b0382165f908152600a602052604090205460ff16611c98576002546001600160a01b0383165f90815260076020526040902054611c549083612888565b1115611c985760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610839565b600354305f90815260076020526040902054108015908190611cc45750600654600160c81b900460ff16155b8015611ce857506001600160a01b0384165f908152600b602052604090205460ff16155b8015611d0c57506001600160a01b0384165f9081526009602052604090205460ff16155b8015611d3057506001600160a01b0383165f9081526009602052604090205460ff16155b15611d5e576006805460ff60c81b1916600160c81b179055611d506120b7565b6006805460ff60c81b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c81b909204821615911680611daa57506001600160a01b0384165f9081526009602052604090205460ff165b15611db257505f5b6001600160a01b0385165f9081526007602052604090205483811015611dea5760405162461bcd60e51b815260040161083990612842565b5f8215611f1e576001600160a01b0386165f908152600b602052604090205460ff168015611e235750600654600160a81b900460ff1615155b15611e5357600654606490611e4290600160a81b900460ff168761276e565b611e4c9190612785565b9050611eb1565b6001600160a01b0387165f908152600b602052604090205460ff168015611e855750600654600160a01b900460ff1615155b15611eb157600654606490611ea490600160a01b900460ff168761276e565b611eae9190612785565b90505b8015611f1e576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f7f9089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611feb91906128f1565b5f604051808303815f865af19150503d805f8114612024576040519150601f19603f3d011682016040523d82523d5f602084013e612029565b606091505b5091509150818015612053575080511580612053575080806020019051810190612053919061290c565b6120b05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b6064820152608401610839565b5050505050565b6003545f6120c682601461276e565b305f9081526007602052604090205411156120ec576003546120e990601461276e565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061211f5761211f61282e565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106121675761216761282e565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906121be9086905f90869030904290600401612927565b5f604051808303815f87803b1580156121d5575f80fd5b505af11580156121e7573d5f803e3d5ffd5b5047925050811590506123a0576006545f9060649061221090600160b01b900460ff168461276e565b61221a9190612785565b6006549091505f9060649061223990600160c01b900460ff168561276e565b6122439190612785565b90505f81612251848661289b565b61225b919061289b565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146122a6576040519150601f19603f3d011682016040523d82523d5f602084013e6122ab565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f81146122f8576040519150601f19603f3d011682016040523d82523d5f602084013e6122fd565b606091505b50506004546040519197506001600160a01b03169084905f81818185875af1925050503d805f811461234a576040519150601f19603f3d011682016040523d82523d5f602084013e61234f565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b838110156123c05781810151838201526020016123a8565b50505f910152565b602081525f82518060208401526123e68160408501602087016123a6565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612410575f80fd5b919050565b5f8060408385031215612426575f80fd5b61242f836123fa565b946020939093013593505050565b5f805f6060848603121561244f575f80fd5b612458846123fa565b9250612466602085016123fa565b9150604084013590509250925092565b5f60208284031215612486575f80fd5b5035919050565b803560ff81168114612410575f80fd5b5f805f606084860312156124af575f80fd5b6124b88461248d565b92506124c66020850161248d565b91506124d46040850161248d565b90509250925092565b5f80604083850312156124ee575f80fd5b6124f78361248d565b91506125056020840161248d565b90509250929050565b801515811461251b575f80fd5b50565b5f806040838503121561252f575f80fd5b612538836123fa565b915060208301356125488161250e565b809150509250929050565b5f60208284031215612563575f80fd5b61256c826123fa565b9392505050565b5f8060408385031215612584575f80fd5b61258d836123fa565b9150612505602084016123fa565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125d8576125d861259b565b604052919050565b5f67ffffffffffffffff8211156125f9576125f961259b565b5060051b60200190565b5f82601f830112612612575f80fd5b81356020612627612622836125e0565b6125af565b82815260059290921b84018101918181019086841115612645575f80fd5b8286015b848110156126605780358352918301918301612649565b509695505050505050565b5f806040838503121561267c575f80fd5b823567ffffffffffffffff80821115612693575f80fd5b818501915085601f8301126126a6575f80fd5b813560206126b6612622836125e0565b82815260059290921b840181019181810190898411156126d4575f80fd5b948201945b838610156126f9576126ea866123fa565b825294820194908201906126d9565b9650508601359250508082111561270e575f80fd5b5061271b85828601612603565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107ab576107ab61275a565b5f8261279f57634e487b7160e01b5f52601260045260245ffd5b500490565b60ff81811683821601908111156107ab576107ab61275a565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f602082840312156127fd575f80fd5b5051919050565b60208082526010908201526f105b1c9958591e481b185d5b98da195960821b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b808201808211156107ab576107ab61275a565b818103818111156107ab576107ab61275a565b5f600182016128bf576128bf61275a565b5060010190565b5f805f606084860312156128d8575f80fd5b8351925060208401519150604084015190509250925092565b5f82516129028184602087016123a6565b9190910192915050565b5f6020828403121561291c575f80fd5b815161256c8161250e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156129755784516001600160a01b031683529383019391830191600101612950565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e08042f9c6a2751087d586cbbb49da1c10561bfa78317429e5a6333024d3d21c64736f6c63430008150033
Deployed Bytecode Sourcemap
1825:13378:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5273:83;;;;;;;;;;-1:-1:-1;5343:5:0;;;;;;;;;;;;-1:-1:-1;;;5343:5:0;;;;5273:83;;;;;;;:::i;:::-;;;;;;;;5902:152;;;;;;;;;;-1:-1:-1;5902:152:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;5902:152:0;1107:187:1;3398:115:0;;;;;;;;;;;;3470:42;3398:115;;;;;-1:-1:-1;;;;;1489:32:1;;;1471:51;;1459:2;1444:18;3398:115:0;1299:229:1;5543:91:0;;;;;;;;;;-1:-1:-1;2009:17:0;5543:91;;;1679:25:1;;;1667:2;1652:18;5543:91:0;1533:177:1;2608:24:0;;;;;;;;;;-1:-1:-1;2608:24:0;;;;-1:-1:-1;;;2608:24:0;;;;;;;;;1887:4:1;1875:17;;;1857:36;;1845:2;1830:18;2608:24:0;1715:184:1;6573:520:0;;;;;;;;;;-1:-1:-1;6573:520:0;;;;;:::i;:::-;;:::i;12645:235::-;;;;;;;;;;-1:-1:-1;12645:235:0;;;;;:::i;:::-;;:::i;:::-;;5459:76;;;;;;;;;;-1:-1:-1;5525:2:0;5459:76;;9876:300;;;;;;;;;;-1:-1:-1;9876:300:0;;;;;:::i;:::-;;:::i;3520:38::-;;;;;;;;;;;;;;;2737:33;;;;;;;;;;-1:-1:-1;2737:33:0;;;;-1:-1:-1;;;2737:33:0;;;;;;10184:335;;;;;;;;;;-1:-1:-1;10184:335:0;;;;;:::i;:::-;;:::i;10527:136::-;;;;;;;;;;-1:-1:-1;10527:136:0;;;;;:::i;:::-;;:::i;12032:361::-;;;;;;;;;;-1:-1:-1;12032:361:0;;;;;:::i;:::-;;:::i;10671:158::-;;;;;;;;;;-1:-1:-1;10671:158:0;;;;;:::i;:::-;;:::i;2569:30::-;;;;;;;;;;-1:-1:-1;2569:30:0;;;;-1:-1:-1;;;2569:30:0;;;;;;5642:110;;;;;;;;;;-1:-1:-1;5642:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;5726:18:0;5699:7;5726:18;;;:9;:18;;;;;;;5642:110;522:92;;;;;;;;;;;;;:::i;12401:236::-;;;;;;;;;;-1:-1:-1;12401:236:0;;;;;:::i;:::-;;:::i;9784:84::-;;;;;;;;;;;;;:::i;13264:177::-;;;;;;;;;;-1:-1:-1;13264:177:0;;;;;:::i;:::-;;:::i;13071:185::-;;;;;;;;;;-1:-1:-1;13071:185:0;;;;;:::i;:::-;;:::i;13449:123::-;;;;;;;;;;-1:-1:-1;13449:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;13536:28:0;13512:4;13536:28;;;:19;:28;;;;;;;;;13449:123;301:87;;;;;;;;;;-1:-1:-1;347:7:0;374:6;-1:-1:-1;;;;;374:6:0;301:87;;5364;;;;;;;;;;-1:-1:-1;5436:7:0;;;;;;;;;;;;-1:-1:-1;;;5436:7:0;;;;5364:87;;11813:211;;;;;;;;;;-1:-1:-1;11813:211:0;;;;;:::i;:::-;;:::i;6407:158::-;;;;;;;;;;-1:-1:-1;6407:158:0;;;;;:::i;:::-;;:::i;12888:175::-;;;;;;;;;;-1:-1:-1;12888:175:0;;;;;:::i;:::-;;:::i;13580:240::-;;;;;;;;;;-1:-1:-1;13580:240:0;;;;;:::i;:::-;;:::i;2035:52::-;;;;;;;;;;;;;;;;2639:29;;;;;;;;;;-1:-1:-1;2639:29:0;;;;-1:-1:-1;;;2639:29:0;;;;;;13828:247;;;;;;;;;;-1:-1:-1;13828:247:0;;;;;:::i;:::-;;:::i;2675:25::-;;;;;;;;;;-1:-1:-1;2675:25:0;;;;-1:-1:-1;;;2675:25:0;;;;;;2533:29;;;;;;;;;;-1:-1:-1;2533:29:0;;;;-1:-1:-1;;;2533:29:0;;;;;;5760:134;;;;;;;;;;-1:-1:-1;5760:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;5859:18:0;;;5832:7;5859:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5760:134;2142:62;;;;;;;;;;;;;;;;10837:492;;;;;;;;;;-1:-1:-1;10837:492:0;;;;;:::i;:::-;;:::i;11468:337::-;;;:::i;2094:41::-;;;;;;;;;;;;;;;;11337:123;;;;;;;;;;;;;:::i;5902:152::-;5970:4;5987:37;5996:10;6008:7;6017:6;5987:8;:37::i;:::-;-1:-1:-1;6042:4:0;5902:152;;;;;:::o;6573:520::-;-1:-1:-1;;;;;6708:19:0;;6664:4;6708:19;;;:11;:19;;;;;;;;6728:10;6708:31;;;;;;;;-1:-1:-1;;6754:37:0;;6750:263;;6836:6;6816:16;:26;;6808:79;;;;-1:-1:-1;;;6808:79:0;;6894:2:1;6808:79:0;;;6876:21:1;6933:2;6913:18;;;6906:30;6972:34;6952:18;;;6945:62;-1:-1:-1;;;7023:18:1;;;7016:38;7071:19;;6808:79:0;;;;;;;;;6931:55;6940:6;6948:10;6979:6;6960:16;:25;6931:8;:55::i;:::-;7025:36;7035:6;7043:9;7054:6;7025:9;:36::i;:::-;-1:-1:-1;7081:4:0;;6573:520;-1:-1:-1;;;;6573:520:0:o;12645:235::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;12780:4:::1;12772;12751:17;2009::::0;12767:1:::1;12751:17;:::i;:::-;12750:26;;;;:::i;:::-;12749:35;;;;:::i;:::-;12733:12;:51;;12725:101;;;::::0;-1:-1:-1;;;12725:101:0;;8191:2:1;12725:101:0::1;::::0;::::1;8173:21:1::0;8230:2;8210:18;;;8203:30;8269:34;8249:18;;;8242:62;-1:-1:-1;;;8320:18:1;;;8313:35;8365:19;;12725:101:0::1;7989:401:1::0;12725:101:0::1;12849:23;:12:::0;12865:6:::1;12849:23;:::i;:::-;12837:9;:35:::0;-1:-1:-1;12645:235:0:o;9876:300::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;9986:6:::1;:16:::0;;-1:-1:-1;;;;10013:26:0;-1:-1:-1;;;9986:16:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;10013:26:0;;;;;-1:-1:-1;;;10013:26:0;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;;10050:18:0::1;-1:-1:-1::0;;;10050:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;10111:7;::::1;::::0;::::1;::::0;10088:20:::1;::::0;10097:11;;::::1;::::0;::::1;::::0;10088:6;::::1;;:20;:::i;:::-;:30;;;;:::i;:::-;10087:39;;10123:3;10087:39;10079:89;;;::::0;-1:-1:-1;;;10079:89:0;;8750:2:1;10079:89:0::1;::::0;::::1;8732:21:1::0;8789:2;8769:18;;;8762:30;8828:34;8808:18;;;8801:62;-1:-1:-1;;;8879:18:1;;;8872:35;8924:19;;10079:89:0::1;8548:401:1::0;10079:89:0::1;9876:300:::0;;;:::o;10184:335::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;10299:1:::1;10282:13;:18;;;;10274:72;;;::::0;-1:-1:-1;;;10274:72:0;;9156:2:1;10274:72:0::1;::::0;::::1;9138:21:1::0;9195:2;9175:18;;;9168:30;9234:34;9214:18;;;9207:62;-1:-1:-1;;;9285:18:1;;;9278:39;9334:19;;10274:72:0::1;8954:405:1::0;10274:72:0::1;10383:1;10365:14;:19;;;;10357:74;;;::::0;-1:-1:-1;;;10357:74:0;;9566:2:1;10357:74:0::1;::::0;::::1;9548:21:1::0;9605:2;9585:18;;;9578:30;9644:34;9624:18;;;9617:62;-1:-1:-1;;;9695:18:1;;;9688:40;9745:19;;10357:74:0::1;9364:406:1::0;10357:74:0::1;10442:12;:28:::0;;-1:-1:-1;;;;10481:30:0;-1:-1:-1;;;10442:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;10481:30:0;;-1:-1:-1;;;10481:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;10184:335::o;10527:136::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10616:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;10616:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10527:136::o;12032:361::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;12157:6:::1;12136:17;2009::::0;12152:1:::1;12136:17;:::i;:::-;12135:28;;;;:::i;:::-;12118:13;:45;;12110:111;;;::::0;-1:-1:-1;;;12110:111:0;;9977:2:1;12110:111:0::1;::::0;::::1;9959:21:1::0;10016:2;9996:18;;;9989:30;10055:34;10035:18;;;10028:62;-1:-1:-1;;;10106:18:1;;;10099:51;10167:19;;12110:111:0::1;9775:417:1::0;12110:111:0::1;12279:4;12258:17;2009::::0;12274:1:::1;12258:17;:::i;:::-;12257:26;;;;:::i;:::-;12240:13;:43;;12232:108;;;::::0;-1:-1:-1;;;12232:108:0;;10399:2:1;12232:108:0::1;::::0;::::1;10381:21:1::0;10438:2;10418:18;;;10411:30;10477:34;10457:18;;;10450:62;-1:-1:-1;;;10528:18:1;;;10521:50;10588:19;;12232:108:0::1;10197:416:1::0;12232:108:0::1;12351:18;:34:::0;12032:361::o;10671:158::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10770:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;10770:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10671:158::o;522:92::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;604:1:::1;587:19:::0;;-1:-1:-1;;;;;;587:19:0::1;::::0;;522:92::o;12401:236::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;12525:4:::1;12517;12496:17;2009::::0;12512:1:::1;12496:17;:::i;:::-;12495:26;;;;:::i;:::-;12494:35;;;;:::i;:::-;12482:8;:47;;12474:102;;;::::0;-1:-1:-1;;;12474:102:0;;10820:2:1;12474:102:0::1;::::0;::::1;10802:21:1::0;10859:2;10839:18;;;10832:30;10898:34;10878:18;;;10871:62;-1:-1:-1;;;10949:18:1;;;10942:40;10999:19;;12474:102:0::1;10618:406:1::0;12474:102:0::1;12610:19;:8:::0;12622:6:::1;12610:19;:::i;:::-;12587:20;:42:::0;-1:-1:-1;12401:236:0:o;9784:84::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;9838:14:::1;:22:::0;;-1:-1:-1;;;;9838:22:0::1;::::0;;9784:84::o;13264:177::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13348:24:0;::::1;13340:59;;;;-1:-1:-1::0;;;13340:59:0::1;;;;;;;:::i;:::-;13410:10;:23:::0;;-1:-1:-1;;;;;;13410:23:0::1;-1:-1:-1::0;;;;;13410:23:0;;;::::1;::::0;;;::::1;::::0;;13264:177::o;13071:185::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13159:24:0;::::1;13151:59;;;;-1:-1:-1::0;;;13151:59:0::1;;;;;;;:::i;:::-;13221:14;:27:::0;;-1:-1:-1;;;;;;13221:27:0::1;-1:-1:-1::0;;;;;13221:27:0;;;::::1;::::0;;;::::1;::::0;;13071:185::o;11813:211::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;11922:13:::1;-1:-1:-1::0;;;;;11914:21:0::1;:4;-1:-1:-1::0;;;;;11914:21:0::1;::::0;11906:60:::1;;;::::0;-1:-1:-1;;;11906:60:0;;11582:2:1;11906:60:0::1;::::0;::::1;11564:21:1::0;11621:2;11601:18;;;11594:30;11660:28;11640:18;;;11633:56;11706:18;;11906:60:0::1;11380:350:1::0;11906:60:0::1;-1:-1:-1::0;;;;;11977:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;11977:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11813:211::o;6407:158::-;6478:4;6495:40;6505:10;6517:9;6528:6;6495:9;:40::i;12888:175::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12971:24:0;::::1;12963:59;;;;-1:-1:-1::0;;;12963:59:0::1;;;;;;;:::i;:::-;13033:9;:22:::0;;-1:-1:-1;;;;;;13033:22:0::1;-1:-1:-1::0;;;;;13033:22:0;;;::::1;::::0;;;::::1;::::0;;12888:175::o;13580:240::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;13692:38:::1;::::0;-1:-1:-1;;;13692:38:0;;13724:4:::1;13692:38;::::0;::::1;1471:51:1::0;13665:24:0::1;::::0;-1:-1:-1;;;;;13692:23:0;::::1;::::0;::::1;::::0;1444:18:1;;13692:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13665:65;;13741:51;13764:5;13771:2;13775:16;13741:22;:51::i;13828:247::-:0;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13906:18:0;::::1;13898:46;;;::::0;-1:-1:-1;;;13898:46:0;;12126:2:1;13898:46:0::1;::::0;::::1;12108:21:1::0;12165:2;12145:18;;;12138:30;-1:-1:-1;;;12184:18:1;;;12177:45;12239:18;;13898:46:0::1;11924:339:1::0;13898:46:0::1;13958:12;13976:4;-1:-1:-1::0;;;;;13976:9:0::1;13993:21;13976:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13957:62;;;14038:7;14030:37;;;::::0;-1:-1:-1;;;14030:37:0;;12680:2:1;14030:37:0::1;::::0;::::1;12662:21:1::0;12719:2;12699:18;;;12692:30;-1:-1:-1;;;12738:18:1;;;12731:47;12795:18;;14030:37:0::1;12478:341:1::0;14030:37:0::1;13887:188;13828:247:::0;:::o;10837:492::-;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;10954:8:::1;::::0;-1:-1:-1;;;10954:8:0;::::1;;;10953:9;10945:38;;;;-1:-1:-1::0;;;10945:38:0::1;;;;;;;:::i;:::-;10999:9;10994:328;11018:9;:16;11014:1;:20;10994:328;;;11089:7;11097:1;11089:10;;;;;;;;:::i;:::-;;;;;;;11064:9;:21;11074:10;-1:-1:-1::0;;;;;11064:21:0::1;-1:-1:-1::0;;;;;11064:21:0::1;;;;;;;;;;;;;:35;;11056:86;;;;-1:-1:-1::0;;;11056:86:0::1;;;;;;;:::i;:::-;11184:7;11192:1;11184:10;;;;;;;;:::i;:::-;;;;;;;11157:9;:23;11167:9;11177:1;11167:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11157:23:0::1;-1:-1:-1::0;;;;;11157:23:0::1;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;11234:7;11242:1;11234:10;;;;;;;;:::i;:::-;;;;;;;11209:9;:21;11219:10;-1:-1:-1::0;;;;;11209:21:0::1;-1:-1:-1::0;;;;;11209:21:0::1;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;11285:9;11295:1;11285:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11264:46:0::1;11273:10;-1:-1:-1::0;;;;;11264:46:0::1;;11299:7;11307:1;11299:10;;;;;;;;:::i;:::-;;;;;;;11264:46;;;;1679:25:1::0;;1667:2;1652:18;;1533:177;11264:46:0::1;;;;;;;;11036:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10994:328;;11468:337:::0;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;11543:8:::1;::::0;-1:-1:-1;;;11543:8:0;::::1;;;11542:9;11534:38;;;;-1:-1:-1::0;;;11534:38:0::1;;;;;;;:::i;:::-;11655:4;11675:24;::::0;;;:9:::1;:24;::::0;;;;;;11746:10:::1;::::0;11583:214;;-1:-1:-1;;;11583:214:0;;::::1;::::0;::::1;14452:34:1::0;;;;14502:18;;;14495:34;14545:18;;;14538:34;;;14588:18;;;14581:34;;;;-1:-1:-1;;;;;11746:10:0::1;14631:19:1::0;;;14624:44;11771:15:0::1;14684:19:1::0;;;14677:35;3470:42:0::1;::::0;11583:31:::1;::::0;11622:9:::1;::::0;14386:19:1;;11583:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11337:123::-:0;447:10;436:7;347;374:6;-1:-1:-1;;;;;374:6:0;;301:87;436:7;-1:-1:-1;;;;;436:21:0;;428:66;;;;-1:-1:-1;;;428:66:0;;;;;;;:::i;:::-;11397:8:::1;::::0;-1:-1:-1;;;11397:8:0;::::1;;;11396:9;11388:38;;;;-1:-1:-1::0;;;11388:38:0::1;;;;;;;:::i;:::-;11437:8;:15:::0;;-1:-1:-1;;;;11437:15:0::1;-1:-1:-1::0;;;11437:15:0::1;::::0;;11337:123::o;6062:337::-;-1:-1:-1;;;;;6155:19:0;;6147:68;;;;-1:-1:-1;;;6147:68:0;;15236:2:1;6147:68:0;;;15218:21:1;15275:2;15255:18;;;15248:30;15314:34;15294:18;;;15287:62;-1:-1:-1;;;15365:18:1;;;15358:34;15409:19;;6147:68:0;15034:400:1;6147:68:0;-1:-1:-1;;;;;6234:21:0;;6226:68;;;;-1:-1:-1;;;6226:68:0;;15641:2:1;6226:68:0;;;15623:21:1;15680:2;15660:18;;;15653:30;15719:34;15699:18;;;15692:62;-1:-1:-1;;;15770:18:1;;;15763:32;15812:19;;6226:68:0;15439:398:1;6226:68:0;-1:-1:-1;;;;;6307:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6359:32;;1679:25:1;;;6359:32:0;;1652:18:1;6359:32:0;;;;;;;6062:337;;;:::o;7101:2675::-;-1:-1:-1;;;;;7189:18:0;;7181:68;;;;-1:-1:-1;;;7181:68:0;;16044:2:1;7181:68:0;;;16026:21:1;16083:2;16063:18;;;16056:30;16122:34;16102:18;;;16095:62;-1:-1:-1;;;16173:18:1;;;16166:35;16218:19;;7181:68:0;15842:401:1;7181:68:0;-1:-1:-1;;;;;7268:16:0;;7260:64;;;;-1:-1:-1;;;7260:64:0;;16450:2:1;7260:64:0;;;16432:21:1;16489:2;16469:18;;;16462:30;16528:34;16508:18;;;16501:62;-1:-1:-1;;;16579:18:1;;;16572:33;16622:19;;7260:64:0;16248:399:1;7260:64:0;7352:1;7343:6;:10;7335:64;;;;-1:-1:-1;;;7335:64:0;;16854:2:1;7335:64:0;;;16836:21:1;16893:2;16873:18;;;16866:30;16932:34;16912:18;;;16905:62;-1:-1:-1;;;16983:18:1;;;16976:39;17032:19;;7335:64:0;16652:405:1;7335:64:0;7417:8;;-1:-1:-1;;;7417:8:0;;;;7416:9;:72;;;;-1:-1:-1;347:7:0;374:6;-1:-1:-1;;;;;7430:15:0;;;374:6;;7430:15;;;;:40;;-1:-1:-1;;;;;;7449:21:0;;7465:4;7449:21;;7430:40;:57;;;;-1:-1:-1;347:7:0;374:6;-1:-1:-1;;;;;7474:13:0;;;374:6;;7474:13;;7430:57;7412:134;;;7505:29;;-1:-1:-1;;;7505:29:0;;17264:2:1;7505:29:0;;;17246:21:1;17303:2;17283:18;;;17276:30;-1:-1:-1;;;17322:18:1;;;17315:49;17381:18;;7505:29:0;17062:343:1;7412:134:0;7562:14;;-1:-1:-1;;;7562:14:0;;;;7558:830;;;347:7;374:6;-1:-1:-1;;;;;7597:15:0;;;374:6;;7597:15;;;;:32;;-1:-1:-1;347:7:0;374:6;-1:-1:-1;;;;;7616:13:0;;;374:6;;7616:13;;7597:32;:52;;;;-1:-1:-1;;;;;;7633:16:0;;;;7597:52;:77;;;;-1:-1:-1;;;;;;7653:21:0;;7667:6;7653:21;;7597:77;:90;;;;-1:-1:-1;7679:8:0;;-1:-1:-1;;;7679:8:0;;;;7678:9;7597:90;7593:784;;;-1:-1:-1;;;;;7712:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;7748:35:0;;;;;;:31;:35;;;;;;;;7747:36;7712:71;7708:654;;;7826:20;;7816:6;:30;;7808:80;;;;-1:-1:-1;;;7808:80:0;;17612:2:1;7808:80:0;;;17594:21:1;17651:2;17631:18;;;17624:30;17690:34;17670:18;;;17663:62;-1:-1:-1;;;17741:18:1;;;17734:35;17786:19;;7808:80:0;17410:401:1;7808:80:0;7945:9;;-1:-1:-1;;;;;5726:18:0;;5699:7;5726:18;;;:9;:18;;;;;;7919:22;;:6;:22;:::i;:::-;:35;;7911:67;;;;-1:-1:-1;;;7911:67:0;;18018:2:1;7911:67:0;;;18000:21:1;18057:2;18037:18;;;18030:30;-1:-1:-1;;;18076:18:1;;;18069:49;18135:18;;7911:67:0;17816:343:1;7911:67:0;7708:654;;;-1:-1:-1;;;;;8008:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;8042:37:0;;;;;;:31;:37;;;;;;;;8041:38;8008:71;8004:358;;;8122:20;;8112:6;:30;;8104:80;;;;-1:-1:-1;;;8104:80:0;;18366:2:1;8104:80:0;;;18348:21:1;18405:2;18385:18;;;18378:30;18444:34;18424:18;;;18417:62;-1:-1:-1;;;18495:18:1;;;18488:36;18541:19;;8104:80:0;18164:402:1;8004:358:0;-1:-1:-1;;;;;8215:35:0;;;;;;:31;:35;;;;;;;;8210:152;;8309:9;;-1:-1:-1;;;;;5726:18:0;;5699:7;5726:18;;;:9;:18;;;;;;8283:22;;:6;:22;:::i;:::-;:35;;8275:67;;;;-1:-1:-1;;;8275:67:0;;18018:2:1;8275:67:0;;;18000:21:1;18057:2;18037:18;;;18030:30;-1:-1:-1;;;18076:18:1;;;18069:49;18135:18;;8275:67:0;17816:343:1;8275:67:0;8443:18;;8433:4;8400:12;5726:18;;;:9;:18;;;;;;-1:-1:-1;8415:46:0;;;;;8478:20;;-1:-1:-1;8490:8:0;;-1:-1:-1;;;8490:8:0;;;;8489:9;8478:20;:56;;;;-1:-1:-1;;;;;;8503:31:0;;;;;;:25;:31;;;;;;;;8502:32;8478:56;:86;;;;-1:-1:-1;;;;;;8539:25:0;;;;;;:19;:25;;;;;;;;8538:26;8478:86;:114;;;;-1:-1:-1;;;;;;8569:23:0;;;;;;:19;:23;;;;;;;;8568:24;8478:114;8474:218;;;8609:8;:15;;-1:-1:-1;;;;8609:15:0;-1:-1:-1;;;8609:15:0;;;8639:10;:8;:10::i;:::-;8664:8;:16;;-1:-1:-1;;;;8664:16:0;;;8474:218;8720:8;;-1:-1:-1;;;;;8745:25:0;;8704:12;8745:25;;;:19;:25;;;;;;8720:8;-1:-1:-1;;;8720:8:0;;;;;8719:9;;8745:25;;:52;;-1:-1:-1;;;;;;8774:23:0;;;;;;:19;:23;;;;;;;;8745:52;8741:100;;;-1:-1:-1;8824:5:0;8741:100;-1:-1:-1;;;;;8877:15:0;;8853:21;8877:15;;;:9;:15;;;;;;8911:23;;;;8903:74;;;;-1:-1:-1;;;8903:74:0;;;;;;;:::i;:::-;8990:12;9021:7;9017:600;;;-1:-1:-1;;;;;9049:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;9082:13:0;;-1:-1:-1;;;9082:13:0;;;;:17;;9049:50;9045:262;;;9137:13;;9154:3;;9128:22;;-1:-1:-1;;;9137:13:0;;;;9128:6;:22;:::i;:::-;9127:30;;;;:::i;:::-;9120:37;;9045:262;;;-1:-1:-1;;;;;9183:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;9218:12:0;;-1:-1:-1;;;9218:12:0;;;;:16;;9183:51;9179:128;;;9272:12;;9288:3;;9263:21;;-1:-1:-1;;;9272:12:0;;;;9263:6;:21;:::i;:::-;9262:29;;;;:::i;:::-;9255:36;;9179:128;9327:8;;9323:283;;-1:-1:-1;;;;;9434:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;9498:4;9480:24;;;;;;;:32;;;;;;9555:35;1679:25:1;;;9398:13:0;;;;;9498:4;;9434:15;9555:35;;1652:18:1;9555:35:0;;;;;;;9323:283;-1:-1:-1;;;;;9652:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;9692:13;;;;;;;;;;:23;;;;;;9742:26;;;;;;9671:6;1679:25:1;;1667:2;1652:18;;1533:177;9742:26:0;;;;;;;;7170:2606;;;;7101:2675;;;:::o;646:320::-;777:59;;;-1:-1:-1;;;;;18763:32:1;;;777:59:0;;;18745:51:1;18812:18;;;;18805:34;;;777:59:0;;;;;;;;;;18718:18:1;;;;777:59:0;;;;;;;-1:-1:-1;;;;;777:59:0;-1:-1:-1;;;777:59:0;;;766:71;;-1:-1:-1;;;;766:10:0;;;;:71;;777:59;766:71;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;730:107;;;;856:7;:57;;;;-1:-1:-1;868:11:0;;:16;;:44;;;899:4;888:24;;;;;;;;;;;;:::i;:::-;848:110;;;;-1:-1:-1;;;848:110:0;;19594:2:1;848:110:0;;;19576:21:1;19633:2;19613:18;;;19606:30;19672:34;19652:18;;;19645:62;-1:-1:-1;;;19723:18:1;;;19716:38;19771:19;;848:110:0;19392:404:1;848:110:0;719:247;;646:320;;;:::o;14083:1117::-;14146:18;;14122:21;14231:23;14146:18;14252:2;14231:23;:::i;:::-;14222:4;5699:7;5726:18;;;:9;:18;;;;;;14204:50;14200:122;;;14287:18;;:23;;14308:2;14287:23;:::i;:::-;14271:39;;14200:122;14358:16;;;14372:1;14358:16;;;;;;;;14334:21;;14358:16;;;;;;;;;;-1:-1:-1;14358:16:0;14334:40;;14403:4;14385;14390:1;14385:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14385:23:0;;;-1:-1:-1;;;;;14385:23:0;;;;;2482:42;14419:4;14424:1;14419:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14419:14:0;;;:7;;;;;;;;;;;:14;14446:122;;-1:-1:-1;;;14446:122:0;;3470:42;;14446:66;;:122;;14513:13;;14528:1;;14531:4;;14545;;14552:15;;14446:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14602:21:0;;-1:-1:-1;;14638:14:0;;;-1:-1:-1;14634:559:0;;14703:6;;14669:17;;14713:3;;14690:19;;-1:-1:-1;;;14703:6:0;;;;14690:10;:19;:::i;:::-;14689:27;;;;:::i;:::-;14766:7;;14669:47;;-1:-1:-1;14731:18:0;;14777:3;;14753:20;;-1:-1:-1;;;14766:7:0;;;;14753:10;:20;:::i;:::-;14752:28;;;;:::i;:::-;14731:49;-1:-1:-1;14795:22:0;14731:49;14820:22;14833:9;14820:10;:22;:::i;:::-;:35;;;;:::i;:::-;14894:10;;14886:47;;14795:60;;-1:-1:-1;;;;;;14894:10:0;;14918;;14886:47;;;;14918:10;14894;14886:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14970:14:0;;14962:55;;14872:61;;-1:-1:-1;;;;;;14970:14:0;;14998;;14962:55;;;;14998:14;14970;14962:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15054:9:0;;15046:45;;14948:69;;-1:-1:-1;;;;;;15054:9:0;;15077;;15046:45;;;;15077:9;15054;15046:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15113:68:0;;;21017:25:1;;;21073:2;21058:18;;21051:34;;;21101:18;;;21094:34;;;21159:2;21144:18;;21137:34;;;15032:59:0;;-1:-1:-1;15113:68:0;;21004:3:1;20989:19;15113:68:0;;;;;;;14654:539;;;14634:559;14111:1089;;;;14083:1117::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:173::-;738:20;;-1:-1:-1;;;;;787:31:1;;777:42;;767:70;;833:1;830;823:12;767:70;670:173;;;:::o;848:254::-;916:6;924;977:2;965:9;956:7;952:23;948:32;945:52;;;993:1;990;983:12;945:52;1016:29;1035:9;1016:29;:::i;:::-;1006:39;1092:2;1077:18;;;;1064:32;;-1:-1:-1;;;848:254:1:o;1904:328::-;1981:6;1989;1997;2050:2;2038:9;2029:7;2025:23;2021:32;2018:52;;;2066:1;2063;2056:12;2018:52;2089:29;2108:9;2089:29;:::i;:::-;2079:39;;2137:38;2171:2;2160:9;2156:18;2137:38;:::i;:::-;2127:48;;2222:2;2211:9;2207:18;2194:32;2184:42;;1904:328;;;;;:::o;2237:180::-;2296:6;2349:2;2337:9;2328:7;2324:23;2320:32;2317:52;;;2365:1;2362;2355:12;2317:52;-1:-1:-1;2388:23:1;;2237:180;-1:-1:-1;2237:180:1:o;2422:156::-;2488:20;;2548:4;2537:16;;2527:27;;2517:55;;2568:1;2565;2558:12;2583:322;2654:6;2662;2670;2723:2;2711:9;2702:7;2698:23;2694:32;2691:52;;;2739:1;2736;2729:12;2691:52;2762:27;2779:9;2762:27;:::i;:::-;2752:37;;2808:36;2840:2;2829:9;2825:18;2808:36;:::i;:::-;2798:46;;2863:36;2895:2;2884:9;2880:18;2863:36;:::i;:::-;2853:46;;2583:322;;;;;:::o;3118:252::-;3182:6;3190;3243:2;3231:9;3222:7;3218:23;3214:32;3211:52;;;3259:1;3256;3249:12;3211:52;3282:27;3299:9;3282:27;:::i;:::-;3272:37;;3328:36;3360:2;3349:9;3345:18;3328:36;:::i;:::-;3318:46;;3118:252;;;;;:::o;3375:118::-;3461:5;3454:13;3447:21;3440:5;3437:32;3427:60;;3483:1;3480;3473:12;3427:60;3375:118;:::o;3498:315::-;3563:6;3571;3624:2;3612:9;3603:7;3599:23;3595:32;3592:52;;;3640:1;3637;3630:12;3592:52;3663:29;3682:9;3663:29;:::i;:::-;3653:39;;3742:2;3731:9;3727:18;3714:32;3755:28;3777:5;3755:28;:::i;:::-;3802:5;3792:15;;;3498:315;;;;;:::o;3818:186::-;3877:6;3930:2;3918:9;3909:7;3905:23;3901:32;3898:52;;;3946:1;3943;3936:12;3898:52;3969:29;3988:9;3969:29;:::i;:::-;3959:39;3818:186;-1:-1:-1;;;3818:186:1:o;4009:260::-;4077:6;4085;4138:2;4126:9;4117:7;4113:23;4109:32;4106:52;;;4154:1;4151;4144:12;4106:52;4177:29;4196:9;4177:29;:::i;:::-;4167:39;;4225:38;4259:2;4248:9;4244:18;4225:38;:::i;4274:127::-;4335:10;4330:3;4326:20;4323:1;4316:31;4366:4;4363:1;4356:15;4390:4;4387:1;4380:15;4406:275;4477:2;4471:9;4542:2;4523:13;;-1:-1:-1;;4519:27:1;4507:40;;4577:18;4562:34;;4598:22;;;4559:62;4556:88;;;4624:18;;:::i;:::-;4660:2;4653:22;4406:275;;-1:-1:-1;4406:275:1:o;4686:183::-;4746:4;4779:18;4771:6;4768:30;4765:56;;;4801:18;;:::i;:::-;-1:-1:-1;4846:1:1;4842:14;4858:4;4838:25;;4686:183::o;4874:662::-;4928:5;4981:3;4974:4;4966:6;4962:17;4958:27;4948:55;;4999:1;4996;4989:12;4948:55;5035:6;5022:20;5061:4;5085:60;5101:43;5141:2;5101:43;:::i;:::-;5085:60;:::i;:::-;5179:15;;;5265:1;5261:10;;;;5249:23;;5245:32;;;5210:12;;;;5289:15;;;5286:35;;;5317:1;5314;5307:12;5286:35;5353:2;5345:6;5341:15;5365:142;5381:6;5376:3;5373:15;5365:142;;;5447:17;;5435:30;;5485:12;;;;5398;;5365:142;;;-1:-1:-1;5525:5:1;4874:662;-1:-1:-1;;;;;;4874:662:1:o;5541:1146::-;5659:6;5667;5720:2;5708:9;5699:7;5695:23;5691:32;5688:52;;;5736:1;5733;5726:12;5688:52;5776:9;5763:23;5805:18;5846:2;5838:6;5835:14;5832:34;;;5862:1;5859;5852:12;5832:34;5900:6;5889:9;5885:22;5875:32;;5945:7;5938:4;5934:2;5930:13;5926:27;5916:55;;5967:1;5964;5957:12;5916:55;6003:2;5990:16;6025:4;6049:60;6065:43;6105:2;6065:43;:::i;6049:60::-;6143:15;;;6225:1;6221:10;;;;6213:19;;6209:28;;;6174:12;;;;6249:19;;;6246:39;;;6281:1;6278;6271:12;6246:39;6305:11;;;;6325:148;6341:6;6336:3;6333:15;6325:148;;;6407:23;6426:3;6407:23;:::i;:::-;6395:36;;6358:12;;;;6451;;;;6325:148;;;6492:5;-1:-1:-1;;6535:18:1;;6522:32;;-1:-1:-1;;6566:16:1;;;6563:36;;;6595:1;6592;6585:12;6563:36;;6618:63;6673:7;6662:8;6651:9;6647:24;6618:63;:::i;:::-;6608:73;;;5541:1146;;;;;:::o;7101:356::-;7303:2;7285:21;;;7322:18;;;7315:30;7381:34;7376:2;7361:18;;7354:62;7448:2;7433:18;;7101:356::o;7462:127::-;7523:10;7518:3;7514:20;7511:1;7504:31;7554:4;7551:1;7544:15;7578:4;7575:1;7568:15;7594:168;7667:9;;;7698;;7715:15;;;7709:22;;7695:37;7685:71;;7736:18;;:::i;7767:217::-;7807:1;7833;7823:132;;7877:10;7872:3;7868:20;7865:1;7858:31;7912:4;7909:1;7902:15;7940:4;7937:1;7930:15;7823:132;-1:-1:-1;7969:9:1;;7767:217::o;8395:148::-;8483:4;8462:12;;;8476;;;8458:31;;8501:13;;8498:39;;;8517:18;;:::i;11029:346::-;11231:2;11213:21;;;11270:2;11250:18;;;11243:30;-1:-1:-1;;;11304:2:1;11289:18;;11282:52;11366:2;11351:18;;11029:346::o;11735:184::-;11805:6;11858:2;11846:9;11837:7;11833:23;11829:32;11826:52;;;11874:1;11871;11864:12;11826:52;-1:-1:-1;11897:16:1;;11735:184;-1:-1:-1;11735:184:1:o;12824:340::-;13026:2;13008:21;;;13065:2;13045:18;;;13038:30;-1:-1:-1;;;13099:2:1;13084:18;;13077:46;13155:2;13140:18;;12824:340::o;13169:127::-;13230:10;13225:3;13221:20;13218:1;13211:31;13261:4;13258:1;13251:15;13285:4;13282:1;13275:15;13301:402;13503:2;13485:21;;;13542:2;13522:18;;;13515:30;13581:34;13576:2;13561:18;;13554:62;-1:-1:-1;;;13647:2:1;13632:18;;13625:36;13693:3;13678:19;;13301:402::o;13708:125::-;13773:9;;;13794:10;;;13791:36;;;13807:18;;:::i;13838:128::-;13905:9;;;13926:11;;;13923:37;;;13940:18;;:::i;13971:135::-;14010:3;14031:17;;;14028:43;;14051:18;;:::i;:::-;-1:-1:-1;14098:1:1;14087:13;;13971:135::o;14723:306::-;14811:6;14819;14827;14880:2;14868:9;14859:7;14855:23;14851:32;14848:52;;;14896:1;14893;14886:12;14848:52;14925:9;14919:16;14909:26;;14975:2;14964:9;14960:18;14954:25;14944:35;;15019:2;15008:9;15004:18;14998:25;14988:35;;14723:306;;;;;:::o;18850:287::-;18979:3;19017:6;19011:13;19033:66;19092:6;19087:3;19080:4;19072:6;19068:17;19033:66;:::i;:::-;19115:16;;;;;18850:287;-1:-1:-1;;18850:287:1:o;19142:245::-;19209:6;19262:2;19250:9;19241:7;19237:23;19233:32;19230:52;;;19278:1;19275;19268:12;19230:52;19310:9;19304:16;19329:28;19351:5;19329:28;:::i;19801:980::-;20063:4;20111:3;20100:9;20096:19;20142:6;20131:9;20124:25;20168:2;20206:6;20201:2;20190:9;20186:18;20179:34;20249:3;20244:2;20233:9;20229:18;20222:31;20273:6;20308;20302:13;20339:6;20331;20324:22;20377:3;20366:9;20362:19;20355:26;;20416:2;20408:6;20404:15;20390:29;;20437:1;20447:195;20461:6;20458:1;20455:13;20447:195;;;20526:13;;-1:-1:-1;;;;;20522:39:1;20510:52;;20617:15;;;;20582:12;;;;20558:1;20476:9;20447:195;;;-1:-1:-1;;;;;;;20698:32:1;;;;20693:2;20678:18;;20671:60;-1:-1:-1;;;20762:3:1;20747:19;20740:35;20659:3;19801:980;-1:-1:-1;;;19801:980:1:o
Swarm Source
ipfs://e08042f9c6a2751087d586cbbb49da1c10561bfa78317429e5a6333024d3d21c
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.