ERC-20
Overview
Max Total Supply
1,000,000,000 SPEEDY
Holders
64
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000093000217 SPEEDYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SpeedyBot
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-31 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { 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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } library Address{ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract SpeedyBot is ERC20, Ownable{ using Address for address payable; IRouter public router; address public pair; bool private swapping; bool public swapEnabled; bool public launched; event TransferForeignToken(address token, uint256 amount); event Launched(); event SwapEnabled(); event SwapThresholdUpdated(); event BuyTaxesUpdated(); event SellTaxesUpdated(); event MarketingWalletUpdated(); event DevWalletUpdated(); event ExcludedFromFeesUpdated(); event MaxTxAmountUpdated(); event MaxWalletAmountUpdated(); event StuckEthersCleared(); uint256 public swapThreshold = 1000000 * 10**18; // 0.1% of total supply uint256 public maxTxAmount = 1000000000 * 10**18; uint256 public maxWalletAmount = 1000000000 * 10**18; address public marketingWallet = 0x76285C845AcFc21aEA5d5E3366827894baBdB740; address public devWallet = 0x76285C845AcFc21aEA5d5E3366827894baBdB740; struct Taxes { uint256 marketing; uint256 liquidity; uint256 dev; } Taxes public buyTaxes = Taxes(4,0,1); Taxes public sellTaxes = Taxes(4,0,1); uint256 private totBuyTax = 5; uint256 private totSellTax = 5; mapping (address => bool) public excludedFromFees; modifier inSwap() { if (!swapping) { swapping = true; _; swapping = false; } } constructor() ERC20("Speedy Bot", "SPEEDY") { _mint(msg.sender, 1000000000 * 10 ** decimals()); excludedFromFees[msg.sender] = true; IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; excludedFromFees[address(this)] = true; excludedFromFees[marketingWallet] = true; excludedFromFees[devWallet] = true; } function _transfer(address sender, address recipient, uint256 amount) internal override { require(amount > 0, "Transfer amount must be greater than zero"); if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){ require(launched, "Trading not active yet"); require(amount <= maxTxAmount, "You are exceeding maxTxAmount"); if(recipient != pair){ require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount"); } } uint256 fee; if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0; else{ if(recipient == pair) fee = amount * totSellTax / 100; else if(sender == pair) fee = amount * totBuyTax / 100; else fee = 0; } if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees(); super._transfer(sender, recipient, amount - fee); if(fee > 0) super._transfer(sender, address(this) ,fee); } function swapForFees() private inSwap { uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= swapThreshold) { uint256 denominator = totSellTax * 2; uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity; if(tokensToAddLiquidityWith > 0 && ethToAddLiquidityWith > 0){ // Add liquidity to dex addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing; if(marketingAmt > 0){ payable(marketingWallet).sendValue(marketingAmt); } uint256 devAmt = unitBalance * 2 * sellTaxes.dev; if(devAmt > 0){ payable(devWallet).sendValue(devAmt); } } } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp); } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function setSwapEnabled(bool state) external onlyOwner { // to be used only in case of dire emergency swapEnabled = state; emit SwapEnabled(); } function setSwapThreshold(uint256 new_amount) external onlyOwner { require(new_amount >= 10000, "Swap amount cannot be lower than 0.001% total supply."); require(new_amount <= 30000000, "Swap amount cannot be higher than 3% total supply."); swapThreshold = new_amount * (10**18); emit SwapThresholdUpdated(); } function launch() external onlyOwner{ require(!launched, "Trading already active"); launched = true; swapEnabled = true; emit Launched(); } function setTaxes(uint256 _bmarketing, uint256 _bliquidity, uint256 _bdev, uint256 _smarketing, uint256 _sliquidity, uint256 _sdev) external onlyOwner{ buyTaxes = Taxes(_bmarketing, _bliquidity, _bdev); totBuyTax = _bmarketing + _bliquidity + _bdev; sellTaxes = Taxes(_smarketing, _sliquidity, _sdev); totSellTax = _smarketing + _sliquidity + _sdev; require(totBuyTax <= 31); require(totSellTax <= 51); require(totSellTax >= 1); } function updateMarketingWallet(address newWallet) external onlyOwner{ excludedFromFees[marketingWallet] = false; require(newWallet != address(0), "Marketing Wallet cannot be zero address"); marketingWallet = newWallet; emit MarketingWalletUpdated(); } function updateDevWallet(address newWallet) external onlyOwner{ excludedFromFees[devWallet] = false; require(newWallet != address(0), "Dev Wallet cannot be zero address"); devWallet = newWallet; emit DevWalletUpdated(); } function setNewMarketingWallet(address newMarketingWallet) external onlyOwner{ require(newMarketingWallet != address(0), "New Marketing Wallet cannot be zero address"); excludedFromFees[marketingWallet] = false; marketingWallet = newMarketingWallet; excludedFromFees[marketingWallet] = true; emit MarketingWalletUpdated(); } function setNewDevWallet(address newDevWallet) external onlyOwner{ require(newDevWallet != address(0), "New Dev Wallet cannot be zero address"); excludedFromFees[devWallet] = false; devWallet = newDevWallet; excludedFromFees[devWallet] = true; emit DevWalletUpdated(); } function updateExcludedFromFees(address _address, bool state) external onlyOwner { excludedFromFees[_address] = state; emit ExcludedFromFeesUpdated(); } function updateMaxTxAmount(uint256 amount) external onlyOwner{ require(amount >= 2500000, "Cannot set maxSell lower than 0.25%"); maxTxAmount = amount * (10**18); emit MaxTxAmountUpdated(); } function updateMaxWalletAmount(uint256 amount) external onlyOwner{ require(amount >= 2500000, "Cannot set maxSell lower than 0.25%"); maxWalletAmount = amount * (10**18); emit MaxWalletAmountUpdated(); } function withdrawStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent) { uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } function clearStuckEthers(uint256 amountPercentage) external onlyOwner { uint256 amountETH = address(this).balance; payable(msg.sender).transfer((amountETH * amountPercentage) / 100); emit StuckEthersCleared(); } // fallbacks receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"DevWalletUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"ExcludedFromFeesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"MaxWalletAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"SellTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"StuckEthersCleared","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapThresholdUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"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":"buyTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckEthers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"setNewDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"setNewMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bmarketing","type":"uint256"},{"internalType":"uint256","name":"_bliquidity","type":"uint256"},{"internalType":"uint256","name":"_bdev","type":"uint256"},{"internalType":"uint256","name":"_smarketing","type":"uint256"},{"internalType":"uint256","name":"_sliquidity","type":"uint256"},{"internalType":"uint256","name":"_sdev","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
69d3c21bcecceda10000006008556b033b2e3c9fd0803ce80000006009819055600a55600b80547376285c845acfc21aea5d5e3366827894babdb7406001600160a01b03199182168117909255600c80549091169091179055600460808190525f60a0819052600160c0819052600d839055600e829055600f81905561014060405260e083905261010082905261012081905260109290925560115560125560056013819055601455348015620000b4575f80fd5b506040518060400160405280600a81526020016914dc1959591e48109bdd60b21b8152506040518060400160405280600681526020016553504545445960d01b815250816003908162000108919062000525565b50600462000117828262000525565b505050620001346200012e6200034760201b60201c565b6200034b565b6200015d33620001476012600a620006fc565b6200015790633b9aca0062000713565b6200039c565b335f908152601560209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001c5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001eb91906200072d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000237573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025d91906200072d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ce91906200072d565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550305f90815260156020526040808220805460ff199081166001908117909255600b54851684528284208054821683179055600c549094168352912080549092161790556200076b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620003f75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546200040a919062000755565b90915550506001600160a01b0382165f90815260208190526040812080548392906200043890849062000755565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620004af57607f821691505b602082108103620004ce57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000481575f81815260208120601f850160051c81016020861015620004fc5750805b601f850160051c820191505b818110156200051d5782815560010162000508565b505050505050565b81516001600160401b0381111562000541576200054162000486565b62000559816200055284546200049a565b84620004d4565b602080601f8311600181146200058f575f8415620005775750858301515b5f19600386901b1c1916600185901b1785556200051d565b5f85815260208120601f198616915b82811015620005bf578886015182559484019460019091019084016200059e565b5085821015620005dd57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200064157815f1904821115620006255762000625620005ed565b808516156200063357918102915b93841c939080029062000606565b509250929050565b5f826200065957506001620006f6565b816200066757505f620006f6565b81600181146200068057600281146200068b57620006ab565b6001915050620006f6565b60ff8411156200069f576200069f620005ed565b50506001821b620006f6565b5060208310610133831016604e8410600b8410161715620006d0575081810a620006f6565b620006dc838362000601565b805f1904821115620006f257620006f2620005ed565b0290505b92915050565b5f6200070c60ff84168362000649565b9392505050565b8082028115828204841417620006f657620006f6620005ed565b5f602082840312156200073e575f80fd5b81516001600160a01b03811681146200070c575f80fd5b80820180821115620006f657620006f6620005ed565b61242480620007795f395ff3fe60806040526004361061022b575f3560e01c8063864701a511610129578063aa4bde28116100a8578063e01af92c1161006d578063e01af92c146106a8578063e545fd6d146106c7578063f2fde38b146106e6578063f66895a314610705578063f887ea4014610723575f80fd5b8063aa4bde28146105e3578063aacebbe3146105f8578063c18bc19514610617578063dbe66ca014610636578063dd62ed3e14610664575f80fd5b80639aed7370116100ee5780639aed7370146105485780639d0014b114610567578063a457c2d714610586578063a8aa1b31146105a5578063a9059cbb146105c4575f80fd5b8063864701a5146104aa5780638c0b5e22146104e35780638da5cb5b146104f85780638ea5220f1461051557806395d89b4114610534575f80fd5b806325b86edf116101b55780636ddd17131161017a5780636ddd1713146103eb57806370a082311461040b578063715018a61461043f57806375f0a874146104535780638091f3bf1461048a575f80fd5b806325b86edf14610354578063313ce56714610373578063395093511461038e5780636256d181146103ad5780636a30fb9d146103cc575f80fd5b8063095ea7b3116101fb578063095ea7b3146102b45780631600d302146102e357806318160ddd146103025780631816467f1461031657806323b872dd14610335575f80fd5b806301339c21146102365780630445b6671461024c57806304d4c9901461027457806306fdde0314610293575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a610742565b005b348015610257575f80fd5b5061026160085481565b6040519081526020015b60405180910390f35b34801561027f575f80fd5b5061024a61028e366004612009565b610807565b34801561029e575f80fd5b506102a76108e4565b60405161026b9190612048565b3480156102bf575f80fd5b506102d36102ce3660046120a7565b610974565b604051901515815260200161026b565b3480156102ee575f80fd5b5061024a6102fd3660046120d1565b61098a565b34801561030d575f80fd5b50600254610261565b348015610321575f80fd5b5061024a6103303660046120d1565b610a94565b348015610340575f80fd5b506102d361034f3660046120f3565b610b7f565b34801561035f575f80fd5b506102d361036e366004612131565b610c2e565b34801561037e575f80fd5b506040516012815260200161026b565b348015610399575f80fd5b506102d36103a83660046120a7565b610d82565b3480156103b8575f80fd5b5061024a6103c7366004612168565b610db8565b3480156103d7575f80fd5b5061024a6103e63660046120d1565b610e45565b3480156103f6575f80fd5b506007546102d390600160a81b900460ff1681565b348015610416575f80fd5b506102616104253660046120d1565b6001600160a01b03165f9081526020819052604090205490565b34801561044a575f80fd5b5061024a610f49565b34801561045e575f80fd5b50600b54610472906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b348015610495575f80fd5b506007546102d390600160b01b900460ff1681565b3480156104b5575f80fd5b50600d54600e54600f546104c892919083565b6040805193845260208401929092529082015260600161026b565b3480156104ee575f80fd5b5061026160095481565b348015610503575f80fd5b506005546001600160a01b0316610472565b348015610520575f80fd5b50600c54610472906001600160a01b031681565b34801561053f575f80fd5b506102a7610f7e565b348015610553575f80fd5b5061024a610562366004612168565b610f8d565b348015610572575f80fd5b5061024a610581366004612168565b611024565b348015610591575f80fd5b506102d36105a03660046120a7565b61116c565b3480156105b0575f80fd5b50600754610472906001600160a01b031681565b3480156105cf575f80fd5b506102d36105de3660046120a7565b611206565b3480156105ee575f80fd5b50610261600a5481565b348015610603575f80fd5b5061024a6106123660046120d1565b611212565b348015610622575f80fd5b5061024a610631366004612168565b611303565b348015610641575f80fd5b506102d36106503660046120d1565b60156020525f908152604090205460ff1681565b34801561066f575f80fd5b5061026161067e366004612131565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156106b3575f80fd5b5061024a6106c236600461218c565b611390565b3480156106d2575f80fd5b5061024a6106e13660046121a7565b6113fc565b3480156106f1575f80fd5b5061024a6107003660046120d1565b611473565b348015610710575f80fd5b506010546011546012546104c892919083565b34801561072e575f80fd5b50600654610472906001600160a01b031681565b6005546001600160a01b031633146107755760405162461bcd60e51b815260040161076c906121d3565b60405180910390fd5b600754600160b01b900460ff16156107c85760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b604482015260640161076c565b6007805461ffff60a81b191661010160a81b1790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c8905f90a1565b6005546001600160a01b031633146108315760405162461bcd60e51b815260040161076c906121d3565b604080516060810182528781526020810187905201849052600d869055600e859055600f84905583610863868861221c565b61086d919061221c565b601355604080516060810182528481526020810184905201819052601083905560118290556012819055806108a2838561221c565b6108ac919061221c565b601455601354601f10156108be575f80fd5b603360145411156108cd575f80fd5b600160145410156108dc575f80fd5b505050505050565b6060600380546108f39061222f565b80601f016020809104026020016040519081016040528092919081815260200182805461091f9061222f565b801561096a5780601f106109415761010080835404028352916020019161096a565b820191905f5260205f20905b81548152906001019060200180831161094d57829003601f168201915b5050505050905090565b5f61098033848461150e565b5060015b92915050565b6005546001600160a01b031633146109b45760405162461bcd60e51b815260040161076c906121d3565b6001600160a01b038116610a1e5760405162461bcd60e51b815260206004820152602b60248201527f4e6577204d61726b6574696e672057616c6c65742063616e6e6f74206265207a60448201526a65726f206164647265737360a81b606482015260840161076c565b600b80546001600160a01b039081165f90815260156020526040808220805460ff1990811690915584546001600160a01b0319169386169384179094559181528181208054909316600117909255517fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e09190a150565b6005546001600160a01b03163314610abe5760405162461bcd60e51b815260040161076c906121d3565b600c546001600160a01b039081165f908152601560205260409020805460ff191690558116610b395760405162461bcd60e51b815260206004820152602160248201527f4465762057616c6c65742063616e6e6f74206265207a65726f206164647265736044820152607360f81b606482015260840161076c565b600c80546001600160a01b0319166001600160a01b0383161790556040517fb1ff7734afd0bd4b584e4245b67b49289f9a8f5cce43431866ec130f40d81831905f90a150565b5f610b8b848484611631565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c0f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161076c565b610c238533610c1e8685612267565b61150e565b506001949350505050565b6005545f906001600160a01b03163314610c5a5760405162461bcd60e51b815260040161076c906121d3565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc2919061227a565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610d12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d369190612291565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610980918590610c1e90869061221c565b6005546001600160a01b03163314610de25760405162461bcd60e51b815260040161076c906121d3565b622625a0811015610e055760405162461bcd60e51b815260040161076c906122ac565b610e1781670de0b6b3a76400006122ef565b6009556040517f3fb2441f7fb0cf4882020ee77c4b9fb347bdbbf2fa439c76ca667e1b55f18b2b905f90a150565b6005546001600160a01b03163314610e6f5760405162461bcd60e51b815260040161076c906121d3565b6001600160a01b038116610ed35760405162461bcd60e51b815260206004820152602560248201527f4e6577204465762057616c6c65742063616e6e6f74206265207a65726f206164604482015264647265737360d81b606482015260840161076c565b600c80546001600160a01b039081165f90815260156020526040808220805460ff1990811690915584546001600160a01b0319169386169384179094559181528181208054909316600117909255517fb1ff7734afd0bd4b584e4245b67b49289f9a8f5cce43431866ec130f40d818319190a150565b6005546001600160a01b03163314610f735760405162461bcd60e51b815260040161076c906121d3565b610f7c5f611969565b565b6060600480546108f39061222f565b6005546001600160a01b03163314610fb75760405162461bcd60e51b815260040161076c906121d3565b47336108fc6064610fc885856122ef565b610fd29190612306565b6040518115909202915f818181858888f19350505050158015610ff7573d5f803e3d5ffd5b506040517ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf9905f90a15050565b6005546001600160a01b0316331461104e5760405162461bcd60e51b815260040161076c906121d3565b6127108110156110be5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161076c565b6301c9c38081111561112d5760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101992903a37ba30b61039bab838363c9760711b606482015260840161076c565b61113f81670de0b6b3a76400006122ef565b6008556040517ee5ce26a39fffb27e333aa941bc88d6cc7491c7ad00e1dc92cae29c83aec93d905f90a150565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156111ed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161076c565b6111fc3385610c1e8685612267565b5060019392505050565b5f610980338484611631565b6005546001600160a01b0316331461123c5760405162461bcd60e51b815260040161076c906121d3565b600b546001600160a01b039081165f908152601560205260409020805460ff1916905581166112bd5760405162461bcd60e51b815260206004820152602760248201527f4d61726b6574696e672057616c6c65742063616e6e6f74206265207a65726f206044820152666164647265737360c81b606482015260840161076c565b600b80546001600160a01b0319166001600160a01b0383161790556040517fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e0905f90a150565b6005546001600160a01b0316331461132d5760405162461bcd60e51b815260040161076c906121d3565b622625a08110156113505760405162461bcd60e51b815260040161076c906122ac565b61136281670de0b6b3a76400006122ef565b600a556040517f49b5ebe6b6bd29b732eb93789df6cb9d7d384e64ab8600b8ab879f82a4fb1dec905f90a150565b6005546001600160a01b031633146113ba5760405162461bcd60e51b815260040161076c906121d3565b6007805460ff60a81b1916600160a81b831515021790556040517f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a905f90a150565b6005546001600160a01b031633146114265760405162461bcd60e51b815260040161076c906121d3565b6001600160a01b0382165f90815260156020526040808220805460ff1916841515179055517fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed9190a15050565b6005546001600160a01b0316331461149d5760405162461bcd60e51b815260040161076c906121d3565b6001600160a01b0381166115025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161076c565b61150b81611969565b50565b6001600160a01b0383166115705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076c565b6001600160a01b0382166115d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116116925760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161076c565b6001600160a01b0383165f9081526015602052604090205460ff161580156116d257506001600160a01b0382165f9081526015602052604090205460ff16155b80156116e85750600754600160a01b900460ff16155b1561182a57600754600160b01b900460ff1661173f5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b604482015260640161076c565b6009548111156117915760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e74000000604482015260640161076c565b6007546001600160a01b0383811691161461182a57600a54816117c8846001600160a01b03165f9081526020819052604090205490565b6117d2919061221c565b111561182a5760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b606482015260840161076c565b6007545f90600160a01b900460ff168061185b57506001600160a01b0384165f9081526015602052604090205460ff165b8061187d57506001600160a01b0383165f9081526015602052604090205460ff165b1561188957505f6118e9565b6007546001600160a01b03908116908416036118c0576064601454836118af91906122ef565b6118b99190612306565b90506118e9565b6007546001600160a01b03908116908516036118e6576064601354836118af91906122ef565b505f5b600754600160a81b900460ff16801561190c5750600754600160a01b900460ff16155b801561192657506007546001600160a01b03858116911614155b801561193157505f81115b1561193e5761193e6119ba565b611952848461194d8486612267565b611b22565b801561196357611963843083611b22565b50505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16610f7c576007805460ff60a01b1916600160a01b179055305f9081526020819052604081205490506008548110611b12575f6014546002611a0891906122ef565b90505f8160106001015484611a1d91906122ef565b611a279190612306565b90505f611a348285612267565b905047611a4082611cf8565b5f611a4b8247612267565b6011549091505f90611a5d9087612267565b611a679083612306565b6011549091505f90611a7990836122ef565b90505f86118015611a8957505f81115b15611a9857611a988682611e40565b6010545f90611aa88460026122ef565b611ab291906122ef565b90508015611ad057600b54611ad0906001600160a01b031682611eef565b6012545f90611ae08560026122ef565b611aea91906122ef565b90508015611b0857600c54611b08906001600160a01b031682611eef565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611b865760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161076c565b6001600160a01b038216611be85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161076c565b6001600160a01b0383165f9081526020819052604090205481811015611c5f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161076c565b611c698282612267565b6001600160a01b038086165f908152602081905260408082209390935590851681529081208054849290611c9e90849061221c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cea91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611d2b57611d2b612325565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da69190612339565b81600181518110611db957611db9612325565b6001600160a01b039283166020918202929092010152600654611ddf913091168461150e565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e179085905f90869030904290600401612354565b5f604051808303815f87803b158015611e2e575f80fd5b505af11580156108dc573d5f803e3d5ffd5b600654611e589030906001600160a01b03168461150e565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611ec3573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ee891906123c3565b5050505050565b80471015611f3f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161076c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f88576040519150601f19603f3d011682016040523d82523d5f602084013e611f8d565b606091505b50509050806120045760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161076c565b505050565b5f805f805f8060c0878903121561201e575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f6020808352835180828501525f5b8181101561207357858101830151858201604001528201612057565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461150b575f80fd5b5f80604083850312156120b8575f80fd5b82356120c381612093565b946020939093013593505050565b5f602082840312156120e1575f80fd5b81356120ec81612093565b9392505050565b5f805f60608486031215612105575f80fd5b833561211081612093565b9250602084013561212081612093565b929592945050506040919091013590565b5f8060408385031215612142575f80fd5b823561214d81612093565b9150602083013561215d81612093565b809150509250929050565b5f60208284031215612178575f80fd5b5035919050565b801515811461150b575f80fd5b5f6020828403121561219c575f80fd5b81356120ec8161217f565b5f80604083850312156121b8575f80fd5b82356121c381612093565b9150602083013561215d8161217f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561098457610984612208565b600181811c9082168061224357607f821691505b60208210810361226157634e487b7160e01b5f52602260045260245ffd5b50919050565b8181038181111561098457610984612208565b5f6020828403121561228a575f80fd5b5051919050565b5f602082840312156122a1575f80fd5b81516120ec8161217f565b60208082526023908201527f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60408201526232352560e81b606082015260800190565b808202811582820484141761098457610984612208565b5f8261232057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612349575f80fd5b81516120ec81612093565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123a25784516001600160a01b03168352938301939183019160010161237d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156123d5575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122083ece82c7d3354d298403b0bdd5143c2a4014af5cdefe061e4b14534f23e631264736f6c63430008140033
Deployed Bytecode
0x60806040526004361061022b575f3560e01c8063864701a511610129578063aa4bde28116100a8578063e01af92c1161006d578063e01af92c146106a8578063e545fd6d146106c7578063f2fde38b146106e6578063f66895a314610705578063f887ea4014610723575f80fd5b8063aa4bde28146105e3578063aacebbe3146105f8578063c18bc19514610617578063dbe66ca014610636578063dd62ed3e14610664575f80fd5b80639aed7370116100ee5780639aed7370146105485780639d0014b114610567578063a457c2d714610586578063a8aa1b31146105a5578063a9059cbb146105c4575f80fd5b8063864701a5146104aa5780638c0b5e22146104e35780638da5cb5b146104f85780638ea5220f1461051557806395d89b4114610534575f80fd5b806325b86edf116101b55780636ddd17131161017a5780636ddd1713146103eb57806370a082311461040b578063715018a61461043f57806375f0a874146104535780638091f3bf1461048a575f80fd5b806325b86edf14610354578063313ce56714610373578063395093511461038e5780636256d181146103ad5780636a30fb9d146103cc575f80fd5b8063095ea7b3116101fb578063095ea7b3146102b45780631600d302146102e357806318160ddd146103025780631816467f1461031657806323b872dd14610335575f80fd5b806301339c21146102365780630445b6671461024c57806304d4c9901461027457806306fdde0314610293575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a610742565b005b348015610257575f80fd5b5061026160085481565b6040519081526020015b60405180910390f35b34801561027f575f80fd5b5061024a61028e366004612009565b610807565b34801561029e575f80fd5b506102a76108e4565b60405161026b9190612048565b3480156102bf575f80fd5b506102d36102ce3660046120a7565b610974565b604051901515815260200161026b565b3480156102ee575f80fd5b5061024a6102fd3660046120d1565b61098a565b34801561030d575f80fd5b50600254610261565b348015610321575f80fd5b5061024a6103303660046120d1565b610a94565b348015610340575f80fd5b506102d361034f3660046120f3565b610b7f565b34801561035f575f80fd5b506102d361036e366004612131565b610c2e565b34801561037e575f80fd5b506040516012815260200161026b565b348015610399575f80fd5b506102d36103a83660046120a7565b610d82565b3480156103b8575f80fd5b5061024a6103c7366004612168565b610db8565b3480156103d7575f80fd5b5061024a6103e63660046120d1565b610e45565b3480156103f6575f80fd5b506007546102d390600160a81b900460ff1681565b348015610416575f80fd5b506102616104253660046120d1565b6001600160a01b03165f9081526020819052604090205490565b34801561044a575f80fd5b5061024a610f49565b34801561045e575f80fd5b50600b54610472906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b348015610495575f80fd5b506007546102d390600160b01b900460ff1681565b3480156104b5575f80fd5b50600d54600e54600f546104c892919083565b6040805193845260208401929092529082015260600161026b565b3480156104ee575f80fd5b5061026160095481565b348015610503575f80fd5b506005546001600160a01b0316610472565b348015610520575f80fd5b50600c54610472906001600160a01b031681565b34801561053f575f80fd5b506102a7610f7e565b348015610553575f80fd5b5061024a610562366004612168565b610f8d565b348015610572575f80fd5b5061024a610581366004612168565b611024565b348015610591575f80fd5b506102d36105a03660046120a7565b61116c565b3480156105b0575f80fd5b50600754610472906001600160a01b031681565b3480156105cf575f80fd5b506102d36105de3660046120a7565b611206565b3480156105ee575f80fd5b50610261600a5481565b348015610603575f80fd5b5061024a6106123660046120d1565b611212565b348015610622575f80fd5b5061024a610631366004612168565b611303565b348015610641575f80fd5b506102d36106503660046120d1565b60156020525f908152604090205460ff1681565b34801561066f575f80fd5b5061026161067e366004612131565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156106b3575f80fd5b5061024a6106c236600461218c565b611390565b3480156106d2575f80fd5b5061024a6106e13660046121a7565b6113fc565b3480156106f1575f80fd5b5061024a6107003660046120d1565b611473565b348015610710575f80fd5b506010546011546012546104c892919083565b34801561072e575f80fd5b50600654610472906001600160a01b031681565b6005546001600160a01b031633146107755760405162461bcd60e51b815260040161076c906121d3565b60405180910390fd5b600754600160b01b900460ff16156107c85760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b604482015260640161076c565b6007805461ffff60a81b191661010160a81b1790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c8905f90a1565b6005546001600160a01b031633146108315760405162461bcd60e51b815260040161076c906121d3565b604080516060810182528781526020810187905201849052600d869055600e859055600f84905583610863868861221c565b61086d919061221c565b601355604080516060810182528481526020810184905201819052601083905560118290556012819055806108a2838561221c565b6108ac919061221c565b601455601354601f10156108be575f80fd5b603360145411156108cd575f80fd5b600160145410156108dc575f80fd5b505050505050565b6060600380546108f39061222f565b80601f016020809104026020016040519081016040528092919081815260200182805461091f9061222f565b801561096a5780601f106109415761010080835404028352916020019161096a565b820191905f5260205f20905b81548152906001019060200180831161094d57829003601f168201915b5050505050905090565b5f61098033848461150e565b5060015b92915050565b6005546001600160a01b031633146109b45760405162461bcd60e51b815260040161076c906121d3565b6001600160a01b038116610a1e5760405162461bcd60e51b815260206004820152602b60248201527f4e6577204d61726b6574696e672057616c6c65742063616e6e6f74206265207a60448201526a65726f206164647265737360a81b606482015260840161076c565b600b80546001600160a01b039081165f90815260156020526040808220805460ff1990811690915584546001600160a01b0319169386169384179094559181528181208054909316600117909255517fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e09190a150565b6005546001600160a01b03163314610abe5760405162461bcd60e51b815260040161076c906121d3565b600c546001600160a01b039081165f908152601560205260409020805460ff191690558116610b395760405162461bcd60e51b815260206004820152602160248201527f4465762057616c6c65742063616e6e6f74206265207a65726f206164647265736044820152607360f81b606482015260840161076c565b600c80546001600160a01b0319166001600160a01b0383161790556040517fb1ff7734afd0bd4b584e4245b67b49289f9a8f5cce43431866ec130f40d81831905f90a150565b5f610b8b848484611631565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c0f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161076c565b610c238533610c1e8685612267565b61150e565b506001949350505050565b6005545f906001600160a01b03163314610c5a5760405162461bcd60e51b815260040161076c906121d3565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc2919061227a565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610d12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d369190612291565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610980918590610c1e90869061221c565b6005546001600160a01b03163314610de25760405162461bcd60e51b815260040161076c906121d3565b622625a0811015610e055760405162461bcd60e51b815260040161076c906122ac565b610e1781670de0b6b3a76400006122ef565b6009556040517f3fb2441f7fb0cf4882020ee77c4b9fb347bdbbf2fa439c76ca667e1b55f18b2b905f90a150565b6005546001600160a01b03163314610e6f5760405162461bcd60e51b815260040161076c906121d3565b6001600160a01b038116610ed35760405162461bcd60e51b815260206004820152602560248201527f4e6577204465762057616c6c65742063616e6e6f74206265207a65726f206164604482015264647265737360d81b606482015260840161076c565b600c80546001600160a01b039081165f90815260156020526040808220805460ff1990811690915584546001600160a01b0319169386169384179094559181528181208054909316600117909255517fb1ff7734afd0bd4b584e4245b67b49289f9a8f5cce43431866ec130f40d818319190a150565b6005546001600160a01b03163314610f735760405162461bcd60e51b815260040161076c906121d3565b610f7c5f611969565b565b6060600480546108f39061222f565b6005546001600160a01b03163314610fb75760405162461bcd60e51b815260040161076c906121d3565b47336108fc6064610fc885856122ef565b610fd29190612306565b6040518115909202915f818181858888f19350505050158015610ff7573d5f803e3d5ffd5b506040517ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf9905f90a15050565b6005546001600160a01b0316331461104e5760405162461bcd60e51b815260040161076c906121d3565b6127108110156110be5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161076c565b6301c9c38081111561112d5760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101992903a37ba30b61039bab838363c9760711b606482015260840161076c565b61113f81670de0b6b3a76400006122ef565b6008556040517ee5ce26a39fffb27e333aa941bc88d6cc7491c7ad00e1dc92cae29c83aec93d905f90a150565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156111ed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161076c565b6111fc3385610c1e8685612267565b5060019392505050565b5f610980338484611631565b6005546001600160a01b0316331461123c5760405162461bcd60e51b815260040161076c906121d3565b600b546001600160a01b039081165f908152601560205260409020805460ff1916905581166112bd5760405162461bcd60e51b815260206004820152602760248201527f4d61726b6574696e672057616c6c65742063616e6e6f74206265207a65726f206044820152666164647265737360c81b606482015260840161076c565b600b80546001600160a01b0319166001600160a01b0383161790556040517fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e0905f90a150565b6005546001600160a01b0316331461132d5760405162461bcd60e51b815260040161076c906121d3565b622625a08110156113505760405162461bcd60e51b815260040161076c906122ac565b61136281670de0b6b3a76400006122ef565b600a556040517f49b5ebe6b6bd29b732eb93789df6cb9d7d384e64ab8600b8ab879f82a4fb1dec905f90a150565b6005546001600160a01b031633146113ba5760405162461bcd60e51b815260040161076c906121d3565b6007805460ff60a81b1916600160a81b831515021790556040517f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a905f90a150565b6005546001600160a01b031633146114265760405162461bcd60e51b815260040161076c906121d3565b6001600160a01b0382165f90815260156020526040808220805460ff1916841515179055517fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed9190a15050565b6005546001600160a01b0316331461149d5760405162461bcd60e51b815260040161076c906121d3565b6001600160a01b0381166115025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161076c565b61150b81611969565b50565b6001600160a01b0383166115705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076c565b6001600160a01b0382166115d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116116925760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161076c565b6001600160a01b0383165f9081526015602052604090205460ff161580156116d257506001600160a01b0382165f9081526015602052604090205460ff16155b80156116e85750600754600160a01b900460ff16155b1561182a57600754600160b01b900460ff1661173f5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b604482015260640161076c565b6009548111156117915760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e74000000604482015260640161076c565b6007546001600160a01b0383811691161461182a57600a54816117c8846001600160a01b03165f9081526020819052604090205490565b6117d2919061221c565b111561182a5760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b606482015260840161076c565b6007545f90600160a01b900460ff168061185b57506001600160a01b0384165f9081526015602052604090205460ff165b8061187d57506001600160a01b0383165f9081526015602052604090205460ff165b1561188957505f6118e9565b6007546001600160a01b03908116908416036118c0576064601454836118af91906122ef565b6118b99190612306565b90506118e9565b6007546001600160a01b03908116908516036118e6576064601354836118af91906122ef565b505f5b600754600160a81b900460ff16801561190c5750600754600160a01b900460ff16155b801561192657506007546001600160a01b03858116911614155b801561193157505f81115b1561193e5761193e6119ba565b611952848461194d8486612267565b611b22565b801561196357611963843083611b22565b50505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16610f7c576007805460ff60a01b1916600160a01b179055305f9081526020819052604081205490506008548110611b12575f6014546002611a0891906122ef565b90505f8160106001015484611a1d91906122ef565b611a279190612306565b90505f611a348285612267565b905047611a4082611cf8565b5f611a4b8247612267565b6011549091505f90611a5d9087612267565b611a679083612306565b6011549091505f90611a7990836122ef565b90505f86118015611a8957505f81115b15611a9857611a988682611e40565b6010545f90611aa88460026122ef565b611ab291906122ef565b90508015611ad057600b54611ad0906001600160a01b031682611eef565b6012545f90611ae08560026122ef565b611aea91906122ef565b90508015611b0857600c54611b08906001600160a01b031682611eef565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611b865760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161076c565b6001600160a01b038216611be85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161076c565b6001600160a01b0383165f9081526020819052604090205481811015611c5f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161076c565b611c698282612267565b6001600160a01b038086165f908152602081905260408082209390935590851681529081208054849290611c9e90849061221c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cea91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611d2b57611d2b612325565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da69190612339565b81600181518110611db957611db9612325565b6001600160a01b039283166020918202929092010152600654611ddf913091168461150e565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e179085905f90869030904290600401612354565b5f604051808303815f87803b158015611e2e575f80fd5b505af11580156108dc573d5f803e3d5ffd5b600654611e589030906001600160a01b03168461150e565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611ec3573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ee891906123c3565b5050505050565b80471015611f3f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161076c565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f88576040519150601f19603f3d011682016040523d82523d5f602084013e611f8d565b606091505b50509050806120045760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161076c565b505050565b5f805f805f8060c0878903121561201e575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f6020808352835180828501525f5b8181101561207357858101830151858201604001528201612057565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461150b575f80fd5b5f80604083850312156120b8575f80fd5b82356120c381612093565b946020939093013593505050565b5f602082840312156120e1575f80fd5b81356120ec81612093565b9392505050565b5f805f60608486031215612105575f80fd5b833561211081612093565b9250602084013561212081612093565b929592945050506040919091013590565b5f8060408385031215612142575f80fd5b823561214d81612093565b9150602083013561215d81612093565b809150509250929050565b5f60208284031215612178575f80fd5b5035919050565b801515811461150b575f80fd5b5f6020828403121561219c575f80fd5b81356120ec8161217f565b5f80604083850312156121b8575f80fd5b82356121c381612093565b9150602083013561215d8161217f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561098457610984612208565b600181811c9082168061224357607f821691505b60208210810361226157634e487b7160e01b5f52602260045260245ffd5b50919050565b8181038181111561098457610984612208565b5f6020828403121561228a575f80fd5b5051919050565b5f602082840312156122a1575f80fd5b81516120ec8161217f565b60208082526023908201527f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60408201526232352560e81b606082015260800190565b808202811582820484141761098457610984612208565b5f8261232057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612349575f80fd5b81516120ec81612093565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123a25784516001600160a01b03168352938301939183019160010161237d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156123d5575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122083ece82c7d3354d298403b0bdd5143c2a4014af5cdefe061e4b14534f23e631264736f6c63430008140033
Deployed Bytecode Sourcemap
7256:9260:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13283:180;;;;;;;;;;;;;:::i;:::-;;7920:47;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7920:47:0;;;;;;;;13471:498;;;;;;;;;;-1:-1:-1;13471:498:0;;;;;:::i;:::-;;:::i;1693:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2607:169::-;;;;;;;;;;-1:-1:-1;2607:169:0;;;;;:::i;:::-;;:::i;:::-;;;1898:14:1;;1891:22;1873:41;;1861:2;1846:18;2607:169:0;1733:187:1;14559:354:0;;;;;;;;;;-1:-1:-1;14559:354:0;;;;;:::i;:::-;;:::i;2014:108::-;;;;;;;;;;-1:-1:-1;2102:12:0;;2014:108;;14289:262;;;;;;;;;;-1:-1:-1;14289:262:0;;;;;:::i;:::-;;:::i;2784:422::-;;;;;;;;;;-1:-1:-1;2784:422:0;;;;;:::i;:::-;;:::i;15894:310::-;;;;;;;;;;-1:-1:-1;15894:310:0;;;;;:::i;:::-;;:::i;1913:93::-;;;;;;;;;;-1:-1:-1;1913:93:0;;1996:2;3173:36:1;;3161:2;3146:18;1913:93:0;3031:184:1;3214:215:0;;;;;;;;;;-1:-1:-1;3214:215:0;;;;;:::i;:::-;;:::i;15416:223::-;;;;;;;;;;-1:-1:-1;15416:223:0;;;;;:::i;:::-;;:::i;14921:300::-;;;;;;;;;;-1:-1:-1;14921:300:0;;;;;:::i;:::-;;:::i;7433:23::-;;;;;;;;;;-1:-1:-1;7433:23:0;;;;-1:-1:-1;;;7433:23:0;;;;;;2130:127;;;;;;;;;;-1:-1:-1;2130:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2231:18:0;2204:7;2231:18;;;;;;;;;;;;2130:127;6033:94;;;;;;;;;;;;;:::i;8118:75::-;;;;;;;;;;-1:-1:-1;8118:75:0;;;;-1:-1:-1;;;;;8118:75:0;;;;;;-1:-1:-1;;;;;3569:32:1;;;3551:51;;3539:2;3524:18;8118:75:0;3405:203:1;7463:20:0;;;;;;;;;;-1:-1:-1;7463:20:0;;;;-1:-1:-1;;;7463:20:0;;;;;;8390:36;;;;;;;;;;-1:-1:-1;8390:36:0;;;;;;;;;;;;;;;;3815:25:1;;;3871:2;3856:18;;3849:34;;;;3899:18;;;3892:34;3803:2;3788:18;8390:36:0;3613:319:1;7998:48:0;;;;;;;;;;;;;;;;5810:87;;;;;;;;;;-1:-1:-1;5883:6:0;;-1:-1:-1;;;;;5883:6:0;5810:87;;8200:69;;;;;;;;;;-1:-1:-1;8200:69:0;;;;-1:-1:-1;;;;;8200:69:0;;;1801:104;;;;;;;;;;;;;:::i;16212:244::-;;;;;;;;;;-1:-1:-1;16212:244:0;;;;;:::i;:::-;;:::i;12924:351::-;;;;;;;;;;-1:-1:-1;12924:351:0;;;;;:::i;:::-;;:::i;3437:377::-;;;;;;;;;;-1:-1:-1;3437:377:0;;;;;:::i;:::-;;:::i;7373:19::-;;;;;;;;;;-1:-1:-1;7373:19:0;;;;-1:-1:-1;;;;;7373:19:0;;;2265:175;;;;;;;;;;-1:-1:-1;2265:175:0;;;;;:::i;:::-;;:::i;8053:52::-;;;;;;;;;;;;;;;;13981:297;;;;;;;;;;-1:-1:-1;13981:297:0;;;;;:::i;:::-;;:::i;15651:235::-;;;;;;;;;;-1:-1:-1;15651:235:0;;;;;:::i;:::-;;:::i;8556:49::-;;;;;;;;;;-1:-1:-1;8556:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2448:151;;;;;;;;;;-1:-1:-1;2448:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2564:18:0;;;2537:7;2564:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2448:151;12749:167;;;;;;;;;;-1:-1:-1;12749:167:0;;;;;:::i;:::-;;:::i;15229:175::-;;;;;;;;;;-1:-1:-1;15229:175:0;;;;;:::i;:::-;;:::i;6135:192::-;;;;;;;;;;-1:-1:-1;6135:192:0;;;;;:::i;:::-;;:::i;8433:37::-;;;;;;;;;;-1:-1:-1;8433:37:0;;;;;;;;;;;;7345:21;;;;;;;;;;-1:-1:-1;7345:21:0;;;;-1:-1:-1;;;;;7345:21:0;;;13283:180;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;;;;;;;;;13339:8:::1;::::0;-1:-1:-1;;;13339:8:0;::::1;;;13338:9;13330:44;;;::::0;-1:-1:-1;;;13330:44:0;;5479:2:1;13330:44:0::1;::::0;::::1;5461:21:1::0;5518:2;5498:18;;;5491:30;-1:-1:-1;;;5537:18:1;;;5530:52;5599:18;;13330:44:0::1;5277:346:1::0;13330:44:0::1;13385:8;:15:::0;;-1:-1:-1;;;;13411:18:0;-1:-1:-1;;;13411:18:0;;;13445:10:::1;::::0;::::1;::::0;-1:-1:-1;;13445:10:0::1;13283:180::o:0;13471:498::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;13643:38:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;13632:8:::1;:49:::0;;;;;;;;;;;13675:5;13704:25:::1;13662:11:::0;13649;13704:25:::1;:::i;:::-;:33;;;;:::i;:::-;13692:9;:45:::0;13760:38:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;13748:9:::1;:50:::0;;;;;;;;;;;13792:5;13822:25:::1;13779:11:::0;13766;13822:25:::1;:::i;:::-;:33;;;;:::i;:::-;13809:10;:46:::0;13874:9:::1;::::0;13887:2:::1;-1:-1:-1::0;13874:15:0::1;13866:24;;;::::0;::::1;;13923:2;13909:10;;:16;;13901:25;;;::::0;::::1;;13959:1;13945:10;;:15;;13937:24;;;::::0;::::1;;13471:498:::0;;;;;;:::o;1693:100::-;1747:13;1780:5;1773:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1693:100;:::o;2607:169::-;2690:4;2707:39;175:10;2730:7;2739:6;2707:8;:39::i;:::-;-1:-1:-1;2764:4:0;2607:169;;;;;:::o;14559:354::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14651:32:0;::::1;14643:88;;;::::0;-1:-1:-1;;;14643:88:0;;6477:2:1;14643:88:0::1;::::0;::::1;6459:21:1::0;6516:2;6496:18;;;6489:30;6555:34;6535:18;;;6528:62;-1:-1:-1;;;6606:18:1;;;6599:41;6657:19;;14643:88:0::1;6275:407:1::0;14643:88:0::1;14755:15;::::0;;-1:-1:-1;;;;;14755:15:0;;::::1;14774:5;14738:33:::0;;;:16:::1;:33;::::0;;;;;:41;;-1:-1:-1;;14738:41:0;;::::1;::::0;;;14786:36;;-1:-1:-1;;;;;;14786:36:0::1;::::0;;::::1;::::0;;::::1;::::0;;;14829:33;;;;;;:40;;;;::::1;-1:-1:-1::0;14829:40:0::1;::::0;;;14881:24;::::1;::::0;14774:5;14881:24:::1;14559:354:::0;:::o;14289:262::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;14379:9:::1;::::0;-1:-1:-1;;;;;14379:9:0;;::::1;14392:5;14362:27:::0;;;:16:::1;:27;::::0;;;;:35;;-1:-1:-1;;14362:35:0::1;::::0;;14416:23;::::1;14408:69;;;::::0;-1:-1:-1;;;14408:69:0;;6889:2:1;14408:69:0::1;::::0;::::1;6871:21:1::0;6928:2;6908:18;;;6901:30;6967:34;6947:18;;;6940:62;-1:-1:-1;;;7018:18:1;;;7011:31;7059:19;;14408:69:0::1;6687:397:1::0;14408:69:0::1;14488:9;:21:::0;;-1:-1:-1;;;;;;14488:21:0::1;-1:-1:-1::0;;;;;14488:21:0;::::1;;::::0;;14525:18:::1;::::0;::::1;::::0;-1:-1:-1;;14525:18:0::1;14289:262:::0;:::o;2784:422::-;2890:4;2907:36;2917:6;2925:9;2936:6;2907:9;:36::i;:::-;-1:-1:-1;;;;;2983:19:0;;2956:24;2983:19;;;:11;:19;;;;;;;;175:10;2983:33;;;;;;;;3035:26;;;;3027:79;;;;-1:-1:-1;;;3027:79:0;;7291:2:1;3027:79:0;;;7273:21:1;7330:2;7310:18;;;7303:30;7369:34;7349:18;;;7342:62;-1:-1:-1;;;7420:18:1;;;7413:38;7468:19;;3027:79:0;7089:404:1;3027:79:0;3117:57;3126:6;175:10;3148:25;3167:6;3148:16;:25;:::i;:::-;3117:8;:57::i;:::-;-1:-1:-1;3194:4:0;;2784:422;-1:-1:-1;;;;2784:422:0:o;15894:310::-;5883:6;;15980:10;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;16030:39:::1;::::0;-1:-1:-1;;;16030:39:0;;16063:4:::1;16030:39;::::0;::::1;3551:51:1::0;16003:24:0::1;::::0;-1:-1:-1;;;;;16030:24:0;::::1;::::0;::::1;::::0;3524:18:1;;16030:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16088:46;::::0;-1:-1:-1;;;16088:46:0;;-1:-1:-1;;;;;8012:32:1;;;16088:46:0::1;::::0;::::1;7994:51:1::0;8061:18;;;8054:34;;;16003:66:0;;-1:-1:-1;16088:23:0;;::::1;::::0;::::1;::::0;7967:18:1;;16088:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16150;::::0;;-1:-1:-1;;;;;8012:32:1;;7994:51;;8076:2;8061:18;;8054:34;;;16080:54:0;;-1:-1:-1;16150:46:0::1;::::0;7967:18:1;16150:46:0::1;;;;;;;15992:212;15894:310:::0;;;;:::o;3214:215::-;175:10;3302:4;3351:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3351:34:0;;;;;;;;;;3302:4;;3319:80;;3342:7;;3351:47;;3388:10;;3351:47;:::i;15416:223::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;15506:7:::1;15496:6;:17;;15488:65;;;;-1:-1:-1::0;;;15488:65:0::1;;;;;;;:::i;:::-;15578:17;:6:::0;15588::::1;15578:17;:::i;:::-;15564:11;:31:::0;15611:20:::1;::::0;::::1;::::0;;;::::1;15416:223:::0;:::o;14921:300::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15001:26:0;::::1;14993:76;;;::::0;-1:-1:-1;;;14993:76:0;;9128:2:1;14993:76:0::1;::::0;::::1;9110:21:1::0;9167:2;9147:18;;;9140:30;9206:34;9186:18;;;9179:62;-1:-1:-1;;;9257:18:1;;;9250:35;9302:19;;14993:76:0::1;8926:401:1::0;14993:76:0::1;15093:9;::::0;;-1:-1:-1;;;;;15093:9:0;;::::1;15106:5;15076:27:::0;;;:16:::1;:27;::::0;;;;;:35;;-1:-1:-1;;15076:35:0;;::::1;::::0;;;15118:24;;-1:-1:-1;;;;;;15118:24:0::1;::::0;;::::1;::::0;;::::1;::::0;;;15149:27;;;;;;:34;;;;::::1;-1:-1:-1::0;15149:34:0::1;::::0;;;15195:18;::::1;::::0;15106:5;15195:18:::1;14921:300:::0;:::o;6033:94::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;6098:21:::1;6116:1;6098:9;:21::i;:::-;6033:94::o:0;1801:104::-;1857:13;1890:7;1883:14;;;;;:::i;16212:244::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;16314:21:::1;16354:10;16346:66;16408:3;16376:28;16388:16:::0;16314:21;16376:28:::1;:::i;:::-;16375:36;;;;:::i;:::-;16346:66;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;16428:20:0::1;::::0;::::1;::::0;;;::::1;16283:173;16212:244:::0;:::o;12924:351::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;13022:5:::1;13008:10;:19;;13000:85;;;::::0;-1:-1:-1;;;13000:85:0;;9756:2:1;13000:85:0::1;::::0;::::1;9738:21:1::0;9795:2;9775:18;;;9768:30;9834:34;9814:18;;;9807:62;-1:-1:-1;;;9885:18:1;;;9878:51;9946:19;;13000:85:0::1;9554:417:1::0;13000:85:0::1;13118:8;13104:10;:22;;13096:85;;;::::0;-1:-1:-1;;;13096:85:0;;10178:2:1;13096:85:0::1;::::0;::::1;10160:21:1::0;10217:2;10197:18;;;10190:30;10256:34;10236:18;;;10229:62;-1:-1:-1;;;10307:18:1;;;10300:48;10365:19;;13096:85:0::1;9976:414:1::0;13096:85:0::1;13208:21;:10:::0;13222:6:::1;13208:21;:::i;:::-;13192:13;:37:::0;13245:22:::1;::::0;::::1;::::0;;;::::1;12924:351:::0;:::o;3437:377::-;175:10;3530:4;3574:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3574:34:0;;;;;;;;;;3627:35;;;;3619:85;;;;-1:-1:-1;;;3619:85:0;;10597:2:1;3619:85:0;;;10579:21:1;10636:2;10616:18;;;10609:30;10675:34;10655:18;;;10648:62;-1:-1:-1;;;10726:18:1;;;10719:35;10771:19;;3619:85:0;10395:401:1;3619:85:0;3715:67;175:10;3738:7;3747:34;3766:15;3747:16;:34;:::i;3715:67::-;-1:-1:-1;3802:4:0;;3437:377;-1:-1:-1;;;3437:377:0:o;2265:175::-;2351:4;2368:42;175:10;2392:9;2403:6;2368:9;:42::i;13981:297::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;14077:15:::1;::::0;-1:-1:-1;;;;;14077:15:0;;::::1;14096:5;14060:33:::0;;;:16:::1;:33;::::0;;;;:41;;-1:-1:-1;;14060:41:0::1;::::0;;14120:23;::::1;14112:75;;;::::0;-1:-1:-1;;;14112:75:0;;11003:2:1;14112:75:0::1;::::0;::::1;10985:21:1::0;11042:2;11022:18;;;11015:30;11081:34;11061:18;;;11054:62;-1:-1:-1;;;11132:18:1;;;11125:37;11179:19;;14112:75:0::1;10801:403:1::0;14112:75:0::1;14198:15;:27:::0;;-1:-1:-1;;;;;;14198:27:0::1;-1:-1:-1::0;;;;;14198:27:0;::::1;;::::0;;14241:24:::1;::::0;::::1;::::0;-1:-1:-1;;14241:24:0::1;13981:297:::0;:::o;15651:235::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;15745:7:::1;15735:6;:17;;15727:65;;;;-1:-1:-1::0;;;15727:65:0::1;;;;;;;:::i;:::-;15821:17;:6:::0;15831::::1;15821:17;:::i;:::-;15803:15;:35:::0;15854:24:::1;::::0;::::1;::::0;;;::::1;15651:235:::0;:::o;12749:167::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;12860:11:::1;:19:::0;;-1:-1:-1;;;;12860:19:0::1;-1:-1:-1::0;;;12860:19:0;::::1;;;;::::0;;12895:13:::1;::::0;::::1;::::0;-1:-1:-1;;12895:13:0::1;12749:167:::0;:::o;15229:175::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15321:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;:34;;-1:-1:-1;;15321:34:0::1;::::0;::::1;;;::::0;;15371:25;::::1;::::0;15321:26;15371:25:::1;15229:175:::0;;:::o;6135:192::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6224:22:0;::::1;6216:73;;;::::0;-1:-1:-1;;;6216:73:0;;11411:2:1;6216:73:0::1;::::0;::::1;11393:21:1::0;11450:2;11430:18;;;11423:30;11489:34;11469:18;;;11462:62;-1:-1:-1;;;11540:18:1;;;11533:36;11586:19;;6216:73:0::1;11209:402:1::0;6216:73:0::1;6300:19;6310:8;6300:9;:19::i;:::-;6135:192:::0;:::o;4780:346::-;-1:-1:-1;;;;;4882:19:0;;4874:68;;;;-1:-1:-1;;;4874:68:0;;11818:2:1;4874:68:0;;;11800:21:1;11857:2;11837:18;;;11830:30;11896:34;11876:18;;;11869:62;-1:-1:-1;;;11947:18:1;;;11940:34;11991:19;;4874:68:0;11616:400:1;4874:68:0;-1:-1:-1;;;;;4961:21:0;;4953:68;;;;-1:-1:-1;;;4953:68:0;;12223:2:1;4953:68:0;;;12205:21:1;12262:2;12242:18;;;12235:30;12301:34;12281:18;;;12274:62;-1:-1:-1;;;12352:18:1;;;12345:32;12394:19;;4953:68:0;12021:398:1;4953:68:0;-1:-1:-1;;;;;5034:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5086:32;;160:25:1;;;5086:32:0;;133:18:1;5086:32:0;;;;;;;4780:346;;;:::o;9324:1145::-;9440:1;9431:6;:10;9423:64;;;;-1:-1:-1;;;9423:64:0;;12626:2:1;9423:64:0;;;12608:21:1;12665:2;12645:18;;;12638:30;12704:34;12684:18;;;12677:62;-1:-1:-1;;;12755:18:1;;;12748:39;12804:19;;9423:64:0;12424:405:1;9423:64:0;-1:-1:-1;;;;;9530:24:0;;;;;;:16;:24;;;;;;;;9529:25;:57;;;;-1:-1:-1;;;;;;9559:27:0;;;;;;:16;:27;;;;;;;;9558:28;9529:57;:70;;;;-1:-1:-1;9591:8:0;;-1:-1:-1;;;9591:8:0;;;;9590:9;9529:70;9526:386;;;9623:8;;-1:-1:-1;;;9623:8:0;;;;9615:43;;;;-1:-1:-1;;;9615:43:0;;13036:2:1;9615:43:0;;;13018:21:1;13075:2;13055:18;;;13048:30;-1:-1:-1;;;13094:18:1;;;13087:52;13156:18;;9615:43:0;12834:346:1;9615:43:0;9691:11;;9681:6;:21;;9673:63;;;;-1:-1:-1;;;9673:63:0;;13387:2:1;9673:63:0;;;13369:21:1;13426:2;13406:18;;;13399:30;13465:31;13445:18;;;13438:59;13514:18;;9673:63:0;13185:353:1;9673:63:0;9767:4;;-1:-1:-1;;;;;9754:17:0;;;9767:4;;9754:17;9751:150;;9832:15;;9822:6;9799:20;9809:9;-1:-1:-1;;;;;2231:18:0;2204:7;2231:18;;;;;;;;;;;;2130:127;9799:20;:29;;;;:::i;:::-;:48;;9791:94;;;;-1:-1:-1;;;9791:94:0;;13745:2:1;9791:94:0;;;13727:21:1;13784:2;13764:18;;;13757:30;13823:34;13803:18;;;13796:62;-1:-1:-1;;;13874:18:1;;;13867:31;13915:19;;9791:94:0;13543:397:1;9791:94:0;9962:8;;9924:11;;-1:-1:-1;;;9962:8:0;;;;;:36;;-1:-1:-1;;;;;;9974:24:0;;;;;;:16;:24;;;;;;;;9962:36;:67;;;-1:-1:-1;;;;;;10002:27:0;;;;;;:16;:27;;;;;;;;9962:67;9958:282;;;-1:-1:-1;10037:1:0;9958:282;;;10095:4;;-1:-1:-1;;;;;10095:4:0;;;10082:17;;;;10079:149;;10129:3;10116:10;;10107:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10101:31;;10079:149;;;10165:4;;-1:-1:-1;;;;;10165:4:0;;;10155:14;;;;10152:76;;10198:3;10186:9;;10177:6;:18;;;;:::i;10152:76::-;-1:-1:-1;10227:1:0;10152:76;10264:11;;-1:-1:-1;;;10264:11:0;;;;:24;;;;-1:-1:-1;10280:8:0;;-1:-1:-1;;;10280:8:0;;;;10279:9;10264:24;:42;;;;-1:-1:-1;10302:4:0;;-1:-1:-1;;;;;10292:14:0;;;10302:4;;10292:14;;10264:42;:53;;;;;10316:1;10310:3;:7;10264:53;10260:72;;;10319:13;:11;:13::i;:::-;10345:48;10361:6;10369:9;10380:12;10389:3;10380:6;:12;:::i;:::-;10345:15;:48::i;:::-;10407:7;;10404:55;;10416:43;10432:6;10448:4;10455:3;10416:15;:43::i;:::-;9412:1057;9324:1145;;;:::o;6335:173::-;6410:6;;;-1:-1:-1;;;;;6427:17:0;;;-1:-1:-1;;;;;;6427:17:0;;;;;;;6460:40;;6410:6;;;6427:17;6410:6;;6460:40;;6391:16;;6460:40;6380:128;6335:173;:::o;10477:1349::-;8652:8;;-1:-1:-1;;;8652:8:0;;;;8647:104;;8677:8;:15;;-1:-1:-1;;;;8677:15:0;-1:-1:-1;;;8677:15:0;;;10570:4:::1;-1:-1:-1::0;2231:18:0;;;;;;;;;;;10526:50:::1;;10612:13;;10593:15;:32;10589:1230;;10644:19;10666:10;;10679:1;10666:14;;;;:::i;:::-;10644:36;;10695:32;10770:11;10748:9;:19;;;10730:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;10695:86:::0;-1:-1:-1;10796:14:0::1;10813:42;10695:86:::0;10813:15;:42:::1;:::i;:::-;10796:59:::0;-1:-1:-1;10901:21:0::1;10943:24;10796:59:::0;10943:16:::1;:24::i;:::-;10988:20;11011:38;11035:14:::0;11011:21:::1;:38;:::i;:::-;11115:19:::0;;10988:61;;-1:-1:-1;11064:19:0::1;::::0;11101:33:::1;::::0;:11;:33:::1;:::i;:::-;11085:50;::::0;:12;:50:::1;:::i;:::-;11196:19:::0;;11064:71;;-1:-1:-1;11150:29:0::1;::::0;11182:33:::1;::::0;11064:71;11182:33:::1;:::i;:::-;11150:65;;11266:1;11239:24;:28;:57;;;;;11295:1;11271:21;:25;11239:57;11236:198;;;11357:61;11370:24;11396:21;11357:12;:61::i;:::-;11495:9;:19:::0;11454:20:::1;::::0;11477:15:::1;:11:::0;11491:1:::1;11477:15;:::i;:::-;:37;;;;:::i;:::-;11454:60:::0;-1:-1:-1;11532:16:0;;11529:103:::1;;11576:15;::::0;11568:48:::1;::::0;-1:-1:-1;;;;;11576:15:0::1;11603:12:::0;11568:34:::1;:48::i;:::-;11695:13:::0;;11660:14:::1;::::0;11677:15:::1;:11:::0;11695:13:::1;11677:15;:::i;:::-;:31;;;;:::i;:::-;11660:48:::0;-1:-1:-1;11726:10:0;;11723:85:::1;;11764:9;::::0;11756:36:::1;::::0;-1:-1:-1;;;;;11764:9:0::1;11785:6:::0;11756:28:::1;:36::i;:::-;10627:1192;;;;;;;;;10589:1230;-1:-1:-1::0;8723:8:0;:16;;-1:-1:-1;;;;8723:16:0;;;10477:1349::o;3822:604::-;-1:-1:-1;;;;;3928:20:0;;3920:70;;;;-1:-1:-1;;;3920:70:0;;14147:2:1;3920:70:0;;;14129:21:1;14186:2;14166:18;;;14159:30;14225:34;14205:18;;;14198:62;-1:-1:-1;;;14276:18:1;;;14269:35;14321:19;;3920:70:0;13945:401:1;3920:70:0;-1:-1:-1;;;;;4009:23:0;;4001:71;;;;-1:-1:-1;;;4001:71:0;;14553:2:1;4001:71:0;;;14535:21:1;14592:2;14572:18;;;14565:30;14631:34;14611:18;;;14604:62;-1:-1:-1;;;14682:18:1;;;14675:33;14725:19;;4001:71:0;14351:399:1;4001:71:0;-1:-1:-1;;;;;4169:17:0;;4145:21;4169:17;;;;;;;;;;;4205:23;;;;4197:74;;;;-1:-1:-1;;;4197:74:0;;14957:2:1;4197:74:0;;;14939:21:1;14996:2;14976:18;;;14969:30;15035:34;15015:18;;;15008:62;-1:-1:-1;;;15086:18:1;;;15079:36;15132:19;;4197:74:0;14755:402:1;4197:74:0;4302:22;4318:6;4302:13;:22;:::i;:::-;-1:-1:-1;;;;;4282:17:0;;;:9;:17;;;;;;;;;;;:42;;;;4335:20;;;;;;;;:30;;4359:6;;4282:9;4335:30;;4359:6;;4335:30;:::i;:::-;;;;;;;;4400:9;-1:-1:-1;;;;;4383:35:0;4392:6;-1:-1:-1;;;;;4383:35:0;;4411:6;4383:35;;;;160:25:1;;148:2;133:18;;14:177;4383:35:0;;;;;;;;3909:517;3822:604;;;:::o;11834:398::-;11924:16;;;11938:1;11924:16;;;;;;;;11900:21;;11924:16;;;;;;;;;;-1:-1:-1;11924:16:0;11900:40;;11969:4;11951;11956:1;11951:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11951:23:0;;;:7;;;;;;;;;;:23;;;;11995:6;;:13;;;-1:-1:-1;;;11995:13:0;;;;:6;;;;;:11;;:13;;;;;11951:7;;11995:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11985:4;11990:1;11985:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11985:23:0;;;:7;;;;;;;;;:23;12053:6;;12021:53;;12038:4;;12053:6;12062:11;12021:8;:53::i;:::-;12113:6;;:111;;-1:-1:-1;;;12113:111:0;;-1:-1:-1;;;;;12113:6:0;;;;:57;;:111;;12171:11;;12113:6;;12187:4;;12201;;12208:15;;12113:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12240:503;12420:6;;12388:53;;12405:4;;-1:-1:-1;;;;;12420:6:0;12429:11;12388:8;:53::i;:::-;12484:6;;:251;;-1:-1:-1;;;12484:251:0;;12547:4;12484:251;;;17008:34:1;17058:18;;;17051:34;;;12484:6:0;17101:18:1;;;17094:34;;;17144:18;;;17137:34;12687:6:0;17187:19:1;;;17180:44;12709:15:0;17240:19:1;;;17233:35;-1:-1:-1;;;;;12484:6:0;;;;:22;;12514:9;;16942:19:1;;12484:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12240:503;;:::o;5255:317::-;5370:6;5345:21;:31;;5337:73;;;;-1:-1:-1;;;5337:73:0;;17792:2:1;5337:73:0;;;17774:21:1;17831:2;17811:18;;;17804:30;17870:31;17850:18;;;17843:59;17919:18;;5337:73:0;17590:353:1;5337:73:0;5424:12;5442:9;-1:-1:-1;;;;;5442:14:0;5464:6;5442:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5423:52;;;5494:7;5486:78;;;;-1:-1:-1;;;5486:78:0;;18360:2:1;5486:78:0;;;18342:21:1;18399:2;18379:18;;;18372:30;18438:34;18418:18;;;18411:62;18509:28;18489:18;;;18482:56;18555:19;;5486:78:0;18158:422:1;5486:78:0;5326:246;5255:317;;:::o;196:523:1:-;300:6;308;316;324;332;340;393:3;381:9;372:7;368:23;364:33;361:53;;;410:1;407;400:12;361:53;-1:-1:-1;;433:23:1;;;503:2;488:18;;475:32;;-1:-1:-1;554:2:1;539:18;;526:32;;605:2;590:18;;577:32;;-1:-1:-1;656:3:1;641:19;;628:33;;-1:-1:-1;708:3:1;693:19;680:33;;-1:-1:-1;196:523:1;-1:-1:-1;196:523:1:o;724:548::-;836:4;865:2;894;883:9;876:21;926:6;920:13;969:6;964:2;953:9;949:18;942:34;994:1;1004:140;1018:6;1015:1;1012:13;1004:140;;;1113:14;;;1109:23;;1103:30;1079:17;;;1098:2;1075:26;1068:66;1033:10;;1004:140;;;1008:3;1193:1;1188:2;1179:6;1168:9;1164:22;1160:31;1153:42;1263:2;1256;1252:7;1247:2;1239:6;1235:15;1231:29;1220:9;1216:45;1212:54;1204:62;;;;724:548;;;;:::o;1277:131::-;-1:-1:-1;;;;;1352:31:1;;1342:42;;1332:70;;1398:1;1395;1388:12;1413:315;1481:6;1489;1542:2;1530:9;1521:7;1517:23;1513:32;1510:52;;;1558:1;1555;1548:12;1510:52;1597:9;1584:23;1616:31;1641:5;1616:31;:::i;:::-;1666:5;1718:2;1703:18;;;;1690:32;;-1:-1:-1;;;1413:315:1:o;1925:247::-;1984:6;2037:2;2025:9;2016:7;2012:23;2008:32;2005:52;;;2053:1;2050;2043:12;2005:52;2092:9;2079:23;2111:31;2136:5;2111:31;:::i;:::-;2161:5;1925:247;-1:-1:-1;;;1925:247:1:o;2177:456::-;2254:6;2262;2270;2323:2;2311:9;2302:7;2298:23;2294:32;2291:52;;;2339:1;2336;2329:12;2291:52;2378:9;2365:23;2397:31;2422:5;2397:31;:::i;:::-;2447:5;-1:-1:-1;2504:2:1;2489:18;;2476:32;2517:33;2476:32;2517:33;:::i;:::-;2177:456;;2569:7;;-1:-1:-1;;;2623:2:1;2608:18;;;;2595:32;;2177:456::o;2638:388::-;2706:6;2714;2767:2;2755:9;2746:7;2742:23;2738:32;2735:52;;;2783:1;2780;2773:12;2735:52;2822:9;2809:23;2841:31;2866:5;2841:31;:::i;:::-;2891:5;-1:-1:-1;2948:2:1;2933:18;;2920:32;2961:33;2920:32;2961:33;:::i;:::-;3013:7;3003:17;;;2638:388;;;;;:::o;3220:180::-;3279:6;3332:2;3320:9;3311:7;3307:23;3303:32;3300:52;;;3348:1;3345;3338:12;3300:52;-1:-1:-1;3371:23:1;;3220:180;-1:-1:-1;3220:180:1:o;3937:118::-;4023:5;4016:13;4009:21;4002:5;3999:32;3989:60;;4045:1;4042;4035:12;4060:241;4116:6;4169:2;4157:9;4148:7;4144:23;4140:32;4137:52;;;4185:1;4182;4175:12;4137:52;4224:9;4211:23;4243:28;4265:5;4243:28;:::i;4306:382::-;4371:6;4379;4432:2;4420:9;4411:7;4407:23;4403:32;4400:52;;;4448:1;4445;4438:12;4400:52;4487:9;4474:23;4506:31;4531:5;4506:31;:::i;:::-;4556:5;-1:-1:-1;4613:2:1;4598:18;;4585:32;4626:30;4585:32;4626:30;:::i;4916:356::-;5118:2;5100:21;;;5137:18;;;5130:30;5196:34;5191:2;5176:18;;5169:62;5263:2;5248:18;;4916:356::o;5628:127::-;5689:10;5684:3;5680:20;5677:1;5670:31;5720:4;5717:1;5710:15;5744:4;5741:1;5734:15;5760:125;5825:9;;;5846:10;;;5843:36;;;5859:18;;:::i;5890:380::-;5969:1;5965:12;;;;6012;;;6033:61;;6087:4;6079:6;6075:17;6065:27;;6033:61;6140:2;6132:6;6129:14;6109:18;6106:38;6103:161;;6186:10;6181:3;6177:20;6174:1;6167:31;6221:4;6218:1;6211:15;6249:4;6246:1;6239:15;6103:161;;5890:380;;;:::o;7498:128::-;7565:9;;;7586:11;;;7583:37;;;7600:18;;:::i;7631:184::-;7701:6;7754:2;7742:9;7733:7;7729:23;7725:32;7722:52;;;7770:1;7767;7760:12;7722:52;-1:-1:-1;7793:16:1;;7631:184;-1:-1:-1;7631:184:1:o;8099:245::-;8166:6;8219:2;8207:9;8198:7;8194:23;8190:32;8187:52;;;8235:1;8232;8225:12;8187:52;8267:9;8261:16;8286:28;8308:5;8286:28;:::i;8349:399::-;8551:2;8533:21;;;8590:2;8570:18;;;8563:30;8629:34;8624:2;8609:18;;8602:62;-1:-1:-1;;;8695:2:1;8680:18;;8673:33;8738:3;8723:19;;8349:399::o;8753:168::-;8826:9;;;8857;;8874:15;;;8868:22;;8854:37;8844:71;;8895:18;;:::i;9332:217::-;9372:1;9398;9388:132;;9442:10;9437:3;9433:20;9430:1;9423:31;9477:4;9474:1;9467:15;9505:4;9502:1;9495:15;9388:132;-1:-1:-1;9534:9:1;;9332:217::o;15294:127::-;15355:10;15350:3;15346:20;15343:1;15336:31;15386:4;15383:1;15376:15;15410:4;15407:1;15400:15;15426:251;15496:6;15549:2;15537:9;15528:7;15524:23;15520:32;15517:52;;;15565:1;15562;15555:12;15517:52;15597:9;15591:16;15616:31;15641:5;15616:31;:::i;15682:980::-;15944:4;15992:3;15981:9;15977:19;16023:6;16012:9;16005:25;16049:2;16087:6;16082:2;16071:9;16067:18;16060:34;16130:3;16125:2;16114:9;16110:18;16103:31;16154:6;16189;16183:13;16220:6;16212;16205:22;16258:3;16247:9;16243:19;16236:26;;16297:2;16289:6;16285:15;16271:29;;16318:1;16328:195;16342:6;16339:1;16336:13;16328:195;;;16407:13;;-1:-1:-1;;;;;16403:39:1;16391:52;;16498:15;;;;16463:12;;;;16439:1;16357:9;16328:195;;;-1:-1:-1;;;;;;;16579:32:1;;;;16574:2;16559:18;;16552:60;-1:-1:-1;;;16643:3:1;16628:19;16621:35;16540:3;15682:980;-1:-1:-1;;;15682:980:1:o;17279:306::-;17367:6;17375;17383;17436:2;17424:9;17415:7;17411:23;17407:32;17404:52;;;17452:1;17449;17442:12;17404:52;17481:9;17475:16;17465:26;;17531:2;17520:9;17516:18;17510:25;17500:35;;17575:2;17564:9;17560:18;17554:25;17544:35;;17279:306;;;;;:::o
Swarm Source
ipfs://83ece82c7d3354d298403b0bdd5143c2a4014af5cdefe061e4b14534f23e6312
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.