ERC-20
Overview
Max Total Supply
50,000,000,000 PROFAI
Holders
34
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
188,277,843.950727744 PROFAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
PROFAI
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-29 */ //SPDX-License-Identifier: GPL-3.0 /* Profit AI - Using the power of artificial intelligence to track and replicate the most profitable wallets on the Ethereum blockchain. https://t.me/ProfitAIPortal https://X.Com/ProfitAiBot https://ProfitAiBot.Xyz */ pragma solidity ^0.8.16; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address holder, 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); } abstract contract Auth { address internal _owner; event OwnershipTransferred(address _owner); modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this"); _; } constructor(address creatorOwner) { _owner = creatorOwner; } function owner() public view returns (address) { return _owner; } function transferOwnership(address payable _newOwner) external onlyOwner { _owner = _newOwner; emit OwnershipTransferred(_newOwner); } function renounceOwnership() external onlyOwner { _owner = address(0); emit OwnershipTransferred(address(0)); } } contract PROFAI is IERC20, Auth { string private constant tknSymbol = "PROFAI"; string private constant tokenName = "Profit AI"; uint8 private constant decimals_ = 9; uint256 private constant tSupply = 50000000000 * (10**decimals_); mapping (address => uint256) private balances; mapping (address => mapping (address => uint256)) private tokenAllowance; address payable private _marketing = payable(0xBb3458899cF13DdbaAa75873581BA7a41cB997E1); uint256 private _antiMevBlock = 2; uint8 private _sellTax = 20; uint8 private _buyTax = 20; uint256 private startBlock; uint256 private _maxTx = tSupply; uint256 private _maxWalletVal = tSupply; uint256 private _swapMin = tSupply * 10 / 100000; uint256 private _swapMax = tSupply * 789 / 100000; uint256 private _swapMinVal = 2 * (10**16); uint256 private _swapLimit = _swapMin * 37 * 100; mapping (uint256 => mapping (address => uint8)) private _sellsInBlock; mapping (address => bool) private _zeroFees; mapping (address => bool) private _noLimit; address private constant routerAddr = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Router02 private swapRouter = IUniswapV2Router02(routerAddr); address private liquidityPool; mapping (address => bool) private isLiqPool; bool private tradingEnabled; bool private isInSwap = false; modifier swapLocked { isInSwap = true; _; isInSwap = false; } constructor() Auth(msg.sender) { balances[msg.sender] = tSupply; emit Transfer(address(0), msg.sender, balances[msg.sender]); _zeroFees[_owner] = true; _zeroFees[address(this)] = true; _zeroFees[_marketing] = true; _zeroFees[routerAddr] = true; _noLimit[_owner] = true; _noLimit[address(this)] = true; _noLimit[_marketing] = true; _noLimit[routerAddr] = true; } receive() external payable {} function decimals() external pure override returns (uint8) { return decimals_; } function totalSupply() external pure override returns (uint256) { return tSupply; } function name() external pure override returns (string memory) { return tokenName; } function symbol() external pure override returns (string memory) { return tknSymbol; } function balanceOf(address account) public view override returns (uint256) { return balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return tokenAllowance[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { tokenAllowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address toWallet, uint256 amount) external override returns (bool) { require(_checkTradingOpen(msg.sender), "Trading not open"); return _transferFrom(msg.sender, toWallet, amount); } function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) { require(_checkTradingOpen(fromWallet), "Trading not open"); tokenAllowance[fromWallet][msg.sender] -= amount; return _transferFrom(fromWallet, toWallet, amount); } function setExemptions(address wlt, bool isNoFees, bool isNoLimits) external onlyOwner { if (isNoLimits || isNoFees) { require(!isLiqPool[wlt], "Cannot exempt LP"); } _zeroFees[ wlt ] = isNoFees; _noLimit[ wlt ] = isNoLimits; } function swapMin() external view returns (uint256) { return _swapMin; } function swapMax() external view returns (uint256) { return _swapMax; } function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) { require(sender != address(0), "No transfers from 0 wallet"); if (!tradingEnabled) { require(_zeroFees[sender] && _noLimit[sender], "Trading not yet open"); } if ( !isInSwap && isLiqPool[toWallet] && swapEligible(amount) ) { _swapTaxTokens(); } if ( block.number >= startBlock ) { if (block.number < _antiMevBlock && isLiqPool[sender]) { require(toWallet == tx.origin, "MEV block"); } if (block.number < _antiMevBlock + 600 && isLiqPool[toWallet] && sender != address(this) ) { _sellsInBlock[block.number][toWallet] += 1; require(_sellsInBlock[block.number][toWallet] <= 2, "MEV block"); } } if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { require(_checkLimits(sender, toWallet, amount), "TX over limits"); } uint256 _taxAmount = calcTax(sender, toWallet, amount); uint256 _transferAmount = amount - _taxAmount; balances[sender] -= amount; _swapLimit += _taxAmount; balances[toWallet] += _transferAmount; emit Transfer(sender, toWallet, amount); return true; } function buyFee() external view returns(uint8) { return _buyTax; } function sellTax() external view returns(uint8) { return _sellTax; } function _checkTradingOpen(address fromWallet) private view returns (bool){ bool checkResult = false; if ( tradingEnabled ) { checkResult = true; } else if (_zeroFees[fromWallet] && _noLimit[fromWallet]) { checkResult = true; } return checkResult; } function marketingWallet() external view returns (address) { return _marketing; } function maxWalletSize() external view returns (uint256) { return _maxWalletVal; } function maxTxAmount() external view returns (uint256) { return _maxTx; } function exemption(address wallet) external view returns (bool fees, bool limits) { return (_zeroFees[wallet], _noLimit[wallet]); } function _swapTokensForETH(uint256 tokenAmount) private { _approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address( this ); path[1] = swapRouter.WETH(); swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function _swapTaxTokens() private swapLocked { uint256 _taxTokenAvailable = _swapLimit; if ( _taxTokenAvailable >= _swapMin && tradingEnabled ) { if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; } uint256 _tokensForSwap = _taxTokenAvailable; if( _tokensForSwap > 1 * 10**decimals_ ) { balances[address(this)] += _taxTokenAvailable; _swapTokensForETH(_tokensForSwap); _swapLimit -= _taxTokenAvailable; } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { distributeEth(_contractETHBalance); } } } function _approveRouter(uint256 _tokenAmount) internal { if ( tokenAllowance[address(this)][routerAddr] < _tokenAmount ) { tokenAllowance[address(this)][routerAddr] = type(uint256).max; emit Approval(address(this), routerAddr, type(uint256).max); } } function distributeEth(uint256 amount) private { _marketing.transfer(amount); } function calcTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !tradingEnabled || _zeroFees[fromWallet] || _zeroFees[recipient] ) { taxAmount = 0; } else if ( isLiqPool[fromWallet] ) { taxAmount = amount * _buyTax / 100; } else if ( isLiqPool[recipient] ) { taxAmount = amount * _sellTax / 100; } return taxAmount; } function swapEligible(uint256 tokenAmt) private view returns (bool) { bool result; if (_swapMinVal > 0) { uint256 lpTkn = balances[liquidityPool]; uint256 lpWeth = IERC20(swapRouter.WETH()).balanceOf(liquidityPool); uint256 weiValue = (tokenAmt * lpWeth) / lpTkn; if (weiValue >= _swapMinVal) { result = true; } } else { result = true; } return result; } function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( tradingEnabled && !_noLimit[fromWallet] && !_noLimit[toWallet] ) { if ( transferAmount > _maxTx ) { limitCheckPassed = false; } else if ( !isLiqPool[toWallet] && (balances[toWallet] + transferAmount > _maxWalletVal) ) { limitCheckPassed = false; } } return limitCheckPassed; } function addLiquidity() external payable onlyOwner swapLocked { require(liquidityPool == address(0), "LP created"); require(!tradingEnabled, "trading open"); require(msg.value > 0 || address(this).balance>0, "No ETH"); require(balances[address(this)]>0, "No tokens"); liquidityPool = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH()); _addLP(balances[address(this)], address(this).balance); } function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner { uint256 newTxAmt = tSupply * maxTransPermille / 1000 + 1; require(newTxAmt >= _maxTx, "tx too low"); _maxTx = newTxAmt; uint256 newWalletAmt = tSupply * maxWaletPermille / 1000 + 1; require(newWalletAmt >= _maxWalletVal, "wallet too low"); _maxWalletVal = newWalletAmt; } function enableTrading() external onlyOwner { require(!tradingEnabled, "trading open"); _enableTrading(); } function _enableTrading() internal { _maxTx = 20 * tSupply / 1000; _maxWalletVal = 20 * tSupply / 1000; balances[liquidityPool] -= _swapLimit; (isLiqPool[liquidityPool],) = liquidityPool.call(abi.encodeWithSignature("sync()") ); require(isLiqPool[liquidityPool], "Failed bootstrap"); startBlock = block.number; _antiMevBlock = _antiMevBlock + startBlock; tradingEnabled = true; } function setMarketingWallet(address marketingWlt) external onlyOwner { require(!isLiqPool[marketingWlt], "LP cannot be tax wallet"); _marketing = payable(marketingWlt); _zeroFees[marketingWlt] = true; _noLimit[marketingWlt] = true; } function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner { _swapMin = tSupply * minVal / minDiv; _swapMax = tSupply * maxVal / maxDiv; _swapMinVal = trigger * 10**15; require(_swapMax>=_swapMin, "Min-Max error"); } function _addLP(uint256 _tokenAmount, uint256 _ethAmountWei) internal { _approveRouter(_tokenAmount); swapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, _owner, block.timestamp ); } function setFees(uint8 buyFeePercent, uint8 sellFeePercent) external onlyOwner { require(buyFeePercent + sellFeePercent <= 10, "Roundtrip too high"); _buyTax = buyFeePercent; _sellTax = sellFeePercent; } } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function WETH() external pure returns (address); function factory() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","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":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemption","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"isNoFees","type":"bool"},{"internalType":"bool","name":"isNoLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFeePercent","type":"uint8"},{"internalType":"uint8","name":"sellFeePercent","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600380546001600160a01b03191673bb3458899cf13ddbaaa75873581ba7a41cb997e117905560026004556005805461141461ffff1990911617905561004c6009600a6103ad565b61005b90640ba43b74006103c2565b60075561006a6009600a6103ad565b61007990640ba43b74006103c2565b600855620186a061008c6009600a6103ad565b61009b90640ba43b74006103c2565b6100a690600a6103c2565b6100b091906103d9565b600955620186a06009600a6100c591906103ad565b6100d490640ba43b74006103c2565b6100e0906103156103c2565b6100ea91906103d9565b600a5566470de4df820000600b556009546101069060256103c2565b6101119060646103c2565b600c55601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556013805461ff0019169055348015610150575f80fd5b505f80546001600160a01b0319163317905561016e6009600a6103ad565b61017d90640ba43b74006103c2565b335f81815260016020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f80546001600160a01b039081168252600e602090815260408084208054600160ff199182168117909255308087528387208054831684179055600380548716885284882080548416851790557f37836a7135fae77e265e35732c70286035736c8b57b12590769780e067ead81c8054841685179055875487168852600f9095528387208054831684179055865282862080548216831790559254909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527f7e98db1b893d503d049bbf1a3858119b9172e4b74989a91dfee4165dd9ce42a880549092161790556103f8565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115610303578085048111156102e7576102e76102b4565b60018416156102f557908102905b60019390931c9280026102cc565b935093915050565b5f82610319575060016103a7565b8161032557505f6103a7565b816001811461033b576002811461034557610361565b60019150506103a7565b60ff841115610356576103566102b4565b50506001821b6103a7565b5060208310610133831016604e8410600b8410161715610384575081810a6103a7565b6103905f1984846102c8565b805f19048211156103a3576103a36102b4565b0290505b92915050565b5f6103bb60ff84168361030b565b9392505050565b80820281158282048414176103a7576103a76102b4565b5f826103f357634e487b7160e01b5f52601260045260245ffd5b500490565b6121b4806104055f395ff3fe608060405260043610610198575f3560e01c806375f0a874116100e7578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e146104cd578063e537a83414610511578063e8078d9414610530578063f2fde38b14610538575f80fd5b8063a9059cbb14610483578063b3de9b5d146104a2578063cc1776d3146104b6575f80fd5b80638da5cb5b116100c25780638da5cb5b146104115780638f3fa8601461042d57806395d89b4114610441578063a5e992bb1461046f575f80fd5b806375f0a874146103b85780638a8c523c146103e95780638c0b5e22146103fd575f80fd5b8063313ce567116101525780634fcd24461161012d5780634fcd2446146103325780635d098b381461035157806370a0823114610370578063715018a6146103a4575f80fd5b8063313ce567146102d6578063368f4800146102f75780634706240214610316575f80fd5b806306fdde03146101a3578063095ea7b3146101e657806318160ddd1461021557806318839bc31461023757806323b872dd1461025857806326ac17c614610277575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600981526850726f66697420414960b81b60208201525b6040516101dd9190611c66565b60405180910390f35b3480156101f1575f80fd5b50610205610200366004611caf565b610557565b60405190151581526020016101dd565b348015610220575f80fd5b506102296105c3565b6040519081526020016101dd565b348015610242575f80fd5b50610256610251366004611ced565b6105e4565b005b348015610263575f80fd5b50610205610272366004611d2f565b6106c0565b348015610282575f80fd5b506102bf610291366004611d6d565b6001600160a01b03165f908152600e6020908152604080832054600f9092529091205460ff91821692911690565b6040805192151583529015156020830152016101dd565b3480156102e1575f80fd5b5060095b60405160ff90911681526020016101dd565b348015610302575f80fd5b50610256610311366004611d99565b610754565b348015610321575f80fd5b50600554610100900460ff166102e5565b34801561033d575f80fd5b5061025661034c366004611dda565b610896565b34801561035c575f80fd5b5061025661036b366004611d6d565b610931565b34801561037b575f80fd5b5061022961038a366004611d6d565b6001600160a01b03165f9081526001602052604090205490565b3480156103af575f80fd5b50610256610a14565b3480156103c3575f80fd5b506003546001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b3480156103f4575f80fd5b50610256610a81565b348015610408575f80fd5b50600754610229565b34801561041c575f80fd5b505f546001600160a01b03166103d1565b348015610438575f80fd5b50600854610229565b34801561044c575f80fd5b5060408051808201909152600681526550524f46414960d01b60208201526101d0565b34801561047a575f80fd5b50600a54610229565b34801561048e575f80fd5b5061020561049d366004611caf565b610af6565b3480156104ad575f80fd5b50600954610229565b3480156104c1575f80fd5b5060055460ff166102e5565b3480156104d8575f80fd5b506102296104e7366004611e02565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561051c575f80fd5b5061025661052b366004611e4c565b610b51565b610256610c6a565b348015610543575f80fd5b50610256610552366004611d6d565b610f5e565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105b19086815260200190565b60405180910390a35060015b92915050565b5f6105d06009600a611fa4565b6105df90640ba43b7400611fb2565b905090565b5f546001600160a01b031633146106165760405162461bcd60e51b815260040161060d90611fc9565b60405180910390fd5b808061061f5750815b1561067f576001600160a01b0383165f9081526012602052604090205460ff161561067f5760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b604482015260640161060d565b6001600160a01b039092165f908152600e60209081526040808320805494151560ff19958616179055600f9091529020805492151592909116919091179055565b5f6106ca84610fda565b6107095760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b604482015260640161060d565b6001600160a01b0384165f9081526002602090815260408083203384529091528120805484929061073b908490612000565b9091555061074c905084848461103d565b949350505050565b5f546001600160a01b0316331461077d5760405162461bcd60e51b815260040161060d90611fc9565b5f6103e861ffff84166107926009600a611fa4565b6107a190640ba43b7400611fb2565b6107ab9190611fb2565b6107b59190612013565b6107c0906001612032565b90506007548110156108015760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161060d565b60078190555f6103e861ffff841661081b6009600a611fa4565b61082a90640ba43b7400611fb2565b6108349190611fb2565b61083e9190612013565b610849906001612032565b905060085481101561088e5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161060d565b600855505050565b5f546001600160a01b031633146108bf5760405162461bcd60e51b815260040161060d90611fc9565b600a6108cb8284612045565b60ff1611156109115760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161060d565b6005805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b0316331461095a5760405162461bcd60e51b815260040161060d90611fc9565b6001600160a01b0381165f9081526012602052604090205460ff16156109c25760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000604482015260640161060d565b600380546001600160a01b039092166001600160a01b0319909216821790555f908152600e60209081526040808320805460ff199081166001908117909255600f909352922080549091169091179055565b5f546001600160a01b03163314610a3d5760405162461bcd60e51b815260040161060d90611fc9565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610aaa5760405162461bcd60e51b815260040161060d90611fc9565b60135460ff1615610aec5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b604482015260640161060d565b610af4611457565b565b5f610b0033610fda565b610b3f5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b604482015260640161060d565b610b4a33848461103d565b9392505050565b5f546001600160a01b03163314610b7a5760405162461bcd60e51b815260040161060d90611fc9565b63ffffffff808516908616610b916009600a611fa4565b610ba090640ba43b7400611fb2565b610baa9190611fb2565b610bb49190612013565b6009819055508163ffffffff168363ffffffff166009600a610bd69190611fa4565b610be590640ba43b7400611fb2565b610bef9190611fb2565b610bf99190612013565b600a55610c1363ffffffff821666038d7ea4c6800061205e565b66ffffffffffffff16600b55600954600a541015610c635760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b604482015260640161060d565b5050505050565b5f546001600160a01b03163314610c935760405162461bcd60e51b815260040161060d90611fc9565b6013805461ff0019166101001790556011546001600160a01b031615610ce85760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b604482015260640161060d565b60135460ff1615610d2a5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b604482015260640161060d565b5f341180610d3757505f47115b610d6c5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161060d565b305f90815260016020526040902054610db35760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b604482015260640161060d565b60105f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e279190612087565b6001600160a01b031663c9c653963060105f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eaa9190612087565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ef4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f189190612087565b601180546001600160a01b0319166001600160a01b0392909216919091179055305f90815260016020526040902054610f519047611615565b6013805461ff0019169055565b5f546001600160a01b03163314610f875760405162461bcd60e51b815260040161060d90611fc9565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6013545f90819060ff1615610ff1575060016105bd565b6001600160a01b0383165f908152600e602052604090205460ff16801561102f57506001600160a01b0383165f908152600f602052604090205460ff165b156105bd5750600192915050565b5f6001600160a01b0384166110945760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c6574000000000000604482015260640161060d565b60135460ff1661111f576001600160a01b0384165f908152600e602052604090205460ff1680156110dc57506001600160a01b0384165f908152600f602052604090205460ff165b61111f5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b604482015260640161060d565b601354610100900460ff1615801561114e57506001600160a01b0383165f9081526012602052604090205460ff165b801561115e575061115e826116b3565b1561116b5761116b6117df565b60065443106112e6576004544310801561119c57506001600160a01b0384165f9081526012602052604090205460ff165b156111e5576001600160a01b03831632146111e55760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b604482015260640161060d565b6004546111f490610258612032565b4310801561121957506001600160a01b0383165f9081526012602052604090205460ff165b801561122e57506001600160a01b0384163014155b156112e657435f908152600d602090815260408083206001600160a01b0387168452909152812080546001929061126990849060ff16612045565b82546101009290920a60ff818102199093169183160217909155435f908152600d602090815260408083206001600160a01b038916845290915290205460029116111590506112e65760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b604482015260640161060d565b6001600160a01b038416301480159061130857506001600160a01b0383163014155b801561132157505f546001600160a01b03858116911614155b1561136e5761133184848461189c565b61136e5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b604482015260640161060d565b5f61137a85858561195f565b90505f6113878285612000565b6001600160a01b0387165f908152600160205260408120805492935086929091906113b3908490612000565b9250508190555081600c5f8282546113cb9190612032565b90915550506001600160a01b0385165f90815260016020526040812080548392906113f7908490612032565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161144391815260200190565b60405180910390a350600195945050505050565b6103e86114666009600a611fa4565b61147590640ba43b7400611fb2565b611480906014611fb2565b61148a9190612013565b6007556103e861149c6009600a611fa4565b6114ab90640ba43b7400611fb2565b6114b6906014611fb2565b6114c09190612013565b600855600c546011546001600160a01b03165f90815260016020526040812080549091906114ef908490612000565b909155505060115460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290516001600160a01b039092169161153a91906120a2565b5f604051808303815f865af19150503d805f8114611573576040519150601f19603f3d011682016040523d82523d5f602084013e611578565b606091505b5050601180546001600160a01b039081165f90815260126020526040808220805460ff1916951515959095179094559154168152205460ff166115f05760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b604482015260640161060d565b4360068190556004546116039190612032565b6004556013805460ff19166001179055565b61161e82611a49565b6010545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af115801561168e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c6391906120b8565b5f805f600b5411156117d6576011546001600160a01b039081165f9081526001602090815260408083205460105482516315ab88c960e31b815292519195169263ad5c464892600480820193918290030181865afa158015611717573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061173b9190612087565b6011546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611782573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a691906120e3565b90505f826117b48388611fb2565b6117be9190612013565b9050600b5481106117ce57600193505b5050506105bd565b50600192915050565b6013805461ff001916610100179055600c546009548110801590611805575060135460ff165b1561188e57600a5481106118185750600a545b806118256009600a611fa4565b611830906001611fb2565b81111561187b57305f9081526001602052604081208054849290611855908490612032565b90915550611864905081611aeb565b81600c5f8282546118759190612000565b90915550505b47801561188b5761188b81611c2b565b50505b506013805461ff0019169055565b6013545f9060019060ff1680156118cb57506001600160a01b0385165f908152600f602052604090205460ff16155b80156118ef57506001600160a01b0384165f908152600f602052604090205460ff16155b1561074c5760075483111561190557505f61074c565b6001600160a01b0384165f9081526012602052604090205460ff1615801561195057506008546001600160a01b0385165f9081526001602052604090205461194e908590612032565b115b1561074c57505f949350505050565b6013545f90819060ff16158061198c57506001600160a01b0385165f908152600e602052604090205460ff165b806119ae57506001600160a01b0384165f908152600e602052604090205460ff165b156119ba57505f61074c565b6001600160a01b0385165f9081526012602052604090205460ff1615611a03576005546064906119f290610100900460ff1685611fb2565b6119fc9190612013565b905061074c565b6001600160a01b0384165f9081526012602052604090205460ff161561074c57600554606490611a369060ff1685611fb2565b611a409190612013565b95945050505050565b305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611ae857305f818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611af481611a49565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b2757611b276120fa565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba29190612087565b81600181518110611bb557611bb56120fa565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac94790611bfa9085905f9086903090429060040161210e565b5f604051808303815f87803b158015611c11575f80fd5b505af1158015611c23573d5f803e3d5ffd5b505050505050565b6003546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611c62573d5f803e3d5ffd5b5050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611ae8575f80fd5b5f8060408385031215611cc0575f80fd5b8235611ccb81611c9b565b946020939093013593505050565b80358015158114611ce8575f80fd5b919050565b5f805f60608486031215611cff575f80fd5b8335611d0a81611c9b565b9250611d1860208501611cd9565b9150611d2660408501611cd9565b90509250925092565b5f805f60608486031215611d41575f80fd5b8335611d4c81611c9b565b92506020840135611d5c81611c9b565b929592945050506040919091013590565b5f60208284031215611d7d575f80fd5b8135610b4a81611c9b565b803561ffff81168114611ce8575f80fd5b5f8060408385031215611daa575f80fd5b611db383611d88565b9150611dc160208401611d88565b90509250929050565b803560ff81168114611ce8575f80fd5b5f8060408385031215611deb575f80fd5b611df483611dca565b9150611dc160208401611dca565b5f8060408385031215611e13575f80fd5b8235611e1e81611c9b565b91506020830135611e2e81611c9b565b809150509250929050565b803563ffffffff81168114611ce8575f80fd5b5f805f805f60a08688031215611e60575f80fd5b611e6986611e39565b9450611e7760208701611e39565b9350611e8560408701611e39565b9250611e9360608701611e39565b9150611ea160808701611e39565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611efc57808504811115611ee057611ee0611ead565b6001841615611eee57908102905b60019390931c928002611ec5565b935093915050565b5f82611f12575060016105bd565b81611f1e57505f6105bd565b8160018114611f345760028114611f3e57611f5a565b60019150506105bd565b60ff841115611f4f57611f4f611ead565b50506001821b6105bd565b5060208310610133831016604e8410600b8410161715611f7d575081810a6105bd565b611f895f198484611ec1565b805f1904821115611f9c57611f9c611ead565b029392505050565b5f610b4a60ff841683611f04565b80820281158282048414176105bd576105bd611ead565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b818103818111156105bd576105bd611ead565b5f8261202d57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105bd576105bd611ead565b60ff81811683821601908111156105bd576105bd611ead565b66ffffffffffffff818116838216029081169081811461208057612080611ead565b5092915050565b5f60208284031215612097575f80fd5b8151610b4a81611c9b565b5f82518060208501845e5f920191825250919050565b5f805f606084860312156120ca575f80fd5b5050815160208301516040909301519094929350919050565b5f602082840312156120f3575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561215e5783516001600160a01b0316835260209384019390920191600101612137565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220ce3ceb3cf1cf2a4f5d31c7cac12590f5b18fa9f0ea47eef6e637e48b6ac9089c64736f6c634300081a0033
Deployed Bytecode
0x608060405260043610610198575f3560e01c806375f0a874116100e7578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e146104cd578063e537a83414610511578063e8078d9414610530578063f2fde38b14610538575f80fd5b8063a9059cbb14610483578063b3de9b5d146104a2578063cc1776d3146104b6575f80fd5b80638da5cb5b116100c25780638da5cb5b146104115780638f3fa8601461042d57806395d89b4114610441578063a5e992bb1461046f575f80fd5b806375f0a874146103b85780638a8c523c146103e95780638c0b5e22146103fd575f80fd5b8063313ce567116101525780634fcd24461161012d5780634fcd2446146103325780635d098b381461035157806370a0823114610370578063715018a6146103a4575f80fd5b8063313ce567146102d6578063368f4800146102f75780634706240214610316575f80fd5b806306fdde03146101a3578063095ea7b3146101e657806318160ddd1461021557806318839bc31461023757806323b872dd1461025857806326ac17c614610277575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600981526850726f66697420414960b81b60208201525b6040516101dd9190611c66565b60405180910390f35b3480156101f1575f80fd5b50610205610200366004611caf565b610557565b60405190151581526020016101dd565b348015610220575f80fd5b506102296105c3565b6040519081526020016101dd565b348015610242575f80fd5b50610256610251366004611ced565b6105e4565b005b348015610263575f80fd5b50610205610272366004611d2f565b6106c0565b348015610282575f80fd5b506102bf610291366004611d6d565b6001600160a01b03165f908152600e6020908152604080832054600f9092529091205460ff91821692911690565b6040805192151583529015156020830152016101dd565b3480156102e1575f80fd5b5060095b60405160ff90911681526020016101dd565b348015610302575f80fd5b50610256610311366004611d99565b610754565b348015610321575f80fd5b50600554610100900460ff166102e5565b34801561033d575f80fd5b5061025661034c366004611dda565b610896565b34801561035c575f80fd5b5061025661036b366004611d6d565b610931565b34801561037b575f80fd5b5061022961038a366004611d6d565b6001600160a01b03165f9081526001602052604090205490565b3480156103af575f80fd5b50610256610a14565b3480156103c3575f80fd5b506003546001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b3480156103f4575f80fd5b50610256610a81565b348015610408575f80fd5b50600754610229565b34801561041c575f80fd5b505f546001600160a01b03166103d1565b348015610438575f80fd5b50600854610229565b34801561044c575f80fd5b5060408051808201909152600681526550524f46414960d01b60208201526101d0565b34801561047a575f80fd5b50600a54610229565b34801561048e575f80fd5b5061020561049d366004611caf565b610af6565b3480156104ad575f80fd5b50600954610229565b3480156104c1575f80fd5b5060055460ff166102e5565b3480156104d8575f80fd5b506102296104e7366004611e02565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561051c575f80fd5b5061025661052b366004611e4c565b610b51565b610256610c6a565b348015610543575f80fd5b50610256610552366004611d6d565b610f5e565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105b19086815260200190565b60405180910390a35060015b92915050565b5f6105d06009600a611fa4565b6105df90640ba43b7400611fb2565b905090565b5f546001600160a01b031633146106165760405162461bcd60e51b815260040161060d90611fc9565b60405180910390fd5b808061061f5750815b1561067f576001600160a01b0383165f9081526012602052604090205460ff161561067f5760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b604482015260640161060d565b6001600160a01b039092165f908152600e60209081526040808320805494151560ff19958616179055600f9091529020805492151592909116919091179055565b5f6106ca84610fda565b6107095760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b604482015260640161060d565b6001600160a01b0384165f9081526002602090815260408083203384529091528120805484929061073b908490612000565b9091555061074c905084848461103d565b949350505050565b5f546001600160a01b0316331461077d5760405162461bcd60e51b815260040161060d90611fc9565b5f6103e861ffff84166107926009600a611fa4565b6107a190640ba43b7400611fb2565b6107ab9190611fb2565b6107b59190612013565b6107c0906001612032565b90506007548110156108015760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161060d565b60078190555f6103e861ffff841661081b6009600a611fa4565b61082a90640ba43b7400611fb2565b6108349190611fb2565b61083e9190612013565b610849906001612032565b905060085481101561088e5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161060d565b600855505050565b5f546001600160a01b031633146108bf5760405162461bcd60e51b815260040161060d90611fc9565b600a6108cb8284612045565b60ff1611156109115760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161060d565b6005805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b0316331461095a5760405162461bcd60e51b815260040161060d90611fc9565b6001600160a01b0381165f9081526012602052604090205460ff16156109c25760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000604482015260640161060d565b600380546001600160a01b039092166001600160a01b0319909216821790555f908152600e60209081526040808320805460ff199081166001908117909255600f909352922080549091169091179055565b5f546001600160a01b03163314610a3d5760405162461bcd60e51b815260040161060d90611fc9565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610aaa5760405162461bcd60e51b815260040161060d90611fc9565b60135460ff1615610aec5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b604482015260640161060d565b610af4611457565b565b5f610b0033610fda565b610b3f5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b604482015260640161060d565b610b4a33848461103d565b9392505050565b5f546001600160a01b03163314610b7a5760405162461bcd60e51b815260040161060d90611fc9565b63ffffffff808516908616610b916009600a611fa4565b610ba090640ba43b7400611fb2565b610baa9190611fb2565b610bb49190612013565b6009819055508163ffffffff168363ffffffff166009600a610bd69190611fa4565b610be590640ba43b7400611fb2565b610bef9190611fb2565b610bf99190612013565b600a55610c1363ffffffff821666038d7ea4c6800061205e565b66ffffffffffffff16600b55600954600a541015610c635760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b604482015260640161060d565b5050505050565b5f546001600160a01b03163314610c935760405162461bcd60e51b815260040161060d90611fc9565b6013805461ff0019166101001790556011546001600160a01b031615610ce85760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b604482015260640161060d565b60135460ff1615610d2a5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b604482015260640161060d565b5f341180610d3757505f47115b610d6c5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161060d565b305f90815260016020526040902054610db35760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b604482015260640161060d565b60105f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e279190612087565b6001600160a01b031663c9c653963060105f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eaa9190612087565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ef4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f189190612087565b601180546001600160a01b0319166001600160a01b0392909216919091179055305f90815260016020526040902054610f519047611615565b6013805461ff0019169055565b5f546001600160a01b03163314610f875760405162461bcd60e51b815260040161060d90611fc9565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6013545f90819060ff1615610ff1575060016105bd565b6001600160a01b0383165f908152600e602052604090205460ff16801561102f57506001600160a01b0383165f908152600f602052604090205460ff165b156105bd5750600192915050565b5f6001600160a01b0384166110945760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c6574000000000000604482015260640161060d565b60135460ff1661111f576001600160a01b0384165f908152600e602052604090205460ff1680156110dc57506001600160a01b0384165f908152600f602052604090205460ff165b61111f5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b604482015260640161060d565b601354610100900460ff1615801561114e57506001600160a01b0383165f9081526012602052604090205460ff165b801561115e575061115e826116b3565b1561116b5761116b6117df565b60065443106112e6576004544310801561119c57506001600160a01b0384165f9081526012602052604090205460ff165b156111e5576001600160a01b03831632146111e55760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b604482015260640161060d565b6004546111f490610258612032565b4310801561121957506001600160a01b0383165f9081526012602052604090205460ff165b801561122e57506001600160a01b0384163014155b156112e657435f908152600d602090815260408083206001600160a01b0387168452909152812080546001929061126990849060ff16612045565b82546101009290920a60ff818102199093169183160217909155435f908152600d602090815260408083206001600160a01b038916845290915290205460029116111590506112e65760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b604482015260640161060d565b6001600160a01b038416301480159061130857506001600160a01b0383163014155b801561132157505f546001600160a01b03858116911614155b1561136e5761133184848461189c565b61136e5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b604482015260640161060d565b5f61137a85858561195f565b90505f6113878285612000565b6001600160a01b0387165f908152600160205260408120805492935086929091906113b3908490612000565b9250508190555081600c5f8282546113cb9190612032565b90915550506001600160a01b0385165f90815260016020526040812080548392906113f7908490612032565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161144391815260200190565b60405180910390a350600195945050505050565b6103e86114666009600a611fa4565b61147590640ba43b7400611fb2565b611480906014611fb2565b61148a9190612013565b6007556103e861149c6009600a611fa4565b6114ab90640ba43b7400611fb2565b6114b6906014611fb2565b6114c09190612013565b600855600c546011546001600160a01b03165f90815260016020526040812080549091906114ef908490612000565b909155505060115460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290516001600160a01b039092169161153a91906120a2565b5f604051808303815f865af19150503d805f8114611573576040519150601f19603f3d011682016040523d82523d5f602084013e611578565b606091505b5050601180546001600160a01b039081165f90815260126020526040808220805460ff1916951515959095179094559154168152205460ff166115f05760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b604482015260640161060d565b4360068190556004546116039190612032565b6004556013805460ff19166001179055565b61161e82611a49565b6010545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af115801561168e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c6391906120b8565b5f805f600b5411156117d6576011546001600160a01b039081165f9081526001602090815260408083205460105482516315ab88c960e31b815292519195169263ad5c464892600480820193918290030181865afa158015611717573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061173b9190612087565b6011546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611782573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a691906120e3565b90505f826117b48388611fb2565b6117be9190612013565b9050600b5481106117ce57600193505b5050506105bd565b50600192915050565b6013805461ff001916610100179055600c546009548110801590611805575060135460ff165b1561188e57600a5481106118185750600a545b806118256009600a611fa4565b611830906001611fb2565b81111561187b57305f9081526001602052604081208054849290611855908490612032565b90915550611864905081611aeb565b81600c5f8282546118759190612000565b90915550505b47801561188b5761188b81611c2b565b50505b506013805461ff0019169055565b6013545f9060019060ff1680156118cb57506001600160a01b0385165f908152600f602052604090205460ff16155b80156118ef57506001600160a01b0384165f908152600f602052604090205460ff16155b1561074c5760075483111561190557505f61074c565b6001600160a01b0384165f9081526012602052604090205460ff1615801561195057506008546001600160a01b0385165f9081526001602052604090205461194e908590612032565b115b1561074c57505f949350505050565b6013545f90819060ff16158061198c57506001600160a01b0385165f908152600e602052604090205460ff165b806119ae57506001600160a01b0384165f908152600e602052604090205460ff165b156119ba57505f61074c565b6001600160a01b0385165f9081526012602052604090205460ff1615611a03576005546064906119f290610100900460ff1685611fb2565b6119fc9190612013565b905061074c565b6001600160a01b0384165f9081526012602052604090205460ff161561074c57600554606490611a369060ff1685611fb2565b611a409190612013565b95945050505050565b305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611ae857305f818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611af481611a49565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b2757611b276120fa565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba29190612087565b81600181518110611bb557611bb56120fa565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac94790611bfa9085905f9086903090429060040161210e565b5f604051808303815f87803b158015611c11575f80fd5b505af1158015611c23573d5f803e3d5ffd5b505050505050565b6003546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611c62573d5f803e3d5ffd5b5050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611ae8575f80fd5b5f8060408385031215611cc0575f80fd5b8235611ccb81611c9b565b946020939093013593505050565b80358015158114611ce8575f80fd5b919050565b5f805f60608486031215611cff575f80fd5b8335611d0a81611c9b565b9250611d1860208501611cd9565b9150611d2660408501611cd9565b90509250925092565b5f805f60608486031215611d41575f80fd5b8335611d4c81611c9b565b92506020840135611d5c81611c9b565b929592945050506040919091013590565b5f60208284031215611d7d575f80fd5b8135610b4a81611c9b565b803561ffff81168114611ce8575f80fd5b5f8060408385031215611daa575f80fd5b611db383611d88565b9150611dc160208401611d88565b90509250929050565b803560ff81168114611ce8575f80fd5b5f8060408385031215611deb575f80fd5b611df483611dca565b9150611dc160208401611dca565b5f8060408385031215611e13575f80fd5b8235611e1e81611c9b565b91506020830135611e2e81611c9b565b809150509250929050565b803563ffffffff81168114611ce8575f80fd5b5f805f805f60a08688031215611e60575f80fd5b611e6986611e39565b9450611e7760208701611e39565b9350611e8560408701611e39565b9250611e9360608701611e39565b9150611ea160808701611e39565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611efc57808504811115611ee057611ee0611ead565b6001841615611eee57908102905b60019390931c928002611ec5565b935093915050565b5f82611f12575060016105bd565b81611f1e57505f6105bd565b8160018114611f345760028114611f3e57611f5a565b60019150506105bd565b60ff841115611f4f57611f4f611ead565b50506001821b6105bd565b5060208310610133831016604e8410600b8410161715611f7d575081810a6105bd565b611f895f198484611ec1565b805f1904821115611f9c57611f9c611ead565b029392505050565b5f610b4a60ff841683611f04565b80820281158282048414176105bd576105bd611ead565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b818103818111156105bd576105bd611ead565b5f8261202d57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105bd576105bd611ead565b60ff81811683821601908111156105bd576105bd611ead565b66ffffffffffffff818116838216029081169081811461208057612080611ead565b5092915050565b5f60208284031215612097575f80fd5b8151610b4a81611c9b565b5f82518060208501845e5f920191825250919050565b5f805f606084860312156120ca575f80fd5b5050815160208301516040909301519094929350919050565b5f602082840312156120f3575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561215e5783516001600160a01b0316835260209384019390920191600101612137565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220ce3ceb3cf1cf2a4f5d31c7cac12590f5b18fa9f0ea47eef6e637e48b6ac9089c64736f6c634300081a0033
Deployed Bytecode Sourcemap
1829:11788:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4074:84;;;;;;;;;;-1:-1:-1;4146:9:0;;;;;;;;;;;;-1:-1:-1;;;4146:9:0;;;;4074:84;;;;;;;:::i;:::-;;;;;;;;4510:217;;;;;;;;;;-1:-1:-1;4510:217:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;4510:217:0;945:187:1;3985:83:0;;;;;;;;;;;;;:::i;:::-;;;1283:25:1;;;1271:2;1256:18;3985:83:0;1137:177:1;5276:259:0;;;;;;;;;;-1:-1:-1;5276:259:0;;;;;:::i;:::-;;:::i;:::-;;4964:304;;;;;;;;;;-1:-1:-1;4964:304:0;;;;;:::i;:::-;;:::i;7829:143::-;;;;;;;;;;-1:-1:-1;7829:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7930:17:0;7887:9;7930:17;;;:9;:17;;;;;;;;;7949:8;:16;;;;;;;7930:17;;;;;7949:16;;;7829:143;;;;;2824:14:1;;2817:22;2799:41;;2883:14;;2876:22;2871:2;2856:18;;2849:50;2772:18;7829:143:0;2637:268:1;3899:80:0;;;;;;;;;;-1:-1:-1;2008:1:0;3899:80;;;3082:4:1;3070:17;;;3052:36;;3040:2;3025:18;3899:80:0;2910:184:1;11498:420:0;;;;;;;;;;-1:-1:-1;11498:420:0;;;;;:::i;:::-;;:::i;7082:66::-;;;;;;;;;;-1:-1:-1;7138:7:0;;;;;;;7082:66;;13379:235;;;;;;;;;;-1:-1:-1;13379:235:0;;;;;:::i;:::-;;:::i;12528:274::-;;;;;;;;;;-1:-1:-1;12528:274:0;;;;;:::i;:::-;;:::i;4256:104::-;;;;;;;;;;-1:-1:-1;4256:104:0;;;;;:::i;:::-;-1:-1:-1;;;;;4340:17:0;4322:7;4340:17;;;:8;:17;;;;;;;4256:104;1692:130;;;;;;;;;;;;;:::i;7532:94::-;;;;;;;;;;-1:-1:-1;7610:10:0;;-1:-1:-1;;;;;7610:10:0;7532:94;;;-1:-1:-1;;;;;4106:32:1;;;4088:51;;4076:2;4061:18;7532:94:0;3942:203:1;11926:130:0;;;;;;;;;;;;;:::i;7735:86::-;;;;;;;;;;-1:-1:-1;7809:6:0;;7735:86;;1461:65;;;;;;;;;;-1:-1:-1;1499:7:0;1517:6;-1:-1:-1;;;;;1517:6:0;1461:65;;7634:95;;;;;;;;;;-1:-1:-1;7710:13:0;;7634:95;;4164:86;;;;;;;;;;-1:-1:-1;4238:9:0;;;;;;;;;;;;-1:-1:-1;;;4238:9:0;;;;4164:86;;5633:84;;;;;;;;;;-1:-1:-1;5703:8:0;;5633:84;;4735:221;;;;;;;;;;-1:-1:-1;4735:221:0;;;;;:::i;:::-;;:::i;5543:84::-;;;;;;;;;;-1:-1:-1;5613:8:0;;5543:84;;7154:68;;;;;;;;;;-1:-1:-1;7211:8:0;;;;7154:68;;4366:136;;;;;;;;;;-1:-1:-1;4366:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;4468:22:0;;;4450:7;4468:22;;;:14;:22;;;;;;;;:31;;;;;;;;;;;;;4366:136;12810:314;;;;;;;;;;-1:-1:-1;12810:314:0;;;;;:::i;:::-;;:::i;11004:486::-;;;:::i;1532:154::-;;;;;;;;;;-1:-1:-1;1532:154:0;;;;;:::i;:::-;;:::i;4510:217::-;4617:10;4585:4;4602:26;;;:14;:26;;;;;;;;-1:-1:-1;;;;;4602:35:0;;;;;;;;;;:44;;;4662:37;4585:4;;4602:35;;4662:37;;;;4640:6;1283:25:1;;1271:2;1256:18;;1137:177;4662:37:0;;;;;;;;-1:-1:-1;4717:4:0;4510:217;;;;;:::o;3985:83::-;4040:7;2066:13;2008:1;2066:2;:13;:::i;:::-;2051:29;;:11;:29;:::i;:::-;4051:14;;3985:83;:::o;5276:259::-;1316:6;;-1:-1:-1;;;;;1316:6:0;1302:10;:20;1294:57;;;;-1:-1:-1;;;1294:57:0;;;;;;;:::i;:::-;;;;;;;;;5378:10:::1;:22;;;;5392:8;5378:22;5374:77;;;-1:-1:-1::0;;;;;5413:14:0;::::1;;::::0;;;:9:::1;:14;::::0;;;;;::::1;;5412:15;5404:44;;;::::0;-1:-1:-1;;;5404:44:0;;7742:2:1;5404:44:0::1;::::0;::::1;7724:21:1::0;7781:2;7761:18;;;7754:30;-1:-1:-1;;;7800:18:1;;;7793:46;7856:18;;5404:44:0::1;7540:340:1::0;5404:44:0::1;-1:-1:-1::0;;;;;5461:16:0;;::::1;;::::0;;;:9:::1;:16;::::0;;;;;;;:27;;;::::1;;-1:-1:-1::0;;5461:27:0;;::::1;;::::0;;5499:8:::1;:15:::0;;;;;:28;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;5276:259::o;4964:304::-;5067:4;5092:29;5110:10;5092:17;:29::i;:::-;5084:58;;;;-1:-1:-1;;;5084:58:0;;8087:2:1;5084:58:0;;;8069:21:1;8126:2;8106:18;;;8099:30;-1:-1:-1;;;8145:18:1;;;8138:46;8201:18;;5084:58:0;7885:340:1;5084:58:0;-1:-1:-1;;;;;5153:26:0;;;;;;:14;:26;;;;;;;;5180:10;5153:38;;;;;;;:48;;5195:6;;5153:26;:48;;5195:6;;5153:48;:::i;:::-;;;;-1:-1:-1;5219:43:0;;-1:-1:-1;5233:10:0;5245:8;5255:6;5219:13;:43::i;:::-;5212:50;4964:304;-1:-1:-1;;;;4964:304:0:o;11498:420::-;1316:6;;-1:-1:-1;;;;;1316:6:0;1302:10;:20;1294:57;;;;-1:-1:-1;;;1294:57:0;;;;;;;:::i;:::-;11597:16:::1;11645:4;11616:26;::::0;::::1;2066:13;2008:1;2066:2;:13;:::i;:::-;2051:29;::::0;:11:::1;:29;:::i;:::-;11616:26;;;;:::i;:::-;:33;;;;:::i;:::-;:37;::::0;11652:1:::1;11616:37;:::i;:::-;11597:56;;11684:6;;11672:8;:18;;11664:41;;;::::0;-1:-1:-1;;;11664:41:0;;8917:2:1;11664:41:0::1;::::0;::::1;8899:21:1::0;8956:2;8936:18;;;8929:30;-1:-1:-1;;;8975:18:1;;;8968:40;9025:18;;11664:41:0::1;8715:334:1::0;11664:41:0::1;11716:6;:17:::0;;;11744:20:::1;11796:4;11767:26;::::0;::::1;2066:13;2008:1;2066:2;:13;:::i;:::-;2051:29;::::0;:11:::1;:29;:::i;:::-;11767:26;;;;:::i;:::-;:33;;;;:::i;:::-;:37;::::0;11803:1:::1;11767:37;:::i;:::-;11744:60;;11839:13;;11823:12;:29;;11815:56;;;::::0;-1:-1:-1;;;11815:56:0;;9256:2:1;11815:56:0::1;::::0;::::1;9238:21:1::0;9295:2;9275:18;;;9268:30;-1:-1:-1;;;9314:18:1;;;9307:44;9368:18;;11815:56:0::1;9054:338:1::0;11815:56:0::1;11882:13;:28:::0;-1:-1:-1;;;11498:420:0:o;13379:235::-;1316:6;;-1:-1:-1;;;;;1316:6:0;1302:10;:20;1294:57;;;;-1:-1:-1;;;1294:57:0;;;;;;;:::i;:::-;13511:2:::1;13477:30;13493:14:::0;13477:13;:30:::1;:::i;:::-;:36;;;;13469:67;;;::::0;-1:-1:-1;;;13469:67:0;;9752:2:1;13469:67:0::1;::::0;::::1;9734:21:1::0;9791:2;9771:18;;;9764:30;-1:-1:-1;;;9810:18:1;;;9803:48;9868:18;;13469:67:0::1;9550:342:1::0;13469:67:0::1;13547:7;:23:::0;;-1:-1:-1;;13581:25:0;13547:23:::1;;::::0;;::::1;;-1:-1:-1::0;;13581:25:0;;;;;::::1;;::::0;;13379:235::o;12528:274::-;1316:6;;-1:-1:-1;;;;;1316:6:0;1302:10;:20;1294:57;;;;-1:-1:-1;;;1294:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12617:23:0;::::1;;::::0;;;:9:::1;:23;::::0;;;;;::::1;;12616:24;12608:60;;;::::0;-1:-1:-1;;;12608:60:0;;10099:2:1;12608:60:0::1;::::0;::::1;10081:21:1::0;10138:2;10118:18;;;10111:30;10177:25;10157:18;;;10150:53;10220:18;;12608:60:0::1;9897:347:1::0;12608:60:0::1;12679:10;:34:::0;;-1:-1:-1;;;;;12679:34:0;;::::1;-1:-1:-1::0;;;;;;12679:34:0;;::::1;::::0;::::1;::::0;;:10:::1;12724:23:::0;;;:9:::1;:23;::::0;;;;;;;:30;;-1:-1:-1;;12724:30:0;;::::1;12679:34:::0;12724:30;;::::1;::::0;;;12765:8:::1;:22:::0;;;;;:29;;;;::::1;::::0;;::::1;::::0;;12528:274::o;1692:130::-;1316:6;;-1:-1:-1;;;;;1316:6:0;1302:10;:20;1294:57;;;;-1:-1:-1;;;1294:57:0;;;;;;;:::i;:::-;1769:1:::1;1752:19:::0;;-1:-1:-1;;;;;;1752:19:0::1;::::0;;1787:32:::1;::::0;4088:51:1;;;1787:32:0::1;::::0;4076:2:1;4061:18;1787:32:0::1;;;;;;;1692:130::o:0;11926:::-;1316:6;;-1:-1:-1;;;;;1316:6:0;1302:10;:20;1294:57;;;;-1:-1:-1;;;1294:57:0;;;;;;;:::i;:::-;11990:14:::1;::::0;::::1;;11989:15;11981:40;;;::::0;-1:-1:-1;;;11981:40:0;;10451:2:1;11981:40:0::1;::::0;::::1;10433:21:1::0;10490:2;10470:18;;;10463:30;-1:-1:-1;;;10509:18:1;;;10502:42;10561:18;;11981:40:0::1;10249:336:1::0;11981:40:0::1;12032:16;:14;:16::i;:::-;11926:130::o:0;4735:221::-;4814:4;4839:29;4857:10;4839:17;:29::i;:::-;4831:58;;;;-1:-1:-1;;;4831:58:0;;8087:2:1;4831:58:0;;;8069:21:1;8126:2;8106:18;;;8099:30;-1:-1:-1;;;8145:18:1;;;8138:46;8201:18;;4831:58:0;7885:340:1;4831:58:0;4907:43;4921:10;4933:8;4943:6;4907:13;:43::i;:::-;4900:50;4735:221;-1:-1:-1;;;4735:221:0:o;12810:314::-;1316:6;;-1:-1:-1;;;;;1316:6:0;1302:10;:20;1294:57;;;;-1:-1:-1;;;1294:57:0;;;;;;;:::i;:::-;12948:25:::1;::::0;;::::1;::::0;:16;::::1;2066:13;2008:1;2066:2;:13;:::i;:::-;2051:29;::::0;:11:::1;:29;:::i;:::-;12948:16;;;;:::i;:::-;:25;;;;:::i;:::-;12937:8;:36;;;;13014:6;12995:25;;13005:6;12995:16;;2008:1;2066:2;:13;;;;:::i;:::-;2051:29;::::0;:11:::1;:29;:::i;:::-;12995:16;;;;:::i;:::-;:25;;;;:::i;:::-;12984:8;:36:::0;13045:16:::1;;::::0;::::1;13055:6;13045:16;:::i;:::-;13031:30;;:11;:30:::0;13090:8:::1;::::0;13080::::1;::::0;:18:::1;;13072:44;;;::::0;-1:-1:-1;;;13072:44:0;;11059:2:1;13072:44:0::1;::::0;::::1;11041:21:1::0;11098:2;11078:18;;;11071:30;-1:-1:-1;;;11117:18:1;;;11110:43;11170:18;;13072:44:0::1;10857:337:1::0;13072:44:0::1;12810:314:::0;;;;;:::o;11004:486::-;1316:6;;-1:-1:-1;;;;;1316:6:0;1302:10;:20;1294:57;;;;-1:-1:-1;;;1294:57:0;;;;;;;:::i;:::-;3321:8:::1;:15:::0;;-1:-1:-1;;3321:15:0::1;;;::::0;;11085:13:::2;::::0;-1:-1:-1;;;;;11085:13:0::2;:27:::0;11077:50:::2;;;::::0;-1:-1:-1;;;11077:50:0;;11401:2:1;11077:50:0::2;::::0;::::2;11383:21:1::0;11440:2;11420:18;;;11413:30;-1:-1:-1;;;11459:18:1;;;11452:40;11509:18;;11077:50:0::2;11199:334:1::0;11077:50:0::2;11147:14;::::0;::::2;;11146:15;11138:40;;;::::0;-1:-1:-1;;;11138:40:0;;10451:2:1;11138:40:0::2;::::0;::::2;10433:21:1::0;10490:2;10470:18;;;10463:30;-1:-1:-1;;;10509:18:1;;;10502:42;10561:18;;11138:40:0::2;10249:336:1::0;11138:40:0::2;11209:1;11197:9;:13;:40;;;;11236:1;11214:21;:23;11197:40;11189:59;;;::::0;-1:-1:-1;;;11189:59:0;;11740:2:1;11189:59:0::2;::::0;::::2;11722:21:1::0;11779:1;11759:18;;;11752:29;-1:-1:-1;;;11797:18:1;;;11790:36;11843:18;;11189:59:0::2;11538:329:1::0;11189:59:0::2;11284:4;11291:1;11267:23:::0;;;:8:::2;:23;::::0;;;;;11259:47:::2;;;::::0;-1:-1:-1;;;11259:47:0;;12074:2:1;11259:47:0::2;::::0;::::2;12056:21:1::0;12113:1;12093:18;;;12086:29;-1:-1:-1;;;12131:18:1;;;12124:39;12180:18;;11259:47:0::2;11872:332:1::0;11259:47:0::2;11351:10;;;;;;;;;-1:-1:-1::0;;;;;11351:10:0::2;-1:-1:-1::0;;;;;11351:18:0::2;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11333:50:0::2;;11392:4;11399:10;;;;;;;;;-1:-1:-1::0;;;;;11399:10:0::2;-1:-1:-1::0;;;;;11399:15:0::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11333:84;::::0;-1:-1:-1;;;;;;11333:84:0::2;::::0;;;;;;-1:-1:-1;;;;;12657:32:1;;;11333:84:0::2;::::0;::::2;12639:51:1::0;12726:32;;12706:18;;;12699:60;12612:18;;11333:84:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11317:13;:100:::0;;-1:-1:-1;;;;;;11317:100:0::2;-1:-1:-1::0;;;;;11317:100:0;;;::::2;::::0;;;::::2;::::0;;11452:4:::2;-1:-1:-1::0;11435:23:0;;;-1:-1:-1;11435:23:0::2;::::0;;;;;11428:54:::2;::::0;11460:21:::2;11428:6;:54::i;:::-;3361:8:::1;:16:::0;;-1:-1:-1;;3361:16:0::1;::::0;;11004:486::o;1532:154::-;1316:6;;-1:-1:-1;;;;;1316:6:0;1302:10;:20;1294:57;;;;-1:-1:-1;;;1294:57:0;;;;;;;:::i;:::-;1617:6:::1;:18:::0;;-1:-1:-1;;;;;;1617:18:0::1;-1:-1:-1::0;;;;;1617:18:0;::::1;::::0;;::::1;::::0;;;1652:31:::1;::::0;4088:51:1;;;1652:31:0::1;::::0;4076:2:1;4061:18;1652:31:0::1;;;;;;;1532:154:::0;:::o;7230:294::-;7355:14;;7299:4;;;;7355:14;;7350:135;;;-1:-1:-1;7388:4:0;7350:135;;;-1:-1:-1;;;;;7415:21:0;;;;;;:9;:21;;;;;;;;:45;;;;-1:-1:-1;;;;;;7440:20:0;;;;;;:8;:20;;;;;;;;7415:45;7411:74;;;-1:-1:-1;7478:4:0;7505:11;7230:294;-1:-1:-1;;7230:294:0:o;5725:1349::-;5816:4;-1:-1:-1;;;;;5841:20:0;;5833:59;;;;-1:-1:-1;;;5833:59:0;;13188:2:1;5833:59:0;;;13170:21:1;13227:2;13207:18;;;13200:30;13266:28;13246:18;;;13239:56;13312:18;;5833:59:0;12986:350:1;5833:59:0;5908:14;;;;5903:96;;-1:-1:-1;;;;;5934:17:0;;;;;;:9;:17;;;;;;;;:37;;;;-1:-1:-1;;;;;;5955:16:0;;;;;;:8;:16;;;;;;;;5934:37;5926:70;;;;-1:-1:-1;;;5926:70:0;;13543:2:1;5926:70:0;;;13525:21:1;13582:2;13562:18;;;13555:30;-1:-1:-1;;;13601:18:1;;;13594:50;13661:18;;5926:70:0;13341:344:1;5926:70:0;6015:8;;;;;;;6014:9;:32;;;;-1:-1:-1;;;;;;6027:19:0;;;;;;:9;:19;;;;;;;;6014:32;:56;;;;;6050:20;6063:6;6050:12;:20::i;:::-;6009:85;;;6075:16;:14;:16::i;:::-;6127:10;;6111:12;:26;6106:460;;6174:13;;6159:12;:28;:49;;;;-1:-1:-1;;;;;;6191:17:0;;;;;;:9;:17;;;;;;;;6159:49;6155:135;;;-1:-1:-1;;;;;6238:21:0;;6250:9;6238:21;6230:43;;;;-1:-1:-1;;;6230:43:0;;13892:2:1;6230:43:0;;;13874:21:1;13931:1;13911:18;;;13904:29;-1:-1:-1;;;13949:18:1;;;13942:39;13998:18;;6230:43:0;13690:332:1;6230:43:0;6323:13;;:19;;6339:3;6323:19;:::i;:::-;6308:12;:34;:57;;;;-1:-1:-1;;;;;;6346:19:0;;;;;;:9;:19;;;;;;;;6308:57;:84;;;;-1:-1:-1;;;;;;6369:23:0;;6387:4;6369:23;;6308:84;6304:251;;;6428:12;6414:27;;;;:13;:27;;;;;;;;-1:-1:-1;;;;;6414:37:0;;;;;;;;;:42;;6455:1;;6414:27;:42;;6455:1;;6414:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6497:12;-1:-1:-1;6483:27:0;;;:13;:27;;;;;;;;-1:-1:-1;;;;;6483:37:0;;;;;;;;;;6524:1;6483:37;;:42;;;-1:-1:-1;6475:64:0;;;;-1:-1:-1;;;6475:64:0;;13892:2:1;6475:64:0;;;13874:21:1;13931:1;13911:18;;;13904:29;-1:-1:-1;;;13949:18:1;;;13942:39;13998:18;;6475:64:0;13690:332:1;6475:64:0;-1:-1:-1;;;;;6583:23:0;;6601:4;6583:23;;;;:52;;-1:-1:-1;;;;;;6610:25:0;;6630:4;6610:25;;6583:52;:72;;;;-1:-1:-1;6649:6:0;;-1:-1:-1;;;;;6639:16:0;;;6649:6;;6639:16;;6583:72;6578:174;;;6682:38;6695:6;6703:8;6713:6;6682:12;:38::i;:::-;6674:65;;;;-1:-1:-1;;;6674:65:0;;14229:2:1;6674:65:0;;;14211:21:1;14268:2;14248:18;;;14241:30;-1:-1:-1;;;14287:18:1;;;14280:44;14341:18;;6674:65:0;14027:338:1;6674:65:0;6764:18;6785:33;6793:6;6801:8;6811:6;6785:7;:33::i;:::-;6764:54;-1:-1:-1;6829:23:0;6855:19;6764:54;6855:6;:19;:::i;:::-;-1:-1:-1;;;;;6885:16:0;;;;;;:8;:16;;;;;:26;;6829:45;;-1:-1:-1;6905:6:0;;6885:16;;;:26;;6905:6;;6885:26;:::i;:::-;;;;;;;;6936:10;6922;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6957:18:0;;;;;;:8;:18;;;;;:37;;6979:15;;6957:18;:37;;6979:15;;6957:37;:::i;:::-;;;;;;;;7027:8;-1:-1:-1;;;;;7010:34:0;7019:6;-1:-1:-1;;;;;7010:34:0;;7037:6;7010:34;;;;1283:25:1;;1271:2;1256:18;;1137:177;7010:34:0;;;;;;;;-1:-1:-1;7062:4:0;;5725:1349;-1:-1:-1;;;;;5725:1349:0:o;12064:456::-;12134:4;2066:13;2008:1;2066:2;:13;:::i;:::-;2051:29;;:11;:29;:::i;:::-;12119:12;;:2;:12;:::i;:::-;:19;;;;:::i;:::-;12110:6;:28;12180:4;2066:13;2008:1;2066:2;:13;:::i;:::-;2051:29;;:11;:29;:::i;:::-;12165:12;;:2;:12;:::i;:::-;:19;;;;:::i;:::-;12149:13;:35;12222:10;;12204:13;;-1:-1:-1;;;;;12204:13:0;12195:23;;;;:8;:23;;;;;:37;;:23;;;:37;;12222:10;;12195:37;:::i;:::-;;;;-1:-1:-1;;12273:13:0;;12292:33;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12292:33:0;-1:-1:-1;;;;;;12292:33:0;;;12273:54;;-1:-1:-1;;;;;12273:13:0;;;;:54;;12292:33;12273:54;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12254:13:0;;;-1:-1:-1;;;;;12254:13:0;;;12244:24;;;;:9;:24;;;;;;12243:84;;-1:-1:-1;;12243:84:0;;;;;;;;;;;12356:13;;;12346:24;;;;12243:84;12346:24;12338:53;;;;-1:-1:-1;;;12338:53:0;;14878:2:1;12338:53:0;;;14860:21:1;14917:2;14897:18;;;14890:30;-1:-1:-1;;;14936:18:1;;;14929:46;14992:18;;12338:53:0;14676:340:1;12338:53:0;12415:12;12402:10;:25;;;12454:13;;:26;;12415:12;12454:26;:::i;:::-;12438:13;:42;12491:14;:21;;-1:-1:-1;;12491:21:0;12508:4;12491:21;;;12064:456::o;13132:239::-;13213:28;13228:12;13213:14;:28::i;:::-;13252:10;;;13338:6;;13252:111;;-1:-1:-1;;;13252:111:0;;13311:4;13252:111;;;15324:51:1;15391:18;;;15384:34;;;15434:18;;;15427:34;;;15477:18;;;15470:34;;;;-1:-1:-1;;;;;13338:6:0;;;15520:19:1;;;15513:61;13346:15:0;15590:19:1;;;15583:35;13252:10:0;;;;:26;;13286:13;;15296:19:1;;13252:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9974:453::-;10036:4;10053:11;10093:1;10079:11;;:15;10075:321;;;10137:13;;-1:-1:-1;;;;;10137:13:0;;;10112;10128:23;;;:8;:23;;;;;;;;;10190:10;;:17;;-1:-1:-1;;;10190:17:0;;;;10128:23;;10190:10;;:15;;:17;;;;;;;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10219:13;;10183:50;;-1:-1:-1;;;10183:50:0;;-1:-1:-1;;;;;10219:13:0;;;10183:50;;;4088:51:1;10183:35:0;;;;;4061:18:1;;10183:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10166:67;-1:-1:-1;10249:16:0;10290:5;10269:17;10166:67;10269:8;:17;:::i;:::-;10268:27;;;;:::i;:::-;10249:46;;10326:11;;10314:8;:23;10310:47;;10350:4;10341:13;;10310:47;10096:276;;;10075:321;;;-1:-1:-1;10389:4:0;10413:6;9974:453;-1:-1:-1;;9974:453:0:o;8337:725::-;3321:8;:15;;-1:-1:-1;;3321:15:0;;;;;8422:10:::1;::::0;8470:8:::1;::::0;8448:30;::::1;::::0;::::1;::::0;:48:::1;;-1:-1:-1::0;8482:14:0::1;::::0;::::1;;8448:48;8443:612;;;8541:8;;8519:18;:30;8514:72;;-1:-1:-1::0;8575:8:0::1;::::0;8514:72:::1;8639:18:::0;8698:13:::1;2008:1;8698:2;:13;:::i;:::-;8694:17;::::0;:1:::1;:17;:::i;:::-;8677:14;:34;8673:224;;;8750:4;8733:23;::::0;;;:8:::1;:23;::::0;;;;:45;;8760:18;;8733:23;:45:::1;::::0;8760:18;;8733:45:::1;:::i;:::-;::::0;;;-1:-1:-1;8797:33:0::1;::::0;-1:-1:-1;8815:14:0;8797:17:::1;:33::i;:::-;8863:18;8849:10;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8673:224:0::1;8941:21;8980:23:::0;;8977:67:::1;;9007:34;9021:19;9007:13;:34::i;:::-;8499:556;;8443:612;-1:-1:-1::0;3361:8:0;:16;;-1:-1:-1;;3361:16:0;;;8337:725::o;10435:561::-;10603:14;;10542:4;;10583;;10603:14;;:39;;;;-1:-1:-1;;;;;;10622:20:0;;;;;;:8;:20;;;;;;;;10621:21;10603:39;:62;;;;-1:-1:-1;;;;;;10647:18:0;;;;;;:8;:18;;;;;;;;10646:19;10603:62;10598:357;;;10705:6;;10688:14;:23;10683:261;;;-1:-1:-1;10753:5:0;10683:261;;;-1:-1:-1;;;;;10818:19:0;;;;;;:9;:19;;;;;;;;10817:20;:77;;;;-1:-1:-1;10880:13:0;;-1:-1:-1;;;;;10842:18:0;;;;;;:8;:18;;;;;;:35;;10863:14;;10842:35;:::i;:::-;:51;10817:77;10794:150;;;-1:-1:-1;10936:5:0;10972:16;10435:561;-1:-1:-1;;;;10435:561:0:o;9478:488::-;9627:14;;9573:7;;;;9627:14;;9626:15;;:40;;-1:-1:-1;;;;;;9645:21:0;;;;;;:9;:21;;;;;;;;9626:40;:64;;;-1:-1:-1;;;;;;9670:20:0;;;;;;:9;:20;;;;;;;;9626:64;9621:311;;;-1:-1:-1;9721:1:0;9621:311;;;-1:-1:-1;;;;;9746:21:0;;;;;;:9;:21;;;;;;;;9741:191;;;9807:7;;9817:3;;9798:16;;9807:7;;;;;9798:6;:16;:::i;:::-;:22;;;;:::i;:::-;9786:34;;9741:191;;;-1:-1:-1;;;;;9845:20:0;;;;;;:9;:20;;;;;;;;9840:92;;;9905:8;;9916:3;;9896:17;;9905:8;;9896:6;:17;:::i;:::-;:23;;;;:::i;:::-;9884:35;9478:488;-1:-1:-1;;;;;9478:488:0:o;9070:299::-;9164:4;9141:29;;;;:14;:29;;;;;;;;2993:42;9141:41;;;;;;;;:56;-1:-1:-1;9136:226:0;;;9238:4;9215:29;;;;:14;:29;;;;;;;;2993:42;9215:41;;;;;;;;;;-1:-1:-1;;9215:61:0;;;;9296:54;;1283:25:1;;;2993:42:0;;9238:4;9296:54;;1256:18:1;9296:54:0;;;;;;;9136:226;9070:299;:::o;7980:349::-;8047:27;8062:11;8047:14;:27::i;:::-;8109:16;;;8123:1;8109:16;;;;;;;;8085:21;;8109:16;;;;;;;;;;-1:-1:-1;8109:16:0;8085:40;;8155:4;8136;8141:1;8136:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8136:25:0;;;:7;;;;;;;;;;:25;;;;8182:10;;:17;;;-1:-1:-1;;;8182:17:0;;;;:10;;;;;:15;;:17;;;;;8136:7;;8182:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8172:4;8177:1;8172:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8172:27:0;;;:7;;;;;;;;;:27;8210:10;;:111;;-1:-1:-1;;;8210:111:0;;:10;;;:61;;:111;;8272:11;;8210:10;;8286:4;;8299;;8305:15;;8210:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8036:293;7980:349;:::o;9377:93::-;9435:10;;:27;;-1:-1:-1;;;;;9435:10:0;;;;:27;;;;;9455:6;;9435:10;:27;:10;:27;9455:6;9435:10;:27;;;;;;;;;;;;;;;;;;;;;9377:93;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:160::-;1384:20;;1440:13;;1433:21;1423:32;;1413:60;;1469:1;1466;1459:12;1413:60;1319:160;;;:::o;1484:383::-;1555:6;1563;1571;1624:2;1612:9;1603:7;1599:23;1595:32;1592:52;;;1640:1;1637;1630:12;1592:52;1679:9;1666:23;1698:31;1723:5;1698:31;:::i;:::-;1748:5;-1:-1:-1;1772:35:1;1803:2;1788:18;;1772:35;:::i;:::-;1762:45;;1826:35;1857:2;1846:9;1842:18;1826:35;:::i;:::-;1816:45;;1484:383;;;;;:::o;1872:508::-;1949:6;1957;1965;2018:2;2006:9;1997:7;1993:23;1989:32;1986:52;;;2034:1;2031;2024:12;1986:52;2073:9;2060:23;2092:31;2117:5;2092:31;:::i;:::-;2142:5;-1:-1:-1;2199:2:1;2184:18;;2171:32;2212:33;2171:32;2212:33;:::i;:::-;1872:508;;2264:7;;-1:-1:-1;;;2344:2:1;2329:18;;;;2316:32;;1872:508::o;2385:247::-;2444:6;2497:2;2485:9;2476:7;2472:23;2468:32;2465:52;;;2513:1;2510;2503:12;2465:52;2552:9;2539:23;2571:31;2596:5;2571:31;:::i;3099:159::-;3166:20;;3226:6;3215:18;;3205:29;;3195:57;;3248:1;3245;3238:12;3263:256;3329:6;3337;3390:2;3378:9;3369:7;3365:23;3361:32;3358:52;;;3406:1;3403;3396:12;3358:52;3429:28;3447:9;3429:28;:::i;:::-;3419:38;;3476:37;3509:2;3498:9;3494:18;3476:37;:::i;:::-;3466:47;;3263:256;;;;;:::o;3524:156::-;3590:20;;3650:4;3639:16;;3629:27;;3619:55;;3670:1;3667;3660:12;3685:252;3749:6;3757;3810:2;3798:9;3789:7;3785:23;3781:32;3778:52;;;3826:1;3823;3816:12;3778:52;3849:27;3866:9;3849:27;:::i;:::-;3839:37;;3895:36;3927:2;3916:9;3912:18;3895:36;:::i;4150:388::-;4218:6;4226;4279:2;4267:9;4258:7;4254:23;4250:32;4247:52;;;4295:1;4292;4285:12;4247:52;4334:9;4321:23;4353:31;4378:5;4353:31;:::i;:::-;4403:5;-1:-1:-1;4460:2:1;4445:18;;4432:32;4473:33;4432:32;4473:33;:::i;:::-;4525:7;4515:17;;;4150:388;;;;;:::o;4543:163::-;4610:20;;4670:10;4659:22;;4649:33;;4639:61;;4696:1;4693;4686:12;4711:474;4801:6;4809;4817;4825;4833;4886:3;4874:9;4865:7;4861:23;4857:33;4854:53;;;4903:1;4900;4893:12;4854:53;4926:28;4944:9;4926:28;:::i;:::-;4916:38;;4973:37;5006:2;4995:9;4991:18;4973:37;:::i;:::-;4963:47;;5029:37;5062:2;5051:9;5047:18;5029:37;:::i;:::-;5019:47;;5085:37;5118:2;5107:9;5103:18;5085:37;:::i;:::-;5075:47;;5141:38;5174:3;5163:9;5159:19;5141:38;:::i;:::-;5131:48;;4711:474;;;;;;;;:::o;5450:127::-;5511:10;5506:3;5502:20;5499:1;5492:31;5542:4;5539:1;5532:15;5566:4;5563:1;5556:15;5582:375;5670:1;5688:5;5702:249;5723:1;5713:8;5710:15;5702:249;;;5773:4;5768:3;5764:14;5758:4;5755:24;5752:50;;;5782:18;;:::i;:::-;5832:1;5822:8;5818:16;5815:49;;;5846:16;;;;5815:49;5929:1;5925:16;;;;;5885:15;;5702:249;;;5582:375;;;;;;:::o;5962:902::-;6011:5;6041:8;6031:80;;-1:-1:-1;6082:1:1;6096:5;;6031:80;6130:4;6120:76;;-1:-1:-1;6167:1:1;6181:5;;6120:76;6212:4;6230:1;6225:59;;;;6298:1;6293:174;;;;6205:262;;6225:59;6255:1;6246:10;;6269:5;;;6293:174;6330:3;6320:8;6317:17;6314:43;;;6337:18;;:::i;:::-;-1:-1:-1;;6393:1:1;6379:16;;6452:5;;6205:262;;6551:2;6541:8;6538:16;6532:3;6526:4;6523:13;6519:36;6513:2;6503:8;6500:16;6495:2;6489:4;6486:12;6482:35;6479:77;6476:203;;;-1:-1:-1;6588:19:1;;;6664:5;;6476:203;6711:42;-1:-1:-1;;6736:8:1;6730:4;6711:42;:::i;:::-;6789:6;6785:1;6781:6;6777:19;6768:7;6765:32;6762:58;;;6800:18;;:::i;:::-;6838:20;;5962:902;-1:-1:-1;;;5962:902:1:o;6869:140::-;6927:5;6956:47;6997:4;6987:8;6983:19;6977:4;6956:47;:::i;7014:168::-;7087:9;;;7118;;7135:15;;;7129:22;;7115:37;7105:71;;7156:18;;:::i;7187:348::-;7389:2;7371:21;;;7428:2;7408:18;;;7401:30;7467:26;7462:2;7447:18;;7440:54;7526:2;7511:18;;7187:348::o;8230:128::-;8297:9;;;8318:11;;;8315:37;;;8332:18;;:::i;8363:217::-;8403:1;8429;8419:132;;8473:10;8468:3;8464:20;8461:1;8454:31;8508:4;8505:1;8498:15;8536:4;8533:1;8526:15;8419:132;-1:-1:-1;8565:9:1;;8363:217::o;8585:125::-;8650:9;;;8671:10;;;8668:36;;;8684:18;;:::i;9397:148::-;9485:4;9464:12;;;9478;;;9460:31;;9503:13;;9500:39;;;9519:18;;:::i;10590:262::-;10707:16;10674:24;;;10700;;;10670:55;10745:34;;;;10798:24;;;10788:58;;10826:18;;:::i;:::-;10788:58;10590:262;;;;:::o;12209:251::-;12279:6;12332:2;12320:9;12311:7;12307:23;12303:32;12300:52;;;12348:1;12345;12338:12;12300:52;12380:9;12374:16;12399:31;12424:5;12399:31;:::i;14370:301::-;14499:3;14537:6;14531:13;14583:6;14576:4;14568:6;14564:17;14559:3;14553:37;14645:1;14609:16;;14634:13;;;-1:-1:-1;14609:16:1;14370:301;-1:-1:-1;14370:301:1:o;15629:456::-;15717:6;15725;15733;15786:2;15774:9;15765:7;15761:23;15757:32;15754:52;;;15802:1;15799;15792:12;15754:52;-1:-1:-1;;15847:16:1;;15953:2;15938:18;;15932:25;16049:2;16034:18;;;16028:25;15847:16;;15932:25;;-1:-1:-1;16028:25:1;15629:456;-1:-1:-1;15629:456:1:o;16090:230::-;16160:6;16213:2;16201:9;16192:7;16188:23;16184:32;16181:52;;;16229:1;16226;16219:12;16181:52;-1:-1:-1;16274:16:1;;16090:230;-1:-1:-1;16090:230:1:o;16457:127::-;16518:10;16513:3;16509:20;16506:1;16499:31;16549:4;16546:1;16539:15;16573:4;16570:1;16563:15;16589:959;16851:4;16899:3;16888:9;16884:19;16930:6;16919:9;16912:25;16973:6;16968:2;16957:9;16953:18;16946:34;17016:3;17011:2;17000:9;16996:18;16989:31;17040:6;17075;17069:13;17106:6;17098;17091:22;17144:3;17133:9;17129:19;17122:26;;17183:2;17175:6;17171:15;17157:29;;17204:1;17214:195;17228:6;17225:1;17222:13;17214:195;;;17293:13;;-1:-1:-1;;;;;17289:39:1;17277:52;;17358:2;17384:15;;;;17349:12;;;;17325:1;17243:9;17214:195;;;-1:-1:-1;;;;;;;17465:32:1;;;;17460:2;17445:18;;17438:60;-1:-1:-1;;17529:3:1;17514:19;17507:35;17426:3;16589:959;-1:-1:-1;;;16589:959:1:o
Swarm Source
ipfs://ce3ceb3cf1cf2a4f5d31c7cac12590f5b18fa9f0ea47eef6e637e48b6ac9089c
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.