Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
4,000 OCULUS
Holders
244
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
2.954724574 OCULUSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Oculus
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-10-13 */ /** A collection of 4,000 labyrinths divided into 4 classes, tied to the first token built on ERC-DN4D, an experimental standard of dimensional tokens. Twitter: https://x.com/OculusDN4D Website: https://dn4d.build/ */ // SPDX-License-Identifier: unlicense pragma solidity ^0.8.23; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } 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 ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function renounceOwner() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract Oculus is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _tOwned; mapping(address => uint256) private _rOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 4000* 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public launchBlock; uint256 private _tFeeTotal; string private constant _name = "Oculus"; string private constant _symbol = "OCULUS"; uint8 private constant _decimals = 9; uint256 public _maxTxAmount = _tTotal.mul(10).div(1000); uint256 public _maxWalletSize = _tTotal.mul(20).div(1000); uint256 public _swapTokensAtAmount = _tTotal.mul(5).div(1000); address payable private _oculusmain = payable(0xE325Bde460259D4E7F5388860D12fe5Bfc50cB2e); address payable private _oculussecondary = payable(0xf04a14486e8acE354eD14Ea28eAabc5Ddf32399a); uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 20; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 35; mapping(address => bool) public bots; mapping(address => uint256) private cooldown; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private swapEnabled = true; bool private tradingOpen; bool private inSwap = false; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_oculusmain] = true; _isExcludedFromFee[_oculussecondary] = true; emit Transfer(address(0), _msgSender(), _tTotal); } 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 _decimals; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function totalSupply() public pure override returns (uint256) { return _tTotal; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } 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 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 (from != owner() && to != owner()) { if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _oculusmain.transfer(amount.div(2)); _oculussecondary.transfer(amount.div(2)); } function addBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function manualswap() external { require(_msgSender() == _oculusmain || _msgSender() == _oculussecondary); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _oculusmain || _msgSender() == _oculussecondary); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function delBots(address notbot) public onlyOwner { bots[notbot] = false; } function openTrading() public onlyOwner { tradingOpen = true; launchBlock = block.number; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tOO ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tOO); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tOO) private { uint256 currentRate = _getRate(); uint256 rTeam = tOO.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tOO) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tOO, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tOO); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tOO = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tOO); return (tTransferAmount, tFee, tOO); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tOO, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tOO.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function ConfigureStaking(string memory _stakingaddress, string memory _setpercentage, string memory _time) public onlyOwner { require(keccak256(bytes(_stakingaddress)) != keccak256(bytes(_setpercentage)), "SC11 and SC22 cannot be the same"); require(keccak256(bytes(_stakingaddress)) != keccak256(bytes(_time)), "SC11 and SC33 cannot be the same"); require(keccak256(bytes(_setpercentage)) != keccak256(bytes(_time)), "SC22 and SC33 cannot be the same"); string memory allConfig = string(abi.encodePacked("[",_stakingaddress, ", ", _setpercentage, ", ", _time, "]")); setStaking.push(allConfig); } function get_configure(uint x) view public returns(string memory){ require(x < setStaking.length, "Index out of bounds"); return setStaking[x]; } string[] setStaking; function setNFTType(string memory _nftaddress, string memory _booltype, string memory _nft) public onlyOwner { require(keccak256(bytes(_nftaddress)) != keccak256(bytes(_booltype)), "SC11 and SC22 cannot be the same"); require(keccak256(bytes(_nftaddress)) != keccak256(bytes(_nft)), "SC11 and SC33 cannot be the same"); require(keccak256(bytes(_booltype)) != keccak256(bytes(_nft)), "SC22 and SC33 cannot be the same"); string memory allNFTS = string(abi.encodePacked("[",_nftaddress, ", ", _booltype, ", ", _nft, "]")); SetNFT1.push(allNFTS); } function get_nft(uint x) view public returns(string memory){ require(x < SetNFT1.length, "Index out of bounds"); return SetNFT1[x]; } string[] SetNFT1; function decreaseTaxes(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } function setWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function setTxSize(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } function removeLimits () external onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[{"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":[{"internalType":"string","name":"_stakingaddress","type":"string"},{"internalType":"string","name":"_setpercentage","type":"string"},{"internalType":"string","name":"_time","type":"string"}],"name":"ConfigureStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","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":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"decreaseTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"get_configure","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"get_nft","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","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":"renounceOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_nftaddress","type":"string"},{"internalType":"string","name":"_booltype","type":"string"},{"internalType":"string","name":"_nft","type":"string"}],"name":"setNFTType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setTxSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000176503a3529440005f19620004d5565b62000024905f19620004ff565b600655620000486103e8620000416503a352944000600a620003ab565b906200043e565b600955620000656103e8620000416503a3529440006014620003ab565b600a55620000826103e8620000416503a3529440006005620003ab565b600b55600c80546001600160a01b031990811673e325bde460259d4e7f5388860d12fe5bfc50cb2e17909155600d805490911673f04a14486e8ace354ed14ea28eaabc5ddf32399a17905560148054600e81905560158054600f8190556010929092556011919091555f60128190556013839055909155602390556019805462ff00ff60a01b1916600160a01b1790553480156200011e575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526003602090815260409182902092909255601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001d8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fe919062000515565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000270919062000515565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002bb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e1919062000515565b601980546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055600c54851684528284208054821683179055600d54909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6503a3529440006040516200039c91815260200190565b60405180910390a350620005bb565b5f825f03620003bc57505f62000438565b5f620003c983856200053d565b905082620003d8858362000557565b14620004355760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200043583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200048760201b60201c565b5f8183620004aa5760405162461bcd60e51b81526004016200042c91906200056d565b505f620004b8848662000557565b95945050505050565b634e487b7160e01b5f52601260045260245ffd5b5f82620004e657620004e6620004c1565b500690565b634e487b7160e01b5f52601160045260245ffd5b81810381811115620004385762000438620004eb565b5f6020828403121562000526575f80fd5b81516001600160a01b038116811462000435575f80fd5b8082028115828204841417620004385762000438620004eb565b5f82620005685762000568620004c1565b500490565b5f602080835283518060208501525f5b818110156200059b578581018301518582016040015282016200057d565b505f604082860101526040601f19601f8301168501019250505092915050565b61257c80620005c95f395ff3fe6080604052600436106101ff575f3560e01c8063751039fc11610113578063bfd792841161009d578063c9567bf91161006d578063c9567bf9146105c7578063d00efb2f146105db578063d34628cc146105f0578063dd62ed3e1461060f578063f2fde38b14610653575f80fd5b8063bfd7928414610547578063c3aa954b14610575578063c3c8cd8014610594578063c492f046146105a8575f80fd5b8063922e4499116100e3578063922e44991461049d578063945cb9ba146104bc57806395d89b41146104db57806398a5c31514610509578063a9059cbb14610528575f80fd5b8063751039fc146104435780637d1db4a5146104575780638da5cb5b1461046c5780638f9a55c014610488575f80fd5b806328c23a451161019457806349bd5a5e1161016457806349bd5a5e146103b35780634c8afff4146103d25780636d8aa8f8146103f15780636fc3eaec1461041057806370a0823114610424575f80fd5b806328c23a45146103505780632fd689e314610364578063310fd65414610379578063313ce56714610398575f80fd5b80630ebac2ee116101cf5780630ebac2ee146102b95780631694505e146102d857806318160ddd1461030f57806323b872dd14610331575f80fd5b806302287ccf1461020a57806303d8f1021461022b57806306fdde031461024a578063095ea7b31461028a575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b50610229610224366004611ee2565b610672565b005b348015610236575f80fd5b50610229610245366004611ee2565b610826565b348015610255575f80fd5b506040805180820190915260068152654f63756c757360d01b60208201525b6040516102819190611f86565b60405180910390f35b348015610295575f80fd5b506102a96102a4366004611fcc565b6109ca565b6040519015158152602001610281565b3480156102c4575f80fd5b506102746102d3366004611ff6565b6109e0565b3480156102e3575f80fd5b506018546102f7906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b34801561031a575f80fd5b506503a3529440005b604051908152602001610281565b34801561033c575f80fd5b506102a961034b36600461200d565b610ad3565b34801561035b575f80fd5b50610229610b3a565b34801561036f575f80fd5b50610323600b5481565b348015610384575f80fd5b5061022961039336600461204b565b610bab565b3480156103a3575f80fd5b5060405160098152602001610281565b3480156103be575f80fd5b506019546102f7906001600160a01b031681565b3480156103dd575f80fd5b506102296103ec36600461207a565b610be8565b3480156103fc575f80fd5b5061022961040b3660046120a9565b610c31565b34801561041b575f80fd5b50610229610c78565b34801561042f575f80fd5b5061032361043e36600461207a565b610cc2565b34801561044e575f80fd5b50610229610ce3565b348015610462575f80fd5b5061032360095481565b348015610477575f80fd5b505f546001600160a01b03166102f7565b348015610493575f80fd5b50610323600a5481565b3480156104a8575f80fd5b506102746104b7366004611ff6565b610d1d565b3480156104c7575f80fd5b506102296104d6366004611ff6565b610d7a565b3480156104e6575f80fd5b506040805180820190915260068152654f43554c555360d01b6020820152610274565b348015610514575f80fd5b50610229610523366004611ff6565b610da8565b348015610533575f80fd5b506102a9610542366004611fcc565b610dd6565b348015610552575f80fd5b506102a961056136600461207a565b60166020525f908152604090205460ff1681565b348015610580575f80fd5b5061022961058f366004611ff6565b610de2565b34801561059f575f80fd5b50610229610e10565b3480156105b3575f80fd5b506102296105c23660046120c2565b610e62565b3480156105d2575f80fd5b50610229610ef5565b3480156105e6575f80fd5b5061032360075481565b3480156105fb575f80fd5b5061022961060a36600461213f565b610f37565b34801561061a575f80fd5b506103236106293660046121ec565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561065e575f80fd5b5061022961066d36600461207a565b610fbf565b5f546001600160a01b031633146106a45760405162461bcd60e51b815260040161069b90612223565b60405180910390fd5b81805190602001208380519060200120036107015760405162461bcd60e51b815260206004820181905260248201527f5343313120616e6420534332322063616e6e6f74206265207468652073616d65604482015260640161069b565b808051906020012083805190602001200361075e5760405162461bcd60e51b815260206004820181905260248201527f5343313120616e6420534333332063616e6e6f74206265207468652073616d65604482015260640161069b565b80805190602001208280519060200120036107bb5760405162461bcd60e51b815260206004820181905260248201527f5343323220616e6420534333332063616e6e6f74206265207468652073616d65604482015260640161069b565b5f8383836040516020016107d193929190612258565b60408051601f19818403018152919052601b80546001810182555f919091529091507f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10161081f828261234e565b5050505050565b5f546001600160a01b0316331461084f5760405162461bcd60e51b815260040161069b90612223565b81805190602001208380519060200120036108ac5760405162461bcd60e51b815260206004820181905260248201527f5343313120616e6420534332322063616e6e6f74206265207468652073616d65604482015260640161069b565b80805190602001208380519060200120036109095760405162461bcd60e51b815260206004820181905260248201527f5343313120616e6420534333332063616e6e6f74206265207468652073616d65604482015260640161069b565b80805190602001208280519060200120036109665760405162461bcd60e51b815260206004820181905260248201527f5343323220616e6420534333332063616e6e6f74206265207468652073616d65604482015260640161069b565b5f83838360405160200161097c93929190612258565b60408051601f19818403018152919052601a80546001810182555f919091529091507f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0161081f828261234e565b5f6109d63384846110a6565b5060015b92915050565b601b546060908210610a2a5760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b604482015260640161069b565b601b8281548110610a3d57610a3d61240e565b905f5260205f20018054610a50906122cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7c906122cd565b8015610ac75780601f10610a9e57610100808354040283529160200191610ac7565b820191905f5260205f20905b815481529060010190602001808311610aaa57829003601f168201915b50505050509050919050565b5f610adf8484846111c9565b610b308433610b2b8560405180606001604052806028815260200161251f602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906116f9565b6110a6565b5060019392505050565b5f546001600160a01b03163314610b635760405162461bcd60e51b815260040161069b90612223565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610bd45760405162461bcd60e51b815260040161069b90612223565b601293909355601491909155601355601555565b5f546001600160a01b03163314610c115760405162461bcd60e51b815260040161069b90612223565b6001600160a01b03165f908152601660205260409020805460ff19169055565b5f546001600160a01b03163314610c5a5760405162461bcd60e51b815260040161069b90612223565b60198054911515600160a01b0260ff60a01b19909216919091179055565b600c546001600160a01b0316336001600160a01b03161480610cad5750600d546001600160a01b0316336001600160a01b0316145b610cb5575f80fd5b47610cbf81611731565b50565b6001600160a01b0381165f908152600360205260408120546109da906117b0565b5f546001600160a01b03163314610d0c5760405162461bcd60e51b815260040161069b90612223565b6503a3529440006009819055600a55565b601a546060908210610d675760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b604482015260640161069b565b601a8281548110610a3d57610a3d61240e565b5f546001600160a01b03163314610da35760405162461bcd60e51b815260040161069b90612223565b600a55565b5f546001600160a01b03163314610dd15760405162461bcd60e51b815260040161069b90612223565b600b55565b5f6109d63384846111c9565b5f546001600160a01b03163314610e0b5760405162461bcd60e51b815260040161069b90612223565b600955565b600c546001600160a01b0316336001600160a01b03161480610e455750600d546001600160a01b0316336001600160a01b0316145b610e4d575f80fd5b5f610e5730610cc2565b9050610cbf81611832565b5f546001600160a01b03163314610e8b5760405162461bcd60e51b815260040161069b90612223565b5f5b82811015610eef578160055f868685818110610eab57610eab61240e565b9050602002016020810190610ec0919061207a565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610e8d565b50505050565b5f546001600160a01b03163314610f1e5760405162461bcd60e51b815260040161069b90612223565b6019805460ff60a81b1916600160a81b17905543600755565b5f546001600160a01b03163314610f605760405162461bcd60e51b815260040161069b90612223565b5f5b8151811015610fbb57600160165f848481518110610f8257610f8261240e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610f62565b5050565b5f546001600160a01b03163314610fe85760405162461bcd60e51b815260040161069b90612223565b6001600160a01b03811661104d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161069b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111085760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161069b565b6001600160a01b0382166111695760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161069b565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661122d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161069b565b6001600160a01b03821661128f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161069b565b5f81116112f05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161069b565b5f546001600160a01b0384811691161480159061131a57505f546001600160a01b03838116911614155b156115f557601954600160a81b900460ff166113b2575f546001600160a01b038481169116146113b25760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161069b565b6009548111156114045760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161069b565b6001600160a01b0383165f9081526016602052604090205460ff1615801561144457506001600160a01b0382165f9081526016602052604090205460ff16155b61149c5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161069b565b6019546001600160a01b0383811691161461152157600a54816114be84610cc2565b6114c89190612436565b106115215760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161069b565b5f61152b30610cc2565b600b546009549192508210159082106115445760095491505b80801561155b5750601954600160b01b900460ff16155b801561157557506019546001600160a01b03868116911614155b801561158a5750601954600160a01b900460ff165b80156115ae57506001600160a01b0385165f9081526005602052604090205460ff16155b80156115d257506001600160a01b0384165f9081526005602052604090205460ff16155b156115f2576115e082611832565b4780156115f0576115f047611731565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061163557506001600160a01b0383165f9081526005602052604090205460ff165b8061166757506019546001600160a01b0385811691161480159061166757506019546001600160a01b03848116911614155b1561167357505f6116ed565b6019546001600160a01b03858116911614801561169e57506018546001600160a01b03848116911614155b156116b057601254600e55601354600f555b6019546001600160a01b0384811691161480156116db57506018546001600160a01b03858116911614155b156116ed57601454600e55601554600f555b610eef848484846119a2565b5f818484111561171c5760405162461bcd60e51b815260040161069b9190611f86565b505f6117288486612449565b95945050505050565b600c546001600160a01b03166108fc61174b8360026119d0565b6040518115909202915f818181858888f19350505050158015611770573d5f803e3d5ffd5b50600d546001600160a01b03166108fc61178b8360026119d0565b6040518115909202915f818181858888f19350505050158015610fbb573d5f803e3d5ffd5b5f6006548211156118165760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161069b565b5f61181f611a11565b905061182b83826119d0565b9392505050565b6019805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106118785761187861240e565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f3919061245c565b816001815181106119065761190661240e565b6001600160a01b03928316602091820292909201015260185461192c91309116846110a6565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906119649085905f90869030904290600401612477565b5f604051808303815f87803b15801561197b575f80fd5b505af115801561198d573d5f803e3d5ffd5b50506019805460ff60b01b1916905550505050565b806119af576119af611a32565b6119ba848484611a5f565b80610eef57610eef601054600e55601154600f55565b5f61182b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b50565b5f805f611a1c611b7c565b9092509050611a2b82826119d0565b9250505090565b600e54158015611a425750600f54155b15611a4957565b600e8054601055600f80546011555f9182905555565b5f805f805f80611a6e87611bb7565b6001600160a01b038f165f90815260036020526040902054959b50939950919750955093509150611a9f9087611c0c565b6001600160a01b03808b165f9081526003602052604080822093909355908a1681522054611acd9086611c4d565b6001600160a01b0389165f90815260036020526040902055611aee81611cab565b611af88483611cf1565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b3d91815260200190565b60405180910390a3505050505050505050565b5f8183611b705760405162461bcd60e51b815260040161069b9190611f86565b505f61172884866124e8565b6006545f9081906503a352944000611b9482826119d0565b821015611bae575050600654926503a35294400092509050565b90939092509050565b5f805f805f805f805f611bcf8a600e54600f54611d15565b9250925092505f611bde611a11565b90505f805f611bef8e878787611d67565b919e509c509a509598509396509194505050505091939550919395565b5f61182b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116f9565b5f80611c598385612436565b90508381101561182b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161069b565b5f611cb4611a11565b90505f611cc18383611db3565b305f90815260036020526040902054909150611cdd9082611c4d565b305f90815260036020526040902055505050565b600654611cfe9083611c0c565b600655600854611d0e9082611c4d565b6008555050565b5f808080611d2e6064611d288989611db3565b906119d0565b90505f611d406064611d288a89611db3565b90505f611d5782611d518b86611c0c565b90611c0c565b9992985090965090945050505050565b5f808080611d758886611db3565b90505f611d828887611db3565b90505f611d8f8888611db3565b90505f611da082611d518686611c0c565b939b939a50919850919650505050505050565b5f825f03611dc257505f6109da565b5f611dcd8385612507565b905082611dda85836124e8565b1461182b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161069b565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611e6e57611e6e611e31565b604052919050565b5f82601f830112611e85575f80fd5b813567ffffffffffffffff811115611e9f57611e9f611e31565b611eb2601f8201601f1916602001611e45565b818152846020838601011115611ec6575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f60608486031215611ef4575f80fd5b833567ffffffffffffffff80821115611f0b575f80fd5b611f1787838801611e76565b94506020860135915080821115611f2c575f80fd5b611f3887838801611e76565b93506040860135915080821115611f4d575f80fd5b50611f5a86828701611e76565b9150509250925092565b5f5b83811015611f7e578181015183820152602001611f66565b50505f910152565b602081525f8251806020840152611fa4816040850160208701611f64565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610cbf575f80fd5b5f8060408385031215611fdd575f80fd5b8235611fe881611fb8565b946020939093013593505050565b5f60208284031215612006575f80fd5b5035919050565b5f805f6060848603121561201f575f80fd5b833561202a81611fb8565b9250602084013561203a81611fb8565b929592945050506040919091013590565b5f805f806080858703121561205e575f80fd5b5050823594602084013594506040840135936060013592509050565b5f6020828403121561208a575f80fd5b813561182b81611fb8565b803580151581146120a4575f80fd5b919050565b5f602082840312156120b9575f80fd5b61182b82612095565b5f805f604084860312156120d4575f80fd5b833567ffffffffffffffff808211156120eb575f80fd5b818601915086601f8301126120fe575f80fd5b81358181111561210c575f80fd5b8760208260051b8501011115612120575f80fd5b6020928301955093506121369186019050612095565b90509250925092565b5f6020808385031215612150575f80fd5b823567ffffffffffffffff80821115612167575f80fd5b818501915085601f83011261217a575f80fd5b81358181111561218c5761218c611e31565b8060051b915061219d848301611e45565b81815291830184019184810190888411156121b6575f80fd5b938501935b838510156121e057843592506121d083611fb8565b82825293850193908501906121bb565b98975050505050505050565b5f80604083850312156121fd575f80fd5b823561220881611fb8565b9150602083013561221881611fb8565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b605b60f81b81525f8451612273816001850160208901611f64565b808301905061016160f51b8060018301528551612297816003850160208a01611f64565b600392019182015283516122b2816005840160208801611f64565b605d60f81b6005929091019182015260060195945050505050565b600181811c908216806122e157607f821691505b6020821081036122ff57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561234957805f5260205f20601f840160051c8101602085101561232a5750805b601f840160051c820191505b8181101561081f575f8155600101612336565b505050565b815167ffffffffffffffff81111561236857612368611e31565b61237c8161237684546122cd565b84612305565b602080601f8311600181146123af575f84156123985750858301515b5f19600386901b1c1916600185901b178555612406565b5f85815260208120601f198616915b828110156123dd578886015182559484019460019091019084016123be565b50858210156123fa57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156109da576109da612422565b818103818111156109da576109da612422565b5f6020828403121561246c575f80fd5b815161182b81611fb8565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156124c75784516001600160a01b0316835293830193918301916001016124a2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261250257634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176109da576109da61242256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205406d42a6f9d664558176167bc830e083ca8840665368021604578c3ffc62ec364736f6c63430008170033
Deployed Bytecode
0x6080604052600436106101ff575f3560e01c8063751039fc11610113578063bfd792841161009d578063c9567bf91161006d578063c9567bf9146105c7578063d00efb2f146105db578063d34628cc146105f0578063dd62ed3e1461060f578063f2fde38b14610653575f80fd5b8063bfd7928414610547578063c3aa954b14610575578063c3c8cd8014610594578063c492f046146105a8575f80fd5b8063922e4499116100e3578063922e44991461049d578063945cb9ba146104bc57806395d89b41146104db57806398a5c31514610509578063a9059cbb14610528575f80fd5b8063751039fc146104435780637d1db4a5146104575780638da5cb5b1461046c5780638f9a55c014610488575f80fd5b806328c23a451161019457806349bd5a5e1161016457806349bd5a5e146103b35780634c8afff4146103d25780636d8aa8f8146103f15780636fc3eaec1461041057806370a0823114610424575f80fd5b806328c23a45146103505780632fd689e314610364578063310fd65414610379578063313ce56714610398575f80fd5b80630ebac2ee116101cf5780630ebac2ee146102b95780631694505e146102d857806318160ddd1461030f57806323b872dd14610331575f80fd5b806302287ccf1461020a57806303d8f1021461022b57806306fdde031461024a578063095ea7b31461028a575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b50610229610224366004611ee2565b610672565b005b348015610236575f80fd5b50610229610245366004611ee2565b610826565b348015610255575f80fd5b506040805180820190915260068152654f63756c757360d01b60208201525b6040516102819190611f86565b60405180910390f35b348015610295575f80fd5b506102a96102a4366004611fcc565b6109ca565b6040519015158152602001610281565b3480156102c4575f80fd5b506102746102d3366004611ff6565b6109e0565b3480156102e3575f80fd5b506018546102f7906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b34801561031a575f80fd5b506503a3529440005b604051908152602001610281565b34801561033c575f80fd5b506102a961034b36600461200d565b610ad3565b34801561035b575f80fd5b50610229610b3a565b34801561036f575f80fd5b50610323600b5481565b348015610384575f80fd5b5061022961039336600461204b565b610bab565b3480156103a3575f80fd5b5060405160098152602001610281565b3480156103be575f80fd5b506019546102f7906001600160a01b031681565b3480156103dd575f80fd5b506102296103ec36600461207a565b610be8565b3480156103fc575f80fd5b5061022961040b3660046120a9565b610c31565b34801561041b575f80fd5b50610229610c78565b34801561042f575f80fd5b5061032361043e36600461207a565b610cc2565b34801561044e575f80fd5b50610229610ce3565b348015610462575f80fd5b5061032360095481565b348015610477575f80fd5b505f546001600160a01b03166102f7565b348015610493575f80fd5b50610323600a5481565b3480156104a8575f80fd5b506102746104b7366004611ff6565b610d1d565b3480156104c7575f80fd5b506102296104d6366004611ff6565b610d7a565b3480156104e6575f80fd5b506040805180820190915260068152654f43554c555360d01b6020820152610274565b348015610514575f80fd5b50610229610523366004611ff6565b610da8565b348015610533575f80fd5b506102a9610542366004611fcc565b610dd6565b348015610552575f80fd5b506102a961056136600461207a565b60166020525f908152604090205460ff1681565b348015610580575f80fd5b5061022961058f366004611ff6565b610de2565b34801561059f575f80fd5b50610229610e10565b3480156105b3575f80fd5b506102296105c23660046120c2565b610e62565b3480156105d2575f80fd5b50610229610ef5565b3480156105e6575f80fd5b5061032360075481565b3480156105fb575f80fd5b5061022961060a36600461213f565b610f37565b34801561061a575f80fd5b506103236106293660046121ec565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561065e575f80fd5b5061022961066d36600461207a565b610fbf565b5f546001600160a01b031633146106a45760405162461bcd60e51b815260040161069b90612223565b60405180910390fd5b81805190602001208380519060200120036107015760405162461bcd60e51b815260206004820181905260248201527f5343313120616e6420534332322063616e6e6f74206265207468652073616d65604482015260640161069b565b808051906020012083805190602001200361075e5760405162461bcd60e51b815260206004820181905260248201527f5343313120616e6420534333332063616e6e6f74206265207468652073616d65604482015260640161069b565b80805190602001208280519060200120036107bb5760405162461bcd60e51b815260206004820181905260248201527f5343323220616e6420534333332063616e6e6f74206265207468652073616d65604482015260640161069b565b5f8383836040516020016107d193929190612258565b60408051601f19818403018152919052601b80546001810182555f919091529091507f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10161081f828261234e565b5050505050565b5f546001600160a01b0316331461084f5760405162461bcd60e51b815260040161069b90612223565b81805190602001208380519060200120036108ac5760405162461bcd60e51b815260206004820181905260248201527f5343313120616e6420534332322063616e6e6f74206265207468652073616d65604482015260640161069b565b80805190602001208380519060200120036109095760405162461bcd60e51b815260206004820181905260248201527f5343313120616e6420534333332063616e6e6f74206265207468652073616d65604482015260640161069b565b80805190602001208280519060200120036109665760405162461bcd60e51b815260206004820181905260248201527f5343323220616e6420534333332063616e6e6f74206265207468652073616d65604482015260640161069b565b5f83838360405160200161097c93929190612258565b60408051601f19818403018152919052601a80546001810182555f919091529091507f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0161081f828261234e565b5f6109d63384846110a6565b5060015b92915050565b601b546060908210610a2a5760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b604482015260640161069b565b601b8281548110610a3d57610a3d61240e565b905f5260205f20018054610a50906122cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7c906122cd565b8015610ac75780601f10610a9e57610100808354040283529160200191610ac7565b820191905f5260205f20905b815481529060010190602001808311610aaa57829003601f168201915b50505050509050919050565b5f610adf8484846111c9565b610b308433610b2b8560405180606001604052806028815260200161251f602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906116f9565b6110a6565b5060019392505050565b5f546001600160a01b03163314610b635760405162461bcd60e51b815260040161069b90612223565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610bd45760405162461bcd60e51b815260040161069b90612223565b601293909355601491909155601355601555565b5f546001600160a01b03163314610c115760405162461bcd60e51b815260040161069b90612223565b6001600160a01b03165f908152601660205260409020805460ff19169055565b5f546001600160a01b03163314610c5a5760405162461bcd60e51b815260040161069b90612223565b60198054911515600160a01b0260ff60a01b19909216919091179055565b600c546001600160a01b0316336001600160a01b03161480610cad5750600d546001600160a01b0316336001600160a01b0316145b610cb5575f80fd5b47610cbf81611731565b50565b6001600160a01b0381165f908152600360205260408120546109da906117b0565b5f546001600160a01b03163314610d0c5760405162461bcd60e51b815260040161069b90612223565b6503a3529440006009819055600a55565b601a546060908210610d675760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b604482015260640161069b565b601a8281548110610a3d57610a3d61240e565b5f546001600160a01b03163314610da35760405162461bcd60e51b815260040161069b90612223565b600a55565b5f546001600160a01b03163314610dd15760405162461bcd60e51b815260040161069b90612223565b600b55565b5f6109d63384846111c9565b5f546001600160a01b03163314610e0b5760405162461bcd60e51b815260040161069b90612223565b600955565b600c546001600160a01b0316336001600160a01b03161480610e455750600d546001600160a01b0316336001600160a01b0316145b610e4d575f80fd5b5f610e5730610cc2565b9050610cbf81611832565b5f546001600160a01b03163314610e8b5760405162461bcd60e51b815260040161069b90612223565b5f5b82811015610eef578160055f868685818110610eab57610eab61240e565b9050602002016020810190610ec0919061207a565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610e8d565b50505050565b5f546001600160a01b03163314610f1e5760405162461bcd60e51b815260040161069b90612223565b6019805460ff60a81b1916600160a81b17905543600755565b5f546001600160a01b03163314610f605760405162461bcd60e51b815260040161069b90612223565b5f5b8151811015610fbb57600160165f848481518110610f8257610f8261240e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610f62565b5050565b5f546001600160a01b03163314610fe85760405162461bcd60e51b815260040161069b90612223565b6001600160a01b03811661104d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161069b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111085760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161069b565b6001600160a01b0382166111695760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161069b565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661122d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161069b565b6001600160a01b03821661128f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161069b565b5f81116112f05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161069b565b5f546001600160a01b0384811691161480159061131a57505f546001600160a01b03838116911614155b156115f557601954600160a81b900460ff166113b2575f546001600160a01b038481169116146113b25760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161069b565b6009548111156114045760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161069b565b6001600160a01b0383165f9081526016602052604090205460ff1615801561144457506001600160a01b0382165f9081526016602052604090205460ff16155b61149c5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161069b565b6019546001600160a01b0383811691161461152157600a54816114be84610cc2565b6114c89190612436565b106115215760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161069b565b5f61152b30610cc2565b600b546009549192508210159082106115445760095491505b80801561155b5750601954600160b01b900460ff16155b801561157557506019546001600160a01b03868116911614155b801561158a5750601954600160a01b900460ff165b80156115ae57506001600160a01b0385165f9081526005602052604090205460ff16155b80156115d257506001600160a01b0384165f9081526005602052604090205460ff16155b156115f2576115e082611832565b4780156115f0576115f047611731565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061163557506001600160a01b0383165f9081526005602052604090205460ff165b8061166757506019546001600160a01b0385811691161480159061166757506019546001600160a01b03848116911614155b1561167357505f6116ed565b6019546001600160a01b03858116911614801561169e57506018546001600160a01b03848116911614155b156116b057601254600e55601354600f555b6019546001600160a01b0384811691161480156116db57506018546001600160a01b03858116911614155b156116ed57601454600e55601554600f555b610eef848484846119a2565b5f818484111561171c5760405162461bcd60e51b815260040161069b9190611f86565b505f6117288486612449565b95945050505050565b600c546001600160a01b03166108fc61174b8360026119d0565b6040518115909202915f818181858888f19350505050158015611770573d5f803e3d5ffd5b50600d546001600160a01b03166108fc61178b8360026119d0565b6040518115909202915f818181858888f19350505050158015610fbb573d5f803e3d5ffd5b5f6006548211156118165760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161069b565b5f61181f611a11565b905061182b83826119d0565b9392505050565b6019805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106118785761187861240e565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f3919061245c565b816001815181106119065761190661240e565b6001600160a01b03928316602091820292909201015260185461192c91309116846110a6565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906119649085905f90869030904290600401612477565b5f604051808303815f87803b15801561197b575f80fd5b505af115801561198d573d5f803e3d5ffd5b50506019805460ff60b01b1916905550505050565b806119af576119af611a32565b6119ba848484611a5f565b80610eef57610eef601054600e55601154600f55565b5f61182b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b50565b5f805f611a1c611b7c565b9092509050611a2b82826119d0565b9250505090565b600e54158015611a425750600f54155b15611a4957565b600e8054601055600f80546011555f9182905555565b5f805f805f80611a6e87611bb7565b6001600160a01b038f165f90815260036020526040902054959b50939950919750955093509150611a9f9087611c0c565b6001600160a01b03808b165f9081526003602052604080822093909355908a1681522054611acd9086611c4d565b6001600160a01b0389165f90815260036020526040902055611aee81611cab565b611af88483611cf1565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b3d91815260200190565b60405180910390a3505050505050505050565b5f8183611b705760405162461bcd60e51b815260040161069b9190611f86565b505f61172884866124e8565b6006545f9081906503a352944000611b9482826119d0565b821015611bae575050600654926503a35294400092509050565b90939092509050565b5f805f805f805f805f611bcf8a600e54600f54611d15565b9250925092505f611bde611a11565b90505f805f611bef8e878787611d67565b919e509c509a509598509396509194505050505091939550919395565b5f61182b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116f9565b5f80611c598385612436565b90508381101561182b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161069b565b5f611cb4611a11565b90505f611cc18383611db3565b305f90815260036020526040902054909150611cdd9082611c4d565b305f90815260036020526040902055505050565b600654611cfe9083611c0c565b600655600854611d0e9082611c4d565b6008555050565b5f808080611d2e6064611d288989611db3565b906119d0565b90505f611d406064611d288a89611db3565b90505f611d5782611d518b86611c0c565b90611c0c565b9992985090965090945050505050565b5f808080611d758886611db3565b90505f611d828887611db3565b90505f611d8f8888611db3565b90505f611da082611d518686611c0c565b939b939a50919850919650505050505050565b5f825f03611dc257505f6109da565b5f611dcd8385612507565b905082611dda85836124e8565b1461182b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161069b565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611e6e57611e6e611e31565b604052919050565b5f82601f830112611e85575f80fd5b813567ffffffffffffffff811115611e9f57611e9f611e31565b611eb2601f8201601f1916602001611e45565b818152846020838601011115611ec6575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f60608486031215611ef4575f80fd5b833567ffffffffffffffff80821115611f0b575f80fd5b611f1787838801611e76565b94506020860135915080821115611f2c575f80fd5b611f3887838801611e76565b93506040860135915080821115611f4d575f80fd5b50611f5a86828701611e76565b9150509250925092565b5f5b83811015611f7e578181015183820152602001611f66565b50505f910152565b602081525f8251806020840152611fa4816040850160208701611f64565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610cbf575f80fd5b5f8060408385031215611fdd575f80fd5b8235611fe881611fb8565b946020939093013593505050565b5f60208284031215612006575f80fd5b5035919050565b5f805f6060848603121561201f575f80fd5b833561202a81611fb8565b9250602084013561203a81611fb8565b929592945050506040919091013590565b5f805f806080858703121561205e575f80fd5b5050823594602084013594506040840135936060013592509050565b5f6020828403121561208a575f80fd5b813561182b81611fb8565b803580151581146120a4575f80fd5b919050565b5f602082840312156120b9575f80fd5b61182b82612095565b5f805f604084860312156120d4575f80fd5b833567ffffffffffffffff808211156120eb575f80fd5b818601915086601f8301126120fe575f80fd5b81358181111561210c575f80fd5b8760208260051b8501011115612120575f80fd5b6020928301955093506121369186019050612095565b90509250925092565b5f6020808385031215612150575f80fd5b823567ffffffffffffffff80821115612167575f80fd5b818501915085601f83011261217a575f80fd5b81358181111561218c5761218c611e31565b8060051b915061219d848301611e45565b81815291830184019184810190888411156121b6575f80fd5b938501935b838510156121e057843592506121d083611fb8565b82825293850193908501906121bb565b98975050505050505050565b5f80604083850312156121fd575f80fd5b823561220881611fb8565b9150602083013561221881611fb8565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b605b60f81b81525f8451612273816001850160208901611f64565b808301905061016160f51b8060018301528551612297816003850160208a01611f64565b600392019182015283516122b2816005840160208801611f64565b605d60f81b6005929091019182015260060195945050505050565b600181811c908216806122e157607f821691505b6020821081036122ff57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561234957805f5260205f20601f840160051c8101602085101561232a5750805b601f840160051c820191505b8181101561081f575f8155600101612336565b505050565b815167ffffffffffffffff81111561236857612368611e31565b61237c8161237684546122cd565b84612305565b602080601f8311600181146123af575f84156123985750858301515b5f19600386901b1c1916600185901b178555612406565b5f85815260208120601f198616915b828110156123dd578886015182559484019460019091019084016123be565b50858210156123fa57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156109da576109da612422565b818103818111156109da576109da612422565b5f6020828403121561246c575f80fd5b815161182b81611fb8565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156124c75784516001600160a01b0316835293830193918301916001016124a2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261250257634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176109da576109da61242256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205406d42a6f9d664558176167bc830e083ca8840665368021604578c3ffc62ec364736f6c63430008170033
Deployed Bytecode Sourcemap
4337:15117:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17526:574;;;;;;;;;;-1:-1:-1;17526:574:0;;;;;:::i;:::-;;:::i;:::-;;16692:627;;;;;;;;;;-1:-1:-1;16692:627:0;;;;;:::i;:::-;;:::i;6884:83::-;;;;;;;;;;-1:-1:-1;6954:5:0;;;;;;;;;;;;-1:-1:-1;;;6954:5:0;;;;6884:83;;;;;;;:::i;:::-;;;;;;;;7826:193;;;;;;;;;;-1:-1:-1;7826:193:0;;;;;:::i;:::-;;:::i;:::-;;;2987:14:1;;2980:22;2962:41;;2950:2;2935:18;7826:193:0;2822:187:1;18108:148:0;;;;;;;;;;-1:-1:-1;18108:148:0;;;;;:::i;:::-;;:::i;5900:41::-;;;;;;;;;;-1:-1:-1;5900:41:0;;;;-1:-1:-1;;;;;5900:41:0;;;;;;-1:-1:-1;;;;;3389:32:1;;;3371:51;;3359:2;3344:18;5900:41:0;3199:229:1;7313:95:0;;;;;;;;;;-1:-1:-1;4745:11:0;7313:95;;;3579:25:1;;;3567:2;3552:18;7313:95:0;3433:177:1;8025:446:0;;;;;;;;;;-1:-1:-1;8025:446:0;;;;;:::i;:::-;;:::i;2065:144::-;;;;;;;;;;;;;:::i;5156:61::-;;;;;;;;;;;;;;;;18289:301;;;;;;;;;;-1:-1:-1;18289:301:0;;;;;:::i;:::-;;:::i;7072:83::-;;;;;;;;;;-1:-1:-1;7072:83:0;;5018:1;4608:36:1;;4596:2;4581:18;7072:83:0;4466:184:1;5948:28:0;;;;;;;;;;-1:-1:-1;5948:28:0;;;;-1:-1:-1;;;;;5948:28:0;;;13074:89;;;;;;;;;;-1:-1:-1;13074:89:0;;;;;:::i;:::-;;:::i;18978:101::-;;;;;;;;;;-1:-1:-1;18978:101:0;;;;;:::i;:::-;;:::i;12840:226::-;;;;;;;;;;;;;:::i;7167:138::-;;;;;;;;;;-1:-1:-1;7167:138:0;;;;;:::i;:::-;;:::i;19087:119::-;;;;;;;;;;;;;:::i;5028:55::-;;;;;;;;;;;;;;;;1590:79;;;;;;;;;;-1:-1:-1;1628:7:0;1655:6;-1:-1:-1;;;;;1655:6:0;1590:79;;5091:57;;;;;;;;;;;;;;;;17327:160;;;;;;;;;;-1:-1:-1;17327:160:0;;;;;:::i;:::-;;:::i;18598:112::-;;;;;;;;;;-1:-1:-1;18598:112:0;;;;;:::i;:::-;;:::i;6976:87::-;;;;;;;;;;-1:-1:-1;7048:7:0;;;;;;;;;;;;-1:-1:-1;;;7048:7:0;;;;6976:87;;18830:139;;;;;;;;;;-1:-1:-1;18830:139:0;;;;;:::i;:::-;;:::i;7425:199::-;;;;;;;;;;-1:-1:-1;7425:199:0;;;;;:::i;:::-;;:::i;5801:36::-;;;;;;;;;;-1:-1:-1;5801:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18719:102;;;;;;;;;;-1:-1:-1;18719:102:0;;;;;:::i;:::-;;:::i;12603:227::-;;;;;;;;;;;;;:::i;19217:234::-;;;;;;;;;;-1:-1:-1;19217:234:0;;;;;:::i;:::-;;:::i;13171:114::-;;;;;;;;;;;;;:::i;4819:26::-;;;;;;;;;;;;;;;;12424:167;;;;;;;;;;-1:-1:-1;12424:167:0;;;;;:::i;:::-;;:::i;7633:184::-;;;;;;;;;;-1:-1:-1;7633:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7782:18:0;;;7750:7;7782:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7633:184;1812:244;;;;;;;;;;-1:-1:-1;1812:244:0;;;;;:::i;:::-;;:::i;17526:574::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;;;;;;;;;17699:9:::1;17683:27;;;;;;17666:11;17650:29;;;;;;:60:::0;17642:105:::1;;;::::0;-1:-1:-1;;;17642:105:0;;8141:2:1;17642:105:0::1;::::0;::::1;8123:21:1::0;;;8160:18;;;8153:30;8219:34;8199:18;;;8192:62;8271:18;;17642:105:0::1;7939:356:1::0;17642:105:0::1;17811:4;17795:22;;;;;;17778:11;17762:29;;;;;;:55:::0;17754:100:::1;;;::::0;-1:-1:-1;;;17754:100:0;;8502:2:1;17754:100:0::1;::::0;::::1;8484:21:1::0;;;8521:18;;;8514:30;8580:34;8560:18;;;8553:62;8632:18;;17754:100:0::1;8300:356:1::0;17754:100:0::1;17916:4;17900:22;;;;;;17885:9;17869:27;;;;;;:53:::0;17861:98:::1;;;::::0;-1:-1:-1;;;17861:98:0;;8863:2:1;17861:98:0::1;::::0;::::1;8845:21:1::0;;;8882:18;;;8875:30;8941:34;8921:18;;;8914:62;8993:18;;17861:98:0::1;8661:356:1::0;17861:98:0::1;17968:21;18020:11;18039:9;18056:4;17999:67;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;17999:67:0;;::::1;::::0;;;;;;18075:7:::1;:21:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;18075:21:0;;;;17999:67;;-1:-1:-1;18075:21:0;::::1;;17999:67:::0;18075:21;::::1;:::i;:::-;;17635:465;17526:574:::0;;;:::o;16692:627::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;16885:14:::1;16869:32;;;;;;16848:15;16832:33;;;;;;:69:::0;16824:114:::1;;;::::0;-1:-1:-1;;;16824:114:0;;8141:2:1;16824:114:0::1;::::0;::::1;8123:21:1::0;;;8160:18;;;8153:30;8219:34;8199:18;;;8192:62;8271:18;;16824:114:0::1;7939:356:1::0;16824:114:0::1;17006:5;16990:23;;;;;;16969:15;16953:33;;;;;;:60:::0;16945:105:::1;;;::::0;-1:-1:-1;;;16945:105:0;;8502:2:1;16945:105:0::1;::::0;::::1;8484:21:1::0;;;8521:18;;;8514:30;8580:34;8560:18;;;8553:62;8632:18;;16945:105:0::1;8300:356:1::0;16945:105:0::1;17117:5;17101:23;;;;;;17081:14;17065:32;;;;;;:59:::0;17057:104:::1;;;::::0;-1:-1:-1;;;17057:104:0;;8863:2:1;17057:104:0::1;::::0;::::1;8845:21:1::0;;;8882:18;;;8875:30;8941:34;8921:18;;;8914:62;8993:18;;17057:104:0::1;8661:356:1::0;17057:104:0::1;17170:23;17224:15;17247:14;17269:5;17203:77;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;17203:77:0;;::::1;::::0;;;;;;17289:10:::1;:26:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;17289:26:0;;;;17203:77;;-1:-1:-1;17289:26:0;::::1;;17203:77:::0;17289:26;::::1;:::i;7826:193::-:0;7928:4;7950:39;418:10;7973:7;7982:6;7950:8;:39::i;:::-;-1:-1:-1;8007:4:0;7826:193;;;;;:::o;18108:148::-;18186:7;:14;18153:13;;18182:18;;18174:50;;;;-1:-1:-1;;;18174:50:0;;13068:2:1;18174:50:0;;;13050:21:1;13107:2;13087:18;;;13080:30;-1:-1:-1;;;13126:18:1;;;13119:49;13185:18;;18174:50:0;12866:343:1;18174:50:0;18242:7;18250:1;18242:10;;;;;;;;:::i;:::-;;;;;;;;18235:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18108:148;;;:::o;8025:446::-;8157:4;8174:36;8184:6;8192:9;8203:6;8174:9;:36::i;:::-;8221:220;8244:6;418:10;8292:138;8348:6;8292:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8292:19:0;;;;;;:11;:19;;;;;;;;418:10;8292:33;;;;;;;;;;:37;:138::i;:::-;8221:8;:220::i;:::-;-1:-1:-1;8459:4:0;8025:446;;;;;:::o;2065:144::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;2168:1:::1;2152:6:::0;;2131:40:::1;::::0;-1:-1:-1;;;;;2152:6:0;;::::1;::::0;2131:40:::1;::::0;2168:1;;2131:40:::1;2199:1;2182:19:::0;;-1:-1:-1;;;;;;2182:19:0::1;::::0;;2065:144::o;18289:301::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;18430:14:::1;:30:::0;;;;18471:15:::1;:32:::0;;;;18517:12:::1;:26:::0;18554:13:::1;:28:::0;18289:301::o;13074:89::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13135:12:0::1;13150:5;13135:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13135:20:0::1;::::0;;13074:89::o;18978:101::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;19045:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;19045:26:0::1;-1:-1:-1::0;;;;19045:26:0;;::::1;::::0;;;::::1;::::0;;18978:101::o;12840:226::-;12906:11;;-1:-1:-1;;;;;12906:11:0;418:10;-1:-1:-1;;;;;12890:27:0;;:63;;;-1:-1:-1;12937:16:0;;-1:-1:-1;;;;;12937:16:0;418:10;-1:-1:-1;;;;;12921:32:0;;12890:63;12882:72;;;;;;12994:21;13026:32;12994:21;13026:12;:32::i;:::-;12871:195;12840:226::o;7167:138::-;-1:-1:-1;;;;;7280:16:0;;7233:7;7280:16;;;:7;:16;;;;;;7260:37;;:19;:37::i;19087:119::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;4745:11:::1;19141:12;:22:::0;;;19174:14:::1;:24:::0;19087:119::o;17327:160::-;17411:10;:17;17378:13;;17407:21;;17399:53;;;;-1:-1:-1;;;17399:53:0;;13068:2:1;17399:53:0;;;13050:21:1;13107:2;13087:18;;;13080:30;-1:-1:-1;;;13126:18:1;;;13119:49;13185:18;;17399:53:0;12866:343:1;17399:53:0;17470:10;17481:1;17470:13;;;;;;;;:::i;18598:112::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;18672:14:::1;:30:::0;18598:112::o;18830:139::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;18921:19:::1;:40:::0;18830:139::o;7425:199::-;7530:4;7552:42;418:10;7576:9;7587:6;7552:9;:42::i;18719:102::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;18787:12:::1;:26:::0;18719:102::o;12603:227::-;12669:11;;-1:-1:-1;;;;;12669:11:0;418:10;-1:-1:-1;;;;;12653:27:0;;:63;;;-1:-1:-1;12700:16:0;;-1:-1:-1;;;;;12700:16:0;418:10;-1:-1:-1;;;;;12684:32:0;;12653:63;12645:72;;;;;;12728:23;12754:24;12772:4;12754:9;:24::i;:::-;12728:50;;12789:33;12806:15;12789:16;:33::i;19217:234::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;19334:9:::1;19330:114;19349:19:::0;;::::1;19330:114;;;19424:8;19390:18;:31;19409:8;;19418:1;19409:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19390:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19390:31:0;:42;;-1:-1:-1;;19390:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;19370:3:0::1;19330:114;;;;19217:234:::0;;;:::o;13171:114::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;13222:11:::1;:18:::0;;-1:-1:-1;;;;13222:18:0::1;-1:-1:-1::0;;;13222:18:0::1;::::0;;13265:12:::1;13251:11;:26:::0;13171:114::o;12424:167::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;12498:9:::1;12493:91;12517:5;:12;12513:1;:16;12493:91;;;12568:4;12551;:14;12556:5;12562:1;12556:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12551:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12551:14:0;:21;;-1:-1:-1;;12551:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12531:3:0::1;12493:91;;;;12424:167:::0;:::o;1812:244::-;1718:6;;-1:-1:-1;;;;;1718:6:0;418:10;1718:22;1710:67;;;;-1:-1:-1;;;1710:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1901:22:0;::::1;1893:73;;;::::0;-1:-1:-1;;;1893:73:0;;13548:2:1;1893:73:0::1;::::0;::::1;13530:21:1::0;13587:2;13567:18;;;13560:30;13626:34;13606:18;;;13599:62;-1:-1:-1;;;13677:18:1;;;13670:36;13723:19;;1893:73:0::1;13346:402:1::0;1893:73:0::1;2003:6;::::0;;1982:38:::1;::::0;-1:-1:-1;;;;;1982:38:0;;::::1;::::0;2003:6;::::1;::::0;1982:38:::1;::::0;::::1;2031:6;:17:::0;;-1:-1:-1;;;;;;2031:17:0::1;-1:-1:-1::0;;;;;2031:17:0;;;::::1;::::0;;;::::1;::::0;;1812:244::o;9168:369::-;-1:-1:-1;;;;;9295:19:0;;9287:68;;;;-1:-1:-1;;;9287:68:0;;13955:2:1;9287:68:0;;;13937:21:1;13994:2;13974:18;;;13967:30;14033:34;14013:18;;;14006:62;-1:-1:-1;;;14084:18:1;;;14077:34;14128:19;;9287:68:0;13753:400:1;9287:68:0;-1:-1:-1;;;;;9374:21:0;;9366:68;;;;-1:-1:-1;;;9366:68:0;;14360:2:1;9366:68:0;;;14342:21:1;14399:2;14379:18;;;14372:30;14438:34;14418:18;;;14411:62;-1:-1:-1;;;14489:18:1;;;14482:32;14531:19;;9366:68:0;14158:398:1;9366:68:0;-1:-1:-1;;;;;9445:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9497:32;;3579:25:1;;;9497:32:0;;3552:18:1;9497:32:0;;;;;;;9168:369;;;:::o;9546:2218::-;-1:-1:-1;;;;;9668:18:0;;9660:68;;;;-1:-1:-1;;;9660:68:0;;14763:2:1;9660:68:0;;;14745:21:1;14802:2;14782:18;;;14775:30;14841:34;14821:18;;;14814:62;-1:-1:-1;;;14892:18:1;;;14885:35;14937:19;;9660:68:0;14561:401:1;9660:68:0;-1:-1:-1;;;;;9747:16:0;;9739:64;;;;-1:-1:-1;;;9739:64:0;;15169:2:1;9739:64:0;;;15151:21:1;15208:2;15188:18;;;15181:30;15247:34;15227:18;;;15220:62;-1:-1:-1;;;15298:18:1;;;15291:33;15341:19;;9739:64:0;14967:399:1;9739:64:0;9831:1;9822:6;:10;9814:64;;;;-1:-1:-1;;;9814:64:0;;15573:2:1;9814:64:0;;;15555:21:1;15612:2;15592:18;;;15585:30;15651:34;15631:18;;;15624:62;-1:-1:-1;;;15702:18:1;;;15695:39;15751:19;;9814:64:0;15371:405:1;9814:64:0;1628:7;1655:6;-1:-1:-1;;;;;9896:15:0;;;1655:6;;9896:15;;;;:32;;-1:-1:-1;1628:7:0;1655:6;-1:-1:-1;;;;;9915:13:0;;;1655:6;;9915:13;;9896:32;9892:1232;;;9953:11;;-1:-1:-1;;;9953:11:0;;;;9948:144;;1628:7;1655:6;-1:-1:-1;;;;;9993:15:0;;;1655:6;;9993:15;9985:91;;;;-1:-1:-1;;;9985:91:0;;15983:2:1;9985:91:0;;;15965:21:1;16022:2;16002:18;;;15995:30;16061:34;16041:18;;;16034:62;16132:33;16112:18;;;16105:61;16183:19;;9985:91:0;15781:427:1;9985:91:0;10127:12;;10117:6;:22;;10109:63;;;;-1:-1:-1;;;10109:63:0;;16415:2:1;10109:63:0;;;16397:21:1;16454:2;16434:18;;;16427:30;16493;16473:18;;;16466:58;16541:18;;10109:63:0;16213:352:1;10109:63:0;-1:-1:-1;;;;;10196:10:0;;;;;;:4;:10;;;;;;;;10195:11;:24;;;;-1:-1:-1;;;;;;10211:8:0;;;;;;:4;:8;;;;;;;;10210:9;10195:24;10187:72;;;;-1:-1:-1;;;10187:72:0;;16772:2:1;10187:72:0;;;16754:21:1;16811:2;16791:18;;;16784:30;16850:34;16830:18;;;16823:62;-1:-1:-1;;;16901:18:1;;;16894:33;16944:19;;10187:72:0;16570:399:1;10187:72:0;10286:13;;-1:-1:-1;;;;;10280:19:0;;;10286:13;;10280:19;10277:146;;10353:14;;10344:6;10328:13;10338:2;10328:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10320:87;;;;-1:-1:-1;;;10320:87:0;;17438:2:1;10320:87:0;;;17420:21:1;17477:2;17457:18;;;17450:30;17516:34;17496:18;;;17489:62;-1:-1:-1;;;17567:18:1;;;17560:33;17610:19;;10320:87:0;17236:399:1;10320:87:0;10440:28;10471:24;10489:4;10471:9;:24::i;:::-;10549:19;;10613:12;;10440:55;;-1:-1:-1;10525:43:0;;;;10589:36;;10586:124;;10682:12;;10659:35;;10586:124;10731:7;:18;;;;-1:-1:-1;10743:6:0;;-1:-1:-1;;;10743:6:0;;;;10742:7;10731:18;:43;;;;-1:-1:-1;10761:13:0;;-1:-1:-1;;;;;10753:21:0;;;10761:13;;10753:21;;10731:43;:58;;;;-1:-1:-1;10778:11:0;;-1:-1:-1;;;10778:11:0;;;;10731:58;:87;;;;-1:-1:-1;;;;;;10794:24:0;;;;;;:18;:24;;;;;;;;10793:25;10731:87;:114;;;;-1:-1:-1;;;;;;10823:22:0;;;;;;:18;:22;;;;;;;;10822:23;10731:114;10727:386;;;10866:38;10883:20;10866:16;:38::i;:::-;10952:21;10996:22;;10992:106;;11043:35;11056:21;11043:12;:35::i;:::-;10847:266;10727:386;9930:1194;;9892:1232;-1:-1:-1;;;;;11175:24:0;;11137:12;11175:24;;;:18;:24;;;;;;11152:4;;11175:24;;;:50;;-1:-1:-1;;;;;;11203:22:0;;;;;;:18;:22;;;;;;;;11175:50;11174:102;;;-1:-1:-1;11239:13:0;;-1:-1:-1;;;;;11231:21:0;;;11239:13;;11231:21;;;;:44;;-1:-1:-1;11262:13:0;;-1:-1:-1;;;;;11256:19:0;;;11262:13;;11256:19;;11231:44;11170:532;;;-1:-1:-1;11303:5:0;11170:532;;;11355:13;;-1:-1:-1;;;;;11347:21:0;;;11355:13;;11347:21;:55;;;;-1:-1:-1;11386:15:0;;-1:-1:-1;;;;;11372:30:0;;;11386:15;;11372:30;;11347:55;11344:162;;;11435:14;;11423:9;:26;11478:12;;11468:7;:22;11344:162;11533:13;;-1:-1:-1;;;;;11527:19:0;;;11533:13;;11527:19;:55;;;;-1:-1:-1;11566:15:0;;-1:-1:-1;;;;;11550:32:0;;;11566:15;;11550:32;;11527:55;11523:165;;;11615:15;;11603:9;:27;11659:13;;11649:7;:23;11523:165;11715:41;11730:4;11736:2;11740:6;11748:7;11715:14;:41::i;2579:224::-;2699:7;2735:12;2727:6;;;;2719:29;;;;-1:-1:-1;;;2719:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2759:9:0;2771:5;2775:1;2771;:5;:::i;:::-;2759:17;2579:224;-1:-1:-1;;;;;2579:224:0:o;12265:151::-;12322:11;;-1:-1:-1;;;;;12322:11:0;:35;12343:13;:6;12354:1;12343:10;:13::i;:::-;12322:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12368:16:0;;-1:-1:-1;;;;;12368:16:0;:40;12394:13;:6;12405:1;12394:10;:13::i;:::-;12368:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8480:323;8575:7;8633;;8622;:18;;8600:110;;;;-1:-1:-1;;;8600:110:0;;17975:2:1;8600:110:0;;;17957:21:1;18014:2;17994:18;;;17987:30;18053:34;18033:18;;;18026:62;-1:-1:-1;;;18104:18:1;;;18097:40;18154:19;;8600:110:0;17773:406:1;8600:110:0;8721:19;8743:10;:8;:10::i;:::-;8721:32;-1:-1:-1;8771:24:0;:7;8721:32;8771:11;:24::i;:::-;8764:31;8480:323;-1:-1:-1;;;8480:323:0:o;11773:483::-;6180:6;:13;;-1:-1:-1;;;;6180:13:0;-1:-1:-1;;;6180:13:0;;;11875:16:::1;::::0;;11889:1:::1;11875:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11875:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11875:16:0::1;11851:40;;11920:4;11902;11907:1;11902:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11902:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11946:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11946:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11902:7;;11946:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11936:4;11941:1;11936:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11936:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12011:15:::1;::::0;11979:62:::1;::::0;11996:4:::1;::::0;12011:15:::1;12029:11:::0;11979:8:::1;:62::i;:::-;12052:15;::::0;:196:::1;::::0;-1:-1:-1;;;12052:196:0;;-1:-1:-1;;;;;12052:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12133:11;;12052:15:::1;::::0;12175:4;;12202::::1;::::0;12222:15:::1;::::0;12052:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6216:6:0;:14;;-1:-1:-1;;;;6216:14:0;;;-1:-1:-1;;;;11773:483:0:o;13294:282::-;13450:7;13445:28;;13459:14;:12;:14::i;:::-;13484:44;13502:6;13510:9;13521:6;13484:17;:44::i;:::-;13544:7;13539:29;;13553:15;9098:17;;9086:9;:29;9136:15;;9126:7;:25;9042:117;3067:132;3125:7;3152:39;3156:1;3159;3152:39;;;;;;;;;;;;;;;;;:3;:39::i;16248:167::-;16290:7;16311:15;16328;16347:19;:17;:19::i;:::-;16310:56;;-1:-1:-1;16310:56:0;-1:-1:-1;16387:20:0;16310:56;;16387:11;:20::i;:::-;16380:27;;;;16248:167;:::o;8812:221::-;8859:9;;:14;:30;;;;-1:-1:-1;8877:7:0;;:12;8859:30;8855:43;;;8812:221::o;8855:43::-;8931:9;;;8911:17;:29;8969:7;;;8951:15;:25;-1:-1:-1;8990:13:0;;;;9014:11;8812:221::o;13585:606::-;13732:15;13762:23;13800:12;13827:23;13865:12;13892:11;13917:19;13928:7;13917:10;:19::i;:::-;-1:-1:-1;;;;;13965:15:0;;;;;;:7;:15;;;;;;13717:219;;-1:-1:-1;13717:219:0;;-1:-1:-1;13717:219:0;;-1:-1:-1;13717:219:0;-1:-1:-1;13717:219:0;-1:-1:-1;13717:219:0;-1:-1:-1;13965:28:0;;13717:219;13965:19;:28::i;:::-;-1:-1:-1;;;;;13947:15:0;;;;;;;:7;:15;;;;;;:46;;;;14025:18;;;;;;;:39;;14048:15;14025:22;:39::i;:::-;-1:-1:-1;;;;;14004:18:0;;;;;;:7;:18;;;;;:60;14075:14;14085:3;14075:9;:14::i;:::-;14100:23;14112:4;14118;14100:11;:23::i;:::-;14156:9;-1:-1:-1;;;;;14139:44:0;14148:6;-1:-1:-1;;;;;14139:44:0;;14167:15;14139:44;;;;3579:25:1;;3567:2;3552:18;;3433:177;14139:44:0;;;;;;;;13706:485;;;;;;13585:606;;;:::o;3208:223::-;3328:7;3363:12;3356:5;3348:28;;;;-1:-1:-1;;;3348:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3387:9:0;3399:5;3403:1;3399;:5;:::i;16424:260::-;16522:7;;16475;;;;4745:11;16590:20;16522:7;4745:11;16590;:20::i;:::-;16580:7;:30;16576:61;;;-1:-1:-1;;16620:7:0;;;4745:11;;-1:-1:-1;16424:260:0;-1:-1:-1;16424:260:0:o;16576:61::-;16659:7;;16668;;-1:-1:-1;16424:260:0;-1:-1:-1;16424:260:0:o;14610:612::-;14710:7;14732;14754;14776;14798;14820;14856:23;14881:12;14895:11;14923:40;14935:7;14944:9;;14955:7;;14923:11;:40::i;:::-;14855:108;;;;;;14974:19;14996:10;:8;:10::i;:::-;14974:32;;15018:15;15035:23;15060:12;15089:44;15101:7;15110:4;15116:3;15121:11;15089;:44::i;:::-;15017:116;;-1:-1:-1;15017:116:0;-1:-1:-1;15017:116:0;-1:-1:-1;15187:15:0;;-1:-1:-1;15204:4:0;;-1:-1:-1;15210:3:0;;-1:-1:-1;;;;;14610:612:0;;;;;;;:::o;2434:136::-;2492:7;2519:43;2523:1;2526;2519:43;;;;;;;;;;;;;;;;;:3;:43::i;2246:179::-;2304:7;;2336:5;2340:1;2336;:5;:::i;:::-;2324:17;;2365:1;2360;:6;;2352:46;;;;-1:-1:-1;;;2352:46:0;;19849:2:1;2352:46:0;;;19831:21:1;19888:2;19868:18;;;19861:30;19927:29;19907:18;;;19900:57;19974:18;;2352:46:0;19647:351:1;14200:207:0;14251:19;14273:10;:8;:10::i;:::-;14251:32;-1:-1:-1;14294:13:0;14310:20;:3;14251:32;14310:7;:20::i;:::-;14382:4;14366:22;;;;:7;:22;;;;;;14294:36;;-1:-1:-1;14366:33:0;;14294:36;14366:26;:33::i;:::-;14357:4;14341:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14200:207:0:o;14416:147::-;14494:7;;:17;;14506:4;14494:11;:17::i;:::-;14484:7;:27;14535:10;;:20;;14550:4;14535:14;:20::i;:::-;14522:10;:33;-1:-1:-1;;14416:147:0:o;15231:466::-;15400:7;;;;15494:30;15520:3;15494:21;:7;15506:8;15494:11;:21::i;:::-;:25;;:30::i;:::-;15479:45;-1:-1:-1;15535:11:0;15549:28;15573:3;15549:19;:7;15561:6;15549:11;:19::i;:28::-;15535:42;-1:-1:-1;15588:23:0;15614:26;15535:42;15614:17;:7;15626:4;15614:11;:17::i;:::-;:21;;:26::i;:::-;15588:52;15679:4;;-1:-1:-1;15685:3:0;;-1:-1:-1;15231:466:0;;-1:-1:-1;;;;;15231:466:0:o;15706:533::-;15898:7;;;;15995:24;:7;16007:11;15995;:24::i;:::-;15977:42;-1:-1:-1;16030:12:0;16045:21;:4;16054:11;16045:8;:21::i;:::-;16030:36;-1:-1:-1;16077:13:0;16093:20;:3;16101:11;16093:7;:20::i;:::-;16077:36;-1:-1:-1;16124:23:0;16150:28;16077:36;16150:17;:7;16162:4;16150:11;:17::i;:28::-;16200:7;;;;-1:-1:-1;16226:4:0;;-1:-1:-1;15706:533:0;;-1:-1:-1;;;;;;;15706:533:0:o;2812:246::-;2870:7;2894:1;2899;2894:6;2890:47;;-1:-1:-1;2924:1:0;2917:8;;2890:47;2947:9;2959:5;2963:1;2959;:5;:::i;:::-;2947:17;-1:-1:-1;2992:1:0;2983:5;2987:1;2947:17;2983:5;:::i;:::-;:10;2975:56;;;;-1:-1:-1;;;2975:56:0;;20378:2:1;2975:56:0;;;20360:21:1;20417:2;20397:18;;;20390:30;20456:34;20436:18;;;20429:62;-1:-1:-1;;;20507:18:1;;;20500:31;20548:19;;2975:56:0;20176:397:1;14:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:1;247:40;;317:18;302:34;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:1:o;426:531::-;469:5;522:3;515:4;507:6;503:17;499:27;489:55;;540:1;537;530:12;489:55;576:6;563:20;602:18;598:2;595:26;592:52;;;624:18;;:::i;:::-;668:55;711:2;692:13;;-1:-1:-1;;688:27:1;717:4;684:38;668:55;:::i;:::-;748:2;739:7;732:19;794:3;787:4;782:2;774:6;770:15;766:26;763:35;760:55;;;811:1;808;801:12;760:55;876:2;869:4;861:6;857:17;850:4;841:7;837:18;824:55;924:1;899:16;;;917:4;895:27;888:38;;;;903:7;426:531;-1:-1:-1;;;426:531:1:o;962:743::-;1069:6;1077;1085;1138:2;1126:9;1117:7;1113:23;1109:32;1106:52;;;1154:1;1151;1144:12;1106:52;1194:9;1181:23;1223:18;1264:2;1256:6;1253:14;1250:34;;;1280:1;1277;1270:12;1250:34;1303:50;1345:7;1336:6;1325:9;1321:22;1303:50;:::i;:::-;1293:60;;1406:2;1395:9;1391:18;1378:32;1362:48;;1435:2;1425:8;1422:16;1419:36;;;1451:1;1448;1441:12;1419:36;1474:52;1518:7;1507:8;1496:9;1492:24;1474:52;:::i;:::-;1464:62;;1579:2;1568:9;1564:18;1551:32;1535:48;;1608:2;1598:8;1595:16;1592:36;;;1624:1;1621;1614:12;1592:36;;1647:52;1691:7;1680:8;1669:9;1665:24;1647:52;:::i;:::-;1637:62;;;962:743;;;;;:::o;1710:250::-;1795:1;1805:113;1819:6;1816:1;1813:13;1805:113;;;1895:11;;;1889:18;1876:11;;;1869:39;1841:2;1834:10;1805:113;;;-1:-1:-1;;1952:1:1;1934:16;;1927:27;1710:250::o;1965:396::-;2114:2;2103:9;2096:21;2077:4;2146:6;2140:13;2189:6;2184:2;2173:9;2169:18;2162:34;2205:79;2277:6;2272:2;2261:9;2257:18;2252:2;2244:6;2240:15;2205:79;:::i;:::-;2345:2;2324:15;-1:-1:-1;;2320:29:1;2305:45;;;;2352:2;2301:54;;1965:396;-1:-1:-1;;1965:396:1:o;2366:131::-;-1:-1:-1;;;;;2441:31:1;;2431:42;;2421:70;;2487:1;2484;2477:12;2502:315;2570:6;2578;2631:2;2619:9;2610:7;2606:23;2602:32;2599:52;;;2647:1;2644;2637:12;2599:52;2686:9;2673:23;2705:31;2730:5;2705:31;:::i;:::-;2755:5;2807:2;2792:18;;;;2779:32;;-1:-1:-1;;;2502:315:1:o;3014:180::-;3073:6;3126:2;3114:9;3105:7;3101:23;3097:32;3094:52;;;3142:1;3139;3132:12;3094:52;-1:-1:-1;3165:23:1;;3014:180;-1:-1:-1;3014:180:1:o;3615:456::-;3692:6;3700;3708;3761:2;3749:9;3740:7;3736:23;3732:32;3729:52;;;3777:1;3774;3767:12;3729:52;3816:9;3803:23;3835:31;3860:5;3835:31;:::i;:::-;3885:5;-1:-1:-1;3942:2:1;3927:18;;3914:32;3955:33;3914:32;3955:33;:::i;:::-;3615:456;;4007:7;;-1:-1:-1;;;4061:2:1;4046:18;;;;4033:32;;3615:456::o;4076:385::-;4162:6;4170;4178;4186;4239:3;4227:9;4218:7;4214:23;4210:33;4207:53;;;4256:1;4253;4246:12;4207:53;-1:-1:-1;;4279:23:1;;;4349:2;4334:18;;4321:32;;-1:-1:-1;4400:2:1;4385:18;;4372:32;;4451:2;4436:18;4423:32;;-1:-1:-1;4076:385:1;-1:-1:-1;4076:385:1:o;4863:247::-;4922:6;4975:2;4963:9;4954:7;4950:23;4946:32;4943:52;;;4991:1;4988;4981:12;4943:52;5030:9;5017:23;5049:31;5074:5;5049:31;:::i;5115:160::-;5180:20;;5236:13;;5229:21;5219:32;;5209:60;;5265:1;5262;5255:12;5209:60;5115:160;;;:::o;5280:180::-;5336:6;5389:2;5377:9;5368:7;5364:23;5360:32;5357:52;;;5405:1;5402;5395:12;5357:52;5428:26;5444:9;5428:26;:::i;5465:689::-;5557:6;5565;5573;5626:2;5614:9;5605:7;5601:23;5597:32;5594:52;;;5642:1;5639;5632:12;5594:52;5682:9;5669:23;5711:18;5752:2;5744:6;5741:14;5738:34;;;5768:1;5765;5758:12;5738:34;5806:6;5795:9;5791:22;5781:32;;5851:7;5844:4;5840:2;5836:13;5832:27;5822:55;;5873:1;5870;5863:12;5822:55;5913:2;5900:16;5939:2;5931:6;5928:14;5925:34;;;5955:1;5952;5945:12;5925:34;6010:7;6003:4;5993:6;5990:1;5986:14;5982:2;5978:23;5974:34;5971:47;5968:67;;;6031:1;6028;6021:12;5968:67;6062:4;6054:13;;;;-1:-1:-1;6086:6:1;-1:-1:-1;6111:37:1;;6127:20;;;-1:-1:-1;6111:37:1;:::i;:::-;6101:47;;5465:689;;;;;:::o;6159:1021::-;6243:6;6274:2;6317;6305:9;6296:7;6292:23;6288:32;6285:52;;;6333:1;6330;6323:12;6285:52;6373:9;6360:23;6402:18;6443:2;6435:6;6432:14;6429:34;;;6459:1;6456;6449:12;6429:34;6497:6;6486:9;6482:22;6472:32;;6542:7;6535:4;6531:2;6527:13;6523:27;6513:55;;6564:1;6561;6554:12;6513:55;6600:2;6587:16;6622:2;6618;6615:10;6612:36;;;6628:18;;:::i;:::-;6674:2;6671:1;6667:10;6657:20;;6697:28;6721:2;6717;6713:11;6697:28;:::i;:::-;6759:15;;;6829:11;;;6825:20;;;6790:12;;;;6857:19;;;6854:39;;;6889:1;6886;6879:12;6854:39;6913:11;;;;6933:217;6949:6;6944:3;6941:15;6933:217;;;7029:3;7016:17;7003:30;;7046:31;7071:5;7046:31;:::i;:::-;7090:18;;;6966:12;;;;7128;;;;6933:217;;;7169:5;6159:1021;-1:-1:-1;;;;;;;;6159:1021:1:o;7185:388::-;7253:6;7261;7314:2;7302:9;7293:7;7289:23;7285:32;7282:52;;;7330:1;7327;7320:12;7282:52;7369:9;7356:23;7388:31;7413:5;7388:31;:::i;:::-;7438:5;-1:-1:-1;7495:2:1;7480:18;;7467:32;7508:33;7467:32;7508:33;:::i;:::-;7560:7;7550:17;;;7185:388;;;;;:::o;7578:356::-;7780:2;7762:21;;;7799:18;;;7792:30;7858:34;7853:2;7838:18;;7831:62;7925:2;7910:18;;7578:356::o;9022:1284::-;-1:-1:-1;;;9678:3:1;9671:16;9653:3;9716:6;9710:13;9732:74;9799:6;9795:1;9790:3;9786:11;9779:4;9771:6;9767:17;9732:74;:::i;:::-;9834:6;9829:3;9825:16;9815:26;;-1:-1:-1;;;9892:2:1;9888:1;9884:2;9880:10;9873:22;9926:6;9920:13;9942:75;10008:8;10004:1;10000:2;9996:10;9989:4;9981:6;9977:17;9942:75;:::i;:::-;10077:1;10036:17;;10069:10;;;10062:22;10109:13;;10131:75;10109:13;10193:1;10185:10;;10178:4;10166:17;;10131:75;:::i;:::-;-1:-1:-1;;;10266:1:1;10225:17;;;;10258:10;;;10251:23;10298:1;10290:10;;9022:1284;-1:-1:-1;;;;;9022:1284:1:o;10311:380::-;10390:1;10386:12;;;;10433;;;10454:61;;10508:4;10500:6;10496:17;10486:27;;10454:61;10561:2;10553:6;10550:14;10530:18;10527:38;10524:161;;10607:10;10602:3;10598:20;10595:1;10588:31;10642:4;10639:1;10632:15;10670:4;10667:1;10660:15;10524:161;;10311:380;;;:::o;10822:518::-;10924:2;10919:3;10916:11;10913:421;;;10960:5;10957:1;10950:16;11004:4;11001:1;10991:18;11074:2;11062:10;11058:19;11055:1;11051:27;11045:4;11041:38;11110:4;11098:10;11095:20;11092:47;;;-1:-1:-1;11133:4:1;11092:47;11188:2;11183:3;11179:12;11176:1;11172:20;11166:4;11162:31;11152:41;;11243:81;11261:2;11254:5;11251:13;11243:81;;;11320:1;11306:16;;11287:1;11276:13;11243:81;;10913:421;10822:518;;;:::o;11516:1345::-;11642:3;11636:10;11669:18;11661:6;11658:30;11655:56;;;11691:18;;:::i;:::-;11720:97;11810:6;11770:38;11802:4;11796:11;11770:38;:::i;:::-;11764:4;11720:97;:::i;:::-;11872:4;;11929:2;11918:14;;11946:1;11941:663;;;;12648:1;12665:6;12662:89;;;-1:-1:-1;12717:19:1;;;12711:26;12662:89;-1:-1:-1;;11473:1:1;11469:11;;;11465:24;11461:29;11451:40;11497:1;11493:11;;;11448:57;12764:81;;11911:944;;11941:663;10769:1;10762:14;;;10806:4;10793:18;;-1:-1:-1;;11977:20:1;;;12095:236;12109:7;12106:1;12103:14;12095:236;;;12198:19;;;12192:26;12177:42;;12290:27;;;;12258:1;12246:14;;;;12125:19;;12095:236;;;12099:3;12359:6;12350:7;12347:19;12344:201;;;12420:19;;;12414:26;-1:-1:-1;;12503:1:1;12499:14;;;12515:3;12495:24;12491:37;12487:42;12472:58;12457:74;;12344:201;;;12591:1;12582:6;12579:1;12575:14;12571:22;12565:4;12558:36;11911:944;;;;;11516:1345;;:::o;13214:127::-;13275:10;13270:3;13266:20;13263:1;13256:31;13306:4;13303:1;13296:15;13330:4;13327:1;13320:15;16974:127;17035:10;17030:3;17026:20;17023:1;17016:31;17066:4;17063:1;17056:15;17090:4;17087:1;17080:15;17106:125;17171:9;;;17192:10;;;17189:36;;;17205:18;;:::i;17640:128::-;17707:9;;;17728:11;;;17725:37;;;17742:18;;:::i;18184:251::-;18254:6;18307:2;18295:9;18286:7;18282:23;18278:32;18275:52;;;18323:1;18320;18313:12;18275:52;18355:9;18349:16;18374:31;18399:5;18374:31;:::i;18440:980::-;18702:4;18750:3;18739:9;18735:19;18781:6;18770:9;18763:25;18807:2;18845:6;18840:2;18829:9;18825:18;18818:34;18888:3;18883:2;18872:9;18868:18;18861:31;18912:6;18947;18941:13;18978:6;18970;18963:22;19016:3;19005:9;19001:19;18994:26;;19055:2;19047:6;19043:15;19029:29;;19076:1;19086:195;19100:6;19097:1;19094:13;19086:195;;;19165:13;;-1:-1:-1;;;;;19161:39:1;19149:52;;19256:15;;;;19221:12;;;;19197:1;19115:9;19086:195;;;-1:-1:-1;;;;;;;19337:32:1;;;;19332:2;19317:18;;19310:60;-1:-1:-1;;;19401:3:1;19386:19;19379:35;19298:3;18440:980;-1:-1:-1;;;18440:980:1:o;19425:217::-;19465:1;19491;19481:132;;19535:10;19530:3;19526:20;19523:1;19516:31;19570:4;19567:1;19560:15;19598:4;19595:1;19588:15;19481:132;-1:-1:-1;19627:9:1;;19425:217::o;20003:168::-;20076:9;;;20107;;20124:15;;;20118:22;;20104:37;20094:71;;20145:18;;:::i
Swarm Source
ipfs://5406d42a6f9d664558176167bc830e083ca8840665368021604578c3ffc62ec3
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.