Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
200,000,000,000 CRDAO
Holders
76
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
183,224,621,297.688585156408931291 CRDAOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TokenTemplate
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-06-10 */ // SPDX-License-Identifier: MIT /********************************************************** Published Via HackerLabs Proof Platform Visit: https://hackerlabsdao.com/ https://www.verifiedbyproof.com/ ***********************************************************************************/ /********************************************************************************** CRAZY RICH DAO ***********************************************************************************/ pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` 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 from, address to, 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); } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } ////import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; ////import "openzeppelin-solidity/contracts/token/ERC20/extensions/IERC20Metadata.sol"; ////import "openzeppelin-solidity/contracts/utils/Context.sol"; ////import "openzeppelin-solidity/contracts/utils/math/SafeMath.sol"; ////import "openzeppelin-solidity/contracts/access/Ownable.sol"; interface IBURNER { function burnEmUp() external payable; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( 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 factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns ( uint amountToken, uint amountETH, uint liquidity ); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); } interface ITeamFinanceLocker { function lockTokens( address _tokenAddress, address _withdrawalAddress, uint256 _amount, uint256 _unlockTime ) external payable returns (uint256 _id); } interface ITokenTemplate { function swapTradingStatus() external; function setLaunchedAt() external; function cancelToken() external; } library Fees { struct allFees { uint256 treasuryFee; uint256 treasuryFeeOnSell; uint256 lpFee; uint256 lpFeeOnSell; uint256 marketingFee; uint256 marketingFeeOnSell; } } contract TokenTemplate is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; address payable public hldBurnerAddress; address public hldAdmin; bool public restrictWhales = true; mapping(address => bool) public isFeeExempt; mapping(address => bool) public isTxLimitExempt; mapping(address => bool) public isDividendExempt; uint256 public launchedAt; uint256 public hldFee = 2; uint256 public treasuryFee; uint256 public lpFee; uint256 public marketingFee; uint256 public treasuryFeeOnSell; uint256 public lpFeeOnSell; uint256 public marketingFeeOnSell; uint256 public totalFee; uint256 public totalFeeIfSelling; IUniswapV2Router02 public router; address public pair; address public factory; address public tokenOwner; address public tokenSwap; address payable public treasuryWallet; address payable public marketingWallet; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public tradingStatus = true; mapping(address => bool) private bots; uint256 public _maxTxAmount; uint256 public _walletMax; uint256 public swapThreshold; constructor( string memory tokenName, string memory tokenSymbol, uint256 initialSupply, address owner, address marketing, address treasury, address swapContract, address routerAddress, address initialHldAdmin, address initialHldBurner, Fees.allFees memory fees ) { _name = tokenName; _symbol = tokenSymbol; uint256 tokenSwapAmount = (initialSupply * 30) / 100; uint256 ownerAmount = (initialSupply * 48) / 100; tokenSwap = swapContract; _totalSupply += initialSupply; _balances[msg.sender] += initialSupply - (tokenSwapAmount + ownerAmount); _balances[tokenSwap] += tokenSwapAmount; _balances[owner] += ownerAmount; _maxTxAmount = (initialSupply * 1) / 100; _walletMax = (initialSupply * 2) / 100; swapThreshold = (initialSupply * 5) / 4000; router = IUniswapV2Router02(routerAddress); pair = IUniswapV2Factory(router.factory()).createPair( router.WETH(), address(this) ); _allowances[address(this)][address(router)] = type(uint256).max; factory = msg.sender; isFeeExempt[address(this)] = true; isFeeExempt[factory] = true; isFeeExempt[swapContract] = true; isTxLimitExempt[owner] = true; isTxLimitExempt[swapContract] = true; isTxLimitExempt[pair] = true; isTxLimitExempt[factory] = true; isTxLimitExempt[DEAD] = true; isTxLimitExempt[ZERO] = true; treasuryFee = fees.treasuryFee; lpFee = fees.lpFee; marketingFee = fees.marketingFee; treasuryFeeOnSell = fees.treasuryFeeOnSell; lpFeeOnSell = fees.lpFeeOnSell; marketingFeeOnSell = fees.marketingFeeOnSell; totalFee = marketingFee.add(lpFee).add(treasuryFee).add(hldFee); totalFeeIfSelling = marketingFeeOnSell .add(lpFeeOnSell) .add(treasuryFeeOnSell) .add(hldFee); require(totalFee <= 12, "Too high fee"); require(totalFeeIfSelling <= 17, "Too high fee"); tokenOwner = owner; marketingWallet = payable(marketing); treasuryWallet = payable(treasury); hldBurnerAddress = payable(initialHldBurner); hldAdmin = initialHldAdmin; } modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier onlyHldAdmin() { require( hldAdmin == _msgSender(), "Ownable: caller is not the hldAdmin" ); _; } modifier onlyOwner() { require(tokenOwner == _msgSender(), "Ownable: caller is not the owner"); _; } modifier onlyFactory() { require(factory == _msgSender(), "Ownable: caller is not the factory"); _; } //hldAdmin functions function updateHldAdmin(address newAdmin) external virtual onlyHldAdmin { hldAdmin = newAdmin; } function updateHldBurnerAddress(address newhldBurnerAddress) external onlyHldAdmin { hldBurnerAddress = payable(newhldBurnerAddress); } function setBots(address[] memory bots_) external onlyHldAdmin { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } //Factory functions function swapTradingStatus() external onlyFactory { tradingStatus = !tradingStatus; } function setLaunchedAt() external onlyFactory { require(launchedAt == 0, "already launched"); launchedAt = block.timestamp; } function cancelToken() external onlyFactory { isFeeExempt[address(router)] = true; isTxLimitExempt[address(router)] = true; isTxLimitExempt[tokenOwner] = true; tradingStatus = true; } //Owner functions function changeFees( uint256 initialtreasuryFee, uint256 initialtreasuryFeeOnSell, uint256 initialLpFee, uint256 initialLpFeeOnSell, uint256 initialmarketingFee, uint256 initialmarketingFeeOnSell ) external onlyOwner { treasuryFee = initialtreasuryFee; lpFee = initialLpFee; marketingFee = initialmarketingFee; treasuryFeeOnSell = initialtreasuryFeeOnSell; lpFeeOnSell = initialLpFeeOnSell; marketingFeeOnSell = initialmarketingFeeOnSell; totalFee = marketingFee.add(lpFee).add(treasuryFee).add(hldFee); totalFeeIfSelling = marketingFeeOnSell .add(lpFeeOnSell) .add(treasuryFeeOnSell) .add(hldFee); require(totalFee <= 12, "Too high fee"); require(totalFeeIfSelling <= 17, "Too high fee"); } function changeTxLimit(uint256 newLimit) external onlyOwner { require(launchedAt != 0, "!launched"); require(block.timestamp >= launchedAt + 24 hours, "too soon"); _maxTxAmount = newLimit; } function changeWalletLimit(uint256 newLimit) external onlyOwner { require(launchedAt != 0, "!launched"); require(block.timestamp >= launchedAt + 24 hours, "too soon"); _walletMax = newLimit; } function changeRestrictWhales(bool newValue) external onlyOwner { require(launchedAt != 0, "!launched"); require(block.timestamp >= launchedAt + 24 hours, "too soon"); restrictWhales = newValue; } function changeIsFeeExempt(address[] calldata holders, bool exempt) external onlyOwner { for(uint256 i = 0 ; i < holders.length ; i++) { isFeeExempt[holders[i]] = exempt; } } function changeIsTxLimitExempt(address holder, bool exempt) external onlyOwner { require(launchedAt != 0, "!launched"); require(block.timestamp >= launchedAt + 24 hours, "too soon"); isTxLimitExempt[holder] = exempt; } function reduceHldFee() external onlyOwner { require(hldFee == 2, "!already reduced"); require(launchedAt != 0, "!launched"); require(block.timestamp >= launchedAt + 72 hours, "too soon"); hldFee = 1; totalFee = marketingFee.add(lpFee).add(treasuryFee).add(hldFee); totalFeeIfSelling = marketingFeeOnSell .add(lpFeeOnSell) .add(treasuryFeeOnSell) .add(hldFee); } function setmarketingWallet(address payable newmarketingWallet) external onlyOwner { marketingWallet = payable(newmarketingWallet); } function settreasuryWallet(address payable newTreasury) external onlyOwner { treasuryWallet = payable(newTreasury); } function setOwnerWallet(address payable newOwnerWallet) external onlyOwner { tokenOwner = newOwnerWallet; } function changeSwapBackSettings( bool enableSwapBack, uint256 newSwapBackLimit ) external onlyOwner { swapAndLiquifyEnabled = enableSwapBack; swapThreshold = newSwapBackLimit; } function delBot(address notbot) external onlyOwner { bots[notbot] = false; } function getCirculatingSupply() external view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } /** * @dev Returns the name of the token. */ function name() external view virtual override returns (string memory) { return _name; } function symbol() external view virtual override returns (string memory) { return _symbol; } function decimals() external view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() external view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) external virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) external virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal returns (bool) { require(tradingStatus, "!trading"); require(!bots[sender] && !bots[recipient]); if (inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } require(amount <= _maxTxAmount || isTxLimitExempt[sender], "tx"); if (!isTxLimitExempt[recipient] && restrictWhales) { require(_balances[recipient].add(amount) <= _walletMax, "wallet"); } if ( msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold ) { swapBack(); } _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } function _basicTransfer( address sender, address recipient, uint256 amount ) internal returns (bool) { _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function takeFee( address sender, address recipient, uint256 amount ) internal returns (uint256) { uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee; if (pair == recipient && block.timestamp < launchedAt + 24 hours) { feeApplicable = totalFeeIfSelling + 8; } uint256 feeAmount = amount.mul(feeApplicable).div(100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function swapBack() internal lockTheSwap { uint256 tokensToLiquify = _balances[address(this)]; uint256 amountToLiquify = tokensToLiquify.mul(lpFee).div(totalFee).div( 2 ); uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance; uint256 marketingBalance = amountETH.mul(marketingFee).div(totalFee); uint256 hldBalance = amountETH.mul(hldFee).div(totalFee); uint256 amountEthLiquidity = amountETH.mul(lpFee).div(totalFee).div(2); uint256 amountEthTreasury = amountETH .sub(marketingBalance) .sub(hldBalance) .sub(amountEthLiquidity); if (amountETH > 0) { IBURNER(hldBurnerAddress).burnEmUp{value: hldBalance}(); marketingWallet.transfer(marketingBalance); treasuryWallet.transfer(amountEthTreasury); } if (amountToLiquify > 0) { router.addLiquidityETH{value: amountEthLiquidity}( address(this), amountToLiquify, 0, 0, 0x000000000000000000000000000000000000dEaD, block.timestamp ); } } receive() external payable {} } contract ProofMigrationManager is Ownable { address constant ZERO = 0x0000000000000000000000000000000000000000; struct proofToken { bool status; address pair; address owner; uint256 lockId; } mapping(address => proofToken) public validatedPairs; address public hldAdmin; address public routerAddress; address public lockerAddress; address public hldBurnerAddress; event TokenCreated(address _address); constructor(address initialRouterAddress, address initialHldBurner) { routerAddress = initialRouterAddress; hldBurnerAddress = initialHldBurner; hldAdmin = msg.sender; } function createToken( string memory tokenName, string memory tokenSymbol, address marketingWallet, address treasuryWallet, address swapContract, uint256 initialSupply, uint256 initialtreasuryFee, uint256 initialtreasuryFeeOnSell, uint256 initialLpFee, uint256 initialLpFeeOnSell, uint256 initialmarketingFee, uint256 initialmarketingFeeOnSell ) external payable { // disable trading // require(unlockTime >= block.timestamp + 30 days, "unlock under 30 days"); require(msg.value >= 1 ether, "not enough liquidity"); //create token Fees.allFees memory fees = Fees.allFees( initialtreasuryFee, initialtreasuryFeeOnSell, initialLpFee, initialLpFeeOnSell, initialmarketingFee, initialmarketingFeeOnSell ); TokenTemplate newToken = new TokenTemplate( tokenName, tokenSymbol, initialSupply, msg.sender, marketingWallet, treasuryWallet, swapContract, routerAddress, hldAdmin, hldBurnerAddress, fees ); emit TokenCreated(address(newToken)); //add liquidity newToken.approve(routerAddress, type(uint256).max); IUniswapV2Router02 router = IUniswapV2Router02(routerAddress); router.addLiquidityETH{value: msg.value}( address(newToken), newToken.balanceOf(address(this)), 0, 0, msg.sender, block.timestamp ); newToken.setLaunchedAt(); validatedPairs[address(newToken)] = proofToken( false, newToken.pair(), msg.sender, 0 ); } function cancelToken(address tokenAddress) external { require(validatedPairs[tokenAddress].owner == msg.sender, "!owner"); require(validatedPairs[tokenAddress].status == false, "validated"); address _pair = validatedPairs[tokenAddress].pair; address _owner = validatedPairs[tokenAddress].owner; IUniswapV2Router02 router = IUniswapV2Router02(routerAddress); IERC20(_pair).approve(routerAddress, type(uint256).max); uint256 _lpBalance = IERC20(_pair).balanceOf(address(this)); ITokenTemplate(tokenAddress).cancelToken(); router.removeLiquidityETH( address(tokenAddress), _lpBalance, 0, 0, _owner, block.timestamp ); ITokenTemplate(tokenAddress).swapTradingStatus(); delete validatedPairs[tokenAddress]; } function setRouterAddress(address newRouterAddress) external onlyOwner { routerAddress = payable(newRouterAddress); } function setHldBurner(address newHldBurnerAddress) external onlyOwner { hldBurnerAddress = payable(newHldBurnerAddress); } function setHldAdmin(address newHldAdmin) external onlyOwner { hldAdmin = newHldAdmin; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"treasury","type":"address"},{"internalType":"address","name":"swapContract","type":"address"},{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"initialHldAdmin","type":"address"},{"internalType":"address","name":"initialHldBurner","type":"address"},{"components":[{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"uint256","name":"treasuryFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"lpFee","type":"uint256"},{"internalType":"uint256","name":"lpFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"internalType":"struct Fees.allFees","name":"fees","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialtreasuryFee","type":"uint256"},{"internalType":"uint256","name":"initialtreasuryFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialLpFee","type":"uint256"},{"internalType":"uint256","name":"initialLpFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialmarketingFee","type":"uint256"},{"internalType":"uint256","name":"initialmarketingFeeOnSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldBurnerAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeOnSell","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":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceHldFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLaunchedAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newmarketingWallet","type":"address"}],"name":"setmarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newTreasury","type":"address"}],"name":"settreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSwap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"updateHldAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newhldBurnerAddress","type":"address"}],"name":"updateHldBurnerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526006805460ff60a01b1916600160a01b1790556002600b55601a805460ff60b01b1960ff60a81b19909116600160a81b1716600160b01b1790553480156200004b57600080fd5b50604051620035d8380380620035d88339810160408190526200006e9162000a4b565b8a51620000839060039060208e01906200085e565b508951620000999060049060208d01906200085e565b5060006064620000ab8b601e62000c03565b620000b7919062000be2565b905060006064620000ca8c603062000c03565b620000d6919062000be2565b601880546001600160a01b0319166001600160a01b038a16179055600280549192508c916000906200010a90849062000bc7565b909155506200011c9050818362000bc7565b62000128908c62000c25565b33600090815260208190526040812080549091906200014990849062000bc7565b90915550506018546001600160a01b0316600090815260208190526040812080548492906200017a90849062000bc7565b90915550506001600160a01b038a1660009081526020819052604081208054839290620001a990849062000bc7565b9091555060649050620001be8c600162000c03565b620001ca919062000be2565b601c556064620001dc8c600262000c03565b620001e8919062000be2565b601d55610fa0620001fb8c600562000c03565b62000207919062000be2565b601e55601480546001600160a01b0319166001600160a01b0388811691909117918290556040805163c45a015560e01b81529051929091169163c45a015591600480820192602092909190829003018186803b1580156200026757600080fd5b505afa1580156200027c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a2919062000a2e565b6001600160a01b031663c9c65396601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ff57600080fd5b505afa15801562000314573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033a919062000a2e565b306040518363ffffffff1660e01b81526004016200035a92919062000b5b565b602060405180830381600087803b1580156200037557600080fd5b505af11580156200038a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b0919062000a2e565b601560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060001960016000306001600160a01b03166001600160a01b031681526020019081526020016000206000601460009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555033601660006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160076000306001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601660009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008c6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601560009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601660009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000806001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508260000151600c819055508260400151600d819055508260800151600e819055508260200151600f8190555082606001516010819055508260a0015160118190555062000752600b546200073e600c546200073e600d54600e546200084960201b6200169e1790919060201c565b6200084960201b6200169e1790919060201c565b60128190555062000784600b546200073e600f546200073e6010546011546200084960201b6200169e1790919060201c565b601355601254600c1015620007b65760405162461bcd60e51b8152600401620007ad9062000b75565b60405180910390fd5b60116013541115620007dc5760405162461bcd60e51b8152600401620007ad9062000b75565b5050601780546001600160a01b03199081166001600160a01b039a8b1617909155601a80548216988a169890981790975550601980548716958816959095179094556005805486169487169490941790935550506006805490921692169190911790555062000ca8915050565b600062000857828462000bc7565b9392505050565b8280546200086c9062000c3f565b90600052602060002090601f016020900481019282620008905760008555620008db565b82601f10620008ab57805160ff1916838001178555620008db565b82800160010185558215620008db579182015b82811115620008db578251825591602001919060010190620008be565b50620008e9929150620008ed565b5090565b5b80821115620008e95760008155600101620008ee565b80516001600160a01b03811681146200091c57600080fd5b919050565b600082601f83011262000932578081fd5b81516001600160401b038111156200094e576200094e62000c92565b602062000964601f8301601f1916820162000b9b565b828152858284870101111562000978578384fd5b835b83811015620009975785810183015182820184015282016200097a565b83811115620009a857848385840101525b5095945050505050565b600060c08284031215620009c4578081fd5b60405160c081016001600160401b0381118282101715620009e957620009e962000c92565b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b60006020828403121562000a40578081fd5b620008578262000904565b60008060008060008060008060008060006102008c8e03121562000a6d578687fd5b8b516001600160401b0381111562000a83578788fd5b62000a918e828f0162000921565b60208e0151909c5090506001600160401b0381111562000aaf578788fd5b62000abd8e828f0162000921565b9a505060408c0151985062000ad560608d0162000904565b975062000ae560808d0162000904565b965062000af560a08d0162000904565b955062000b0560c08d0162000904565b945062000b1560e08d0162000904565b935062000b266101008d0162000904565b925062000b376101208d0162000904565b915062000b498d6101408e01620009b2565b90509295989b509295989b9093969950565b6001600160a01b0392831681529116602082015260400190565b6020808252600c908201526b546f6f20686967682066656560a01b604082015260600190565b6040518181016001600160401b038111828210171562000bbf5762000bbf62000c92565b604052919050565b6000821982111562000bdd5762000bdd62000c7c565b500190565b60008262000bfe57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161562000c205762000c2062000c7c565b500290565b60008282101562000c3a5762000c3a62000c7c565b500390565b60028104600182168062000c5457607f821691505b6020821081141562000c7657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6129208062000cb86000396000f3fe6080604052600436106103855760003560e01c8063807c2d9c116101d1578063cc32d17611610102578063e5d85108116100a0578063f7c722051161006f578063f7c722051461093d578063f887ea401461095d578063fabe628314610972578063fbd75753146109925761038c565b8063e5d85108146108d3578063e66b1d1e146108e8578063ede1588f14610908578063ef9b35bb1461091d5761038c565b8063d4fb9a01116100dc578063d4fb9a0114610869578063d920334e1461087e578063dc4c7dbc1461089e578063dd62ed3e146108b35761038c565b8063cc32d1761461082a578063cdd4bd791461083f578063d1db3809146108545761038c565b8063a9059cbb1161016f578063bf56b37111610149578063bf56b371146107cb578063c45a0155146107e0578063ca987b0e146107f5578063cb29813c1461080a5761038c565b8063a9059cbb1461076b578063b515566a1461078b578063bb542ef0146107ab5761038c565b80639653dee5116101ab5780639653dee51461070c578063a3e6761014610721578063a457c2d714610736578063a8aa1b31146107565761038c565b8063807c2d9c146106c25780638b42507f146106d757806395d89b41146106f75761038c565b80633f4218e0116102b65780636b67c4df11610254578063774b584711610223578063774b5847146106635780637c0ff205146106785780637d1db4a51461068d5780637db1342c146106a25761038c565b80636b67c4df14610604578063704ce43e1461061957806370a082311461062e57806375f0a8741461064e5761038c565b806344de2e4c1161029057806344de2e4c146105a35780634626402b146105b85780634a74bb02146105da578063546a8811146105ef5761038c565b80633f4218e0146105435780634355855a1461056357806343d49dda146105835761038c565b806327193bc4116103235780632fa327a8116102fd5780632fa327a8146104c1578063313ce567146104e157806339509351146105035780633dab5269146105235761038c565b806327193bc414610477578063273123b71461048c5780632b112e49146104ac5761038c565b806318160ddd1161035f57806318160ddd1461040b5780631df4ccfc14610420578063224611731461043557806323b872dd146104575761038c565b80630445b6671461039157806306fdde03146103bc578063095ea7b3146103de5761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a66109a7565b6040516103b3919061275b565b60405180910390f35b3480156103c857600080fd5b506103d16109ad565b6040516103b3919061242f565b3480156103ea57600080fd5b506103fe6103f93660046121af565b610a3f565b6040516103b39190612424565b34801561041757600080fd5b506103a6610a61565b34801561042c57600080fd5b506103a6610a67565b34801561044157600080fd5b506104556104503660046120cb565b610a6d565b005b34801561046357600080fd5b506103fe61047236600461213b565b610acd565b34801561048357600080fd5b50610455610afe565b34801561049857600080fd5b506104556104a73660046120cb565b610b59565b3480156104b857600080fd5b506103a6610baf565b3480156104cd57600080fd5b506104556104dc3660046120cb565b610be0565b3480156104ed57600080fd5b506104f6610c37565b6040516103b391906127d4565b34801561050f57600080fd5b506103fe61051e3660046121af565b610c3c565b34801561052f57600080fd5b5061045561053e366004612333565b610c88565b34801561054f57600080fd5b506103fe61055e3660046120cb565b610cdf565b34801561056f57600080fd5b506103fe61057e3660046120cb565b610cf4565b34801561058f57600080fd5b5061045561059e3660046120cb565b610d09565b3480156105af57600080fd5b506103fe610d60565b3480156105c457600080fd5b506105cd610d70565b6040516103b391906123d5565b3480156105e657600080fd5b506103fe610d7f565b3480156105fb57600080fd5b50610455610d8f565b34801561061057600080fd5b506103a6610e32565b34801561062557600080fd5b506103a6610e38565b34801561063a57600080fd5b506103a66106493660046120cb565b610e3e565b34801561065a57600080fd5b506105cd610e5d565b34801561066f57600080fd5b506105cd610e6c565b34801561068457600080fd5b506103a6610e7b565b34801561069957600080fd5b506103a6610e81565b3480156106ae57600080fd5b506104556106bd36600461234e565b610e87565b3480156106ce57600080fd5b506103a6610f0f565b3480156106e357600080fd5b506103fe6106f23660046120cb565b610f15565b34801561070357600080fd5b506103d1610f2a565b34801561071857600080fd5b506105cd610f39565b34801561072d57600080fd5b506105cd610f48565b34801561074257600080fd5b506103fe6107513660046121af565b610f57565b34801561076257600080fd5b506105cd610fc3565b34801561077757600080fd5b506103fe6107863660046121af565b610fd2565b34801561079757600080fd5b506104556107a6366004612258565b610fea565b3480156107b757600080fd5b506104556107c63660046120cb565b611099565b3480156107d757600080fd5b506103a66110f0565b3480156107ec57600080fd5b506105cd6110f6565b34801561080157600080fd5b506103a6611105565b34801561081657600080fd5b50610455610825366004612393565b61110b565b34801561083657600080fd5b506103a66111f1565b34801561084b57600080fd5b506103a66111f7565b34801561086057600080fd5b506104556111fd565b34801561087557600080fd5b506103fe6112fb565b34801561088a57600080fd5b5061045561089936600461234e565b61130b565b3480156108aa57600080fd5b506103a6611393565b3480156108bf57600080fd5b506103a66108ce366004612103565b611399565b3480156108df57600080fd5b506103a66113c4565b3480156108f457600080fd5b50610455610903366004612319565b6113ca565b34801561091457600080fd5b506105cd61146b565b34801561092957600080fd5b506104556109383660046121da565b61147a565b34801561094957600080fd5b506104556109583660046120cb565b611534565b34801561096957600080fd5b506105cd61158b565b34801561097e57600080fd5b5061045561098d36600461217b565b61159a565b34801561099e57600080fd5b50610455611648565b601e5481565b6060600380546109bc90612850565b80601f01602080910402602001604051908101604052809291908181526020018280546109e890612850565b8015610a355780601f10610a0a57610100808354040283529160200191610a35565b820191906000526020600020905b815481529060010190602001808311610a1857829003601f168201915b5050505050905090565b600080610a4a6116aa565b9050610a578185856116ae565b5060019392505050565b60025490565b60125481565b610a756116aa565b6017546001600160a01b03908116911614610aab5760405162461bcd60e51b8152600401610aa2906125c5565b60405180910390fd5b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b600080610ad86116aa565b9050610ae5858285611762565b610af08585856117a6565b5060019150505b9392505050565b610b066116aa565b6016546001600160a01b03908116911614610b335760405162461bcd60e51b8152600401610aa2906126d4565b600a5415610b535760405162461bcd60e51b8152600401610aa2906125fa565b42600a55565b610b616116aa565b6017546001600160a01b03908116911614610b8e5760405162461bcd60e51b8152600401610aa2906125c5565b6001600160a01b03166000908152601b60205260409020805460ff19169055565b6000610bdb610bbe6000610e3e565b610bd5610bcc61dead610e3e565b60025490611aa4565b90611aa4565b905090565b610be86116aa565b6017546001600160a01b03908116911614610c155760405162461bcd60e51b8152600401610aa2906125c5565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b601290565b600080610c476116aa565b6001600160a01b03808216600090815260016020908152604080832093891683529290522054909150610a579082908690610c839087906127e2565b6116ae565b610c906116aa565b6017546001600160a01b03908116911614610cbd5760405162461bcd60e51b8152600401610aa2906125c5565b601a8054921515600160a81b0260ff60a81b1990931692909217909155601e55565b60076020526000908152604090205460ff1681565b60096020526000908152604090205460ff1681565b610d116116aa565b6006546001600160a01b03908116911614610d3e5760405162461bcd60e51b8152600401610aa290612582565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600654600160a01b900460ff1681565b6019546001600160a01b031681565b601a54600160a81b900460ff1681565b610d976116aa565b6016546001600160a01b03908116911614610dc45760405162461bcd60e51b8152600401610aa2906126d4565b601480546001600160a01b039081166000908152600760209081526040808320805460ff1990811660019081179092559554851684526008909252808320805486168317905560175490931682529190208054909216179055601a805460ff60b01b1916600160b01b179055565b600e5481565b600d5481565b6001600160a01b0381166000908152602081905260409020545b919050565b601a546001600160a01b031681565b6005546001600160a01b031681565b60105481565b601c5481565b610e8f6116aa565b6017546001600160a01b03908116911614610ebc5760405162461bcd60e51b8152600401610aa2906125c5565b600a54610edb5760405162461bcd60e51b8152600401610aa29061255f565b600a54610eeb90620151806127e2565b421015610f0a5760405162461bcd60e51b8152600401610aa29061251d565b601d55565b601d5481565b60086020526000908152604090205460ff1681565b6060600480546109bc90612850565b6018546001600160a01b031681565b6017546001600160a01b031681565b600080610f626116aa565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205490915083811015610fab5760405162461bcd60e51b8152600401610aa290612716565b610fb882868684036116ae565b506001949350505050565b6015546001600160a01b031681565b600080610fdd6116aa565b9050610fb88185856117a6565b610ff26116aa565b6006546001600160a01b0390811691161461101f5760405162461bcd60e51b8152600401610aa290612582565b60005b8151811015611095576001601b600084848151811061105157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061108d8161288b565b915050611022565b5050565b6110a16116aa565b6017546001600160a01b039081169116146110ce5760405162461bcd60e51b8152600401610aa2906125c5565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600a5481565b6016546001600160a01b031681565b60135481565b6111136116aa565b6017546001600160a01b039081169116146111405760405162461bcd60e51b8152600401610aa2906125c5565b600c869055600d849055600e829055600f85905560108390556011819055600b54611177906111718881868961169e565b9061169e565b6012819055506111a0600b54611171600f5461117160105460115461169e90919063ffffffff16565b601355601254600c10156111c65760405162461bcd60e51b8152600401610aa290612624565b601160135411156111e95760405162461bcd60e51b8152600401610aa290612624565b505050505050565b600c5481565b600f5481565b6112056116aa565b6017546001600160a01b039081169116146112325760405162461bcd60e51b8152600401610aa2906125c5565b600b546002146112545760405162461bcd60e51b8152600401610aa29061264a565b600a546112735760405162461bcd60e51b8152600401610aa29061255f565b600a54611283906203f4806127e2565b4210156112a25760405162461bcd60e51b8152600401610aa29061251d565b6001600b819055506112cd600b54611171600c54611171600d54600e5461169e90919063ffffffff16565b6012819055506112f6600b54611171600f5461117160105460115461169e90919063ffffffff16565b601355565b601a54600160b01b900460ff1681565b6113136116aa565b6017546001600160a01b039081169116146113405760405162461bcd60e51b8152600401610aa2906125c5565b600a5461135f5760405162461bcd60e51b8152600401610aa29061255f565b600a5461136f90620151806127e2565b42101561138e5760405162461bcd60e51b8152600401610aa29061251d565b601c55565b60115481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600b5481565b6113d26116aa565b6017546001600160a01b039081169116146113ff5760405162461bcd60e51b8152600401610aa2906125c5565b600a5461141e5760405162461bcd60e51b8152600401610aa29061255f565b600a5461142e90620151806127e2565b42101561144d5760405162461bcd60e51b8152600401610aa29061251d565b60068054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b031681565b6114826116aa565b6017546001600160a01b039081169116146114af5760405162461bcd60e51b8152600401610aa2906125c5565b60005b8281101561152e5781600760008686858181106114df57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906114f491906120cb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806115268161288b565b9150506114b2565b50505050565b61153c6116aa565b6006546001600160a01b039081169116146115695760405162461bcd60e51b8152600401610aa290612582565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031681565b6115a26116aa565b6017546001600160a01b039081169116146115cf5760405162461bcd60e51b8152600401610aa2906125c5565b600a546115ee5760405162461bcd60e51b8152600401610aa29061255f565b600a546115fe90620151806127e2565b42101561161d5760405162461bcd60e51b8152600401610aa29061251d565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6116506116aa565b6016546001600160a01b0390811691161461167d5760405162461bcd60e51b8152600401610aa2906126d4565b601a805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6000610af782846127e2565b3390565b6001600160a01b0383166116d45760405162461bcd60e51b8152600401610aa290612690565b6001600160a01b0382166116fa5760405162461bcd60e51b8152600401610aa2906124a4565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061175590859061275b565b60405180910390a3505050565b600061176e8484611399565b9050600019811461152e57818110156117995760405162461bcd60e51b8152600401610aa2906124e6565b61152e84848484036116ae565b601a54600090600160b01b900460ff166117d25760405162461bcd60e51b8152600401610aa290612482565b6001600160a01b0384166000908152601b602052604090205460ff1615801561181457506001600160a01b0383166000908152601b602052604090205460ff16155b61181d57600080fd5b601a54600160a01b900460ff16156118415761183a848484611ab0565b9050610af7565b601c548211158061186a57506001600160a01b03841660009081526008602052604090205460ff165b6118865760405162461bcd60e51b8152600401610aa290612674565b6001600160a01b03831660009081526008602052604090205460ff161580156118b85750600654600160a01b900460ff165b1561190157601d546001600160a01b0384166000908152602081905260409020546118e3908461169e565b11156119015760405162461bcd60e51b8152600401610aa29061253f565b6015546001600160a01b031633148015906119265750601a54600160a01b900460ff16155b801561193b5750601a54600160a81b900460ff165b80156119585750601e543060009081526020819052604090205410155b1561196557611965611b93565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081529081905291909120546119b6918490611f69565b6001600160a01b03851660009081526020818152604080832093909355600790529081205460ff16158015611a0457506001600160a01b03841660009081526007602052604090205460ff16155b611a0e5782611a19565b611a19858585611f95565b6001600160a01b038516600090815260208190526040902054909150611a3f908261169e565b6001600160a01b0380861660008181526020819052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a9190859061275b565b60405180910390a3506001949350505050565b6000610af78284612839565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081529081905291822054611b00918490611f69565b6001600160a01b038086166000908152602081905260408082209390935590851681522054611b2f908361169e565b6001600160a01b0380851660008181526020819052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b8190869061275b565b60405180910390a35060019392505050565b601a805460ff60a01b1916600160a01b17905530600090815260208190526040812054601254600d54919291611bda91600291611bd4919082908790612098565b906120a4565b90506000611be88383611aa4565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611c3057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611c8457600080fd5b505afa158015611c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbc91906120e7565b81600181518110611cdd57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac94790611d23908590600090869030904290600401612764565b600060405180830381600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b5050505060004790506000611d77601254611bd4600e548561209890919063ffffffff16565b90506000611d96601254611bd4600b548661209890919063ffffffff16565b90506000611dba6002611bd4601254611bd4600d548961209890919063ffffffff16565b90506000611dce82610bd585818989611aa4565b90508415611eb657600560009054906101000a90046001600160a01b03166001600160a01b0316630c50f89d846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e2657600080fd5b505af1158015611e3a573d6000803e3d6000fd5b5050601a546040516001600160a01b03909116935087156108fc0292508791506000818181858888f19350505050158015611e79573d6000803e3d6000fd5b506019546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611eb4573d6000803e3d6000fd5b505b8715611f515760145460405163f305d71960e01b81526001600160a01b039091169063f305d719908490611efb9030908d90600090819061dead9042906004016123e9565b6060604051808303818588803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f4d9190612366565b5050505b5050601a805460ff60a01b1916905550505050505050565b60008184841115611f8d5760405162461bcd60e51b8152600401610aa2919061242f565b505050900390565b60155460009081906001600160a01b03858116911614611fb757601254611fbb565b6013545b6015549091506001600160a01b038581169116148015611fe95750600a54611fe690620151806127e2565b42105b15611fff57601354611ffc9060086127e2565b90505b60006120106064611bd48685612098565b3060009081526020819052604090205490915061202d908261169e565b30600081815260208190526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061207c90859061275b565b60405180910390a361208e8482611aa4565b9695505050505050565b6000610af7828461281a565b6000610af782846127fa565b8035610e58816128d2565b80358015158114610e5857600080fd5b6000602082840312156120dc578081fd5b8135610af7816128d2565b6000602082840312156120f8578081fd5b8151610af7816128d2565b60008060408385031215612115578081fd5b8235612120816128d2565b91506020830135612130816128d2565b809150509250929050565b60008060006060848603121561214f578081fd5b833561215a816128d2565b9250602084013561216a816128d2565b929592945050506040919091013590565b6000806040838503121561218d578182fd5b8235612198816128d2565b91506121a6602084016120bb565b90509250929050565b600080604083850312156121c1578182fd5b82356121cc816128d2565b946020939093013593505050565b6000806000604084860312156121ee578283fd5b833567ffffffffffffffff80821115612205578485fd5b818601915086601f830112612218578485fd5b813581811115612226578586fd5b8760208083028501011115612239578586fd5b60209283019550935061224f91860190506120bb565b90509250925092565b6000602080838503121561226a578182fd5b823567ffffffffffffffff80821115612281578384fd5b818501915085601f830112612294578384fd5b8135818111156122a6576122a66128bc565b838102604051858282010181811085821117156122c5576122c56128bc565b604052828152858101935084860182860187018a10156122e3578788fd5b8795505b8386101561230c576122f8816120b0565b8552600195909501949386019386016122e7565b5098975050505050505050565b60006020828403121561232a578081fd5b610af7826120bb565b60008060408385031215612345578182fd5b6121cc836120bb565b60006020828403121561235f578081fd5b5035919050565b60008060006060848603121561237a578283fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156123ab578182fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b8181101561245b5785810183015185820160400152820161243f565b8181111561246c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600890820152672174726164696e6760c01b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601d908201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604082015260600190565b6020808252600890820152673a37b79039b7b7b760c11b604082015260600190565b6020808252600690820152651dd85b1b195d60d21b604082015260600190565b602080825260099082015268085b185d5b98da195960ba1b604082015260600190565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460408201526236b4b760e91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f185b1c9958591e481b185d5b98da195960821b604082015260600190565b6020808252600c908201526b546f6f20686967682066656560a01b604082015260600190565b60208082526010908201526f08585b1c9958591e481c99591d58d95960821b604082015260600190565b6020808252600290820152610e8f60f31b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526022908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520666163746f604082015261727960f01b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127b35784516001600160a01b03168352938301939183019160010161278e565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b600082198211156127f5576127f56128a6565b500190565b60008261281557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612834576128346128a6565b500290565b60008282101561284b5761284b6128a6565b500390565b60028104600182168061286457607f821691505b6020821081141561288557634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561289f5761289f6128a6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146128e757600080fd5b5056fea264697066735822122011f98b8c6ee9a11863fa353aa6c9f755f5cb1132956c4083871e814153a8573164736f6c63430008000033000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000002863c1f5cdae42f9540000000000000000000000000000000c86a2c85b46ffbea8905b5f86985afb165446f3b0000000000000000000000001cf00902c0274b2ca5e7130bb2750b07d160c3a2000000000000000000000000a6c04e7d6ff705581387cd22a7d7fb985d3a82660000000000000000000000004a4e17b455fa84d010fe522e6faf709e72dee6fe0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c86a2c85b46ffbea8905b5f86985afb165446f3b000000000000000000000000f9859ab850a8cc66ff33001798baca257b64bcf5000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e4372617a7920526963682044414f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005435244414f000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106103855760003560e01c8063807c2d9c116101d1578063cc32d17611610102578063e5d85108116100a0578063f7c722051161006f578063f7c722051461093d578063f887ea401461095d578063fabe628314610972578063fbd75753146109925761038c565b8063e5d85108146108d3578063e66b1d1e146108e8578063ede1588f14610908578063ef9b35bb1461091d5761038c565b8063d4fb9a01116100dc578063d4fb9a0114610869578063d920334e1461087e578063dc4c7dbc1461089e578063dd62ed3e146108b35761038c565b8063cc32d1761461082a578063cdd4bd791461083f578063d1db3809146108545761038c565b8063a9059cbb1161016f578063bf56b37111610149578063bf56b371146107cb578063c45a0155146107e0578063ca987b0e146107f5578063cb29813c1461080a5761038c565b8063a9059cbb1461076b578063b515566a1461078b578063bb542ef0146107ab5761038c565b80639653dee5116101ab5780639653dee51461070c578063a3e6761014610721578063a457c2d714610736578063a8aa1b31146107565761038c565b8063807c2d9c146106c25780638b42507f146106d757806395d89b41146106f75761038c565b80633f4218e0116102b65780636b67c4df11610254578063774b584711610223578063774b5847146106635780637c0ff205146106785780637d1db4a51461068d5780637db1342c146106a25761038c565b80636b67c4df14610604578063704ce43e1461061957806370a082311461062e57806375f0a8741461064e5761038c565b806344de2e4c1161029057806344de2e4c146105a35780634626402b146105b85780634a74bb02146105da578063546a8811146105ef5761038c565b80633f4218e0146105435780634355855a1461056357806343d49dda146105835761038c565b806327193bc4116103235780632fa327a8116102fd5780632fa327a8146104c1578063313ce567146104e157806339509351146105035780633dab5269146105235761038c565b806327193bc414610477578063273123b71461048c5780632b112e49146104ac5761038c565b806318160ddd1161035f57806318160ddd1461040b5780631df4ccfc14610420578063224611731461043557806323b872dd146104575761038c565b80630445b6671461039157806306fdde03146103bc578063095ea7b3146103de5761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a66109a7565b6040516103b3919061275b565b60405180910390f35b3480156103c857600080fd5b506103d16109ad565b6040516103b3919061242f565b3480156103ea57600080fd5b506103fe6103f93660046121af565b610a3f565b6040516103b39190612424565b34801561041757600080fd5b506103a6610a61565b34801561042c57600080fd5b506103a6610a67565b34801561044157600080fd5b506104556104503660046120cb565b610a6d565b005b34801561046357600080fd5b506103fe61047236600461213b565b610acd565b34801561048357600080fd5b50610455610afe565b34801561049857600080fd5b506104556104a73660046120cb565b610b59565b3480156104b857600080fd5b506103a6610baf565b3480156104cd57600080fd5b506104556104dc3660046120cb565b610be0565b3480156104ed57600080fd5b506104f6610c37565b6040516103b391906127d4565b34801561050f57600080fd5b506103fe61051e3660046121af565b610c3c565b34801561052f57600080fd5b5061045561053e366004612333565b610c88565b34801561054f57600080fd5b506103fe61055e3660046120cb565b610cdf565b34801561056f57600080fd5b506103fe61057e3660046120cb565b610cf4565b34801561058f57600080fd5b5061045561059e3660046120cb565b610d09565b3480156105af57600080fd5b506103fe610d60565b3480156105c457600080fd5b506105cd610d70565b6040516103b391906123d5565b3480156105e657600080fd5b506103fe610d7f565b3480156105fb57600080fd5b50610455610d8f565b34801561061057600080fd5b506103a6610e32565b34801561062557600080fd5b506103a6610e38565b34801561063a57600080fd5b506103a66106493660046120cb565b610e3e565b34801561065a57600080fd5b506105cd610e5d565b34801561066f57600080fd5b506105cd610e6c565b34801561068457600080fd5b506103a6610e7b565b34801561069957600080fd5b506103a6610e81565b3480156106ae57600080fd5b506104556106bd36600461234e565b610e87565b3480156106ce57600080fd5b506103a6610f0f565b3480156106e357600080fd5b506103fe6106f23660046120cb565b610f15565b34801561070357600080fd5b506103d1610f2a565b34801561071857600080fd5b506105cd610f39565b34801561072d57600080fd5b506105cd610f48565b34801561074257600080fd5b506103fe6107513660046121af565b610f57565b34801561076257600080fd5b506105cd610fc3565b34801561077757600080fd5b506103fe6107863660046121af565b610fd2565b34801561079757600080fd5b506104556107a6366004612258565b610fea565b3480156107b757600080fd5b506104556107c63660046120cb565b611099565b3480156107d757600080fd5b506103a66110f0565b3480156107ec57600080fd5b506105cd6110f6565b34801561080157600080fd5b506103a6611105565b34801561081657600080fd5b50610455610825366004612393565b61110b565b34801561083657600080fd5b506103a66111f1565b34801561084b57600080fd5b506103a66111f7565b34801561086057600080fd5b506104556111fd565b34801561087557600080fd5b506103fe6112fb565b34801561088a57600080fd5b5061045561089936600461234e565b61130b565b3480156108aa57600080fd5b506103a6611393565b3480156108bf57600080fd5b506103a66108ce366004612103565b611399565b3480156108df57600080fd5b506103a66113c4565b3480156108f457600080fd5b50610455610903366004612319565b6113ca565b34801561091457600080fd5b506105cd61146b565b34801561092957600080fd5b506104556109383660046121da565b61147a565b34801561094957600080fd5b506104556109583660046120cb565b611534565b34801561096957600080fd5b506105cd61158b565b34801561097e57600080fd5b5061045561098d36600461217b565b61159a565b34801561099e57600080fd5b50610455611648565b601e5481565b6060600380546109bc90612850565b80601f01602080910402602001604051908101604052809291908181526020018280546109e890612850565b8015610a355780601f10610a0a57610100808354040283529160200191610a35565b820191906000526020600020905b815481529060010190602001808311610a1857829003601f168201915b5050505050905090565b600080610a4a6116aa565b9050610a578185856116ae565b5060019392505050565b60025490565b60125481565b610a756116aa565b6017546001600160a01b03908116911614610aab5760405162461bcd60e51b8152600401610aa2906125c5565b60405180910390fd5b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b600080610ad86116aa565b9050610ae5858285611762565b610af08585856117a6565b5060019150505b9392505050565b610b066116aa565b6016546001600160a01b03908116911614610b335760405162461bcd60e51b8152600401610aa2906126d4565b600a5415610b535760405162461bcd60e51b8152600401610aa2906125fa565b42600a55565b610b616116aa565b6017546001600160a01b03908116911614610b8e5760405162461bcd60e51b8152600401610aa2906125c5565b6001600160a01b03166000908152601b60205260409020805460ff19169055565b6000610bdb610bbe6000610e3e565b610bd5610bcc61dead610e3e565b60025490611aa4565b90611aa4565b905090565b610be86116aa565b6017546001600160a01b03908116911614610c155760405162461bcd60e51b8152600401610aa2906125c5565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b601290565b600080610c476116aa565b6001600160a01b03808216600090815260016020908152604080832093891683529290522054909150610a579082908690610c839087906127e2565b6116ae565b610c906116aa565b6017546001600160a01b03908116911614610cbd5760405162461bcd60e51b8152600401610aa2906125c5565b601a8054921515600160a81b0260ff60a81b1990931692909217909155601e55565b60076020526000908152604090205460ff1681565b60096020526000908152604090205460ff1681565b610d116116aa565b6006546001600160a01b03908116911614610d3e5760405162461bcd60e51b8152600401610aa290612582565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600654600160a01b900460ff1681565b6019546001600160a01b031681565b601a54600160a81b900460ff1681565b610d976116aa565b6016546001600160a01b03908116911614610dc45760405162461bcd60e51b8152600401610aa2906126d4565b601480546001600160a01b039081166000908152600760209081526040808320805460ff1990811660019081179092559554851684526008909252808320805486168317905560175490931682529190208054909216179055601a805460ff60b01b1916600160b01b179055565b600e5481565b600d5481565b6001600160a01b0381166000908152602081905260409020545b919050565b601a546001600160a01b031681565b6005546001600160a01b031681565b60105481565b601c5481565b610e8f6116aa565b6017546001600160a01b03908116911614610ebc5760405162461bcd60e51b8152600401610aa2906125c5565b600a54610edb5760405162461bcd60e51b8152600401610aa29061255f565b600a54610eeb90620151806127e2565b421015610f0a5760405162461bcd60e51b8152600401610aa29061251d565b601d55565b601d5481565b60086020526000908152604090205460ff1681565b6060600480546109bc90612850565b6018546001600160a01b031681565b6017546001600160a01b031681565b600080610f626116aa565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205490915083811015610fab5760405162461bcd60e51b8152600401610aa290612716565b610fb882868684036116ae565b506001949350505050565b6015546001600160a01b031681565b600080610fdd6116aa565b9050610fb88185856117a6565b610ff26116aa565b6006546001600160a01b0390811691161461101f5760405162461bcd60e51b8152600401610aa290612582565b60005b8151811015611095576001601b600084848151811061105157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061108d8161288b565b915050611022565b5050565b6110a16116aa565b6017546001600160a01b039081169116146110ce5760405162461bcd60e51b8152600401610aa2906125c5565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600a5481565b6016546001600160a01b031681565b60135481565b6111136116aa565b6017546001600160a01b039081169116146111405760405162461bcd60e51b8152600401610aa2906125c5565b600c869055600d849055600e829055600f85905560108390556011819055600b54611177906111718881868961169e565b9061169e565b6012819055506111a0600b54611171600f5461117160105460115461169e90919063ffffffff16565b601355601254600c10156111c65760405162461bcd60e51b8152600401610aa290612624565b601160135411156111e95760405162461bcd60e51b8152600401610aa290612624565b505050505050565b600c5481565b600f5481565b6112056116aa565b6017546001600160a01b039081169116146112325760405162461bcd60e51b8152600401610aa2906125c5565b600b546002146112545760405162461bcd60e51b8152600401610aa29061264a565b600a546112735760405162461bcd60e51b8152600401610aa29061255f565b600a54611283906203f4806127e2565b4210156112a25760405162461bcd60e51b8152600401610aa29061251d565b6001600b819055506112cd600b54611171600c54611171600d54600e5461169e90919063ffffffff16565b6012819055506112f6600b54611171600f5461117160105460115461169e90919063ffffffff16565b601355565b601a54600160b01b900460ff1681565b6113136116aa565b6017546001600160a01b039081169116146113405760405162461bcd60e51b8152600401610aa2906125c5565b600a5461135f5760405162461bcd60e51b8152600401610aa29061255f565b600a5461136f90620151806127e2565b42101561138e5760405162461bcd60e51b8152600401610aa29061251d565b601c55565b60115481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600b5481565b6113d26116aa565b6017546001600160a01b039081169116146113ff5760405162461bcd60e51b8152600401610aa2906125c5565b600a5461141e5760405162461bcd60e51b8152600401610aa29061255f565b600a5461142e90620151806127e2565b42101561144d5760405162461bcd60e51b8152600401610aa29061251d565b60068054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b031681565b6114826116aa565b6017546001600160a01b039081169116146114af5760405162461bcd60e51b8152600401610aa2906125c5565b60005b8281101561152e5781600760008686858181106114df57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906114f491906120cb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806115268161288b565b9150506114b2565b50505050565b61153c6116aa565b6006546001600160a01b039081169116146115695760405162461bcd60e51b8152600401610aa290612582565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031681565b6115a26116aa565b6017546001600160a01b039081169116146115cf5760405162461bcd60e51b8152600401610aa2906125c5565b600a546115ee5760405162461bcd60e51b8152600401610aa29061255f565b600a546115fe90620151806127e2565b42101561161d5760405162461bcd60e51b8152600401610aa29061251d565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6116506116aa565b6016546001600160a01b0390811691161461167d5760405162461bcd60e51b8152600401610aa2906126d4565b601a805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6000610af782846127e2565b3390565b6001600160a01b0383166116d45760405162461bcd60e51b8152600401610aa290612690565b6001600160a01b0382166116fa5760405162461bcd60e51b8152600401610aa2906124a4565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061175590859061275b565b60405180910390a3505050565b600061176e8484611399565b9050600019811461152e57818110156117995760405162461bcd60e51b8152600401610aa2906124e6565b61152e84848484036116ae565b601a54600090600160b01b900460ff166117d25760405162461bcd60e51b8152600401610aa290612482565b6001600160a01b0384166000908152601b602052604090205460ff1615801561181457506001600160a01b0383166000908152601b602052604090205460ff16155b61181d57600080fd5b601a54600160a01b900460ff16156118415761183a848484611ab0565b9050610af7565b601c548211158061186a57506001600160a01b03841660009081526008602052604090205460ff165b6118865760405162461bcd60e51b8152600401610aa290612674565b6001600160a01b03831660009081526008602052604090205460ff161580156118b85750600654600160a01b900460ff165b1561190157601d546001600160a01b0384166000908152602081905260409020546118e3908461169e565b11156119015760405162461bcd60e51b8152600401610aa29061253f565b6015546001600160a01b031633148015906119265750601a54600160a01b900460ff16155b801561193b5750601a54600160a81b900460ff165b80156119585750601e543060009081526020819052604090205410155b1561196557611965611b93565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081529081905291909120546119b6918490611f69565b6001600160a01b03851660009081526020818152604080832093909355600790529081205460ff16158015611a0457506001600160a01b03841660009081526007602052604090205460ff16155b611a0e5782611a19565b611a19858585611f95565b6001600160a01b038516600090815260208190526040902054909150611a3f908261169e565b6001600160a01b0380861660008181526020819052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a9190859061275b565b60405180910390a3506001949350505050565b6000610af78284612839565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081529081905291822054611b00918490611f69565b6001600160a01b038086166000908152602081905260408082209390935590851681522054611b2f908361169e565b6001600160a01b0380851660008181526020819052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b8190869061275b565b60405180910390a35060019392505050565b601a805460ff60a01b1916600160a01b17905530600090815260208190526040812054601254600d54919291611bda91600291611bd4919082908790612098565b906120a4565b90506000611be88383611aa4565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611c3057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611c8457600080fd5b505afa158015611c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbc91906120e7565b81600181518110611cdd57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac94790611d23908590600090869030904290600401612764565b600060405180830381600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b5050505060004790506000611d77601254611bd4600e548561209890919063ffffffff16565b90506000611d96601254611bd4600b548661209890919063ffffffff16565b90506000611dba6002611bd4601254611bd4600d548961209890919063ffffffff16565b90506000611dce82610bd585818989611aa4565b90508415611eb657600560009054906101000a90046001600160a01b03166001600160a01b0316630c50f89d846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e2657600080fd5b505af1158015611e3a573d6000803e3d6000fd5b5050601a546040516001600160a01b03909116935087156108fc0292508791506000818181858888f19350505050158015611e79573d6000803e3d6000fd5b506019546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611eb4573d6000803e3d6000fd5b505b8715611f515760145460405163f305d71960e01b81526001600160a01b039091169063f305d719908490611efb9030908d90600090819061dead9042906004016123e9565b6060604051808303818588803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f4d9190612366565b5050505b5050601a805460ff60a01b1916905550505050505050565b60008184841115611f8d5760405162461bcd60e51b8152600401610aa2919061242f565b505050900390565b60155460009081906001600160a01b03858116911614611fb757601254611fbb565b6013545b6015549091506001600160a01b038581169116148015611fe95750600a54611fe690620151806127e2565b42105b15611fff57601354611ffc9060086127e2565b90505b60006120106064611bd48685612098565b3060009081526020819052604090205490915061202d908261169e565b30600081815260208190526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061207c90859061275b565b60405180910390a361208e8482611aa4565b9695505050505050565b6000610af7828461281a565b6000610af782846127fa565b8035610e58816128d2565b80358015158114610e5857600080fd5b6000602082840312156120dc578081fd5b8135610af7816128d2565b6000602082840312156120f8578081fd5b8151610af7816128d2565b60008060408385031215612115578081fd5b8235612120816128d2565b91506020830135612130816128d2565b809150509250929050565b60008060006060848603121561214f578081fd5b833561215a816128d2565b9250602084013561216a816128d2565b929592945050506040919091013590565b6000806040838503121561218d578182fd5b8235612198816128d2565b91506121a6602084016120bb565b90509250929050565b600080604083850312156121c1578182fd5b82356121cc816128d2565b946020939093013593505050565b6000806000604084860312156121ee578283fd5b833567ffffffffffffffff80821115612205578485fd5b818601915086601f830112612218578485fd5b813581811115612226578586fd5b8760208083028501011115612239578586fd5b60209283019550935061224f91860190506120bb565b90509250925092565b6000602080838503121561226a578182fd5b823567ffffffffffffffff80821115612281578384fd5b818501915085601f830112612294578384fd5b8135818111156122a6576122a66128bc565b838102604051858282010181811085821117156122c5576122c56128bc565b604052828152858101935084860182860187018a10156122e3578788fd5b8795505b8386101561230c576122f8816120b0565b8552600195909501949386019386016122e7565b5098975050505050505050565b60006020828403121561232a578081fd5b610af7826120bb565b60008060408385031215612345578182fd5b6121cc836120bb565b60006020828403121561235f578081fd5b5035919050565b60008060006060848603121561237a578283fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156123ab578182fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b8181101561245b5785810183015185820160400152820161243f565b8181111561246c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600890820152672174726164696e6760c01b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601d908201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604082015260600190565b6020808252600890820152673a37b79039b7b7b760c11b604082015260600190565b6020808252600690820152651dd85b1b195d60d21b604082015260600190565b602080825260099082015268085b185d5b98da195960ba1b604082015260600190565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460408201526236b4b760e91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f185b1c9958591e481b185d5b98da195960821b604082015260600190565b6020808252600c908201526b546f6f20686967682066656560a01b604082015260600190565b60208082526010908201526f08585b1c9958591e481c99591d58d95960821b604082015260600190565b6020808252600290820152610e8f60f31b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526022908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520666163746f604082015261727960f01b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127b35784516001600160a01b03168352938301939183019160010161278e565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b600082198211156127f5576127f56128a6565b500190565b60008261281557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612834576128346128a6565b500290565b60008282101561284b5761284b6128a6565b500390565b60028104600182168061286457607f821691505b6020821081141561288557634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561289f5761289f6128a6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146128e757600080fd5b5056fea264697066735822122011f98b8c6ee9a11863fa353aa6c9f755f5cb1132956c4083871e814153a8573164736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000002863c1f5cdae42f9540000000000000000000000000000000c86a2c85b46ffbea8905b5f86985afb165446f3b0000000000000000000000001cf00902c0274b2ca5e7130bb2750b07d160c3a2000000000000000000000000a6c04e7d6ff705581387cd22a7d7fb985d3a82660000000000000000000000004a4e17b455fa84d010fe522e6faf709e72dee6fe0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c86a2c85b46ffbea8905b5f86985afb165446f3b000000000000000000000000f9859ab850a8cc66ff33001798baca257b64bcf5000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e4372617a7920526963682044414f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005435244414f000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : tokenName (string): Crazy Rich DAO
Arg [1] : tokenSymbol (string): CRDAO
Arg [2] : initialSupply (uint256): 200000000000000000000000000000
Arg [3] : owner (address): 0xc86A2C85B46ffbEa8905b5F86985aFb165446F3B
Arg [4] : marketing (address): 0x1cF00902c0274B2Ca5E7130BB2750B07d160c3A2
Arg [5] : treasury (address): 0xa6c04E7D6FF705581387cd22a7d7fB985d3a8266
Arg [6] : swapContract (address): 0x4A4e17B455fa84D010fE522e6FAF709E72deE6fE
Arg [7] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [8] : initialHldAdmin (address): 0xc86A2C85B46ffbEa8905b5F86985aFb165446F3B
Arg [9] : initialHldBurner (address): 0xf9859aB850A8cC66Ff33001798BaCa257b64bCf5
Arg [10] : fees (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
-----Encoded View---------------
20 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000200
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000240
Arg [2] : 0000000000000000000000000000000000000002863c1f5cdae42f9540000000
Arg [3] : 000000000000000000000000c86a2c85b46ffbea8905b5f86985afb165446f3b
Arg [4] : 0000000000000000000000001cf00902c0274b2ca5e7130bb2750b07d160c3a2
Arg [5] : 000000000000000000000000a6c04e7d6ff705581387cd22a7d7fb985d3a8266
Arg [6] : 0000000000000000000000004a4e17b455fa84d010fe522e6faf709e72dee6fe
Arg [7] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [8] : 000000000000000000000000c86a2c85b46ffbea8905b5f86985afb165446f3b
Arg [9] : 000000000000000000000000f9859ab850a8cc66ff33001798baca257b64bcf5
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [16] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [17] : 4372617a7920526963682044414f000000000000000000000000000000000000
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [19] : 435244414f000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
15860:16681:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17433:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25112:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26362:244::-;;;;;;;;;;-1:-1:-1;26362:244:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;25496:110::-;;;;;;;;;;;;;:::i;16886:23::-;;;;;;;;;;;;;:::i;24123:170::-;;;;;;;;;;-1:-1:-1;24123:170:0;;;;;:::i;:::-;;:::i;:::-;;26614:297;;;;;;;;;;-1:-1:-1;26614:297:0;;;;;:::i;:::-;;:::i;21135:148::-;;;;;;;;;;;;;:::i;24800:90::-;;;;;;;;;;-1:-1:-1;24800:90:0;;;;;:::i;:::-;;:::i;24898:144::-;;;;;;;;;;;;;:::i;24301:131::-;;;;;;;;;;-1:-1:-1;24301:131:0;;;;;:::i;:::-;;:::i;25336:95::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26919:274::-;;;;;;;;;;-1:-1:-1;26919:274:0;;;;;:::i;:::-;;:::i;24569:223::-;;;;;;;;;;-1:-1:-1;24569:223:0;;;;;:::i;:::-;;:::i;16449:43::-;;;;;;;;;;-1:-1:-1;16449:43:0;;;;;:::i;:::-;;:::i;16553:48::-;;;;;;;;;;-1:-1:-1;16553:48:0;;;;;:::i;:::-;;:::i;20528:110::-;;;;;;;;;;-1:-1:-1;20528:110:0;;;;;:::i;:::-;;:::i;16407:33::-;;;;;;;;;;;;;:::i;17114:37::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17233:40::-;;;;;;;;;;;;;:::i;21291:224::-;;;;;;;;;;;;;:::i;16736:27::-;;;;;;;;;;;;;:::i;16709:20::-;;;;;;;;;;;;;:::i;25669:177::-;;;;;;;;;;-1:-1:-1;25669:177:0;;;;;:::i;:::-;;:::i;17158:38::-;;;;;;;;;;;;;:::i;16329:39::-;;;;;;;;;;;;;:::i;16811:26::-;;;;;;;;;;;;;:::i;17367:27::-;;;;;;;;;;;;;:::i;22674:224::-;;;;;;;;;;-1:-1:-1;22674:224:0;;;;;:::i;:::-;;:::i;17401:25::-;;;;;;;;;;;;;:::i;16499:47::-;;;;;;;;;;-1:-1:-1;16499:47:0;;;;;:::i;:::-;;:::i;25222:106::-;;;;;;;;;;;;;:::i;17083:24::-;;;;;;;;;;;;;:::i;17051:25::-;;;;;;;;;;;;;:::i;27201:509::-;;;;;;;;;;-1:-1:-1;27201:509:0;;;;;:::i;:::-;;:::i;16996:19::-;;;;;;;;;;;;;:::i;25854:236::-;;;;;;;;;;-1:-1:-1;25854:236:0;;;;;:::i;:::-;;:::i;20826:169::-;;;;;;;;;;-1:-1:-1;20826:169:0;;;;;:::i;:::-;;:::i;24440:121::-;;;;;;;;;;-1:-1:-1;24440:121:0;;;;;:::i;:::-;;:::i;16610:25::-;;;;;;;;;;;;;:::i;17022:22::-;;;;;;;;;;;;;:::i;16916:32::-;;;;;;;;;;;;;:::i;21546:890::-;;;;;;;;;;-1:-1:-1;21546:890:0;;;;;:::i;:::-;;:::i;16676:26::-;;;;;;;;;;;;;:::i;16772:32::-;;;;;;;;;;;;;:::i;23653:462::-;;;;;;;;;;;;;:::i;17280:32::-;;;;;;;;;;;;;:::i;22444:222::-;;;;;;;;;;-1:-1:-1;22444:222:0;;;;;:::i;:::-;;:::i;16844:33::-;;;;;;;;;;;;;:::i;26153:201::-;;;;;;;;;;-1:-1:-1;26153:201:0;;;;;:::i;:::-;;:::i;16642:25::-;;;;;;;;;;;;;:::i;22906:228::-;;;;;;;;;;-1:-1:-1;22906:228:0;;;;;:::i;:::-;;:::i;16375:23::-;;;;;;;;;;;;;:::i;23142:222::-;;;;;;;;;;-1:-1:-1;23142:222:0;;;;;:::i;:::-;;:::i;20646:172::-;;;;;;;;;;-1:-1:-1;20646:172:0;;;;;:::i;:::-;;:::i;16957:32::-;;;;;;;;;;;;;:::i;23372:273::-;;;;;;;;;;-1:-1:-1;23372:273:0;;;;;:::i;:::-;;:::i;21028:99::-;;;;;;;;;;;;;:::i;17433:28::-;;;;:::o;25112:102::-;25168:13;25201:5;25194:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25112:102;:::o;26362:244::-;26483:4;26505:13;26521:12;:10;:12::i;:::-;26505:28;;26544:32;26553:5;26560:7;26569:6;26544:8;:32::i;:::-;-1:-1:-1;26594:4:0;;26362:244;-1:-1:-1;;;26362:244:0:o;25496:110::-;25586:12;;25496:110;:::o;16886:23::-;;;;:::o;24123:170::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;;;;;;;;;24240:15:::1;:45:::0;;-1:-1:-1;;;;;;24240:45:0::1;-1:-1:-1::0;;;;;24240:45:0;;;::::1;::::0;;;::::1;::::0;;24123:170::o;26614:297::-;26747:4;26764:15;26782:12;:10;:12::i;:::-;26764:30;;26805:38;26821:4;26827:7;26836:6;26805:15;:38::i;:::-;26854:27;26864:4;26870:2;26874:6;26854:9;:27::i;:::-;;26899:4;26892:11;;;26614:297;;;;;;:::o;21135:148::-;20423:12;:10;:12::i;:::-;20412:7;;-1:-1:-1;;;;;20412:23:0;;;:7;;:23;20404:70;;;;-1:-1:-1;;;20404:70:0;;;;;;;:::i;:::-;21200:10:::1;::::0;:15;21192:44:::1;;;::::0;-1:-1:-1;;;21192:44:0;;::::1;::::0;::::1;;;:::i;:::-;21260:15;21247:10;:28:::0;21135:148::o;24800:90::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24862:12:0::1;24877:5;24862:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;24862:20:0::1;::::0;;24800:90::o;24898:144::-;24953:7;24980:54;25018:15;16280:42;25018:9;:15::i;:::-;24980:33;24997:15;16207:42;24997:9;:15::i;:::-;24980:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;24973:61;;24898:144;:::o;24301:131::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;24387:14:::1;:37:::0;;-1:-1:-1;;;;;;24387:37:0::1;-1:-1:-1::0;;;;;24387:37:0;;;::::1;::::0;;;::::1;::::0;;24301:131::o;25336:95::-;25421:2;25336:95;:::o;26919:274::-;27036:4;27058:13;27074:12;:10;:12::i;:::-;-1:-1:-1;;;;;27122:18:0;;;;;;;-1:-1:-1;27122:18:0;;;;;;;;:27;;;;;;;;;;:18;;-1:-1:-1;27097:66:0;;27122:18;;:27;;:40;;27152:10;;27122:40;:::i;:::-;27097:8;:66::i;24569:223::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;24703:21:::1;:38:::0;;;::::1;;-1:-1:-1::0;;;24703:38:0::1;-1:-1:-1::0;;;;24703:38:0;;::::1;::::0;;;::::1;::::0;;;24752:13:::1;:32:::0;24569:223::o;16449:43::-;;;;;;;;;;;;;;;:::o;16553:48::-;;;;;;;;;;;;;;;:::o;20528:110::-;20136:12;:10;:12::i;:::-;20124:8;;-1:-1:-1;;;;;20124:24:0;;;:8;;:24;20102:109;;;;-1:-1:-1;;;20102:109:0;;;;;;;:::i;:::-;20611:8:::1;:19:::0;;-1:-1:-1;;;;;;20611:19:0::1;-1:-1:-1::0;;;;;20611:19:0;;;::::1;::::0;;;::::1;::::0;;20528:110::o;16407:33::-;;;-1:-1:-1;;;16407:33:0;;;;;:::o;17114:37::-;;;-1:-1:-1;;;;;17114:37:0;;:::o;17233:40::-;;;-1:-1:-1;;;17233:40:0;;;;;:::o;21291:224::-;20423:12;:10;:12::i;:::-;20412:7;;-1:-1:-1;;;;;20412:23:0;;;:7;;:23;20404:70;;;;-1:-1:-1;;;20404:70:0;;;;;;;:::i;:::-;21366:6:::1;::::0;;-1:-1:-1;;;;;21366:6:0;;::::1;21346:28;::::0;;;:11:::1;:28;::::0;;;;;;;:35;;-1:-1:-1;;;21346:35:0;;::::1;::::0;::::1;::::0;;;21416:6;;;::::1;21392:32:::0;;:15:::1;:32:::0;;;;;;:39;;;::::1;::::0;::::1;::::0;;21458:10:::1;::::0;;;::::1;21442:27:::0;;;;;:34;;;;::::1;;::::0;;21487:13:::1;:20:::0;;-1:-1:-1;;;;21487:20:0::1;-1:-1:-1::0;;;21487:20:0::1;::::0;;21291:224::o;16736:27::-;;;;:::o;16709:20::-;;;;:::o;25669:177::-;-1:-1:-1;;;;;25820:18:0;;25788:7;25820:18;;;;;;;;;;;25669:177;;;;:::o;17158:38::-;;;-1:-1:-1;;;;;17158:38:0;;:::o;16329:39::-;;;-1:-1:-1;;;;;16329:39:0;;:::o;16811:26::-;;;;:::o;17367:27::-;;;;:::o;22674:224::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;22757:10:::1;::::0;22749:37:::1;;;::::0;-1:-1:-1;;;22749:37:0;;::::1;::::0;::::1;;;:::i;:::-;22824:10;::::0;:21:::1;::::0;22837:8:::1;22824:21;:::i;:::-;22805:15;:40;;22797:61;;;::::0;-1:-1:-1;;;22797:61:0;;::::1;::::0;::::1;;;:::i;:::-;22869:10;:21:::0;22674:224::o;17401:25::-;;;;:::o;16499:47::-;;;;;;;;;;;;;;;:::o;25222:106::-;25280:13;25313:7;25306:14;;;;;:::i;17083:24::-;;;-1:-1:-1;;;;;17083:24:0;;:::o;17051:25::-;;;-1:-1:-1;;;;;17051:25:0;;:::o;27201:509::-;27323:4;27345:13;27361:12;:10;:12::i;:::-;-1:-1:-1;;;;;27411:18:0;;;27384:24;27411:18;;;-1:-1:-1;27411:18:0;;;;;;;;:27;;;;;;;;;;:18;;-1:-1:-1;27471:35:0;;;;27449:122;;;;-1:-1:-1;;;27449:122:0;;;;;;;:::i;:::-;27607:60;27616:5;27623:7;27651:15;27632:16;:34;27607:8;:60::i;:::-;-1:-1:-1;27698:4:0;;27201:509;-1:-1:-1;;;;27201:509:0:o;16996:19::-;;;-1:-1:-1;;;;;16996:19:0;;:::o;25854:236::-;25971:4;25993:13;26009:12;:10;:12::i;:::-;25993:28;;26032;26042:5;26049:2;26053:6;26032:9;:28::i;20826:169::-;20136:12;:10;:12::i;:::-;20124:8;;-1:-1:-1;;;;;20124:24:0;;;:8;;:24;20102:109;;;;-1:-1:-1;;;20102:109:0;;;;;;;:::i;:::-;20905:6:::1;20900:88;20921:5;:12;20917:1;:16;20900:88;;;20972:4;20955;:14;20960:5;20966:1;20960:8;;;;;;-1:-1:-1::0;;;20960:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;20955:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;20955:14:0;:21;;-1:-1:-1;;20955:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20935:3;::::1;::::0;::::1;:::i;:::-;;;;20900:88;;;;20826:169:::0;:::o;24440:121::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;24526:10:::1;:27:::0;;-1:-1:-1;;;;;;24526:27:0::1;-1:-1:-1::0;;;;;24526:27:0;;;::::1;::::0;;;::::1;::::0;;24440:121::o;16610:25::-;;;;:::o;17022:22::-;;;-1:-1:-1;;;;;17022:22:0;;:::o;16916:32::-;;;;:::o;21546:890::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;21833:11:::1;:32:::0;;;21876:5:::1;:20:::0;;;21907:12:::1;:34:::0;;;21954:17:::1;:44:::0;;;22009:11:::1;:32:::0;;;22052:18:::1;:46:::0;;;22167:6:::1;::::0;22122:52:::1;::::0;:40:::1;21847:18:::0;22122:40;21922:19;21884:12;22122:16:::1;:23::i;:::-;:27:::0;::::1;:40::i;:52::-;22111:8;:63;;;;22205:112;22310:6;;22205:86;22273:17;;22205:49;22242:11;;22205:18;;:36;;:49;;;;:::i;:112::-;22185:17;:132:::0;22338:8:::1;::::0;22350:2:::1;-1:-1:-1::0;22338:14:0::1;22330:39;;;::::0;-1:-1:-1;;;22330:39:0;;::::1;::::0;::::1;;;:::i;:::-;22409:2;22388:17;;:23;;22380:48;;;::::0;-1:-1:-1;;;22380:48:0;;::::1;::::0;::::1;;;:::i;:::-;21546:890:::0;;;;;;:::o;16676:26::-;;;;:::o;16772:32::-;;;;:::o;23653:462::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;23715:6:::1;;23725:1;23715:11;23707:40;;;::::0;-1:-1:-1;;;23707:40:0;;::::1;::::0;::::1;;;:::i;:::-;23766:10;::::0;23758:37:::1;;;::::0;-1:-1:-1;;;23758:37:0;;::::1;::::0;::::1;;;:::i;:::-;23833:10;::::0;:21:::1;::::0;23846:8:::1;23833:21;:::i;:::-;23814:15;:40;;23806:61;;;::::0;-1:-1:-1;;;23806:61:0;;::::1;::::0;::::1;;;:::i;:::-;23889:1;23880:6;:10;;;;23912:52;23957:6;;23912:40;23940:11;;23912:23;23929:5;;23912:12;;:16;;:23;;;;:::i;:52::-;23901:8;:63;;;;23995:112;24100:6;;23995:86;24063:17;;23995:49;24032:11;;23995:18;;:36;;:49;;;;:::i;:112::-;23975:17;:132:::0;23653:462::o;17280:32::-;;;-1:-1:-1;;;17280:32:0;;;;;:::o;22444:222::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;22523:10:::1;::::0;22515:37:::1;;;::::0;-1:-1:-1;;;22515:37:0;;::::1;::::0;::::1;;;:::i;:::-;22590:10;::::0;:21:::1;::::0;22603:8:::1;22590:21;:::i;:::-;22571:15;:40;;22563:61;;;::::0;-1:-1:-1;;;22563:61:0;;::::1;::::0;::::1;;;:::i;:::-;22635:12;:23:::0;22444:222::o;16844:33::-;;;;:::o;26153:201::-;-1:-1:-1;;;;;26319:18:0;;;26287:7;26319:18;;;-1:-1:-1;26319:18:0;;;;;;;;:27;;;;;;;;;;;;;26153:201::o;16642:25::-;;;;:::o;22906:228::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;22989:10:::1;::::0;22981:37:::1;;;::::0;-1:-1:-1;;;22981:37:0;;::::1;::::0;::::1;;;:::i;:::-;23056:10;::::0;:21:::1;::::0;23069:8:::1;23056:21;:::i;:::-;23037:15;:40;;23029:61;;;::::0;-1:-1:-1;;;23029:61:0;;::::1;::::0;::::1;;;:::i;:::-;23101:14;:25:::0;;;::::1;;-1:-1:-1::0;;;23101:25:0::1;-1:-1:-1::0;;;;23101:25:0;;::::1;::::0;;;::::1;::::0;;22906:228::o;16375:23::-;;;-1:-1:-1;;;;;16375:23:0;;:::o;23142:222::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;23244:9:::1;23240:117;23260:18:::0;;::::1;23240:117;;;23335:6;23309:11;:23;23321:7;;23329:1;23321:10;;;;;-1:-1:-1::0;;;23321:10:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23309:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23309:23:0;:32;;-1:-1:-1;;23309:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23281:3;::::1;::::0;::::1;:::i;:::-;;;;23240:117;;;;23142:222:::0;;;:::o;20646:172::-;20136:12;:10;:12::i;:::-;20124:8;;-1:-1:-1;;;;;20124:24:0;;;:8;;:24;20102:109;;;;-1:-1:-1;;;20102:109:0;;;;;;;:::i;:::-;20763:16:::1;:47:::0;;-1:-1:-1;;;;;;20763:47:0::1;-1:-1:-1::0;;;;;20763:47:0;;;::::1;::::0;;;::::1;::::0;;20646:172::o;16957:32::-;;;-1:-1:-1;;;;;16957:32:0;;:::o;23372:273::-;20293:12;:10;:12::i;:::-;20279:10;;-1:-1:-1;;;;;20279:26:0;;;:10;;:26;20271:71;;;;-1:-1:-1;;;20271:71:0;;;;;;;:::i;:::-;23493:10:::1;::::0;23485:37:::1;;;::::0;-1:-1:-1;;;23485:37:0;;::::1;::::0;::::1;;;:::i;:::-;23560:10;::::0;:21:::1;::::0;23573:8:::1;23560:21;:::i;:::-;23541:15;:40;;23533:61;;;::::0;-1:-1:-1;;;23533:61:0;;::::1;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;;;;;23605:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;23605:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23372:273::o;21028:99::-;20423:12;:10;:12::i;:::-;20412:7;;-1:-1:-1;;;;;20412:23:0;;;:7;;:23;20404:70;;;;-1:-1:-1;;;20404:70:0;;;;;;;:::i;:::-;21106:13:::1;::::0;;-1:-1:-1;;;21106:13:0;;::::1;-1:-1:-1::0;21106:13:0::1;21105:14;21089:30;-1:-1:-1::0;;;;21089:30:0;;::::1;;::::0;;21028:99::o;8763:98::-;8821:7;8848:5;8852:1;8848;:5;:::i;706:98::-;786:10;706:98;:::o;29365:380::-;-1:-1:-1;;;;;29501:19:0;;29493:68;;;;-1:-1:-1;;;29493:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29580:21:0;;29572:68;;;;-1:-1:-1;;;29572:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29653:18:0;;;;;;;-1:-1:-1;29653:18:0;;;;;;;;:27;;;;;;;;;;;;;;:36;;;29705:32;;;;;29653:36;;29705:32;:::i;:::-;;;;;;;;29365:380;;;:::o;29753:502::-;29888:24;29915:25;29925:5;29932:7;29915:9;:25::i;:::-;29888:52;-1:-1:-1;;;29955:37:0;;29951:297;;30055:6;30035:16;:26;;30009:117;;;;-1:-1:-1;;;30009:117:0;;;;;;;:::i;:::-;30170:51;30179:5;30186:7;30214:6;30195:16;:25;30170:8;:51::i;27718:1230::-;27865:13;;27840:4;;-1:-1:-1;;;27865:13:0;;;;27857:34;;;;-1:-1:-1;;;27857:34:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27911:12:0;;;;;;:4;:12;;;;;;;;27910:13;:33;;;;-1:-1:-1;;;;;;27928:15:0;;;;;;:4;:15;;;;;;;;27927:16;27910:33;27902:42;;;;;;27961:16;;-1:-1:-1;;;27961:16:0;;;;27957:97;;;28001:41;28016:6;28024:9;28035:6;28001:14;:41::i;:::-;27994:48;;;;27957:97;28084:12;;28074:6;:22;;:49;;;-1:-1:-1;;;;;;28100:23:0;;;;;;:15;:23;;;;;;;;28074:49;28066:64;;;;-1:-1:-1;;;28066:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28148:26:0;;;;;;:15;:26;;;;;;;;28147:27;:45;;;;-1:-1:-1;28178:14:0;;-1:-1:-1;;;28178:14:0;;;;28147:45;28143:143;;;28253:10;;-1:-1:-1;;;;;28217:20:0;;:9;:20;;;;;;;;;;;:32;;28242:6;28217:24;:32::i;:::-;:46;;28209:65;;;;-1:-1:-1;;;28209:65:0;;;;;;;:::i;:::-;28330:4;;-1:-1:-1;;;;;28330:4:0;28316:10;:18;;;;:52;;-1:-1:-1;28352:16:0;;-1:-1:-1;;;28352:16:0;;;;28351:17;28316:52;:90;;;;-1:-1:-1;28385:21:0;;-1:-1:-1;;;28385:21:0;;;;28316:90;:148;;;;-1:-1:-1;28451:13:0;;28441:4;28423:9;:24;;;;;;;;;;;:41;;28316:148;28298:215;;;28491:10;:8;:10::i;:::-;28545:90;;;;;;;;;;;-1:-1:-1;;;28545:90:0;;;;;;;;-1:-1:-1;;;;;28545:17:0;;-1:-1:-1;28545:17:0;;;;;;;;;;;;:90;;28581:6;;28545:21;:90::i;:::-;-1:-1:-1;;;;;28525:17:0;;:9;:17;;;;;;;;;;;:110;;;;28671:11;:19;;;;;;;;28670:20;:47;;;;-1:-1:-1;;;;;;28695:22:0;;;;;;:11;:22;;;;;;;;28694:23;28670:47;:119;;28783:6;28670:119;;;28733:34;28741:6;28749:9;28760:6;28733:7;:34::i;:::-;-1:-1:-1;;;;;28823:20:0;;:9;:20;;;;;;;;;;;28648:141;;-1:-1:-1;28823:37:0;;28648:141;28823:24;:37::i;:::-;-1:-1:-1;;;;;28800:20:0;;;:9;:20;;;;;;;;;;;;:60;;;;28878:40;;;;;;;;;;28906:11;;28878:40;:::i;:::-;;;;;;;;-1:-1:-1;28936:4:0;;27718:1230;-1:-1:-1;;;;27718:1230:0:o;9144:98::-;9202:7;9229:5;9233:1;9229;:5;:::i;28956:401::-;29120:90;;;;;;;;;;;-1:-1:-1;;;29120:90:0;;;;;;;;-1:-1:-1;;;;;29120:17:0;;-1:-1:-1;29120:17:0;;;;;;;;;;;:90;;29156:6;;29120:21;:90::i;:::-;-1:-1:-1;;;;;29100:17:0;;;:9;:17;;;;;;;;;;;:110;;;;29244:20;;;;;;;:32;;29269:6;29244:24;:32::i;:::-;-1:-1:-1;;;;;29221:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;29292:35;;;;;;;;;;29320:6;;29292:35;:::i;:::-;;;;;;;;-1:-1:-1;29345:4:0;28956:401;;;;;:::o;30900:1601::-;19981:16;:23;;-1:-1:-1;;;;19981:23:0;-1:-1:-1;;;19981:23:0;;;30996:4:::1;-1:-1:-1::0;30978:24:0;;;::::1;::::0;;;;;;;31070:8:::1;::::0;31059:5:::1;::::0;30978:24;;-1:-1:-1;31039:71:0::1;::::0;31098:1:::1;::::0;31039:40:::1;::::0;31070:8;31039:40;;30978:24;;31039:19:::1;:26::i;:::-;:30:::0;::::1;:40::i;:71::-;31013:97:::0;-1:-1:-1;31121:20:0::1;31144:36;:15:::0;31013:97;31144:19:::1;:36::i;:::-;31217:16;::::0;;31231:1:::1;31217:16:::0;;;;;::::1;::::0;;31121:59;;-1:-1:-1;31193:21:0::1;::::0;31217:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;31217:16:0::1;31193:40;;31262:4;31244;31249:1;31244:7;;;;;;-1:-1:-1::0;;;31244:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;31244:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;31288:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;31288:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;31244:7;;31288:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31278:4;31283:1;31278:7;;;;;;-1:-1:-1::0;;;31278:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;31278:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;31314:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;31314:188:0;;:6;::::1;::::0;-1:-1:-1;;31314:188:0::1;::::0;31386:12;;31314:6:::1;::::0;31429:4;;31456::::1;::::0;31476:15:::1;::::0;31314:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31515:17;31535:21;31515:41;;31567:24;31594:41;31626:8;;31594:27;31608:12;;31594:9;:13;;:27;;;;:::i;:41::-;31567:68;;31646:18;31667:35;31693:8;;31667:21;31681:6;;31667:9;:13;;:21;;;;:::i;:35::-;31646:56;;31715:26;31744:41;31783:1;31744:34;31769:8;;31744:20;31758:5;;31744:9;:13;;:20;;;;:::i;:41::-;31715:70:::0;-1:-1:-1;31796:25:0::1;31824:113;31715:70:::0;31824:75:::1;31888:10:::0;31824:75;:9;31852:16;31824:27:::1;:45::i;:113::-;31796:141:::0;-1:-1:-1;31954:13:0;;31950:215:::1;;31992:16;::::0;31984:55:::1;::::0;;-1:-1:-1;;;31984:55:0;;;;-1:-1:-1;;;;;31992:16:0;;::::1;::::0;31984:34:::1;::::0;32026:10;;31984:55:::1;::::0;;::::1;::::0;31992:16:::1;::::0;31984:55;;;;;;;32026:10;31992:16;31984:55;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;32054:15:0::1;::::0;:42:::1;::::0;-1:-1:-1;;;;;32054:15:0;;::::1;::::0;-1:-1:-1;32054:42:0::1;::::0;::::1;;::::0;-1:-1:-1;32054:42:0;;-1:-1:-1;32054:15:0::1;:42:::0;:15;:42;;:15;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;32111:14:0::1;::::0;:42:::1;::::0;-1:-1:-1;;;;;32111:14:0;;::::1;::::0;:42:::1;::::0;::::1;;::::0;;;:14:::1;:42:::0;:14;:42;;:14;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;31950:215;32181:19:::0;;32177:317:::1;;32217:6;::::0;:265:::1;::::0;-1:-1:-1;;;32217:265:0;;-1:-1:-1;;;;;32217:6:0;;::::1;::::0;-1:-1:-1;;32247:18:0;;32217:265:::1;::::0;32293:4:::1;::::0;32317:15;;32217:6:::1;::::0;;;32391:42:::1;::::0;32452:15:::1;::::0;32217:265:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32177:317;-1:-1:-1::0;;20027:16:0;:24;;-1:-1:-1;;;;20027:24:0;;;-1:-1:-1;;;;;;;30900:1601:0:o;11042:240::-;11162:7;11223:12;11215:6;;;;11207:29;;;;-1:-1:-1;;;11207:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;11258:5:0;;;11042:240::o;30263:629::-;30427:4;;30383:7;;;;-1:-1:-1;;;;;30427:17:0;;;:4;;:17;:74;;30493:8;;30427:74;;;30460:17;;30427:74;30516:4;;30403:98;;-1:-1:-1;;;;;;30516:17:0;;;:4;;:17;:60;;;;-1:-1:-1;30555:10:0;;:21;;30568:8;30555:21;:::i;:::-;30537:15;:39;30516:60;30512:130;;;30609:17;;:21;;30629:1;30609:21;:::i;:::-;30593:37;;30512:130;30652:17;30672:34;30702:3;30672:25;:6;30683:13;30672:10;:25::i;:34::-;30764:4;30746:9;:24;;;;;;;;;;;30652:54;;-1:-1:-1;30746:39:0;;30652:54;30746:28;:39::i;:::-;30737:4;30719:9;:24;;;;;;;;;;;;:66;;;;30801:42;;-1:-1:-1;;;;;30801:42:0;;;;;;;30833:9;;30801:42;:::i;:::-;;;;;;;;30863:21;:6;30874:9;30863:10;:21::i;:::-;30856:28;30263:629;-1:-1:-1;;;;;;30263:629:0:o;9501:98::-;9559:7;9586:5;9590:1;9586;:5;:::i;9900:98::-;9958:7;9985:5;9989:1;9985;:5;:::i;14:138:1:-;84:20;;113:33;84:20;113:33;:::i;157:162::-;224:20;;280:13;;273:21;263:32;;253:2;;309:1;306;299:12;324:259;;436:2;424:9;415:7;411:23;407:32;404:2;;;457:6;449;442:22;404:2;501:9;488:23;520:33;547:5;520:33;:::i;588:263::-;;711:2;699:9;690:7;686:23;682:32;679:2;;;732:6;724;717:22;679:2;769:9;763:16;788:33;815:5;788:33;:::i;1128:402::-;;;1257:2;1245:9;1236:7;1232:23;1228:32;1225:2;;;1278:6;1270;1263:22;1225:2;1322:9;1309:23;1341:33;1368:5;1341:33;:::i;:::-;1393:5;-1:-1:-1;1450:2:1;1435:18;;1422:32;1463:35;1422:32;1463:35;:::i;:::-;1517:7;1507:17;;;1215:315;;;;;:::o;1535:470::-;;;;1681:2;1669:9;1660:7;1656:23;1652:32;1649:2;;;1702:6;1694;1687:22;1649:2;1746:9;1733:23;1765:33;1792:5;1765:33;:::i;:::-;1817:5;-1:-1:-1;1874:2:1;1859:18;;1846:32;1887:35;1846:32;1887:35;:::i;:::-;1639:366;;1941:7;;-1:-1:-1;;;1995:2:1;1980:18;;;;1967:32;;1639:366::o;2010:329::-;;;2136:2;2124:9;2115:7;2111:23;2107:32;2104:2;;;2157:6;2149;2142:22;2104:2;2201:9;2188:23;2220:33;2247:5;2220:33;:::i;:::-;2272:5;-1:-1:-1;2296:37:1;2329:2;2314:18;;2296:37;:::i;:::-;2286:47;;2094:245;;;;;:::o;2344:327::-;;;2473:2;2461:9;2452:7;2448:23;2444:32;2441:2;;;2494:6;2486;2479:22;2441:2;2538:9;2525:23;2557:33;2584:5;2557:33;:::i;:::-;2609:5;2661:2;2646:18;;;;2633:32;;-1:-1:-1;;;2431:240:1:o;2676:744::-;;;;2837:2;2825:9;2816:7;2812:23;2808:32;2805:2;;;2858:6;2850;2843:22;2805:2;2903:9;2890:23;2932:18;2973:2;2965:6;2962:14;2959:2;;;2994:6;2986;2979:22;2959:2;3037:6;3026:9;3022:22;3012:32;;3082:7;3075:4;3071:2;3067:13;3063:27;3053:2;;3109:6;3101;3094:22;3053:2;3154;3141:16;3180:2;3172:6;3169:14;3166:2;;;3201:6;3193;3186:22;3166:2;3264:7;3257:4;3249;3241:6;3237:17;3233:2;3229:26;3225:37;3222:50;3219:2;;;3290:6;3282;3275:22;3219:2;3326:4;3318:13;;;;-1:-1:-1;3350:6:1;-1:-1:-1;3375:39:1;;3393:20;;;-1:-1:-1;3375:39:1;:::i;:::-;3365:49;;2795:625;;;;;:::o;3425:1166::-;;3540:2;3583;3571:9;3562:7;3558:23;3554:32;3551:2;;;3604:6;3596;3589:22;3551:2;3649:9;3636:23;3678:18;3719:2;3711:6;3708:14;3705:2;;;3740:6;3732;3725:22;3705:2;3783:6;3772:9;3768:22;3758:32;;3828:7;3821:4;3817:2;3813:13;3809:27;3799:2;;3855:6;3847;3840:22;3799:2;3896;3883:16;3918:2;3914;3911:10;3908:2;;;3924:18;;:::i;:::-;3971:2;3967;3963:11;4003:2;3997:9;4054:2;4049;4041:6;4037:15;4033:24;4107:6;4095:10;4092:22;4087:2;4075:10;4072:18;4069:46;4066:2;;;4118:18;;:::i;:::-;4154:2;4147:22;4204:18;;;4238:15;;;;-1:-1:-1;4273:11:1;;;4303;;;4299:20;;4296:33;-1:-1:-1;4293:2:1;;;4347:6;4339;4332:22;4293:2;4374:6;4365:15;;4389:171;4403:2;4400:1;4397:9;4389:171;;;4460:25;4481:3;4460:25;:::i;:::-;4448:38;;4421:1;4414:9;;;;;4506:12;;;;4538;;4389:171;;;-1:-1:-1;4579:6:1;3520:1071;-1:-1:-1;;;;;;;;3520:1071:1:o;4596:192::-;;4705:2;4693:9;4684:7;4680:23;4676:32;4673:2;;;4726:6;4718;4711:22;4673:2;4754:28;4772:9;4754:28;:::i;4793:260::-;;;4919:2;4907:9;4898:7;4894:23;4890:32;4887:2;;;4940:6;4932;4925:22;4887:2;4968:28;4986:9;4968:28;:::i;5058:190::-;;5170:2;5158:9;5149:7;5145:23;5141:32;5138:2;;;5191:6;5183;5176:22;5138:2;-1:-1:-1;5219:23:1;;5128:120;-1:-1:-1;5128:120:1:o;5253:316::-;;;;5410:2;5398:9;5389:7;5385:23;5381:32;5378:2;;;5431:6;5423;5416:22;5378:2;5465:9;5459:16;5449:26;;5515:2;5504:9;5500:18;5494:25;5484:35;;5559:2;5548:9;5544:18;5538:25;5528:35;;5368:201;;;;;:::o;5574:533::-;;;;;;;5771:3;5759:9;5750:7;5746:23;5742:33;5739:2;;;5793:6;5785;5778:22;5739:2;-1:-1:-1;;5821:23:1;;;5891:2;5876:18;;5863:32;;-1:-1:-1;5942:2:1;5927:18;;5914:32;;5993:2;5978:18;;5965:32;;-1:-1:-1;6044:3:1;6029:19;;6016:33;;-1:-1:-1;6096:3:1;6081:19;6068:33;;-1:-1:-1;5729:378:1;-1:-1:-1;5729:378:1:o;6112:203::-;-1:-1:-1;;;;;6276:32:1;;;;6258:51;;6246:2;6231:18;;6213:102::o;6544:607::-;-1:-1:-1;;;;;6903:15:1;;;6885:34;;6950:2;6935:18;;6928:34;;;;6993:2;6978:18;;6971:34;;;;7036:2;7021:18;;7014:34;;;;7085:15;;;7079:3;7064:19;;7057:44;-1:-1:-1;7117:19:1;;7110:35;;;;6834:3;6819:19;;6801:350::o;7156:187::-;7321:14;;7314:22;7296:41;;7284:2;7269:18;;7251:92::o;7582:603::-;;7723:2;7752;7741:9;7734:21;7784:6;7778:13;7827:6;7822:2;7811:9;7807:18;7800:34;7852:4;7865:140;7879:6;7876:1;7873:13;7865:140;;;7974:14;;;7970:23;;7964:30;7940:17;;;7959:2;7936:26;7929:66;7894:10;;7865:140;;;8023:6;8020:1;8017:13;8014:2;;;8093:4;8088:2;8079:6;8068:9;8064:22;8060:31;8053:45;8014:2;-1:-1:-1;8169:2:1;8148:15;-1:-1:-1;;8144:29:1;8129:45;;;;8176:2;8125:54;;7703:482;-1:-1:-1;;;7703:482:1:o;8190:331::-;8392:2;8374:21;;;8431:1;8411:18;;;8404:29;-1:-1:-1;;;8464:2:1;8449:18;;8442:38;8512:2;8497:18;;8364:157::o;8526:398::-;8728:2;8710:21;;;8767:2;8747:18;;;8740:30;8806:34;8801:2;8786:18;;8779:62;-1:-1:-1;;;8872:2:1;8857:18;;8850:32;8914:3;8899:19;;8700:224::o;8929:353::-;9131:2;9113:21;;;9170:2;9150:18;;;9143:30;9209:31;9204:2;9189:18;;9182:59;9273:2;9258:18;;9103:179::o;9287:331::-;9489:2;9471:21;;;9528:1;9508:18;;;9501:29;-1:-1:-1;;;9561:2:1;9546:18;;9539:38;9609:2;9594:18;;9461:157::o;9623:329::-;9825:2;9807:21;;;9864:1;9844:18;;;9837:29;-1:-1:-1;;;9897:2:1;9882:18;;9875:36;9943:2;9928:18;;9797:155::o;9957:332::-;10159:2;10141:21;;;10198:1;10178:18;;;10171:29;-1:-1:-1;;;10231:2:1;10216:18;;10209:39;10280:2;10265:18;;10131:158::o;10294:399::-;10496:2;10478:21;;;10535:2;10515:18;;;10508:30;10574:34;10569:2;10554:18;;10547:62;-1:-1:-1;;;10640:2:1;10625:18;;10618:33;10683:3;10668:19;;10468:225::o;10698:356::-;10900:2;10882:21;;;10919:18;;;10912:30;10978:34;10973:2;10958:18;;10951:62;11045:2;11030:18;;10872:182::o;11059:340::-;11261:2;11243:21;;;11300:2;11280:18;;;11273:30;-1:-1:-1;;;11334:2:1;11319:18;;11312:46;11390:2;11375:18;;11233:166::o;11404:336::-;11606:2;11588:21;;;11645:2;11625:18;;;11618:30;-1:-1:-1;;;11679:2:1;11664:18;;11657:42;11731:2;11716:18;;11578:162::o;11745:340::-;11947:2;11929:21;;;11986:2;11966:18;;;11959:30;-1:-1:-1;;;12020:2:1;12005:18;;11998:46;12076:2;12061:18;;11919:166::o;12090:325::-;12292:2;12274:21;;;12331:1;12311:18;;;12304:29;-1:-1:-1;;;12364:2:1;12349:18;;12342:32;12406:2;12391:18;;12264:151::o;12420:400::-;12622:2;12604:21;;;12661:2;12641:18;;;12634:30;12700:34;12695:2;12680:18;;12673:62;-1:-1:-1;;;12766:2:1;12751:18;;12744:34;12810:3;12795:19;;12594:226::o;12825:398::-;13027:2;13009:21;;;13066:2;13046:18;;;13039:30;13105:34;13100:2;13085:18;;13078:62;-1:-1:-1;;;13171:2:1;13156:18;;13149:32;13213:3;13198:19;;12999:224::o;13228:401::-;13430:2;13412:21;;;13469:2;13449:18;;;13442:30;13508:34;13503:2;13488:18;;13481:62;-1:-1:-1;;;13574:2:1;13559:18;;13552:35;13619:3;13604:19;;13402:227::o;13634:177::-;13780:25;;;13768:2;13753:18;;13735:76::o;13816:983::-;;14126:3;14115:9;14111:19;14157:6;14146:9;14139:25;14183:2;14221:6;14216:2;14205:9;14201:18;14194:34;14264:3;14259:2;14248:9;14244:18;14237:31;14288:6;14323;14317:13;14354:6;14346;14339:22;14392:3;14381:9;14377:19;14370:26;;14431:2;14423:6;14419:15;14405:29;;14452:4;14465:195;14479:6;14476:1;14473:13;14465:195;;;14544:13;;-1:-1:-1;;;;;14540:39:1;14528:52;;14635:15;;;;14600:12;;;;-1:-1:-1;14494:9:1;14465:195;;;-1:-1:-1;;;;;;;14716:32:1;;;;14711:2;14696:18;;14689:60;-1:-1:-1;;;14780:3:1;14765:19;14758:35;14716:32;14677:3;-1:-1:-1;;;14087:712:1:o;14804:184::-;14976:4;14964:17;;;;14946:36;;14934:2;14919:18;;14901:87::o;14993:128::-;;15064:1;15060:6;15057:1;15054:13;15051:2;;;15070:18;;:::i;:::-;-1:-1:-1;15106:9:1;;15041:80::o;15126:217::-;;15192:1;15182:2;;-1:-1:-1;;;15217:31:1;;15271:4;15268:1;15261:15;15299:4;15217:31;15289:15;15182:2;-1:-1:-1;15328:9:1;;15172:171::o;15348:168::-;;15454:1;15450;15446:6;15442:14;15439:1;15436:21;15431:1;15424:9;15417:17;15413:45;15410:2;;;15461:18;;:::i;:::-;-1:-1:-1;15501:9:1;;15400:116::o;15521:125::-;;15589:1;15586;15583:8;15580:2;;;15594:18;;:::i;:::-;-1:-1:-1;15631:9:1;;15570:76::o;15651:380::-;15736:1;15726:12;;15783:1;15773:12;;;15794:2;;15848:4;15840:6;15836:17;15826:27;;15794:2;15901;15893:6;15890:14;15870:18;15867:38;15864:2;;;15947:10;15942:3;15938:20;15935:1;15928:31;15982:4;15979:1;15972:15;16010:4;16007:1;16000:15;15864:2;;15706:325;;;:::o;16036:135::-;;-1:-1:-1;;16096:17:1;;16093:2;;;16116:18;;:::i;:::-;-1:-1:-1;16163:1:1;16152:13;;16083:88::o;16176:127::-;16237:10;16232:3;16228:20;16225:1;16218:31;16268:4;16265:1;16258:15;16292:4;16289:1;16282:15;16308:127;16369:10;16364:3;16360:20;16357:1;16350:31;16400:4;16397:1;16390:15;16424:4;16421:1;16414:15;16440:133;-1:-1:-1;;;;;16517:31:1;;16507:42;;16497:2;;16563:1;16560;16553:12;16497:2;16487:86;:::o
Swarm Source
ipfs://11f98b8c6ee9a11863fa353aa6c9f755f5cb1132956c4083871e814153a85731
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.