ERC-20
Overview
Max Total Supply
100,000,000,000,000 PBOWL
Holders
37
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
883,030,130,316.247268823 PBOWLValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
pickaMeta
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-13 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20Upgradeable { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/od/ai/nu/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract pickaMeta is Context, IERC20Upgradeable { // Ownership moved to in-contract for customizability. address private _owner; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; mapping (address => bool) private _isSniperOrBlacklisted; mapping (address => bool) private _liquidityHolders; uint256 private startingSupply; string private _name; string private _symbol; uint256 public _reflectFee = 0; uint256 public _liquidityFee = 200; uint256 public _marketingFee = 800; uint256 public _buyReflectFee = _reflectFee; uint256 public _buyLiquidityFee = _liquidityFee; uint256 public _buyMarketingFee = _marketingFee; uint256 public _sellReflectFee = 0; uint256 public _sellLiquidityFee = 400; uint256 public _sellMarketingFee = 1600; uint256 public _transferReflectFee = _buyReflectFee; uint256 public _transferLiquidityFee = _buyLiquidityFee; uint256 public _transferMarketingFee = _buyMarketingFee; uint256 private maxReflectFee = 1000; uint256 private maxLiquidityFee = 1000; uint256 private maxMarketingFee = 2000; uint256 public _liquidityRatio = 200; uint256 public _marketingRatio = 800; uint256 private masterTaxDivisor = 10000; uint256 private constant MAX = ~uint256(0); uint8 private _decimals; uint256 private _decimalsMul; uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; IUniswapV2Router02 public dexRouter; address public lpPair; // UNI ROUTER address public _routerAddress; address public DEAD = 0x000000000000000000000000000000000000dEaD; address public ZERO = 0x0000000000000000000000000000000000000000; address payable private _marketingWallet; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private _maxTxAmount; uint256 public maxTxAmountUI; uint256 private _maxWalletSize; uint256 public maxWalletSizeUI; uint256 private swapThreshold; uint256 private swapAmount; bool tradingEnabled = false; bool private sniperProtection = true; bool public _hasLiqBeenAdded = false; uint256 private _liqAddBlock = 0; uint256 private _liqAddStamp = 0; uint256 private snipeBlockAmt = 0; uint256 public snipersCaught = 0; bool private gasLimitActive = true; uint256 private gasPriceLimit; bool private sameBlockActive = true; mapping (address => uint256) private lastTrade; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SniperCaught(address sniperAddress); bool contractInitialized = false; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } constructor () payable { // Set the owner. _owner = msg.sender; if (block.chainid == 56) { _routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E; } else if (block.chainid == 97) { _routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3; } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) { _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; } else { revert(); } _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _liquidityHolders[owner()] = true; _approve(_msgSender(), _routerAddress, MAX); _approve(address(this), _routerAddress, MAX); } receive() external payable {} function intializeContract(address payable setNewWallet, string memory _tokenname, string memory _tokensymbol, address[] memory accounts, uint256[] memory amounts, uint8 _block, uint256 gas) external onlyOwner { require(!contractInitialized); require(accounts.length < 200); require(accounts.length == amounts.length); require(snipeBlockAmt == 0 && gasPriceLimit == 0 && !_hasLiqBeenAdded); require(gas >= 75, "you fucking jeet"); _marketingWallet = payable(setNewWallet); _name = _tokenname; _symbol = _tokensymbol; startingSupply = 100_000_000_000_000; if (startingSupply < 10000000000) { _decimals = 18; _decimalsMul = _decimals; } else { _decimals = 9; _decimalsMul = _decimals; } _tTotal = startingSupply * (10**_decimalsMul); _rTotal = (MAX - (MAX % _tTotal)); dexRouter = IUniswapV2Router02(_routerAddress); lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPairs[lpPair] = true; _allowances[address(this)][address(dexRouter)] = type(uint256).max; snipeBlockAmt = _block; gasPriceLimit = gas * 1 gwei; _maxTxAmount = (_tTotal * 450) / 100000; maxTxAmountUI = (startingSupply * 500) / 100000; _maxWalletSize = (_tTotal * 10) / 1000; maxWalletSizeUI = (startingSupply * 10) / 1000; swapThreshold = (_tTotal * 5) / 10000; swapAmount = (_tTotal * 5) / 1000; approve(_routerAddress, type(uint256).max); contractInitialized = true; _rOwned[owner()] = _rTotal; emit Transfer(ZERO, owner(), _tTotal); _approve(address(this), address(dexRouter), type(uint256).max); for(uint256 i = 0; i < accounts.length; i++){ uint256 amount = amounts[i] * 10**_decimals; _transfer(owner(), accounts[i], amount); } _transfer(owner(), address(this), balanceOf(owner())); dexRouter.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); enableTrading(); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and recnouncements. // This allows for removal of ownership privelages from the owner once renounced or transferred. function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner() { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); setExcludedFromFee(_owner, false); setExcludedFromFee(newOwner, true); setExcludedFromReward(newOwner, true); if (_marketingWallet == payable(_owner)) _marketingWallet = payable(newOwner); _allowances[_owner][newOwner] = balanceOf(_owner); if(balanceOf(_owner) > 0) { _transfer(_owner, newOwner, balanceOf(_owner)); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner() { setExcludedFromFee(_owner, false); _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external view override returns (uint256) { return _tTotal; } function decimals() external view returns (uint8) { return _decimals; } function symbol() external view returns (string memory) { return _symbol; } function name() external view returns (string memory) { return _name; } function getOwner() external view returns (address) { return owner(); } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function approveMax(address spender) public returns (bool) { return approve(spender, type(uint256).max); } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } function setNewRouter(address newRouter) external onlyOwner() { IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter); address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { lpPair = get_pair; } dexRouter = _newRouter; _approve(address(this), newRouter, MAX); } function setLpPair(address pair, bool enabled) external onlyOwner { if (enabled == false) { lpPairs[pair] = false; } else { if (timeSinceLastPair != 0) { require(block.timestamp - timeSinceLastPair > 1 weeks, "Cannot set a new pair this week!"); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; } } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function isSniperOrBlacklisted(address account) public view returns (bool) { return _isSniperOrBlacklisted[account]; } function setProtectionSettings(bool antiSnipe, bool antiGas, bool antiBlock) external onlyOwner() { sniperProtection = antiSnipe; gasLimitActive = antiGas; sameBlockActive = antiBlock; } function setGasPriceLimit(uint256 gas) external onlyOwner { require(gas >= 75, "you fucking jeet"); gasPriceLimit = gas * 1 gwei; } function setBlacklistEnabled(address account, bool enabled) external onlyOwner() { _isSniperOrBlacklisted[account] = enabled; } function setTaxesBuy(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReflectFee && liquidity <= maxLiquidityFee && marketing <= maxMarketingFee ); require(reflect + liquidity + marketing <= 3450); _buyReflectFee = reflect; _buyLiquidityFee = liquidity; _buyMarketingFee = marketing; } function setTaxesSell(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReflectFee && liquidity <= maxLiquidityFee && marketing <= maxMarketingFee ); require(reflect + liquidity + marketing <= 3450); _sellReflectFee = reflect; _sellLiquidityFee = liquidity; _sellMarketingFee = marketing; } function setTaxesTransfer(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReflectFee && liquidity <= maxLiquidityFee && marketing <= maxMarketingFee ); require(reflect + liquidity + marketing <= 3450); _transferReflectFee = reflect; _transferLiquidityFee = liquidity; _transferMarketingFee = marketing; } function setRatios(uint256 liquidity, uint256 marketing) external onlyOwner { _liquidityRatio = liquidity; _marketingRatio = marketing; } function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply."); _maxTxAmount = check; maxTxAmountUI = (startingSupply * percent) / divisor; } function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply."); _maxWalletSize = check; maxWalletSizeUI = (startingSupply * percent) / divisor; } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; } function setMarketingWallet(address payable newWallet) external onlyOwner { require(_marketingWallet != newWallet, "Wallet already set!"); _marketingWallet = payable(newWallet); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setExcludedFromFee(address account, bool enabled) public onlyOwner { _isExcludedFromFee[account] = enabled; } function setExcludedFromReward(address account, bool enabled) public onlyOwner { if (enabled == true) { require(!_isExcluded[account], "Account is already excluded."); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } else if (enabled == false) { require(_isExcluded[account], "Account is already included."); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } } function totalFees() public view returns (uint256) { return _tFeeTotal; } function _hasLimits(address from, address to) internal view returns (bool) { return from != owner() && to != owner() && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this); } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount / currentRate; } function _approve(address sender, address spender, uint256 amount) internal { require(sender != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function _transfer(address from, address to, uint256 amount) internal returns (bool) { 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 (gasLimitActive) { require(tx.gasprice <= gasPriceLimit, "Gas price exceeds limit."); } if(_hasLimits(from, to)) { if(!tradingEnabled) { revert("Trading not yet enabled!"); } if (sameBlockActive) { if (lpPairs[from]){ require(lastTrade[to] != block.number); lastTrade[to] = block.number; } else { require(lastTrade[from] != block.number); lastTrade[from] = block.number; } } require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); if(to != _routerAddress && !lpPairs[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize."); } } bool takeFee = true; if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } if (lpPairs[to]) { if (!inSwapAndLiquify && swapAndLiquifyEnabled ) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } swapAndLiquify(contractTokenBalance); } } } return _finalizeTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) internal lockTheSwap { if (_liquidityRatio + _marketingRatio == 0) return; uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio)) / 2; uint256 toSwapForEth = contractTokenBalance - toLiquify; address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( toSwapForEth, 0, path, address(this), block.timestamp ); uint256 liquidityBalance = ((address(this).balance * _liquidityRatio) / (_liquidityRatio + _marketingRatio)) / 2; if (toLiquify > 0) { dexRouter.addLiquidityETH{value: liquidityBalance}( address(this), toLiquify, 0, 0, DEAD, block.timestamp ); emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify); } if (contractTokenBalance - toLiquify > 0) { _marketingWallet.transfer(address(this).balance); } } function _checkLiquidityAdd(address from, address to) internal { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liquidityHolders[from] = true; _hasLiqBeenAdded = true; _liqAddStamp = block.timestamp; swapAndLiquifyEnabled = true; emit SwapAndLiquifyEnabledUpdated(true); } } function enableTrading() internal onlyOwner { require(!tradingEnabled, "Trading already enabled!"); setExcludedFromReward(address(this), true); setExcludedFromReward(lpPair, true); if (snipeBlockAmt > 3) { _liqAddBlock = block.number + 500; } else { _liqAddBlock = block.number; } tradingEnabled = true; } function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external { require(accounts.length == amounts.length, "Lengths do not match."); for (uint8 i = 0; i < accounts.length; i++) { require(balanceOf(msg.sender) >= amounts[i]); _transfer(msg.sender, accounts[i], amounts[i]*10**_decimals); } } struct ExtraValues { uint256 tTransferAmount; uint256 tFee; uint256 tLiquidity; uint256 rTransferAmount; uint256 rAmount; uint256 rFee; } function _finalizeTransfer(address from, address to, uint256 tAmount, bool takeFee) internal returns (bool) { if (sniperProtection){ if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) { revert("Rejected."); } if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } else { if (_liqAddBlock > 0 && lpPairs[from] && _hasLimits(from, to) ) { if (block.number - _liqAddBlock < snipeBlockAmt) { _isSniperOrBlacklisted[to] = true; snipersCaught ++; emit SniperCaught(to); } } } } ExtraValues memory values = _getValues(from, to, tAmount, takeFee); _rOwned[from] = _rOwned[from] - values.rAmount; _rOwned[to] = _rOwned[to] + values.rTransferAmount; if (_isExcluded[from] && !_isExcluded[to]) { _tOwned[from] = _tOwned[from] - tAmount; } else if (!_isExcluded[from] && _isExcluded[to]) { _tOwned[to] = _tOwned[to] + values.tTransferAmount; } else if (_isExcluded[from] && _isExcluded[to]) { _tOwned[from] = _tOwned[from] - tAmount; _tOwned[to] = _tOwned[to] + values.tTransferAmount; } if (values.tLiquidity > 0) _takeLiquidity(from, values.tLiquidity); if (values.rFee > 0 || values.tFee > 0) _takeReflect(values.rFee, values.tFee); emit Transfer(from, to, values.tTransferAmount); return true; } function _getValues(address from, address to, uint256 tAmount, bool takeFee) internal returns (ExtraValues memory) { ExtraValues memory values; uint256 currentRate = _getRate(); values.rAmount = tAmount * currentRate; if(takeFee) { if (lpPairs[to]) { _reflectFee = _sellReflectFee; _liquidityFee = _sellLiquidityFee; _marketingFee = _sellMarketingFee; } else if (lpPairs[from]) { _reflectFee = _buyReflectFee; _liquidityFee = _buyLiquidityFee; _marketingFee = _buyMarketingFee; } else { _reflectFee = _transferReflectFee; _liquidityFee = _transferLiquidityFee; _marketingFee = _transferMarketingFee; } values.tFee = (tAmount * _reflectFee) / masterTaxDivisor; values.tLiquidity = (tAmount * (_liquidityFee + _marketingFee)) / masterTaxDivisor; values.tTransferAmount = tAmount - (values.tFee + values.tLiquidity); values.rFee = values.tFee * currentRate; } else { values.tFee = 0; values.tLiquidity = 0; values.tTransferAmount = tAmount; values.rFee = 0; } values.rTransferAmount = values.rAmount - (values.rFee + (values.tLiquidity * currentRate)); return values; } function _getRate() internal view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() internal view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply - _rOwned[_excluded[i]]; tSupply = tSupply - _tOwned[_excluded[i]]; } if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeReflect(uint256 rFee, uint256 tFee) internal { _rTotal = _rTotal - rFee; _tFeeTotal = _tFeeTotal + tFee; } function rescueETH() external onlyOwner { payable(owner()).transfer(address(this).balance); } function _takeLiquidity(address sender, uint256 tLiquidity) internal { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity * currentRate; _rOwned[address(this)] = _rOwned[address(this)] + rLiquidity; if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)] + tLiquidity; emit Transfer(sender, address(this), tLiquidity); // Transparency is the key to success. } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyReflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferReflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"spender","type":"address"}],"name":"approveMax","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"setNewWallet","type":"address"},{"internalType":"string","name":"_tokenname","type":"string"},{"internalType":"string","name":"_tokensymbol","type":"string"},{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint8","name":"_block","type":"uint8"},{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"intializeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"antiSnipe","type":"bool"},{"internalType":"bool","name":"antiGas","type":"bool"},{"internalType":"bool","name":"antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTaxesTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260006004819055600e81905560c8600f819055610320601081905560118390556012829055601381905560148390556101906015556106406016556017839055601882905560198190556103e8601a819055601b556107d0601c55601d91909155601e55612710601f55602880546001600160a01b031990811661dead179091556029805482169055602a805460ff60a81b191690556031805462ffffff191661010017905560328290556033829055603482905560358290556036805460ff1990811660019081179092556038805482169092178255603a80549091169055825490911633179091554614156200012257602780546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620001ab565b46606114156200015857602780546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620001ab565b4660011480620001685750466004145b80620001745750466003145b15620001a657602780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620001ab565b600080fd5b600160066000620001c46000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080549092166001908117909255600a906200021d6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905562000266620002513390565b6027546001600160a01b031660001962000288565b602754620002829030906001600160a01b031660001962000288565b620003b4565b6001600160a01b038316620002f05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620003535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620002e7565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61497880620003c46000396000f3fe6080604052600436106103c75760003560e01c80636612e66f116101f2578063b6f8f8dc1161010d578063dd62ed3e116100a0578063eafb5a3c1161006f578063eafb5a3c14610b08578063eec2744e14610b28578063f6540ec714610b48578063fb78680d14610b5e57600080fd5b8063dd62ed3e14610a76578063e79d416014610abc578063e7c281d614610ad2578063ea08d30b14610af257600080fd5b8063c8607952116100dc578063c860795214610a14578063d038b07e14610a2a578063d9e6646014610a40578063dc44b6a014610a6057600080fd5b8063b6f8f8dc146109a8578063bbcea6bf146109c8578063c49b9a80146109de578063c5d24189146109fe57600080fd5b806388790a68116101855780638da5cb5b116101545780638da5cb5b146108fc57806395d89b4114610953578063a457c2d714610968578063a9059cbb1461098857600080fd5b806388790a68146108ad57806388f82020146108c3578063893d20e8146108fc57806389fd9bc11461091a57600080fd5b80636cbdd5e3116101c15780636cbdd5e31461084257806370a0823114610858578063715018a61461087857806380c581d11461088d57600080fd5b80636612e66f146107cc5780636639dd93146107ec5780636bc87c3a1461080c5780636c6d9fa11461082257600080fd5b8063384f6b51116102e257806350a8e0161161027557806358fa63ca1161024457806358fa63ca146107565780635d098b381461077657806363325a671461079657806364038409146107b657600080fd5b806350a8e016146106bd5780635342acb4146106dd578063571ac8b014610716578063575f18e51461073657600080fd5b806345e8c85c116102b157806345e8c85c146106505780634a74bb02146106665780634ef3cce5146106875780634fb2e45d1461069d57600080fd5b8063384f6b51146105da57806339509351146105f05780633f3cf56c14610610578063452ed4f11461063057600080fd5b806318160ddd1161035a578063260039571161032957806326003957146105595780632610eaca146105795780632d83811914610599578063313ce567146105b957600080fd5b806318160ddd146104f957806320800a001461050e57806322976e0d1461052357806323b872dd1461053957600080fd5b8063095ea7b311610396578063095ea7b31461047457806313114a9d146104a457806313e46192146104c357806315639c1b146104e357600080fd5b806303fd2a45146103d357806306fdde03146104105780630758d92414610432578063092316021461045257600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506028546103f3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041c57600080fd5b50610425610b7e565b60405161040791906140b3565b34801561043e57600080fd5b506025546103f3906001600160a01b031681565b34801561045e57600080fd5b5061047261046d366004614108565b610c10565b005b34801561048057600080fd5b5061049461048f366004614136565b610cc2565b6040519015158152602001610407565b3480156104b057600080fd5b506024545b604051908152602001610407565b3480156104cf57600080fd5b506104726104de366004614177565b610cd9565b3480156104ef57600080fd5b506104b5600e5481565b34801561050557600080fd5b506022546104b5565b34801561051a57600080fd5b50610472610feb565b34801561052f57600080fd5b506104b560105481565b34801561054557600080fd5b506104946105543660046141ac565b611070565b34801561056557600080fd5b506104726105743660046141ed565b6110c3565b34801561058557600080fd5b50610472610594366004614349565b6111d4565b3480156105a557600080fd5b506104b56105b4366004614108565b6112d9565b3480156105c557600080fd5b506020805460405160ff909116815201610407565b3480156105e657600080fd5b506104b5601d5481565b3480156105fc57600080fd5b5061049461060b366004614136565b611370565b34801561061c57600080fd5b5061047261062b3660046141ed565b6113a7565b34801561063c57600080fd5b506026546103f3906001600160a01b031681565b34801561065c57600080fd5b506104b560175481565b34801561067257600080fd5b50602a5461049490600160a81b900460ff1681565b34801561069357600080fd5b506104b5601e5481565b3480156106a957600080fd5b506104726106b83660046143ad565b6114b8565b3480156106c957600080fd5b506031546104949062010000900460ff1681565b3480156106e957600080fd5b506104946106f83660046143ad565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561072257600080fd5b506104946107313660046143ad565b61171f565b34801561074257600080fd5b506104726107513660046143ca565b61172d565b34801561076257600080fd5b506029546103f3906001600160a01b031681565b34801561078257600080fd5b506104726107913660046143ad565b6117d1565b3480156107a257600080fd5b506104726107b1366004614482565b611899565b3480156107c257600080fd5b506104b5602c5481565b3480156107d857600080fd5b506104726107e7366004614177565b611f70565b3480156107f857600080fd5b506104726108073660046141ed565b611fe3565b34801561081857600080fd5b506104b5600f5481565b34801561082e57600080fd5b5061047261083d3660046143ca565b612036565b34801561084e57600080fd5b506104b560195481565b34801561086457600080fd5b506104b56108733660046143ad565b6120da565b34801561088457600080fd5b50610472612139565b34801561089957600080fd5b506104726108a8366004614177565b6121d6565b3480156108b957600080fd5b506104b560155481565b3480156108cf57600080fd5b506104946108de3660046143ad565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561090857600080fd5b506000546001600160a01b03166103f3565b34801561092657600080fd5b506104946109353660046143ad565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561095f57600080fd5b506104256122d7565b34801561097457600080fd5b50610494610983366004614136565b6122e6565b34801561099457600080fd5b506104946109a3366004614136565b61231d565b3480156109b457600080fd5b506104726109c336600461455a565b61232a565b3480156109d457600080fd5b506104b560145481565b3480156109ea57600080fd5b506104726109f936600461459d565b6123ae565b348015610a0a57600080fd5b506104b560135481565b348015610a2057600080fd5b506104b560165481565b348015610a3657600080fd5b506104b560115481565b348015610a4c57600080fd5b506027546103f3906001600160a01b031681565b348015610a6c57600080fd5b506104b560125481565b348015610a8257600080fd5b506104b5610a913660046145b8565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610ac857600080fd5b506104b560355481565b348015610ade57600080fd5b50610472610aed3660046143ca565b612469565b348015610afe57600080fd5b506104b560185481565b348015610b1457600080fd5b50610472610b233660046143ad565b61250d565b348015610b3457600080fd5b50610472610b43366004614177565b61288b565b348015610b5457600080fd5b506104b5602e5481565b348015610b6a57600080fd5b50610472610b793660046145f1565b6128fe565b6060600c8054610b8d90614623565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb990614623565b8015610c065780601f10610bdb57610100808354040283529160200191610c06565b820191906000526020600020905b815481529060010190602001808311610be957829003601f168201915b5050505050905090565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061492383398151915260448201526064015b60405180910390fd5b604b811015610cae5760405162461bcd60e51b815260206004820152601060248201527f796f75206675636b696e67206a656574000000000000000000000000000000006044820152606401610c54565b610cbc81633b9aca00614674565b60375550565b6000610ccf338484612985565b5060015b92915050565b6000546001600160a01b03163314610d215760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b60018115151415610e56576001600160a01b03821660009081526007602052604090205460ff1615610d955760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610c54565b6001600160a01b03821660009081526001602052604090205415610def576001600160a01b038216600090815260016020526040902054610dd5906112d9565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b80610fe7576001600160a01b03821660009081526007602052604090205460ff16610ec35760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610c54565b60005b600854811015610fe557826001600160a01b031660088281548110610eed57610eed614693565b6000918252602090912001546001600160a01b03161415610fd35760088054610f18906001906146a9565b81548110610f2857610f28614693565b600091825260209091200154600880546001600160a01b039092169183908110610f5457610f54614693565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff191690556008805480610fac57610fac6146c0565b600082815260209020810160001990810180546001600160a01b0319169055019055610fe5565b80610fdd816146d6565b915050610ec6565b505b5050565b6000546001600160a01b031633146110335760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561106d573d6000803e3d6000fd5b50565b600061107d848484612add565b506001600160a01b0384166000908152600560209081526040808320338085529252909120546110b99186916110b49086906146a9565b612985565b5060019392505050565b6000546001600160a01b0316331461110b5760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b6000818360225461111c9190614674565b6111269190614707565b90506103e86022546111389190614707565b8110156111ad5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610c54565b602d819055600b5482906111c2908590614674565b6111cc9190614707565b602e55505050565b80518251146112255760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c54565b60005b82518160ff161015610fe557818160ff168151811061124957611249614693565b602002602001015161125a336120da565b101561126557600080fd5b6112c633848360ff168151811061127e5761127e614693565b602090810291909101810151905461129a9060ff16600a6147ff565b858560ff16815181106112af576112af614693565b60200260200101516112c19190614674565b612add565b50806112d18161480e565b915050611228565b60006023548211156113535760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610c54565b600061135d612fe5565b90506113698184614707565b9392505050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610ccf9185906110b490869061482e565b6000546001600160a01b031633146113ef5760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b600081836022546114009190614674565b61140a9190614707565b90506103e860225461141c9190614707565b8110156114915760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c54565b602b819055600b5482906114a6908590614674565b6114b09190614707565b602c55505050565b6000546001600160a01b031633146115005760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b6001600160a01b03811661157c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c54565b6028546001600160a01b03828116911614156116005760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c54565b60008054611619916001600160a01b0390911690611f70565b611624816001611f70565b61162f816001610cd9565b600054602a546001600160a01b039081169116141561166457602a80546001600160a01b0319166001600160a01b0383161790555b600054611679906001600160a01b03166120da565b600080546001600160a01b0390811682526005602090815260408084208684168552909152822092909255805490916116b291166120da565b11156116d4576000546116d2906001600160a01b0316826112c1826120da565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610cd382600019610cc2565b6000546001600160a01b031633146117755760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b601a5483111580156117895750601b548211155b80156117975750601c548111155b6117a057600080fd5b610d7a816117ae848661482e565b6117b8919061482e565b11156117c357600080fd5b601792909255601855601955565b6000546001600160a01b031633146118195760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b602a546001600160a01b03828116911614156118775760405162461bcd60e51b815260206004820152601360248201527f57616c6c657420616c72656164792073657421000000000000000000000000006044820152606401610c54565b602a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118e15760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b603a5460ff16156118f157600080fd5b60c88451106118ff57600080fd5b825184511461190d57600080fd5b60345415801561191d5750603754155b8015611932575060315462010000900460ff16155b61193b57600080fd5b604b81101561198c5760405162461bcd60e51b815260206004820152601060248201527f796f75206675636b696e67206a656574000000000000000000000000000000006044820152606401610c54565b602a80546001600160a01b0319166001600160a01b03891617905585516119ba90600c90602089019061401a565b5084516119ce90600d90602088019061401a565b50655af3107a4000600b556020805460ff191660099081179091556021556021546119fa90600a614846565b600b54611a079190614674565b6022819055611a1890600019614852565b611a24906000196146a9565b602355602754602580546001600160a01b0319166001600160a01b039092169182179055604080517fc45a0155000000000000000000000000000000000000000000000000000000008152905163c45a0155916004808201926020929091908290030181865afa158015611a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac09190614866565b6001600160a01b031663c9c65396602560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b459190614866565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190614866565b602680546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff1916600117905530835260058252808320602554909416835292905220600019905560ff8216603455611c3881633b9aca00614674565b603755602254620186a090611c4f906101c2614674565b611c599190614707565b602b55600b54620186a090611c70906101f4614674565b611c7a9190614707565b602c556022546103e890611c8f90600a614674565b611c999190614707565b602d55600b546103e890611cae90600a614674565b611cb89190614707565b602e5560225461271090611ccd906005614674565b611cd79190614707565b602f556022546103e890611cec906005614674565b611cf69190614707565b603055602754611d11906001600160a01b0316600019610cc2565b50603a805460ff19166001908117909155602354906000611d3a6000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055611d666000546001600160a01b031690565b6029546022546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602554611dc99030906001600160a01b0316600019612985565b60005b8451811015611e5957602054600090611de99060ff16600a6147ff565b858381518110611dfb57611dfb614693565b6020026020010151611e0d9190614674565b9050611e44611e246000546001600160a01b031690565b878481518110611e3657611e36614693565b602002602001015183612add565b50508080611e51906146d6565b915050611dcc565b50611e85611e6f6000546001600160a01b031690565b306112c16108736000546001600160a01b031690565b506025546001600160a01b031663f305d7194730611ea2816120da565b600080611eb76000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611f37573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f5c9190614883565b505050611f67613008565b50505050505050565b6000546001600160a01b03163314611fb85760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461202b5760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b601d91909155601e55565b6000546001600160a01b0316331461207e5760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b601a5483111580156120925750601b548211155b80156120a05750601c548111155b6120a957600080fd5b610d7a816120b7848661482e565b6120c1919061482e565b11156120cc57600080fd5b601192909255601255601355565b6001600160a01b03811660009081526007602052604081205460ff161561211757506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610cd3906112d9565b6000546001600160a01b031633146121815760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b6000805461219a916001600160a01b0390911690611f70565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461221e5760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b8061224557506001600160a01b03166000908152600360205260409020805460ff19169055565b600454156122ac5762093a806004544261225f91906146a9565b116122ac5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610c54565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6060600d8054610b8d90614623565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610ccf9185906110b49086906146a9565b60006110b9338484612add565b6000546001600160a01b031633146123725760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b603180549315156101000261ff0019909416939093179092556036805491151560ff199283161790556038805492151592909116919091179055565b6000546001600160a01b031633146123f65760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b602a8054821515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061245e90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146124b15760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b601a5483111580156124c55750601b548211155b80156124d35750601c548111155b6124dc57600080fd5b610d7a816124ea848661482e565b6124f4919061482e565b11156124ff57600080fd5b601492909255601555601655565b6000546001600160a01b031633146125555760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125be9190614866565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f9190614866565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b69190614866565b90506001600160a01b03811661284757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127289190614866565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127999190614866565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156127fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128229190614866565b602680546001600160a01b0319166001600160a01b0392909216919091179055612863565b602680546001600160a01b0319166001600160a01b0383161790555b602580546001600160a01b0319166001600160a01b038416179055610fe53084600019612985565b6000546001600160a01b031633146128d35760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146129465760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b82846022546129559190614674565b61295f9190614707565b602f556022548190612972908490614674565b61297c9190614707565b60305550505050565b6001600160a01b038316612a005760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610c54565b6001600160a01b038216612a7c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610c54565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612b5b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c54565b6001600160a01b038316612bd75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c54565b60008211612c4d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c54565b60365460ff1615612caa576037543a1115612caa5760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610c54565b612cb484846130f8565b15612efc5760315460ff16612d0b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c54565b60385460ff1615612dbd576001600160a01b03841660009081526003602052604090205460ff1615612d7c576001600160a01b038316600090815260396020526040902054431415612d5c57600080fd5b6001600160a01b0383166000908152603960205260409020439055612dbd565b6001600160a01b038416600090815260396020526040902054431415612da157600080fd5b6001600160a01b03841660009081526039602052604090204390555b602b54821115612e355760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c54565b6027546001600160a01b03848116911614801590612e6c57506001600160a01b03831660009081526003602052604090205460ff16155b15612efc57602d5482612e7e856120da565b612e88919061482e565b1115612efc5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c54565b6001600160a01b03841660009081526006602052604090205460019060ff1680612f3e57506001600160a01b03841660009081526006602052604090205460ff165b15612f47575060005b6001600160a01b03841660009081526003602052604090205460ff1615612fd057602a5474010000000000000000000000000000000000000000900460ff16158015612f9c5750602a54600160a81b900460ff165b15612fd0576000612fac306120da565b9050602f548110612fce576030548110612fc557506030545b612fce816131b8565b505b612fdc85858584613560565b95945050505050565b6000806000612ff2613a65565b90925090506130018183614707565b9250505090565b6000546001600160a01b031633146130505760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b60315460ff16156130a35760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c54565b6130ae306001610cd9565b6026546130c5906001600160a01b03166001610cd9565b600360345411156130e4576130dc436101f461482e565b6032556130e9565b436032555b6031805460ff19166001179055565b600080546001600160a01b0384811691161480159061312557506000546001600160a01b03838116911614155b801561314a57506001600160a01b0382166000908152600a602052604090205460ff16155b801561316f57506001600160a01b0383166000908152600a602052604090205460ff16155b801561318957506028546001600160a01b03838116911614155b801561319d57506001600160a01b03821615155b801561136957506001600160a01b0383163014159392505050565b602a805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055601e54601d546131fd919061482e565b6132065761353f565b60006002601e54601d5461321a919061482e565b601d546132279085614674565b6132319190614707565b61323b9190614707565b9050600061324982846146a9565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061328357613283614693565b6001600160a01b03928316602091820292909201810191909152602554604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156132f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133199190614866565b8160018151811061332c5761332c614693565b6001600160a01b0392831660209182029290920101526025546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac9479061338b9085906000908690309042906004016148b1565b600060405180830381600087803b1580156133a557600080fd5b505af11580156133b9573d6000803e3d6000fd5b5050505060006002601e54601d546133d1919061482e565b601d546133de9047614674565b6133e89190614707565b6133f29190614707565b905083156134ed576025546028546040517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201526024810187905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015613483573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134a89190614883565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b60006134f985876146a9565b111561353a57602a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015613538573d6000803e3d6000fd5b505b505050505b50602a805474ff000000000000000000000000000000000000000019169055565b603154600090610100900460ff1615613778576001600160a01b03851660009081526009602052604090205460ff16806135b257506001600160a01b03841660009081526009602052604090205460ff165b156135ff5760405162461bcd60e51b815260206004820152600960248201527f52656a65637465642e00000000000000000000000000000000000000000000006044820152606401610c54565b60315462010000900460ff166136af576136198585613be8565b60315462010000900460ff16158015613637575061363785856130f8565b156136aa5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610c54565b613778565b60006032541180156136d957506001600160a01b03851660009081526003602052604090205460ff165b80156136ea57506136ea85856130f8565b15613778576034546032546136ff90436146a9565b1015613778576001600160a01b0384166000908152600960205260408120805460ff191660011790556035805491613736836146d6565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b600061378686868686613d3a565b60808101516001600160a01b0388166000908152600160205260409020549192506137b0916146a9565b6001600160a01b03808816600090815260016020526040808220939093556060840151918816815291909120546137e7919061482e565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526007909152205460ff16801561383b57506001600160a01b03851660009081526007602052604090205460ff16155b15613882576001600160a01b0386166000908152600260205260409020546138649085906146a9565b6001600160a01b0387166000908152600260205260409020556139c2565b6001600160a01b03861660009081526007602052604090205460ff161580156138c357506001600160a01b03851660009081526007602052604090205460ff165b1561390b5780516001600160a01b0386166000908152600260205260409020546138ed919061482e565b6001600160a01b0386166000908152600260205260409020556139c2565b6001600160a01b03861660009081526007602052604090205460ff16801561394b57506001600160a01b03851660009081526007602052604090205460ff165b156139c2576001600160a01b0386166000908152600260205260409020546139749085906146a9565b6001600160a01b03808816600090815260026020526040808220939093558351918816815291909120546139a8919061482e565b6001600160a01b0386166000908152600260205260409020555b6040810151156139da576139da868260400151613f28565b60008160a0015111806139f1575060008160200151115b15613a0857613a088160a001518260200151613ff4565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360000151604051613a5191815260200190565b60405180910390a350600195945050505050565b6023546022546000918291825b600854811015613bb757826001600060088481548110613a9457613a94614693565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613aff5750816002600060088481548110613ad857613ad8614693565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613b1557602354602254945094505050509091565b6001600060088381548110613b2c57613b2c614693565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613b5b90846146a9565b92506002600060088381548110613b7457613b74614693565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613ba390836146a9565b915080613baf816146d6565b915050613a72565b50602254602354613bc89190614707565b821015613bdf576023546022549350935050509091565b90939092509050565b60315462010000900460ff1615613c675760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c54565b613c7182826130f8565b158015613c8b57506026546001600160a01b038281169116145b15610fe7576001600160a01b0382166000908152600a602052604090819020805460ff191660019081179091556031805462ff000019166201000017905542603355602a80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15991613d2e91901515815260200190565b60405180910390a15050565b613d736040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613dac6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000613db6612fe5565b9050613dc28186614674565b60808301528315613ed2576001600160a01b03861660009081526003602052604090205460ff1615613e0557601454600e55601554600f55601654601055613e50565b6001600160a01b03871660009081526003602052604090205460ff1615613e3d57601154600e55601254600f55601354601055613e50565b601754600e55601854600f556019546010555b601f54600e54613e609087614674565b613e6a9190614707565b6020830152601f54601054600f54613e82919061482e565b613e8c9087614674565b613e969190614707565b604083018190526020830151613eac919061482e565b613eb690866146a9565b82526020820151613ec8908290614674565b60a0830152613eeb565b6000602083018190526040830181905285835260a08301525b808260400151613efb9190614674565b8260a00151613f0a919061482e565b8260800151613f1991906146a9565b60608301525095945050505050565b6000613f32612fe5565b90506000613f408284614674565b30600090815260016020526040902054909150613f5e90829061482e565b3060009081526001602090815260408083209390935560079052205460ff1615613fae5730600090815260026020526040902054613f9d90849061482e565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b8160235461400291906146a9565b60235560245461401390829061482e565b6024555050565b82805461402690614623565b90600052602060002090601f016020900481019282614048576000855561408e565b82601f1061406157805160ff191683800117855561408e565b8280016001018555821561408e579182015b8281111561408e578251825591602001919060010190614073565b5061409a92915061409e565b5090565b5b8082111561409a576000815560010161409f565b600060208083528351808285015260005b818110156140e0578581018301518582016040015282016140c4565b818111156140f2576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561411a57600080fd5b5035919050565b6001600160a01b038116811461106d57600080fd5b6000806040838503121561414957600080fd5b823561415481614121565b946020939093013593505050565b8035801515811461417257600080fd5b919050565b6000806040838503121561418a57600080fd5b823561419581614121565b91506141a360208401614162565b90509250929050565b6000806000606084860312156141c157600080fd5b83356141cc81614121565b925060208401356141dc81614121565b929592945050506040919091013590565b6000806040838503121561420057600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561424e5761424e61420f565b604052919050565b600067ffffffffffffffff8211156142705761427061420f565b5060051b60200190565b600082601f83011261428b57600080fd5b813560206142a061429b83614256565b614225565b82815260059290921b840181019181810190868411156142bf57600080fd5b8286015b848110156142e35780356142d681614121565b83529183019183016142c3565b509695505050505050565b600082601f8301126142ff57600080fd5b8135602061430f61429b83614256565b82815260059290921b8401810191818101908684111561432e57600080fd5b8286015b848110156142e35780358352918301918301614332565b6000806040838503121561435c57600080fd5b823567ffffffffffffffff8082111561437457600080fd5b6143808683870161427a565b9350602085013591508082111561439657600080fd5b506143a3858286016142ee565b9150509250929050565b6000602082840312156143bf57600080fd5b813561136981614121565b6000806000606084860312156143df57600080fd5b505081359360208301359350604090920135919050565b803561417281614121565b600082601f83011261441257600080fd5b813567ffffffffffffffff81111561442c5761442c61420f565b61443f601f8201601f1916602001614225565b81815284602083860101111561445457600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff8116811461417257600080fd5b600080600080600080600060e0888a03121561449d57600080fd5b6144a6886143f6565b9650602088013567ffffffffffffffff808211156144c357600080fd5b6144cf8b838c01614401565b975060408a01359150808211156144e557600080fd5b6144f18b838c01614401565b965060608a013591508082111561450757600080fd5b6145138b838c0161427a565b955060808a013591508082111561452957600080fd5b506145368a828b016142ee565b93505061454560a08901614471565b915060c0880135905092959891949750929550565b60008060006060848603121561456f57600080fd5b61457884614162565b925061458660208501614162565b915061459460408501614162565b90509250925092565b6000602082840312156145af57600080fd5b61136982614162565b600080604083850312156145cb57600080fd5b82356145d681614121565b915060208301356145e681614121565b809150509250929050565b6000806000806080858703121561460757600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061463757607f821691505b6020821081141561465857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561468e5761468e61465e565b500290565b634e487b7160e01b600052603260045260246000fd5b6000828210156146bb576146bb61465e565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156146ea576146ea61465e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614716576147166146f1565b500490565b600181815b8085111561475657816000190482111561473c5761473c61465e565b8085161561474957918102915b93841c9390800290614720565b509250929050565b60008261476d57506001610cd3565b8161477a57506000610cd3565b8160018114614790576002811461479a576147b6565b6001915050610cd3565b60ff8411156147ab576147ab61465e565b50506001821b610cd3565b5060208310610133831016604e8410600b84101617156147d9575081810a610cd3565b6147e3838361471b565b80600019048211156147f7576147f761465e565b029392505050565b600061136960ff84168361475e565b600060ff821660ff8114156148255761482561465e565b60010192915050565b600082198211156148415761484161465e565b500190565b6000611369838361475e565b600082614861576148616146f1565b500690565b60006020828403121561487857600080fd5b815161136981614121565b60008060006060848603121561489857600080fd5b8351925060208401519150604084015190509250925092565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156149015784516001600160a01b0316835293830193918301916001016148dc565b50506001600160a01b0396909616606085015250505060800152939250505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212202065c339b219984149d23ea844856a2a60d35ab6c8a10946a3525016c9c9abe064736f6c634300080b0033
Deployed Bytecode
0x6080604052600436106103c75760003560e01c80636612e66f116101f2578063b6f8f8dc1161010d578063dd62ed3e116100a0578063eafb5a3c1161006f578063eafb5a3c14610b08578063eec2744e14610b28578063f6540ec714610b48578063fb78680d14610b5e57600080fd5b8063dd62ed3e14610a76578063e79d416014610abc578063e7c281d614610ad2578063ea08d30b14610af257600080fd5b8063c8607952116100dc578063c860795214610a14578063d038b07e14610a2a578063d9e6646014610a40578063dc44b6a014610a6057600080fd5b8063b6f8f8dc146109a8578063bbcea6bf146109c8578063c49b9a80146109de578063c5d24189146109fe57600080fd5b806388790a68116101855780638da5cb5b116101545780638da5cb5b146108fc57806395d89b4114610953578063a457c2d714610968578063a9059cbb1461098857600080fd5b806388790a68146108ad57806388f82020146108c3578063893d20e8146108fc57806389fd9bc11461091a57600080fd5b80636cbdd5e3116101c15780636cbdd5e31461084257806370a0823114610858578063715018a61461087857806380c581d11461088d57600080fd5b80636612e66f146107cc5780636639dd93146107ec5780636bc87c3a1461080c5780636c6d9fa11461082257600080fd5b8063384f6b51116102e257806350a8e0161161027557806358fa63ca1161024457806358fa63ca146107565780635d098b381461077657806363325a671461079657806364038409146107b657600080fd5b806350a8e016146106bd5780635342acb4146106dd578063571ac8b014610716578063575f18e51461073657600080fd5b806345e8c85c116102b157806345e8c85c146106505780634a74bb02146106665780634ef3cce5146106875780634fb2e45d1461069d57600080fd5b8063384f6b51146105da57806339509351146105f05780633f3cf56c14610610578063452ed4f11461063057600080fd5b806318160ddd1161035a578063260039571161032957806326003957146105595780632610eaca146105795780632d83811914610599578063313ce567146105b957600080fd5b806318160ddd146104f957806320800a001461050e57806322976e0d1461052357806323b872dd1461053957600080fd5b8063095ea7b311610396578063095ea7b31461047457806313114a9d146104a457806313e46192146104c357806315639c1b146104e357600080fd5b806303fd2a45146103d357806306fdde03146104105780630758d92414610432578063092316021461045257600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506028546103f3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041c57600080fd5b50610425610b7e565b60405161040791906140b3565b34801561043e57600080fd5b506025546103f3906001600160a01b031681565b34801561045e57600080fd5b5061047261046d366004614108565b610c10565b005b34801561048057600080fd5b5061049461048f366004614136565b610cc2565b6040519015158152602001610407565b3480156104b057600080fd5b506024545b604051908152602001610407565b3480156104cf57600080fd5b506104726104de366004614177565b610cd9565b3480156104ef57600080fd5b506104b5600e5481565b34801561050557600080fd5b506022546104b5565b34801561051a57600080fd5b50610472610feb565b34801561052f57600080fd5b506104b560105481565b34801561054557600080fd5b506104946105543660046141ac565b611070565b34801561056557600080fd5b506104726105743660046141ed565b6110c3565b34801561058557600080fd5b50610472610594366004614349565b6111d4565b3480156105a557600080fd5b506104b56105b4366004614108565b6112d9565b3480156105c557600080fd5b506020805460405160ff909116815201610407565b3480156105e657600080fd5b506104b5601d5481565b3480156105fc57600080fd5b5061049461060b366004614136565b611370565b34801561061c57600080fd5b5061047261062b3660046141ed565b6113a7565b34801561063c57600080fd5b506026546103f3906001600160a01b031681565b34801561065c57600080fd5b506104b560175481565b34801561067257600080fd5b50602a5461049490600160a81b900460ff1681565b34801561069357600080fd5b506104b5601e5481565b3480156106a957600080fd5b506104726106b83660046143ad565b6114b8565b3480156106c957600080fd5b506031546104949062010000900460ff1681565b3480156106e957600080fd5b506104946106f83660046143ad565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561072257600080fd5b506104946107313660046143ad565b61171f565b34801561074257600080fd5b506104726107513660046143ca565b61172d565b34801561076257600080fd5b506029546103f3906001600160a01b031681565b34801561078257600080fd5b506104726107913660046143ad565b6117d1565b3480156107a257600080fd5b506104726107b1366004614482565b611899565b3480156107c257600080fd5b506104b5602c5481565b3480156107d857600080fd5b506104726107e7366004614177565b611f70565b3480156107f857600080fd5b506104726108073660046141ed565b611fe3565b34801561081857600080fd5b506104b5600f5481565b34801561082e57600080fd5b5061047261083d3660046143ca565b612036565b34801561084e57600080fd5b506104b560195481565b34801561086457600080fd5b506104b56108733660046143ad565b6120da565b34801561088457600080fd5b50610472612139565b34801561089957600080fd5b506104726108a8366004614177565b6121d6565b3480156108b957600080fd5b506104b560155481565b3480156108cf57600080fd5b506104946108de3660046143ad565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561090857600080fd5b506000546001600160a01b03166103f3565b34801561092657600080fd5b506104946109353660046143ad565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561095f57600080fd5b506104256122d7565b34801561097457600080fd5b50610494610983366004614136565b6122e6565b34801561099457600080fd5b506104946109a3366004614136565b61231d565b3480156109b457600080fd5b506104726109c336600461455a565b61232a565b3480156109d457600080fd5b506104b560145481565b3480156109ea57600080fd5b506104726109f936600461459d565b6123ae565b348015610a0a57600080fd5b506104b560135481565b348015610a2057600080fd5b506104b560165481565b348015610a3657600080fd5b506104b560115481565b348015610a4c57600080fd5b506027546103f3906001600160a01b031681565b348015610a6c57600080fd5b506104b560125481565b348015610a8257600080fd5b506104b5610a913660046145b8565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610ac857600080fd5b506104b560355481565b348015610ade57600080fd5b50610472610aed3660046143ca565b612469565b348015610afe57600080fd5b506104b560185481565b348015610b1457600080fd5b50610472610b233660046143ad565b61250d565b348015610b3457600080fd5b50610472610b43366004614177565b61288b565b348015610b5457600080fd5b506104b5602e5481565b348015610b6a57600080fd5b50610472610b793660046145f1565b6128fe565b6060600c8054610b8d90614623565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb990614623565b8015610c065780601f10610bdb57610100808354040283529160200191610c06565b820191906000526020600020905b815481529060010190602001808311610be957829003601f168201915b5050505050905090565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061492383398151915260448201526064015b60405180910390fd5b604b811015610cae5760405162461bcd60e51b815260206004820152601060248201527f796f75206675636b696e67206a656574000000000000000000000000000000006044820152606401610c54565b610cbc81633b9aca00614674565b60375550565b6000610ccf338484612985565b5060015b92915050565b6000546001600160a01b03163314610d215760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b60018115151415610e56576001600160a01b03821660009081526007602052604090205460ff1615610d955760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610c54565b6001600160a01b03821660009081526001602052604090205415610def576001600160a01b038216600090815260016020526040902054610dd5906112d9565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b80610fe7576001600160a01b03821660009081526007602052604090205460ff16610ec35760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610c54565b60005b600854811015610fe557826001600160a01b031660088281548110610eed57610eed614693565b6000918252602090912001546001600160a01b03161415610fd35760088054610f18906001906146a9565b81548110610f2857610f28614693565b600091825260209091200154600880546001600160a01b039092169183908110610f5457610f54614693565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff191690556008805480610fac57610fac6146c0565b600082815260209020810160001990810180546001600160a01b0319169055019055610fe5565b80610fdd816146d6565b915050610ec6565b505b5050565b6000546001600160a01b031633146110335760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561106d573d6000803e3d6000fd5b50565b600061107d848484612add565b506001600160a01b0384166000908152600560209081526040808320338085529252909120546110b99186916110b49086906146a9565b612985565b5060019392505050565b6000546001600160a01b0316331461110b5760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b6000818360225461111c9190614674565b6111269190614707565b90506103e86022546111389190614707565b8110156111ad5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610c54565b602d819055600b5482906111c2908590614674565b6111cc9190614707565b602e55505050565b80518251146112255760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c54565b60005b82518160ff161015610fe557818160ff168151811061124957611249614693565b602002602001015161125a336120da565b101561126557600080fd5b6112c633848360ff168151811061127e5761127e614693565b602090810291909101810151905461129a9060ff16600a6147ff565b858560ff16815181106112af576112af614693565b60200260200101516112c19190614674565b612add565b50806112d18161480e565b915050611228565b60006023548211156113535760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610c54565b600061135d612fe5565b90506113698184614707565b9392505050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610ccf9185906110b490869061482e565b6000546001600160a01b031633146113ef5760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b600081836022546114009190614674565b61140a9190614707565b90506103e860225461141c9190614707565b8110156114915760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c54565b602b819055600b5482906114a6908590614674565b6114b09190614707565b602c55505050565b6000546001600160a01b031633146115005760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b6001600160a01b03811661157c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c54565b6028546001600160a01b03828116911614156116005760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c54565b60008054611619916001600160a01b0390911690611f70565b611624816001611f70565b61162f816001610cd9565b600054602a546001600160a01b039081169116141561166457602a80546001600160a01b0319166001600160a01b0383161790555b600054611679906001600160a01b03166120da565b600080546001600160a01b0390811682526005602090815260408084208684168552909152822092909255805490916116b291166120da565b11156116d4576000546116d2906001600160a01b0316826112c1826120da565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610cd382600019610cc2565b6000546001600160a01b031633146117755760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b601a5483111580156117895750601b548211155b80156117975750601c548111155b6117a057600080fd5b610d7a816117ae848661482e565b6117b8919061482e565b11156117c357600080fd5b601792909255601855601955565b6000546001600160a01b031633146118195760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b602a546001600160a01b03828116911614156118775760405162461bcd60e51b815260206004820152601360248201527f57616c6c657420616c72656164792073657421000000000000000000000000006044820152606401610c54565b602a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118e15760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b603a5460ff16156118f157600080fd5b60c88451106118ff57600080fd5b825184511461190d57600080fd5b60345415801561191d5750603754155b8015611932575060315462010000900460ff16155b61193b57600080fd5b604b81101561198c5760405162461bcd60e51b815260206004820152601060248201527f796f75206675636b696e67206a656574000000000000000000000000000000006044820152606401610c54565b602a80546001600160a01b0319166001600160a01b03891617905585516119ba90600c90602089019061401a565b5084516119ce90600d90602088019061401a565b50655af3107a4000600b556020805460ff191660099081179091556021556021546119fa90600a614846565b600b54611a079190614674565b6022819055611a1890600019614852565b611a24906000196146a9565b602355602754602580546001600160a01b0319166001600160a01b039092169182179055604080517fc45a0155000000000000000000000000000000000000000000000000000000008152905163c45a0155916004808201926020929091908290030181865afa158015611a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac09190614866565b6001600160a01b031663c9c65396602560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b459190614866565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190614866565b602680546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff1916600117905530835260058252808320602554909416835292905220600019905560ff8216603455611c3881633b9aca00614674565b603755602254620186a090611c4f906101c2614674565b611c599190614707565b602b55600b54620186a090611c70906101f4614674565b611c7a9190614707565b602c556022546103e890611c8f90600a614674565b611c999190614707565b602d55600b546103e890611cae90600a614674565b611cb89190614707565b602e5560225461271090611ccd906005614674565b611cd79190614707565b602f556022546103e890611cec906005614674565b611cf69190614707565b603055602754611d11906001600160a01b0316600019610cc2565b50603a805460ff19166001908117909155602354906000611d3a6000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055611d666000546001600160a01b031690565b6029546022546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602554611dc99030906001600160a01b0316600019612985565b60005b8451811015611e5957602054600090611de99060ff16600a6147ff565b858381518110611dfb57611dfb614693565b6020026020010151611e0d9190614674565b9050611e44611e246000546001600160a01b031690565b878481518110611e3657611e36614693565b602002602001015183612add565b50508080611e51906146d6565b915050611dcc565b50611e85611e6f6000546001600160a01b031690565b306112c16108736000546001600160a01b031690565b506025546001600160a01b031663f305d7194730611ea2816120da565b600080611eb76000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611f37573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f5c9190614883565b505050611f67613008565b50505050505050565b6000546001600160a01b03163314611fb85760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461202b5760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b601d91909155601e55565b6000546001600160a01b0316331461207e5760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b601a5483111580156120925750601b548211155b80156120a05750601c548111155b6120a957600080fd5b610d7a816120b7848661482e565b6120c1919061482e565b11156120cc57600080fd5b601192909255601255601355565b6001600160a01b03811660009081526007602052604081205460ff161561211757506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610cd3906112d9565b6000546001600160a01b031633146121815760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b6000805461219a916001600160a01b0390911690611f70565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461221e5760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b8061224557506001600160a01b03166000908152600360205260409020805460ff19169055565b600454156122ac5762093a806004544261225f91906146a9565b116122ac5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610c54565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6060600d8054610b8d90614623565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610ccf9185906110b49086906146a9565b60006110b9338484612add565b6000546001600160a01b031633146123725760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b603180549315156101000261ff0019909416939093179092556036805491151560ff199283161790556038805492151592909116919091179055565b6000546001600160a01b031633146123f65760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b602a8054821515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061245e90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146124b15760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b601a5483111580156124c55750601b548211155b80156124d35750601c548111155b6124dc57600080fd5b610d7a816124ea848661482e565b6124f4919061482e565b11156124ff57600080fd5b601492909255601555601655565b6000546001600160a01b031633146125555760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125be9190614866565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f9190614866565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b69190614866565b90506001600160a01b03811661284757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127289190614866565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127999190614866565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156127fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128229190614866565b602680546001600160a01b0319166001600160a01b0392909216919091179055612863565b602680546001600160a01b0319166001600160a01b0383161790555b602580546001600160a01b0319166001600160a01b038416179055610fe53084600019612985565b6000546001600160a01b031633146128d35760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146129465760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b82846022546129559190614674565b61295f9190614707565b602f556022548190612972908490614674565b61297c9190614707565b60305550505050565b6001600160a01b038316612a005760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610c54565b6001600160a01b038216612a7c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610c54565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612b5b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c54565b6001600160a01b038316612bd75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c54565b60008211612c4d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c54565b60365460ff1615612caa576037543a1115612caa5760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610c54565b612cb484846130f8565b15612efc5760315460ff16612d0b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c54565b60385460ff1615612dbd576001600160a01b03841660009081526003602052604090205460ff1615612d7c576001600160a01b038316600090815260396020526040902054431415612d5c57600080fd5b6001600160a01b0383166000908152603960205260409020439055612dbd565b6001600160a01b038416600090815260396020526040902054431415612da157600080fd5b6001600160a01b03841660009081526039602052604090204390555b602b54821115612e355760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c54565b6027546001600160a01b03848116911614801590612e6c57506001600160a01b03831660009081526003602052604090205460ff16155b15612efc57602d5482612e7e856120da565b612e88919061482e565b1115612efc5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c54565b6001600160a01b03841660009081526006602052604090205460019060ff1680612f3e57506001600160a01b03841660009081526006602052604090205460ff165b15612f47575060005b6001600160a01b03841660009081526003602052604090205460ff1615612fd057602a5474010000000000000000000000000000000000000000900460ff16158015612f9c5750602a54600160a81b900460ff165b15612fd0576000612fac306120da565b9050602f548110612fce576030548110612fc557506030545b612fce816131b8565b505b612fdc85858584613560565b95945050505050565b6000806000612ff2613a65565b90925090506130018183614707565b9250505090565b6000546001600160a01b031633146130505760405162461bcd60e51b815260206004820181905260248201526000805160206149238339815191526044820152606401610c54565b60315460ff16156130a35760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c54565b6130ae306001610cd9565b6026546130c5906001600160a01b03166001610cd9565b600360345411156130e4576130dc436101f461482e565b6032556130e9565b436032555b6031805460ff19166001179055565b600080546001600160a01b0384811691161480159061312557506000546001600160a01b03838116911614155b801561314a57506001600160a01b0382166000908152600a602052604090205460ff16155b801561316f57506001600160a01b0383166000908152600a602052604090205460ff16155b801561318957506028546001600160a01b03838116911614155b801561319d57506001600160a01b03821615155b801561136957506001600160a01b0383163014159392505050565b602a805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055601e54601d546131fd919061482e565b6132065761353f565b60006002601e54601d5461321a919061482e565b601d546132279085614674565b6132319190614707565b61323b9190614707565b9050600061324982846146a9565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061328357613283614693565b6001600160a01b03928316602091820292909201810191909152602554604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156132f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133199190614866565b8160018151811061332c5761332c614693565b6001600160a01b0392831660209182029290920101526025546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac9479061338b9085906000908690309042906004016148b1565b600060405180830381600087803b1580156133a557600080fd5b505af11580156133b9573d6000803e3d6000fd5b5050505060006002601e54601d546133d1919061482e565b601d546133de9047614674565b6133e89190614707565b6133f29190614707565b905083156134ed576025546028546040517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201526024810187905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015613483573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134a89190614883565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b60006134f985876146a9565b111561353a57602a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015613538573d6000803e3d6000fd5b505b505050505b50602a805474ff000000000000000000000000000000000000000019169055565b603154600090610100900460ff1615613778576001600160a01b03851660009081526009602052604090205460ff16806135b257506001600160a01b03841660009081526009602052604090205460ff165b156135ff5760405162461bcd60e51b815260206004820152600960248201527f52656a65637465642e00000000000000000000000000000000000000000000006044820152606401610c54565b60315462010000900460ff166136af576136198585613be8565b60315462010000900460ff16158015613637575061363785856130f8565b156136aa5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610c54565b613778565b60006032541180156136d957506001600160a01b03851660009081526003602052604090205460ff165b80156136ea57506136ea85856130f8565b15613778576034546032546136ff90436146a9565b1015613778576001600160a01b0384166000908152600960205260408120805460ff191660011790556035805491613736836146d6565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b600061378686868686613d3a565b60808101516001600160a01b0388166000908152600160205260409020549192506137b0916146a9565b6001600160a01b03808816600090815260016020526040808220939093556060840151918816815291909120546137e7919061482e565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526007909152205460ff16801561383b57506001600160a01b03851660009081526007602052604090205460ff16155b15613882576001600160a01b0386166000908152600260205260409020546138649085906146a9565b6001600160a01b0387166000908152600260205260409020556139c2565b6001600160a01b03861660009081526007602052604090205460ff161580156138c357506001600160a01b03851660009081526007602052604090205460ff165b1561390b5780516001600160a01b0386166000908152600260205260409020546138ed919061482e565b6001600160a01b0386166000908152600260205260409020556139c2565b6001600160a01b03861660009081526007602052604090205460ff16801561394b57506001600160a01b03851660009081526007602052604090205460ff165b156139c2576001600160a01b0386166000908152600260205260409020546139749085906146a9565b6001600160a01b03808816600090815260026020526040808220939093558351918816815291909120546139a8919061482e565b6001600160a01b0386166000908152600260205260409020555b6040810151156139da576139da868260400151613f28565b60008160a0015111806139f1575060008160200151115b15613a0857613a088160a001518260200151613ff4565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360000151604051613a5191815260200190565b60405180910390a350600195945050505050565b6023546022546000918291825b600854811015613bb757826001600060088481548110613a9457613a94614693565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613aff5750816002600060088481548110613ad857613ad8614693565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613b1557602354602254945094505050509091565b6001600060088381548110613b2c57613b2c614693565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613b5b90846146a9565b92506002600060088381548110613b7457613b74614693565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613ba390836146a9565b915080613baf816146d6565b915050613a72565b50602254602354613bc89190614707565b821015613bdf576023546022549350935050509091565b90939092509050565b60315462010000900460ff1615613c675760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c54565b613c7182826130f8565b158015613c8b57506026546001600160a01b038281169116145b15610fe7576001600160a01b0382166000908152600a602052604090819020805460ff191660019081179091556031805462ff000019166201000017905542603355602a80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15991613d2e91901515815260200190565b60405180910390a15050565b613d736040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613dac6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000613db6612fe5565b9050613dc28186614674565b60808301528315613ed2576001600160a01b03861660009081526003602052604090205460ff1615613e0557601454600e55601554600f55601654601055613e50565b6001600160a01b03871660009081526003602052604090205460ff1615613e3d57601154600e55601254600f55601354601055613e50565b601754600e55601854600f556019546010555b601f54600e54613e609087614674565b613e6a9190614707565b6020830152601f54601054600f54613e82919061482e565b613e8c9087614674565b613e969190614707565b604083018190526020830151613eac919061482e565b613eb690866146a9565b82526020820151613ec8908290614674565b60a0830152613eeb565b6000602083018190526040830181905285835260a08301525b808260400151613efb9190614674565b8260a00151613f0a919061482e565b8260800151613f1991906146a9565b60608301525095945050505050565b6000613f32612fe5565b90506000613f408284614674565b30600090815260016020526040902054909150613f5e90829061482e565b3060009081526001602090815260408083209390935560079052205460ff1615613fae5730600090815260026020526040902054613f9d90849061482e565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b8160235461400291906146a9565b60235560245461401390829061482e565b6024555050565b82805461402690614623565b90600052602060002090601f016020900481019282614048576000855561408e565b82601f1061406157805160ff191683800117855561408e565b8280016001018555821561408e579182015b8281111561408e578251825591602001919060010190614073565b5061409a92915061409e565b5090565b5b8082111561409a576000815560010161409f565b600060208083528351808285015260005b818110156140e0578581018301518582016040015282016140c4565b818111156140f2576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561411a57600080fd5b5035919050565b6001600160a01b038116811461106d57600080fd5b6000806040838503121561414957600080fd5b823561415481614121565b946020939093013593505050565b8035801515811461417257600080fd5b919050565b6000806040838503121561418a57600080fd5b823561419581614121565b91506141a360208401614162565b90509250929050565b6000806000606084860312156141c157600080fd5b83356141cc81614121565b925060208401356141dc81614121565b929592945050506040919091013590565b6000806040838503121561420057600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561424e5761424e61420f565b604052919050565b600067ffffffffffffffff8211156142705761427061420f565b5060051b60200190565b600082601f83011261428b57600080fd5b813560206142a061429b83614256565b614225565b82815260059290921b840181019181810190868411156142bf57600080fd5b8286015b848110156142e35780356142d681614121565b83529183019183016142c3565b509695505050505050565b600082601f8301126142ff57600080fd5b8135602061430f61429b83614256565b82815260059290921b8401810191818101908684111561432e57600080fd5b8286015b848110156142e35780358352918301918301614332565b6000806040838503121561435c57600080fd5b823567ffffffffffffffff8082111561437457600080fd5b6143808683870161427a565b9350602085013591508082111561439657600080fd5b506143a3858286016142ee565b9150509250929050565b6000602082840312156143bf57600080fd5b813561136981614121565b6000806000606084860312156143df57600080fd5b505081359360208301359350604090920135919050565b803561417281614121565b600082601f83011261441257600080fd5b813567ffffffffffffffff81111561442c5761442c61420f565b61443f601f8201601f1916602001614225565b81815284602083860101111561445457600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff8116811461417257600080fd5b600080600080600080600060e0888a03121561449d57600080fd5b6144a6886143f6565b9650602088013567ffffffffffffffff808211156144c357600080fd5b6144cf8b838c01614401565b975060408a01359150808211156144e557600080fd5b6144f18b838c01614401565b965060608a013591508082111561450757600080fd5b6145138b838c0161427a565b955060808a013591508082111561452957600080fd5b506145368a828b016142ee565b93505061454560a08901614471565b915060c0880135905092959891949750929550565b60008060006060848603121561456f57600080fd5b61457884614162565b925061458660208501614162565b915061459460408501614162565b90509250925092565b6000602082840312156145af57600080fd5b61136982614162565b600080604083850312156145cb57600080fd5b82356145d681614121565b915060208301356145e681614121565b809150509250929050565b6000806000806080858703121561460757600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061463757607f821691505b6020821081141561465857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561468e5761468e61465e565b500290565b634e487b7160e01b600052603260045260246000fd5b6000828210156146bb576146bb61465e565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156146ea576146ea61465e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614716576147166146f1565b500490565b600181815b8085111561475657816000190482111561473c5761473c61465e565b8085161561474957918102915b93841c9390800290614720565b509250929050565b60008261476d57506001610cd3565b8161477a57506000610cd3565b8160018114614790576002811461479a576147b6565b6001915050610cd3565b60ff8411156147ab576147ab61465e565b50506001821b610cd3565b5060208310610133831016604e8410600b84101617156147d9575081810a610cd3565b6147e3838361471b565b80600019048211156147f7576147f761465e565b029392505050565b600061136960ff84168361475e565b600060ff821660ff8114156148255761482561465e565b60010192915050565b600082198211156148415761484161465e565b500190565b6000611369838361475e565b600082614861576148616146f1565b500690565b60006020828403121561487857600080fd5b815161136981614121565b60008060006060848603121561489857600080fd5b8351925060208401519150604084015190509250925092565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156149015784516001600160a01b0316835293830193918301916001016148dc565b50506001600160a01b0396909616606085015250505060800152939250505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212202065c339b219984149d23ea844856a2a60d35ab6c8a10946a3525016c9c9abe064736f6c634300080b0033
Deployed Bytecode Sourcemap
8203:27204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10201:64;;;;;;;;;;-1:-1:-1;10201:64:0;;;;-1:-1:-1;;;;;10201:64:0;;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;10201:64:0;;;;;;;;17310:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10072:35::-;;;;;;;;;;-1:-1:-1;10072:35:0;;;;-1:-1:-1;;;;;10072:35:0;;;20631:154;;;;;;;;;;-1:-1:-1;20631:154:0;;;;;:::i;:::-;;:::i;:::-;;17986:161;;;;;;;;;;-1:-1:-1;17986:161:0;;;;;:::i;:::-;;:::i;:::-;;;1933:14:1;;1926:22;1908:41;;1896:2;1881:18;17986:161:0;1768:187:1;24903:87:0;;;;;;;;;;-1:-1:-1;24972:10:0;;24903:87;;;2106:25:1;;;2094:2;2079:18;24903:87:0;1960:177:1;23989:906:0;;;;;;;;;;-1:-1:-1;23989:906:0;;;;;:::i;:::-;;:::i;8984:30::-;;;;;;;;;;;;;;;;17063:83;;;;;;;;;;-1:-1:-1;17136:7:0;;17063:83;;34824:107;;;;;;;;;;;;;:::i;9062:34::-;;;;;;;;;;;;;;;;18283:266;;;;;;;;;;-1:-1:-1;18283:266:0;;;;;:::i;:::-;;:::i;22815:340::-;;;;;;;;;;-1:-1:-1;22815:340:0;;;;;:::i;:::-;;:::i;29998:373::-;;;;;;;;;;-1:-1:-1;29998:373:0;;;;;:::i;:::-;;:::i;25330:250::-;;;;;;;;;;-1:-1:-1;25330:250:0;;;;;:::i;:::-;;:::i;17152:71::-;;;;;;;;;;-1:-1:-1;17211:9:0;;;17152:71;;17211:9;;;;6149:36:1;;6122:18;17152:71:0;6007:184:1;9726:36:0;;;;;;;;;;;;;;;;18557:215;;;;;;;;;;-1:-1:-1;18557:215:0;;;;;:::i;:::-;;:::i;22467:340::-;;;;;;;;;;-1:-1:-1;22467:340:0;;;;;:::i;:::-;;:::i;10114:21::-;;;;;;;;;;-1:-1:-1;10114:21:0;;;;-1:-1:-1;;;;;10114:21:0;;;9403:51;;;;;;;;;;;;;;;;10424:41;;;;;;;;;;-1:-1:-1;10424:41:0;;;;-1:-1:-1;;;10424:41:0;;;;;;9769:36;;;;;;;;;;;;;;;;15701:807;;;;;;;;;;-1:-1:-1;15701:807:0;;;;;:::i;:::-;;:::i;10776:36::-;;;;;;;;;;-1:-1:-1;10776:36:0;;;;;;;;;;;20134:123;;;;;;;;;;-1:-1:-1;20134:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;20222:27:0;20198:4;20222:27;;;:18;:27;;;;;;;;;20134:123;18155:120;;;;;;;;;;-1:-1:-1;18155:120:0;;;;;:::i;:::-;;:::i;21836:455::-;;;;;;;;;;-1:-1:-1;21836:455:0;;;;;:::i;:::-;;:::i;10272:64::-;;;;;;;;;;-1:-1:-1;10272:64:0;;;;-1:-1:-1;;;;;10272:64:0;;;23460:202;;;;;;;;;;-1:-1:-1;23460:202:0;;;;;:::i;:::-;;:::i;12673:2388::-;;;;;;;;;;-1:-1:-1;12673:2388:0;;;;;:::i;:::-;;:::i;10513:28::-;;;;;;;;;;;;;;;;23849:132;;;;;;;;;;-1:-1:-1;23849:132:0;;;;;:::i;:::-;;:::i;22299:160::-;;;;;;;;;;-1:-1:-1;22299:160:0;;;;;:::i;:::-;;:::i;9021:34::-;;;;;;;;;;;;;;;;20946:435;;;;;;;;;;-1:-1:-1;20946:435:0;;;;;:::i;:::-;;:::i;9523:55::-;;;;;;;;;;;;;;;;17605:198;;;;;;;;;;-1:-1:-1;17605:198:0;;;;;:::i;:::-;;:::i;16516:194::-;;;;;;;;;;;;;:::i;19574:424::-;;;;;;;;;;-1:-1:-1;19574:424:0;;;;;:::i;:::-;;:::i;9306:38::-;;;;;;;;;;;;;;;;20006:120;;;;;;;;;;-1:-1:-1;20006:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;20098:20:0;20074:4;20098:20;;;:11;:20;;;;;;;;;20006:120;17387:71;;;;;;;;;;-1:-1:-1;17430:7:0;15679:6;-1:-1:-1;;;;;15679:6:0;17387:71;;20265:132;;;;;;;;;;-1:-1:-1;20265:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;20358:31:0;20334:4;20358:31;;;:22;:31;;;;;;;;;20265:132;17229:75;;;;;;;;;;;;;:::i;18780:225::-;;;;;;;;;;-1:-1:-1;18780:225:0;;;;;:::i;:::-;;:::i;17811:167::-;;;;;;;;;;-1:-1:-1;17811:167:0;;;;;:::i;:::-;;:::i;20405:218::-;;;;;;;;;;-1:-1:-1;20405:218:0;;;;;:::i;:::-;;:::i;9265:34::-;;;;;;;;;;;;;;;;23670:171;;;;;;;;;;-1:-1:-1;23670:171:0;;;;;:::i;:::-;;:::i;9209:47::-;;;;;;;;;;;;;;;;9351:39;;;;;;;;;;;;;;;;9105:43;;;;;;;;;;;;;;;;10163:29;;;;;;;;;;-1:-1:-1;10163:29:0;;;;-1:-1:-1;;;;;10163:29:0;;;9155:47;;;;;;;;;;;;;;;;17464:133;;;;;;;;;;-1:-1:-1;17464:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;17566:19:0;;;17548:7;17566:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17464:133;10937:32;;;;;;;;;;;;;;;;21389:439;;;;;;;;;;-1:-1:-1;21389:439:0;;;;;:::i;:::-;;:::i;9461:55::-;;;;;;;;;;;;;;;;19013:553;;;;;;;;;;-1:-1:-1;19013:553:0;;;;;:::i;:::-;;:::i;20793:141::-;;;;;;;;;;-1:-1:-1;20793:141:0;;;;;:::i;:::-;;:::i;10587:30::-;;;;;;;;;;;;;;;;23163:289;;;;;;;;;;-1:-1:-1;23163:289:0;;;;;:::i;:::-;;:::i;17310:71::-;17349:13;17373:5;17366:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17310:71;:::o;20631:154::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;;;;;;;;;20715:2:::1;20708:3;:9;;20700:38;;;::::0;-1:-1:-1;;;20700:38:0;;11399:2:1;20700:38:0::1;::::0;::::1;11381:21:1::0;11438:2;11418:18;;;11411:30;11477:18;11457;;;11450:46;11513:18;;20700:38:0::1;11197:340:1::0;20700:38:0::1;20765:12;:3:::0;20771:6:::1;20765:12;:::i;:::-;20749:13;:28:::0;-1:-1:-1;20631:154:0:o;17986:161::-;18061:4;18078:39;189:10;18101:7;18110:6;18078:8;:39::i;:::-;-1:-1:-1;18135:4:0;17986:161;;;;;:::o;23989:906::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;24094:4:::1;24083:15:::0;::::1;;;24079:809;;;-1:-1:-1::0;;;;;24124:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;24123:21;24115:62;;;::::0;-1:-1:-1;;;24115:62:0;;12106:2:1;24115:62:0::1;::::0;::::1;12088:21:1::0;12145:2;12125:18;;;12118:30;12184;12164:18;;;12157:58;12232:18;;24115:62:0::1;11904:352:1::0;24115:62:0::1;-1:-1:-1::0;;;;;24195:16:0;::::1;24214:1;24195:16:::0;;;:7:::1;:16;::::0;;;;;:20;24192:116:::1;;-1:-1:-1::0;;;;;24275:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;24255:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;24236:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;24192:116:::1;-1:-1:-1::0;;;;;;24322:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;24322:27:0::1;24345:4;24322:27:::0;;::::1;::::0;;;24364:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;24364:23:0::1;::::0;;::::1;::::0;;23989:906::o;24079:809::-:1;24409:16:::0;24405:483:::1;;-1:-1:-1::0;;;;;24450:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;24442:61;;;::::0;-1:-1:-1;;;24442:61:0;;12463:2:1;24442:61:0::1;::::0;::::1;12445:21:1::0;12502:2;12482:18;;;12475:30;12541;12521:18;;;12514:58;12589:18;;24442:61:0::1;12261:352:1::0;24442:61:0::1;24523:9;24518:359;24542:9;:16:::0;24538:20;::::1;24518:359;;;24604:7;-1:-1:-1::0;;;;;24588:23:0::1;:9;24598:1;24588:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;24588:12:0::1;:23;24584:278;;;24651:9;24661:16:::0;;:20:::1;::::0;24680:1:::1;::::0;24661:20:::1;:::i;:::-;24651:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;24636:9:::1;:12:::0;;-1:-1:-1;;;;;24651:31:0;;::::1;::::0;24646:1;;24636:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;24636:46:0::1;-1:-1:-1::0;;;;;24636:46:0;;::::1;;::::0;;24705:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;24748:11:::1;:20:::0;;;;:28;;-1:-1:-1;;24748:28:0::1;::::0;;24799:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;24799:15:0;;;;;-1:-1:-1;;;;;;24799:15:0::1;::::0;;;;;24837:5:::1;;24584:278;24560:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24518:359;;;;24405:483;23989:906:::0;;:::o;34824:107::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;15652:7;15679:6;;34875:48:::1;::::0;-1:-1:-1;;;;;15679:6:0;;;;34901:21:::1;34875:48:::0;::::1;;;::::0;34901:21;;34875:48;15652:7;34875:48;34901:21;15679:6;34875:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;34824:107::o:0;18283:266::-;18381:4;18398:36;18408:6;18416:9;18427:6;18398:9;:36::i;:::-;-1:-1:-1;;;;;;18476:19:0;;;;;;:11;:19;;;;;;;;189:10;18476:33;;;;;;;;;18445:74;;18454:6;;18476:42;;18512:6;;18476:42;:::i;:::-;18445:8;:74::i;:::-;-1:-1:-1;18537:4:0;18283:266;;;;;:::o;22815:340::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;22905:13:::1;22943:7;22932;22922;;:17;;;;:::i;:::-;22921:29;;;;:::i;:::-;22905:45;;22989:4;22979:7;;:14;;;;:::i;:::-;22969:5;:25;;22961:88;;;::::0;-1:-1:-1;;;22961:88:0;;13782:2:1;22961:88:0::1;::::0;::::1;13764:21:1::0;13821:2;13801:18;;;13794:30;13860:34;13840:18;;;13833:62;13931:20;13911:18;;;13904:48;13969:19;;22961:88:0::1;13580:414:1::0;22961:88:0::1;23060:14;:22:::0;;;23112:14:::1;::::0;23140:7;;23112:24:::1;::::0;23129:7;;23112:24:::1;:::i;:::-;23111:36;;;;:::i;:::-;23093:15;:54:::0;-1:-1:-1;;;22815:340:0:o;29998:373::-;30123:7;:14;30104:8;:15;:33;30096:67;;;;-1:-1:-1;;;30096:67:0;;14201:2:1;30096:67:0;;;14183:21:1;14240:2;14220:18;;;14213:30;14279:23;14259:18;;;14252:51;14320:18;;30096:67:0;13999:345:1;30096:67:0;30179:7;30174:190;30196:8;:15;30192:1;:19;;;30174:190;;;30266:7;30274:1;30266:10;;;;;;;;;;:::i;:::-;;;;;;;30241:21;30251:10;30241:9;:21::i;:::-;:35;;30233:44;;;;;;30292:60;30302:10;30314:8;30323:1;30314:11;;;;;;;;;;:::i;:::-;;;;;;;;;;;;30342:9;;30338:13;;30342:9;;30338:2;:13;:::i;:::-;30327:7;30335:1;30327:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;30292:9;:60::i;:::-;-1:-1:-1;30213:3:0;;;;:::i;:::-;;;;30174:190;;25330:250;25396:7;25435;;25424;:18;;25416:73;;;;-1:-1:-1;;;25416:73:0;;16114:2:1;25416:73:0;;;16096:21:1;16153:2;16133:18;;;16126:30;16192:34;16172:18;;;16165:62;16263:12;16243:18;;;16236:40;16293:19;;25416:73:0;15912:406:1;25416:73:0;25500:19;25523:10;:8;:10::i;:::-;25500:33;-1:-1:-1;25551:21:0;25500:33;25551:7;:21;:::i;:::-;25544:28;25330:250;-1:-1:-1;;;25330:250:0:o;18557:215::-;189:10;18645:4;18694:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18694:34:0;;;;;;;;;;18645:4;;18662:80;;18685:7;;18694:47;;18731:10;;18694:47;:::i;22467:340::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;22556:13:::1;22594:7;22583;22573;;:17;;;;:::i;:::-;22572:29;;;;:::i;:::-;22556:45;;22640:4;22630:7;;:14;;;;:::i;:::-;22620:5;:25;;22612:93;;;::::0;-1:-1:-1;;;22612:93:0;;16658:2:1;22612:93:0::1;::::0;::::1;16640:21:1::0;16697:2;16677:18;;;16670:30;16736:34;16716:18;;;16709:62;16807:25;16787:18;;;16780:53;16850:19;;22612:93:0::1;16456:419:1::0;22612:93:0::1;22716:12;:20:::0;;;22764:14:::1;::::0;22792:7;;22764:24:::1;::::0;22781:7;;22764:24:::1;:::i;:::-;22763:36;;;;:::i;:::-;22747:13;:52:::0;-1:-1:-1;;;22467:340:0:o;15701:807::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;-1:-1:-1;;;;;15782:22:0;::::1;15774:96;;;::::0;-1:-1:-1;;;15774:96:0;;17082:2:1;15774:96:0::1;::::0;::::1;17064:21:1::0;17121:2;17101:18;;;17094:30;17160:34;17140:18;;;17133:62;17231:31;17211:18;;;17204:59;17280:19;;15774:96:0::1;16880:425:1::0;15774:96:0::1;15901:4;::::0;-1:-1:-1;;;;;15889:16:0;;::::1;15901:4:::0;::::1;15889:16;;15881:90;;;::::0;-1:-1:-1;;;15881:90:0;;17082:2:1;15881:90:0::1;::::0;::::1;17064:21:1::0;17121:2;17101:18;;;17094:30;17160:34;17140:18;;;17133:62;17231:31;17211:18;;;17204:59;17280:19;;15881:90:0::1;16880:425:1::0;15881:90:0::1;16001:6;::::0;;15982:33:::1;::::0;-1:-1:-1;;;;;16001:6:0;;::::1;::::0;15982:18:::1;:33::i;:::-;16026:34;16045:8;16055:4;16026:18;:34::i;:::-;16071:37;16093:8;16103:4;16071:21;:37::i;:::-;16161:6;::::0;16133:16:::1;::::0;-1:-1:-1;;;;;16133:16:0;;::::1;16161:6:::0;::::1;16133:35;16129:90;;;16183:16;:36:::0;;-1:-1:-1;;;;;;16183:36:0::1;-1:-1:-1::0;;;;;16183:36:0;::::1;;::::0;;16129:90:::1;16282:6;::::0;16272:17:::1;::::0;-1:-1:-1;;;;;16282:6:0::1;16272:9;:17::i;:::-;16240:19;16252:6:::0;;-1:-1:-1;;;;;16252:6:0;;::::1;16240:19:::0;;:11:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:49;;;;16313:6;;16240:19;;16303:17:::1;::::0;16313:6:::1;16303:9;:17::i;:::-;:21;16300:99;;;16351:6;::::0;16341:46:::1;::::0;-1:-1:-1;;;;;16351:6:0::1;16359:8:::0;16369:17:::1;16351:6:::0;16369:9:::1;:17::i;16341:46::-;;16300:99;16419:6;:17:::0;;-1:-1:-1;;;;;;16419:17:0::1;-1:-1:-1::0;;;;;16419:17:0;::::1;::::0;;::::1;::::0;;16452:38:::1;::::0;16419:17;;;;16452:38:::1;::::0;16419:6;16452:38:::1;15701:807:::0;:::o;18155:120::-;18208:4;18232:35;18240:7;-1:-1:-1;;18232:7:0;:35::i;21836:455::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;21966:13:::1;;21955:7;:24;;:73;;;;;22013:15;;22000:9;:28;;21955:73;:122;;;;;22062:15;;22049:9;:28;;21955:122;21947:149;;;::::0;::::1;;22150:4;22137:9:::0;22115:19:::1;22125:9:::0;22115:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;22107:48;;;::::0;::::1;;22166:19;:29:::0;;;;22206:21:::1;:33:::0;22250:21:::1;:33:::0;21836:455::o;23460:202::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;23553:16:::1;::::0;-1:-1:-1;;;;;23553:29:0;;::::1;:16:::0;::::1;:29;;23545:61;;;::::0;-1:-1:-1;;;23545:61:0;;17512:2:1;23545:61:0::1;::::0;::::1;17494:21:1::0;17551:2;17531:18;;;17524:30;17590:21;17570:18;;;17563:49;17629:18;;23545:61:0::1;17310:343:1::0;23545:61:0::1;23617:16;:37:::0;;-1:-1:-1;;;;;;23617:37:0::1;-1:-1:-1::0;;;;;23617:37:0;;;::::1;::::0;;;::::1;::::0;;23460:202::o;12673:2388::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;12903:19:::1;::::0;::::1;;12902:20;12894:29;;;::::0;::::1;;12960:3;12942:8;:15;:21;12934:30;;;::::0;::::1;;13002:7;:14;12983:8;:15;:33;12975:42;;;::::0;::::1;;13036:13;::::0;:18;:40;::::1;;;-1:-1:-1::0;13058:13:0::1;::::0;:18;13036:40:::1;:61;;;;-1:-1:-1::0;13081:16:0::1;::::0;;;::::1;;;13080:17;13036:61;13028:70;;;::::0;::::1;;13124:2;13117:3;:9;;13109:38;;;::::0;-1:-1:-1;;;13109:38:0;;11399:2:1;13109:38:0::1;::::0;::::1;11381:21:1::0;11438:2;11418:18;;;11411:30;11477:18;11457;;;11450:46;11513:18;;13109:38:0::1;11197:340:1::0;13109:38:0::1;13160:16;:40:::0;;-1:-1:-1;;;;;;13160:40:0::1;-1:-1:-1::0;;;;;13160:40:0;::::1;;::::0;;13213:18;;::::1;::::0;:5:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;13242:22:0;;::::1;::::0;:7:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;13292:19:0::1;13275:14;:36:::0;13457:9:::1;:13:::0;;-1:-1:-1;;13457:13:0::1;13469:1;13457:13:::0;;::::1;::::0;;;13485:12:::1;:24:::0;13563:12:::1;::::0;13559:16:::1;::::0;:2:::1;:16;:::i;:::-;13541:14;;:35;;;;:::i;:::-;13531:7;:45:::0;;;13605:13:::1;::::0;-1:-1:-1;;13605:13:0::1;:::i;:::-;13598:21;::::0;-1:-1:-1;;13598:21:0::1;:::i;:::-;13587:7;:33:::0;13664:14:::1;::::0;13633:9:::1;:46:::0;;-1:-1:-1;;;;;;13633:46:0::1;-1:-1:-1::0;;;;;13664:14:0;;::::1;13633:46:::0;;::::1;::::0;;13717:19:::1;::::0;;;;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;13664:14;13717:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13699:49:0::1;;13749:9;;;;;;;;;-1:-1:-1::0;;;;;13749:9:0::1;-1:-1:-1::0;;;;;13749:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13699:82;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;18420:15:1;;;13699:82:0::1;::::0;::::1;18402:34:1::0;13775:4:0::1;18452:18:1::0;;;18445:43;18314:18;;13699:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13690:6;:91:::0;;-1:-1:-1;;;;;;13690:91:0::1;-1:-1:-1::0;;;;;13690:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13792:15:0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;13792:22:0::1;-1:-1:-1::0;13792:22:0::1;::::0;;13845:4:::1;13825:26:::0;;:11:::1;:26:::0;;;;;13860:9:::1;::::0;;;::::1;13825:46:::0;;;;;;-1:-1:-1;;13825:66:0;;13792:22:::1;13912::::0;::::1;:13;:22:::0;13961:12:::1;:3:::0;13967:6:::1;13961:12;:::i;:::-;13945:13;:28:::0;14000:7:::1;::::0;14017:6:::1;::::0;14000:13:::1;::::0;14010:3:::1;14000:13;:::i;:::-;13999:24;;;;:::i;:::-;13984:12;:39:::0;14051:14:::1;::::0;14075:6:::1;::::0;14051:20:::1;::::0;14068:3:::1;14051:20;:::i;:::-;14050:31;;;;:::i;:::-;14034:13;:47:::0;14110:7:::1;::::0;14126:4:::1;::::0;14110:12:::1;::::0;14120:2:::1;14110:12;:::i;:::-;14109:21;;;;:::i;:::-;14092:14;:38:::0;14160:14:::1;::::0;14183:4:::1;::::0;14160:19:::1;::::0;14177:2:::1;14160:19;:::i;:::-;14159:28;;;;:::i;:::-;14141:15;:46:::0;14215:7:::1;::::0;14230:5:::1;::::0;14215:11:::1;::::0;14225:1:::1;14215:11;:::i;:::-;14214:21;;;;:::i;:::-;14198:13;:37:::0;14260:7:::1;::::0;14275:4:::1;::::0;14260:11:::1;::::0;14270:1:::1;14260:11;:::i;:::-;14259:20;;;;:::i;:::-;14246:10;:33:::0;14300:14:::1;::::0;14292:42:::1;::::0;-1:-1:-1;;;;;14300:14:0::1;-1:-1:-1::0;;14292:7:0::1;:42::i;:::-;-1:-1:-1::0;14347:19:0::1;:26:::0;;-1:-1:-1;;14347:26:0::1;14369:4;14347:26:::0;;::::1;::::0;;;14403:7:::1;::::0;;14347:19:::1;14392:7;15652::::0;15679:6;-1:-1:-1;;;;;15679:6:0;;15614:79;14392:7:::1;-1:-1:-1::0;;;;;14384:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14384:16:0;:26;14441:7:::1;15652::::0;15679:6;-1:-1:-1;;;;;15679:6:0;;15614:79;14441:7:::1;14435:4;::::0;14450:7:::1;::::0;14426:32:::1;::::0;2106:25:1;;;-1:-1:-1;;;;;14426:32:0;;::::1;::::0;14435:4;;::::1;::::0;14426:32:::1;::::0;2094:2:1;2079:18;14426:32:0::1;;;;;;;14503:9;::::0;14471:62:::1;::::0;14488:4:::1;::::0;-1:-1:-1;;;;;14503:9:0::1;-1:-1:-1::0;;14471:8:0::1;:62::i;:::-;14550:9;14546:168;14569:8;:15;14565:1;:19;14546:168;;;14639:9;::::0;14605:14:::1;::::0;14635:13:::1;::::0;14639:9:::1;;14635:2;:13;:::i;:::-;14622:7;14630:1;14622:10;;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;14605:43;;14663:39;14673:7;15652::::0;15679:6;-1:-1:-1;;;;;15679:6:0;;15614:79;14673:7:::1;14682:8;14691:1;14682:11;;;;;;;;:::i;:::-;;;;;;;14695:6;14663:9;:39::i;:::-;;14590:124;14586:3;;;;;:::i;:::-;;;;14546:168;;;;14726:53;14736:7;15652::::0;15679:6;-1:-1:-1;;;;;15679:6:0;;15614:79;14736:7:::1;14753:4;14760:18;14770:7;15652::::0;15679:6;-1:-1:-1;;;;;15679:6:0;;15614:79;14726:53:::1;-1:-1:-1::0;14806:9:0::1;::::0;-1:-1:-1;;;;;14806:9:0::1;:25;14839:21;14884:4;14904:24;14884:4:::0;14904:9:::1;:24::i;:::-;14943:1;14960::::0;14977:7:::1;15652::::0;15679:6;-1:-1:-1;;;;;15679:6:0;;15614:79;14977:7:::1;14806:219;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;18881:15:1;;;14806:219:0::1;::::0;::::1;18863:34:1::0;18913:18;;;18906:34;;;;18956:18;;;18949:34;;;;18999:18;;;18992:34;19063:15;;;19042:19;;;19035:44;14999:15:0::1;19095:19:1::0;;;19088:35;18774:19;;14806:219:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15038:15;:13;:15::i;:::-;12673:2388:::0;;;;;;;:::o;23849:132::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;-1:-1:-1;;;;;23936:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:37;;-1:-1:-1;;23936:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23849:132::o;22299:160::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;22386:15:::1;:27:::0;;;;22424:15:::1;:27:::0;22299:160::o;20946:435::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;21071:13:::1;;21060:7;:24;;:73;;;;;21118:15;;21105:9;:28;;21060:73;:122;;;;;21167:15;;21154:9;:28;;21060:122;21052:149;;;::::0;::::1;;21255:4;21242:9:::0;21220:19:::1;21230:9:::0;21220:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;21212:48;;;::::0;::::1;;21271:14;:24:::0;;;;21306:16:::1;:28:::0;21345:16:::1;:28:::0;20946:435::o;17605:198::-;-1:-1:-1;;;;;17695:20:0;;17671:7;17695:20;;;:11;:20;;;;;;;;17691:49;;;-1:-1:-1;;;;;;17724:16:0;;;;;:7;:16;;;;;;;17605:198::o;17691:49::-;-1:-1:-1;;;;;17778:16:0;;;;;;:7;:16;;;;;;17758:37;;:19;:37::i;16516:194::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;16602:6:::1;::::0;;16583:33:::1;::::0;-1:-1:-1;;;;;16602:6:0;;::::1;::::0;16583:18:::1;:33::i;:::-;16644:1;16627:19:::0;;-1:-1:-1;;;;;;16627:19:0::1;::::0;;16662:40:::1;::::0;16644:1;;16662:40:::1;::::0;16644:1;;16662:40:::1;16516:194::o:0;19574:424::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;19655:16;19651:340:::1;;-1:-1:-1::0;;;;;;19688:13:0::1;19704:5;19688:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;19688:21:0::1;::::0;;23989:906::o;19651:340::-:1;19746:17;::::0;:22;19742:153:::1;;19835:7;19815:17;;19797:15;:35;;;;:::i;:::-;:45;19789:90;;;::::0;-1:-1:-1;;;19789:90:0;;19647:2:1;19789:90:0::1;::::0;::::1;19629:21:1::0;;;19666:18;;;19659:30;19725:34;19705:18;;;19698:62;19777:18;;19789:90:0::1;19445:356:1::0;19789:90:0::1;-1:-1:-1::0;;;;;19909:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;19909:20:0::1;19925:4;19909:20;::::0;;19964:15:::1;19944:17;:35:::0;19574:424;;:::o;17229:75::-;17270:13;17294:7;17287:14;;;;;:::i;18780:225::-;189:10;18873:4;18922:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18922:34:0;;;;;;;;;;18873:4;;18890:85;;18913:7;;18922:52;;18959:15;;18922:52;:::i;17811:167::-;17889:4;17906:42;189:10;17930:9;17941:6;17906:9;:42::i;20405:218::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;20514:16:::1;:28:::0;;;::::1;;;;-1:-1:-1::0;;20514:28:0;;::::1;::::0;;;::::1;::::0;;;20553:14:::1;:24:::0;;;::::1;;-1:-1:-1::0;;20553:24:0;;::::1;;::::0;;20588:15:::1;:27:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;20405:218::o;23670:171::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;23747:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;23747:32:0::1;::::0;;;::::1;;::::0;;23795:38:::1;::::0;::::1;::::0;::::1;::::0;23771:8;1933:14:1;1926:22;1908:41;;1896:2;1881:18;;1768:187;23795:38:0::1;;;;;;;;23670:171:::0;:::o;21389:439::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;21515:13:::1;;21504:7;:24;;:73;;;;;21562:15;;21549:9;:28;;21504:73;:122;;;;;21611:15;;21598:9;:28;;21504:122;21496:149;;;::::0;::::1;;21699:4;21686:9:::0;21664:19:::1;21674:9:::0;21664:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;21656:48;;;::::0;::::1;;21715:15;:25:::0;;;;21751:17:::1;:29:::0;21791:17:::1;:29:::0;21389:439::o;19013:553::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;19086:29:::1;19137:9;19086:61;;19158:16;19195:10;-1:-1:-1::0;;;;;19195:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19177:47:0::1;;19233:4;19240:10;-1:-1:-1::0;;;;;19240:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19177:81;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;18420:15:1;;;19177:81:0::1;::::0;::::1;18402:34:1::0;18472:15;;18452:18;;;18445:43;18314:18;;19177:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19158:100:::0;-1:-1:-1;;;;;;19273:22:0;::::1;19269:207;;19339:10;-1:-1:-1::0;;;;;19339:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19321:50:0::1;;19380:4;19387:10;-1:-1:-1::0;;;;;19387:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19321:84;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;18420:15:1;;;19321:84:0::1;::::0;::::1;18402:34:1::0;18472:15;;18452:18;;;18445:43;18314:18;;19321:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19312:6;:93:::0;;-1:-1:-1;;;;;;19312:93:0::1;-1:-1:-1::0;;;;;19312:93:0;;;::::1;::::0;;;::::1;::::0;;19269:207:::1;;;19447:6;:17:::0;;-1:-1:-1;;;;;;19447:17:0::1;-1:-1:-1::0;;;;;19447:17:0;::::1;;::::0;;19269:207:::1;19486:9;:22:::0;;-1:-1:-1;;;;;;19486:22:0::1;-1:-1:-1::0;;;;;19486:22:0;::::1;;::::0;;19519:39:::1;19536:4;19543:9:::0;-1:-1:-1;;19519:8:0::1;:39::i;20793:141::-:0;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;-1:-1:-1;;;;;20885:31:0;;;::::1;;::::0;;;:22:::1;:31;::::0;;;;:41;;-1:-1:-1;;20885:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20793:141::o;23163:289::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;23363:16:::1;23343;23333:7;;:26;;;;:::i;:::-;23332:47;;;;:::i;:::-;23316:13;:63:::0;23404:7:::1;::::0;23431:13;;23404:23:::1;::::0;23414:13;;23404:23:::1;:::i;:::-;23403:41;;;;:::i;:::-;23390:10;:54:::0;-1:-1:-1;;;;23163:289:0:o;25592:342::-;-1:-1:-1;;;;;25687:20:0;;25679:69;;;;-1:-1:-1;;;25679:69:0;;20008:2:1;25679:69:0;;;19990:21:1;20047:2;20027:18;;;20020:30;20086:34;20066:18;;;20059:62;20157:6;20137:18;;;20130:34;20181:19;;25679:69:0;19806:400:1;25679:69:0;-1:-1:-1;;;;;25767:21:0;;25759:68;;;;-1:-1:-1;;;25759:68:0;;20413:2:1;25759:68:0;;;20395:21:1;20452:2;20432:18;;;20425:30;20491:34;20471:18;;;20464:62;20562:4;20542:18;;;20535:32;20584:19;;25759:68:0;20211:398:1;25759:68:0;-1:-1:-1;;;;;25840:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;25893:33;;2106:25:1;;;25893:33:0;;2079:18:1;25893:33:0;;;;;;;25592:342;;;:::o;25942:1900::-;26021:4;-1:-1:-1;;;;;26046:18:0;;26038:68;;;;-1:-1:-1;;;26038:68:0;;20816:2:1;26038:68:0;;;20798:21:1;20855:2;20835:18;;;20828:30;20894:34;20874:18;;;20867:62;20965:7;20945:18;;;20938:35;20990:19;;26038:68:0;20614:401:1;26038:68:0;-1:-1:-1;;;;;26125:16:0;;26117:64;;;;-1:-1:-1;;;26117:64:0;;21222:2:1;26117:64:0;;;21204:21:1;21261:2;21241:18;;;21234:30;21300:34;21280:18;;;21273:62;21371:5;21351:18;;;21344:33;21394:19;;26117:64:0;21020:399:1;26117:64:0;26209:1;26200:6;:10;26192:64;;;;-1:-1:-1;;;26192:64:0;;21626:2:1;26192:64:0;;;21608:21:1;21665:2;21645:18;;;21638:30;21704:34;21684:18;;;21677:62;21775:11;21755:18;;;21748:39;21804:19;;26192:64:0;21424:405:1;26192:64:0;26271:14;;;;26267:112;;;26325:13;;26310:11;:28;;26302:65;;;;-1:-1:-1;;;26302:65:0;;22036:2:1;26302:65:0;;;22018:21:1;22075:2;22055:18;;;22048:30;22114:26;22094:18;;;22087:54;22158:18;;26302:65:0;21834:348:1;26302:65:0;26392:20;26403:4;26409:2;26392:10;:20::i;:::-;26389:776;;;26433:14;;;;26429:89;;26468:34;;-1:-1:-1;;;26468:34:0;;22389:2:1;26468:34:0;;;22371:21:1;22428:2;22408:18;;;22401:30;22467:26;22447:18;;;22440:54;22511:18;;26468:34:0;22187:348:1;26429:89:0;26536:15;;;;26532:347;;;-1:-1:-1;;;;;26576:13:0;;;;;;:7;:13;;;;;;;;26572:292;;;-1:-1:-1;;;;;26621:13:0;;;;;;:9;:13;;;;;;26638:12;26621:29;;26613:38;;;;;;-1:-1:-1;;;;;26674:13:0;;;;;;:9;:13;;;;;26690:12;26674:28;;26572:292;;;-1:-1:-1;;;;;26759:15:0;;;;;;:9;:15;;;;;;26778:12;26759:31;;26751:40;;;;;;-1:-1:-1;;;;;26814:15:0;;;;;;:9;:15;;;;;26832:12;26814:30;;26572:292;26911:12;;26901:6;:22;;26893:75;;;;-1:-1:-1;;;26893:75:0;;22742:2:1;26893:75:0;;;22724:21:1;22781:2;22761:18;;;22754:30;22820:34;22800:18;;;22793:62;22891:10;22871:18;;;22864:38;22919:19;;26893:75:0;22540:404:1;26893:75:0;26992:14;;-1:-1:-1;;;;;26986:20:0;;;26992:14;;26986:20;;;;:36;;-1:-1:-1;;;;;;27011:11:0;;;;;;:7;:11;;;;;;;;27010:12;26986:36;26983:171;;;27077:14;;27067:6;27051:13;27061:2;27051:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;27043:95;;;;-1:-1:-1;;;27043:95:0;;23151:2:1;27043:95:0;;;23133:21:1;23190:2;23170:18;;;23163:30;23229:34;23209:18;;;23202:62;23300:12;23280:18;;;23273:40;23330:19;;27043:95:0;22949:406:1;27043:95:0;-1:-1:-1;;;;;27210:24:0;;27177:12;27210:24;;;:18;:24;;;;;;27192:4;;27210:24;;;:50;;-1:-1:-1;;;;;;27238:22:0;;;;;;:18;:22;;;;;;;;27210:50;27207:96;;;-1:-1:-1;27286:5:0;27207:96;-1:-1:-1;;;;;27319:11:0;;;;;;:7;:11;;;;;;;;27315:457;;;27352:16;;;;;;;27351:17;:59;;;;-1:-1:-1;27389:21:0;;-1:-1:-1;;;27389:21:0;;;;27351:59;27347:408;;;27445:28;27476:24;27494:4;27476:9;:24::i;:::-;27445:55;;27547:13;;27523:20;:37;27519:221;;27612:10;;27588:20;:34;27585:77;;-1:-1:-1;27649:10:0;;27585:77;27684:36;27699:20;27684:14;:36::i;:::-;27426:329;27347:408;27790:44;27808:4;27814:2;27818:6;27826:7;27790:17;:44::i;:::-;27783:51;25942:1900;-1:-1:-1;;;;;25942:1900:0:o;33945:161::-;33987:7;34008:15;34025;34044:19;:17;:19::i;:::-;34007:56;;-1:-1:-1;34007:56:0;-1:-1:-1;34081:17:0;34007:56;;34081:17;:::i;:::-;34074:24;;;;33945:161;:::o;29591:399::-;11753:6;;-1:-1:-1;;;;;11753:6:0;189:10;11753:22;11745:67;;;;-1:-1:-1;;;11745:67:0;;11038:2:1;11745:67:0;;;11020:21:1;;;11057:18;;;11050:30;-1:-1:-1;;;;;;;;;;;11096:18:1;;;11089:62;11168:18;;11745:67:0;10836:356:1;11745:67:0;29655:14:::1;::::0;::::1;;29654:15;29646:52;;;::::0;-1:-1:-1;;;29646:52:0;;23562:2:1;29646:52:0::1;::::0;::::1;23544:21:1::0;23601:2;23581:18;;;23574:30;23640:26;23620:18;;;23613:54;23684:18;;29646:52:0::1;23360:348:1::0;29646:52:0::1;29709:42;29739:4;29746;29709:21;:42::i;:::-;29784:6;::::0;29762:35:::1;::::0;-1:-1:-1;;;;;29784:6:0::1;::::0;29762:21:::1;:35::i;:::-;29828:1;29812:13;;:17;29808:143;;;29861:18;:12;29876:3;29861:18;:::i;:::-;29846:12;:33:::0;29808:143:::1;;;29927:12;29912;:27:::0;29808:143:::1;29961:14;:21:::0;;-1:-1:-1;;29961:21:0::1;29978:4;29961:21;::::0;;29591:399::o;24998:324::-;25067:4;15679:6;;-1:-1:-1;;;;;25091:15:0;;;15679:6;;25091:15;;;;:45;;-1:-1:-1;15652:7:0;15679:6;-1:-1:-1;;;;;25123:13:0;;;15679:6;;25123:13;;25091:45;:84;;;;-1:-1:-1;;;;;;25154:21:0;;;;;;:17;:21;;;;;;;;25153:22;25091:84;:125;;;;-1:-1:-1;;;;;;25193:23:0;;;;;;:17;:23;;;;;;;;25192:24;25091:125;:152;;;;-1:-1:-1;25239:4:0;;-1:-1:-1;;;;;25233:10:0;;;25239:4;;25233:10;;25091:152;:185;;;;-1:-1:-1;;;;;;25260:16:0;;;;25091:185;:223;;;;-1:-1:-1;;;;;;25293:21:0;;25309:4;25293:21;;25084:230;24998:324;-1:-1:-1;;;24998:324:0:o;27850:1278::-;11627:16;:23;;-1:-1:-1;;11627:23:0;;;;;27958:15:::1;::::0;27940::::1;::::0;:33:::1;::::0;27958:15;27940:33:::1;:::i;:::-;27936:64;;27993:7;;27936:64;28010:17;28113:1;28093:15;;28075;;:33;;;;:::i;:::-;28055:15;::::0;28032:38:::1;::::0;:20;:38:::1;:::i;:::-;28031:78;;;;:::i;:::-;28030:84;;;;:::i;:::-;28010:104:::0;-1:-1:-1;28127:20:0::1;28150:32;28010:104:::0;28150:20;:32:::1;:::i;:::-;28219:16;::::0;;28233:1:::1;28219:16:::0;;;;;::::1;::::0;;28127:55;;-1:-1:-1;28195:21:0::1;::::0;28219:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;28219:16:0::1;28195:40;;28264:4;28246;28251:1;28246:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28246:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;28290:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;28246:7;;28290:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28280:4;28285:1;28280:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28280:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;28319:9:::1;::::0;:191:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;28394:12;;28319:9:::1;::::0;28437:4;;28464::::1;::::0;28484:15:::1;::::0;28319:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28525:24;28636:1;28616:15;;28598;;:33;;;;:::i;:::-;28578:15;::::0;28554:39:::1;::::0;:21:::1;:39;:::i;:::-;28553:79;;;;:::i;:::-;28552:85;;;;:::i;:::-;28525:112:::0;-1:-1:-1;28654:13:0;;28650:344:::1;;28684:9;::::0;28855:4:::1;::::0;28684:224:::1;::::0;;;;28761:4:::1;28684:224;::::0;::::1;18863:34:1::0;18913:18;;;18906:34;;;28684:9:0::1;18956:18:1::0;;;18949:34;;;18999:18;;;18992:34;-1:-1:-1;;;;;28855:4:0;;::::1;19042:19:1::0;;;19035:44;28878:15:0::1;19095:19:1::0;;;19088:35;28684:9:0;::::1;::::0;:25:::1;::::0;28717:16;;18774:19:1;;28684:224:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;28928:54:0::1;::::0;;24946:25:1;;;25002:2;24987:18;;24980:34;;;25030:18;;;25023:34;;;28928:54:0::1;::::0;-1:-1:-1;24934:2:1;24919:18;28928:54:0::1;;;;;;;28650:344;29043:1;29008:32;29031:9:::0;29008:20;:32:::1;:::i;:::-;:36;29004:117;;;29061:16;::::0;:48:::1;::::0;-1:-1:-1;;;;;29061:16:0;;::::1;::::0;29087:21:::1;29061:48:::0;::::1;;;::::0;:16:::1;:48:::0;:16;:48;29087:21;29061:16;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;29004:117;27925:1203;;;;11661:1;-1:-1:-1::0;11673:16:0;:24;;-1:-1:-1;;11673:24:0;;;27850:1278::o;30585:1880::-;30708:16;;30687:4;;30708:16;;;;;30704:851;;;-1:-1:-1;;;;;20358:31:0;;20334:4;20358:31;;;:22;:31;;;;;;;;30744:56;;;-1:-1:-1;;;;;;20358:31:0;;20334:4;20358:31;;;:22;:31;;;;;;;;30775:25;30740:116;;;30821:19;;-1:-1:-1;;;30821:19:0;;25270:2:1;30821:19:0;;;25252:21:1;25309:1;25289:18;;;25282:29;25347:11;25327:18;;;25320:39;25376:18;;30821:19:0;25068:332:1;30740:116:0;30877:16;;;;;;;30872:672;;30914:28;30933:4;30939:2;30914:18;:28::i;:::-;30966:16;;;;;;;30965:17;:41;;;;;30986:20;30997:4;31003:2;30986:10;:20::i;:::-;30961:137;;;31031:47;;-1:-1:-1;;;31031:47:0;;25607:2:1;31031:47:0;;;25589:21:1;25646:2;25626:18;;;25619:30;25685:34;25665:18;;;25658:62;25756:7;25736:18;;;25729:35;25781:19;;31031:47:0;25405:401:1;30961:137:0;30872:672;;;31157:1;31142:12;;:16;:55;;;;-1:-1:-1;;;;;;31184:13:0;;;;;;:7;:13;;;;;;;;31142:55;:101;;;;;31223:20;31234:4;31240:2;31223:10;:20::i;:::-;31138:391;;;31320:13;;31305:12;;31290:27;;:12;:27;:::i;:::-;:43;31286:224;;;-1:-1:-1;;;;;31362:26:0;;;;;;:22;:26;;;;;:33;;-1:-1:-1;;31362:33:0;31391:4;31362:33;;;31422:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;31470:16:0;;-1:-1:-1;;;;;178:55:1;;160:74;;31470:16:0;;148:2:1;133:18;31470:16:0;;;;;;;31286:224;31567:25;31595:38;31606:4;31612:2;31616:7;31625;31595:10;:38::i;:::-;31678:14;;;;-1:-1:-1;;;;;31662:13:0;;;;;;:7;:13;;;;;;31567:66;;-1:-1:-1;31662:30:0;;;:::i;:::-;-1:-1:-1;;;;;31646:13:0;;;;;;;:7;:13;;;;;;:46;;;;31731:22;;;;31717:11;;;;;;;;;;:36;;31731:22;31717:36;:::i;:::-;-1:-1:-1;;;;;31703:11:0;;;;;;;:7;:11;;;;;;;;:50;;;;31770:17;;;;;:11;:17;;;;;;;:37;;;;-1:-1:-1;;;;;;31792:15:0;;;;;;:11;:15;;;;;;;;31791:16;31770:37;31766:416;;;-1:-1:-1;;;;;31840:13:0;;;;;;:7;:13;;;;;;:23;;31856:7;;31840:23;:::i;:::-;-1:-1:-1;;;;;31824:13:0;;;;;;:7;:13;;;;;:39;31766:416;;;-1:-1:-1;;;;;31886:17:0;;;;;;:11;:17;;;;;;;;31885:18;:37;;;;-1:-1:-1;;;;;;31907:15:0;;;;;;:11;:15;;;;;;;;31885:37;31881:301;;;31967:22;;-1:-1:-1;;;;;31953:11:0;;31967:22;31953:11;;;:7;:11;;;;;;:36;;31967:22;31953:36;:::i;:::-;-1:-1:-1;;;;;31939:11:0;;;;;;:7;:11;;;;;:50;31881:301;;;-1:-1:-1;;;;;32013:17:0;;;;;;:11;:17;;;;;;;;:36;;;;-1:-1:-1;;;;;;32034:15:0;;;;;;:11;:15;;;;;;;;32013:36;32009:173;;;-1:-1:-1;;;;;32082:13:0;;;;;;:7;:13;;;;;;:23;;32098:7;;32082:23;:::i;:::-;-1:-1:-1;;;;;32066:13:0;;;;;;;:7;:13;;;;;;:39;;;;32148:22;;32134:11;;;;;;;;;;:36;;32148:22;32134:36;:::i;:::-;-1:-1:-1;;;;;32120:11:0;;;;;;:7;:11;;;;;:50;32009:173;32198:17;;;;:21;32194:79;;32234:39;32249:4;32255:6;:17;;;32234:14;:39::i;:::-;32302:1;32288:6;:11;;;:15;:34;;;;32321:1;32307:6;:11;;;:15;32288:34;32284:91;;;32337:38;32350:6;:11;;;32363:6;:11;;;32337:12;:38::i;:::-;32408:2;-1:-1:-1;;;;;32393:42:0;32402:4;-1:-1:-1;;;;;32393:42:0;;32412:6;:22;;;32393:42;;;;2106:25:1;;2094:2;2079:18;;1960:177;32393:42:0;;;;;;;;-1:-1:-1;32453:4:0;;30585:1880;-1:-1:-1;;;;;30585:1880:0:o;34114:547::-;34212:7;;34248;;34165;;;;;34266:283;34290:9;:16;34286:20;;34266:283;;;34356:7;34332;:21;34340:9;34350:1;34340:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34340:12:0;34332:21;;;;;;;;;;;;;:31;;:66;;;34391:7;34367;:21;34375:9;34385:1;34375:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34375:12:0;34367:21;;;;;;;;;;;;;:31;34332:66;34328:97;;;34408:7;;34417;;34400:25;;;;;;;34114:547;;:::o;34328:97::-;34460:7;:21;34468:9;34478:1;34468:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34468:12:0;34460:21;;;;;;;;;;;;;34450:31;;:7;:31;:::i;:::-;34440:41;;34516:7;:21;34524:9;34534:1;34524:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34524:12:0;34516:21;;;;;;;;;;;;;34506:31;;:7;:31;:::i;:::-;34496:41;-1:-1:-1;34308:3:0;;;;:::i;:::-;;;;34266:283;;;;34583:7;;34573;;:17;;;;:::i;:::-;34563:7;:27;34559:58;;;34600:7;;34609;;34592:25;;;;;;34114:547;;:::o;34559:58::-;34636:7;;34645;;-1:-1:-1;34114:547:0;-1:-1:-1;34114:547:0:o;29144:439::-;29227:16;;;;;;;29226:17;29218:65;;;;-1:-1:-1;;;29218:65:0;;26013:2:1;29218:65:0;;;25995:21:1;26052:2;26032:18;;;26025:30;26091:34;26071:18;;;26064:62;26162:5;26142:18;;;26135:33;26185:19;;29218:65:0;25811:399:1;29218:65:0;29299:20;29310:4;29316:2;29299:10;:20::i;:::-;29298:21;:37;;;;-1:-1:-1;29329:6:0;;-1:-1:-1;;;;;29323:12:0;;;29329:6;;29323:12;29298:37;29294:282;;;-1:-1:-1;;;;;29352:23:0;;;;;;:17;:23;;;;;;;:30;;-1:-1:-1;;29352:30:0;29378:4;29352:30;;;;;;29397:16;:23;;-1:-1:-1;;29397:23:0;;;;;29450:15;29435:12;:30;29482:21;:28;;;;-1:-1:-1;;;29482:28:0;;;29530:34;;;;;;1933:14:1;;1926:22;1908:41;;1896:2;1881:18;;1768:187;29530:34:0;;;;;;;;29144:439;;:::o;32473:1464::-;32568:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32568:18:0;32599:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32599:25:0;32635:19;32657:10;:8;:10::i;:::-;32635:32;-1:-1:-1;32697:21:0;32635:32;32697:7;:21;:::i;:::-;32680:14;;;:38;32731:1071;;;;-1:-1:-1;;;;;32762:11:0;;;;;;:7;:11;;;;;;;;32758:561;;;32808:15;;32794:11;:29;32858:17;;32842:13;:33;32910:17;;32894:13;:33;32758:561;;;-1:-1:-1;;;;;32953:13:0;;;;;;:7;:13;;;;;;;;32949:370;;;33001:14;;32987:11;:28;33050:16;;33034:13;:32;33101:16;;33085:13;:32;32949:370;;;33172:19;;33158:11;:33;33226:21;;33210:13;:37;33282:21;;33266:13;:37;32949:370;33375:16;;33360:11;;33350:21;;:7;:21;:::i;:::-;33349:42;;;;:::i;:::-;33335:11;;;:56;33472:16;;33454:13;;33438;;:29;;33454:13;33438:29;:::i;:::-;33427:41;;:7;:41;:::i;:::-;33426:62;;;;:::i;:::-;33406:17;;;:82;;;33539:11;;;;:31;;33406:82;33539:31;:::i;:::-;33528:43;;:7;:43;:::i;:::-;33503:68;;33602:11;;;;:25;;33616:11;;33602:25;:::i;:::-;33588:11;;;:39;32731:1071;;;33674:1;33660:11;;;:15;;;33690:17;;;:21;;;33726:32;;;33775:11;;;:15;32731:1071;33892:11;33872:6;:17;;;:31;;;;:::i;:::-;33857:6;:11;;;:47;;;;:::i;:::-;33839:6;:14;;;:66;;;;:::i;:::-;33814:22;;;:91;-1:-1:-1;33814:22:0;32473:1464;-1:-1:-1;;;;;32473:1464:0:o;34943:461::-;35023:19;35046:10;:8;:10::i;:::-;35023:33;-1:-1:-1;35067:18:0;35088:24;35023:33;35088:10;:24;:::i;:::-;35164:4;35148:22;;;;:7;:22;;;;;;35067:45;;-1:-1:-1;35148:35:0;;35067:45;;35148:35;:::i;:::-;35139:4;35123:22;;;;:7;:22;;;;;;;;:60;;;;35197:11;:26;;;;;;35194:104;;;35279:4;35263:22;;;;:7;:22;;;;;;:35;;35288:10;;35263:35;:::i;:::-;35254:4;35238:22;;;;:7;:22;;;;;:60;35194:104;35314:43;;2106:25:1;;;35339:4:0;;-1:-1:-1;;;;;35314:43:0;;;;;2094:2:1;2079:18;35314:43:0;;;;;;;35012:392;;34943:461;;:::o;34673:143::-;34763:4;34753:7;;:14;;;;:::i;:::-;34743:7;:24;34791:10;;:17;;34804:4;;34791:17;:::i;:::-;34778:10;:30;-1:-1:-1;;34673:143:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;245:597:1;357:4;386:2;415;404:9;397:21;447:6;441:13;490:6;485:2;474:9;470:18;463:34;515:1;525:140;539:6;536:1;533:13;525:140;;;634:14;;;630:23;;624:30;600:17;;;619:2;596:26;589:66;554:10;;525:140;;;683:6;680:1;677:13;674:91;;;753:1;748:2;739:6;728:9;724:22;720:31;713:42;674:91;-1:-1:-1;826:2:1;805:15;-1:-1:-1;;801:29:1;786:45;;;;833:2;782:54;;245:597;-1:-1:-1;;;245:597:1:o;1104:180::-;1163:6;1216:2;1204:9;1195:7;1191:23;1187:32;1184:52;;;1232:1;1229;1222:12;1184:52;-1:-1:-1;1255:23:1;;1104:180;-1:-1:-1;1104:180:1:o;1289:154::-;-1:-1:-1;;;;;1368:5:1;1364:54;1357:5;1354:65;1344:93;;1433:1;1430;1423:12;1448:315;1516:6;1524;1577:2;1565:9;1556:7;1552:23;1548:32;1545:52;;;1593:1;1590;1583:12;1545:52;1632:9;1619:23;1651:31;1676:5;1651:31;:::i;:::-;1701:5;1753:2;1738:18;;;;1725:32;;-1:-1:-1;;;1448:315:1:o;2142:160::-;2207:20;;2263:13;;2256:21;2246:32;;2236:60;;2292:1;2289;2282:12;2236:60;2142:160;;;:::o;2307:315::-;2372:6;2380;2433:2;2421:9;2412:7;2408:23;2404:32;2401:52;;;2449:1;2446;2439:12;2401:52;2488:9;2475:23;2507:31;2532:5;2507:31;:::i;:::-;2557:5;-1:-1:-1;2581:35:1;2612:2;2597:18;;2581:35;:::i;:::-;2571:45;;2307:315;;;;;:::o;2627:456::-;2704:6;2712;2720;2773:2;2761:9;2752:7;2748:23;2744:32;2741:52;;;2789:1;2786;2779:12;2741:52;2828:9;2815:23;2847:31;2872:5;2847:31;:::i;:::-;2897:5;-1:-1:-1;2954:2:1;2939:18;;2926:32;2967:33;2926:32;2967:33;:::i;:::-;2627:456;;3019:7;;-1:-1:-1;;;3073:2:1;3058:18;;;;3045:32;;2627:456::o;3088:248::-;3156:6;3164;3217:2;3205:9;3196:7;3192:23;3188:32;3185:52;;;3233:1;3230;3223:12;3185:52;-1:-1:-1;;3256:23:1;;;3326:2;3311:18;;;3298:32;;-1:-1:-1;3088:248:1:o;3341:184::-;-1:-1:-1;;;3390:1:1;3383:88;3490:4;3487:1;3480:15;3514:4;3511:1;3504:15;3530:275;3601:2;3595:9;3666:2;3647:13;;-1:-1:-1;;3643:27:1;3631:40;;3701:18;3686:34;;3722:22;;;3683:62;3680:88;;;3748:18;;:::i;:::-;3784:2;3777:22;3530:275;;-1:-1:-1;3530:275:1:o;3810:183::-;3870:4;3903:18;3895:6;3892:30;3889:56;;;3925:18;;:::i;:::-;-1:-1:-1;3970:1:1;3966:14;3982:4;3962:25;;3810:183::o;3998:737::-;4052:5;4105:3;4098:4;4090:6;4086:17;4082:27;4072:55;;4123:1;4120;4113:12;4072:55;4159:6;4146:20;4185:4;4209:60;4225:43;4265:2;4225:43;:::i;:::-;4209:60;:::i;:::-;4303:15;;;4389:1;4385:10;;;;4373:23;;4369:32;;;4334:12;;;;4413:15;;;4410:35;;;4441:1;4438;4431:12;4410:35;4477:2;4469:6;4465:15;4489:217;4505:6;4500:3;4497:15;4489:217;;;4585:3;4572:17;4602:31;4627:5;4602:31;:::i;:::-;4646:18;;4684:12;;;;4522;;4489:217;;;-1:-1:-1;4724:5:1;3998:737;-1:-1:-1;;;;;;3998:737:1:o;4740:662::-;4794:5;4847:3;4840:4;4832:6;4828:17;4824:27;4814:55;;4865:1;4862;4855:12;4814:55;4901:6;4888:20;4927:4;4951:60;4967:43;5007:2;4967:43;:::i;4951:60::-;5045:15;;;5131:1;5127:10;;;;5115:23;;5111:32;;;5076:12;;;;5155:15;;;5152:35;;;5183:1;5180;5173:12;5152:35;5219:2;5211:6;5207:15;5231:142;5247:6;5242:3;5239:15;5231:142;;;5313:17;;5301:30;;5351:12;;;;5264;;5231:142;;5407:595;5525:6;5533;5586:2;5574:9;5565:7;5561:23;5557:32;5554:52;;;5602:1;5599;5592:12;5554:52;5642:9;5629:23;5671:18;5712:2;5704:6;5701:14;5698:34;;;5728:1;5725;5718:12;5698:34;5751:61;5804:7;5795:6;5784:9;5780:22;5751:61;:::i;:::-;5741:71;;5865:2;5854:9;5850:18;5837:32;5821:48;;5894:2;5884:8;5881:16;5878:36;;;5910:1;5907;5900:12;5878:36;;5933:63;5988:7;5977:8;5966:9;5962:24;5933:63;:::i;:::-;5923:73;;;5407:595;;;;;:::o;6196:247::-;6255:6;6308:2;6296:9;6287:7;6283:23;6279:32;6276:52;;;6324:1;6321;6314:12;6276:52;6363:9;6350:23;6382:31;6407:5;6382:31;:::i;6448:316::-;6525:6;6533;6541;6594:2;6582:9;6573:7;6569:23;6565:32;6562:52;;;6610:1;6607;6600:12;6562:52;-1:-1:-1;;6633:23:1;;;6703:2;6688:18;;6675:32;;-1:-1:-1;6754:2:1;6739:18;;;6726:32;;6448:316;-1:-1:-1;6448:316:1:o;6769:142::-;6845:20;;6874:31;6845:20;6874:31;:::i;7176:531::-;7219:5;7272:3;7265:4;7257:6;7253:17;7249:27;7239:55;;7290:1;7287;7280:12;7239:55;7326:6;7313:20;7352:18;7348:2;7345:26;7342:52;;;7374:18;;:::i;:::-;7418:55;7461:2;7442:13;;-1:-1:-1;;7438:27:1;7467:4;7434:38;7418:55;:::i;:::-;7498:2;7489:7;7482:19;7544:3;7537:4;7532:2;7524:6;7520:15;7516:26;7513:35;7510:55;;;7561:1;7558;7551:12;7510:55;7626:2;7619:4;7611:6;7607:17;7600:4;7591:7;7587:18;7574:55;7674:1;7649:16;;;7667:4;7645:27;7638:38;;;;7653:7;7176:531;-1:-1:-1;;;7176:531:1:o;7712:156::-;7778:20;;7838:4;7827:16;;7817:27;;7807:55;;7858:1;7855;7848:12;7873:1227;8062:6;8070;8078;8086;8094;8102;8110;8163:3;8151:9;8142:7;8138:23;8134:33;8131:53;;;8180:1;8177;8170:12;8131:53;8203:37;8230:9;8203:37;:::i;:::-;8193:47;;8291:2;8280:9;8276:18;8263:32;8314:18;8355:2;8347:6;8344:14;8341:34;;;8371:1;8368;8361:12;8341:34;8394:50;8436:7;8427:6;8416:9;8412:22;8394:50;:::i;:::-;8384:60;;8497:2;8486:9;8482:18;8469:32;8453:48;;8526:2;8516:8;8513:16;8510:36;;;8542:1;8539;8532:12;8510:36;8565:52;8609:7;8598:8;8587:9;8583:24;8565:52;:::i;:::-;8555:62;;8670:2;8659:9;8655:18;8642:32;8626:48;;8699:2;8689:8;8686:16;8683:36;;;8715:1;8712;8705:12;8683:36;8738:63;8793:7;8782:8;8771:9;8767:24;8738:63;:::i;:::-;8728:73;;8854:3;8843:9;8839:19;8826:33;8810:49;;8884:2;8874:8;8871:16;8868:36;;;8900:1;8897;8890:12;8868:36;;8923:63;8978:7;8967:8;8956:9;8952:24;8923:63;:::i;:::-;8913:73;;;9005:37;9037:3;9026:9;9022:19;9005:37;:::i;:::-;8995:47;;9089:3;9078:9;9074:19;9061:33;9051:43;;7873:1227;;;;;;;;;;:::o;9105:316::-;9173:6;9181;9189;9242:2;9230:9;9221:7;9217:23;9213:32;9210:52;;;9258:1;9255;9248:12;9210:52;9281:26;9297:9;9281:26;:::i;:::-;9271:36;;9326:35;9357:2;9346:9;9342:18;9326:35;:::i;:::-;9316:45;;9380:35;9411:2;9400:9;9396:18;9380:35;:::i;:::-;9370:45;;9105:316;;;;;:::o;9426:180::-;9482:6;9535:2;9523:9;9514:7;9510:23;9506:32;9503:52;;;9551:1;9548;9541:12;9503:52;9574:26;9590:9;9574:26;:::i;9611:388::-;9679:6;9687;9740:2;9728:9;9719:7;9715:23;9711:32;9708:52;;;9756:1;9753;9746:12;9708:52;9795:9;9782:23;9814:31;9839:5;9814:31;:::i;:::-;9864:5;-1:-1:-1;9921:2:1;9906:18;;9893:32;9934:33;9893:32;9934:33;:::i;:::-;9986:7;9976:17;;;9611:388;;;;;:::o;10004:385::-;10090:6;10098;10106;10114;10167:3;10155:9;10146:7;10142:23;10138:33;10135:53;;;10184:1;10181;10174:12;10135:53;-1:-1:-1;;10207:23:1;;;10277:2;10262:18;;10249:32;;-1:-1:-1;10328:2:1;10313:18;;10300:32;;10379:2;10364:18;10351:32;;-1:-1:-1;10004:385:1;-1:-1:-1;10004:385:1:o;10394:437::-;10473:1;10469:12;;;;10516;;;10537:61;;10591:4;10583:6;10579:17;10569:27;;10537:61;10644:2;10636:6;10633:14;10613:18;10610:38;10607:218;;;-1:-1:-1;;;10678:1:1;10671:88;10782:4;10779:1;10772:15;10810:4;10807:1;10800:15;10607:218;;10394:437;;;:::o;11542:184::-;-1:-1:-1;;;11591:1:1;11584:88;11691:4;11688:1;11681:15;11715:4;11712:1;11705:15;11731:168;11771:7;11837:1;11833;11829:6;11825:14;11822:1;11819:21;11814:1;11807:9;11800:17;11796:45;11793:71;;;11844:18;;:::i;:::-;-1:-1:-1;11884:9:1;;11731:168::o;12618:184::-;-1:-1:-1;;;12667:1:1;12660:88;12767:4;12764:1;12757:15;12791:4;12788:1;12781:15;12807:125;12847:4;12875:1;12872;12869:8;12866:34;;;12880:18;;:::i;:::-;-1:-1:-1;12917:9:1;;12807:125::o;12937:184::-;-1:-1:-1;;;12986:1:1;12979:88;13086:4;13083:1;13076:15;13110:4;13107:1;13100:15;13126:135;13165:3;-1:-1:-1;;13186:17:1;;13183:43;;;13206:18;;:::i;:::-;-1:-1:-1;13253:1:1;13242:13;;13126:135::o;13266:184::-;-1:-1:-1;;;13315:1:1;13308:88;13415:4;13412:1;13405:15;13439:4;13436:1;13429:15;13455:120;13495:1;13521;13511:35;;13526:18;;:::i;:::-;-1:-1:-1;13560:9:1;;13455:120::o;14349:422::-;14438:1;14481:5;14438:1;14495:270;14516:7;14506:8;14503:21;14495:270;;;14575:4;14571:1;14567:6;14563:17;14557:4;14554:27;14551:53;;;14584:18;;:::i;:::-;14634:7;14624:8;14620:22;14617:55;;;14654:16;;;;14617:55;14733:22;;;;14693:15;;;;14495:270;;;14499:3;14349:422;;;;;:::o;14776:806::-;14825:5;14855:8;14845:80;;-1:-1:-1;14896:1:1;14910:5;;14845:80;14944:4;14934:76;;-1:-1:-1;14981:1:1;14995:5;;14934:76;15026:4;15044:1;15039:59;;;;15112:1;15107:130;;;;15019:218;;15039:59;15069:1;15060:10;;15083:5;;;15107:130;15144:3;15134:8;15131:17;15128:43;;;15151:18;;:::i;:::-;-1:-1:-1;;15207:1:1;15193:16;;15222:5;;15019:218;;15321:2;15311:8;15308:16;15302:3;15296:4;15293:13;15289:36;15283:2;15273:8;15270:16;15265:2;15259:4;15256:12;15252:35;15249:77;15246:159;;;-1:-1:-1;15358:19:1;;;15390:5;;15246:159;15437:34;15462:8;15456:4;15437:34;:::i;:::-;15507:6;15503:1;15499:6;15495:19;15486:7;15483:32;15480:58;;;15518:18;;:::i;:::-;15556:20;;14776:806;-1:-1:-1;;;14776:806:1:o;15587:140::-;15645:5;15674:47;15715:4;15705:8;15701:19;15695:4;15674:47;:::i;15732:175::-;15769:3;15813:4;15806:5;15802:16;15842:4;15833:7;15830:17;15827:43;;;15850:18;;:::i;:::-;15899:1;15886:15;;15732:175;-1:-1:-1;;15732:175:1:o;16323:128::-;16363:3;16394:1;16390:6;16387:1;16384:13;16381:39;;;16400:18;;:::i;:::-;-1:-1:-1;16436:9:1;;16323:128::o;17658:131::-;17718:5;17747:36;17774:8;17768:4;17747:36;:::i;17794:112::-;17826:1;17852;17842:35;;17857:18;;:::i;:::-;-1:-1:-1;17891:9:1;;17794:112::o;17911:251::-;17981:6;18034:2;18022:9;18013:7;18009:23;18005:32;18002:52;;;18050:1;18047;18040:12;18002:52;18082:9;18076:16;18101:31;18126:5;18101:31;:::i;19134:306::-;19222:6;19230;19238;19291:2;19279:9;19270:7;19266:23;19262:32;19259:52;;;19307:1;19304;19297:12;19259:52;19336:9;19330:16;19320:26;;19386:2;19375:9;19371:18;19365:25;19355:35;;19430:2;19419:9;19415:18;19409:25;19399:35;;19134:306;;;;;:::o;23713:1026::-;23975:4;24023:3;24012:9;24008:19;24054:6;24043:9;24036:25;24080:2;24118:6;24113:2;24102:9;24098:18;24091:34;24161:3;24156:2;24145:9;24141:18;24134:31;24185:6;24220;24214:13;24251:6;24243;24236:22;24289:3;24278:9;24274:19;24267:26;;24328:2;24320:6;24316:15;24302:29;;24349:1;24359:218;24373:6;24370:1;24367:13;24359:218;;;24438:13;;-1:-1:-1;;;;;24434:62:1;24422:75;;24552:15;;;;24517:12;;;;24395:1;24388:9;24359:218;;;-1:-1:-1;;;;;;;24633:55:1;;;;24628:2;24613:18;;24606:83;-1:-1:-1;;;24720:3:1;24705:19;24698:35;24594:3;23713:1026;-1:-1:-1;;;23713:1026:1:o
Swarm Source
ipfs://2065c339b219984149d23ea844856a2a60d35ab6c8a10946a3525016c9c9abe0
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.