ERC-20
Overview
Max Total Supply
27,358,000,000,000,000 0x0x
Holders
215
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Token
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "./base/interface/IRouter.sol"; import "./base/interface/IFactory.sol"; import "./base/interface/IPancakePair.sol"; import "./base/mktCap/selfMktCap.sol"; contract Token is ERC20, ERC20Burnable, MktCap { using SafeMath for uint; uint256 public startTradeBlock; mapping(address=>bool) public ispair; address _baseToken=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address _router=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; bool isTrading; struct Fees{ uint buy; uint sell; uint transfer; uint total; } Fees public fees; bool public isLimit; uint256 public maxU = 0.05 ether; mapping(address => bool) public isbuy; function setLimit( uint256 maxU_) public onlyOwner { maxU = maxU_; } function removeLimit() external onlyOwner { isLimit=false; } function canSell(uint256 amount) public view returns (uint256) { if (IERC20(_baseToken).balanceOf(pair) > 0) { address[] memory routePath = new address[](2); routePath[0] = address(this); routePath[1] = _baseToken; return IRouter(_router).getAmountsOut(amount, routePath)[1]; } else { return 0; } } modifier trading(){ if(isTrading) return; isTrading=true; _; isTrading=false; } constructor(string memory name_,string memory symbol_,uint total_) ERC20(name_, symbol_) MktCap(_msgSender(),_router) { ceo=_msgSender(); setPairs(_baseToken); MktCap.setPair(_baseToken); fees=Fees(200,200,0,10000); isLimit=true; _approve(address(this),_router,uint(2**256-1)); _mint(ceo, total_ * 10 ** decimals()); } function decimals() public view virtual override returns (uint8) { return 9; } receive() external payable { } function setFees(Fees memory fees_) public onlyOwner{ fees=fees_; } function swapToken(uint tokenAmount,address to) internal { address[] memory path = new address[](2); path[0] = token1; path[1] = token0; uint256 balance = IERC20(token1).balanceOf(address(this)); if(tokenAmount==0)tokenAmount = balance; if(tokenAmount <= balance) router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,to,block.timestamp); } function open(address[] calldata adrs,uint dd) public onlyOwner trading { startTradeBlock = block.number; for(uint i=0;i<adrs.length;i++) swapToken((random(5,adrs[i])+1)*10**dd+47*10**dd,adrs[i]); } function random(uint number,address _addr) private view returns(uint) { return uint(keccak256(abi.encodePacked(block.timestamp,block.number, _addr))) % number; } function _beforeTokenTransfer(address from,address to,uint amount) internal override trading{ if(!ispair[from] && !ispair[to] || amount==0) return; uint t=ispair[from]?1:ispair[to]?2:0; if(t==1)require(startTradeBlock>0,"not start"); try this.trigger(t) {}catch {} } function _afterTokenTransfer(address from,address to,uint amount) internal override trading{ if(address(0)==from || address(0)==to) return; takeFee(from,to,amount); if(ispair[from] && isLimit && to!=ceo){ require(!isbuy[to]); require(canSell(amount) <= maxU); isbuy[to] = true; } } function getPart(uint point,uint part)internal view returns(uint){ return totalSupply().mul(point).div(part); } function takeFee(address from,address to,uint amount)internal { uint fee=ispair[from]?fees.buy:ispair[to]?fees.sell:fees.transfer; uint feeAmount= amount.mul(fee).div(fees.total); if( from==ceo || to==ceo ) feeAmount=0; if(ispair[to] && IERC20(to).totalSupply()==0) feeAmount=0; if(feeAmount>0){ super._transfer(to,address(this),feeAmount); } } function setPairs(address token) public { IRouter router=IRouter(_router); address pair=IFactory(router.factory()).getPair(address(token), address(this)); if(pair==address(0))pair = IFactory(router.factory()).createPair(address(token), address(this)); require(pair!=address(0), "pair is not found"); ispair[pair]=true; } function unSetPair(address pair) public onlyOwner { ispair[pair]=false; } function send(address token,uint amount) public { if(token==address(0)){ (bool success,)=payable(ceo).call{value:amount}(""); require(success, "transfer failed"); } else IERC20(token).transfer(ceo,amount); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "../interface/IFactory.sol"; import "../interface/IRouter.sol"; contract TokenDistributor { constructor (address token) { IERC20(token).approve(msg.sender, uint(~uint(0))); } } contract MktCap is Ownable { using SafeMath for uint; address ceo; address token0; address token1; IRouter router; address pair; TokenDistributor public _tokenDistributor; struct autoConfig { bool status; uint minPart; uint maxPart; uint parts; } autoConfig public autoSell; struct Allot { uint markting; uint burn; uint addL; uint total; } Allot public allot; address[] public marketingAddress; uint[] public marketingShare; uint internal sharetotal; constructor(address ceo_, address router_) { ceo=ceo_; token0 = address(this); router = IRouter(router_); } function setAll( Allot memory allotConfig, autoConfig memory sellconfig, address[] calldata list, uint[] memory share ) public onlyOwner { setAllot(allotConfig); setAutoSellConfig(sellconfig); setMarketing(list, share); } function setAutoSellConfig(autoConfig memory autoSell_) public onlyOwner { autoSell = autoSell_; } function setAllot(Allot memory allot_) public onlyOwner { allot = allot_; } function setPair(address token) public onlyOwner { token1 = token; _tokenDistributor = new TokenDistributor(token1); IERC20(token1).approve(address(router), uint(2 ** 256 - 1)); pair = IFactory(router.factory()).getPair(token0, token1); } function setMarketing( address[] calldata list, uint[] memory share ) public onlyOwner { require(list.length > 0, "DAO:Can't be Empty"); require(list.length == share.length, "DAO:number must be the same"); uint total = 0; for (uint i = 0; i < share.length; i++) { total = total.add(share[i]); } require(total > 0, "DAO:share must greater than zero"); marketingAddress = list; marketingShare = share; sharetotal = total; } function getToken0Price() public view returns (uint) { //代币价格 address[] memory routePath = new address[](2); routePath[0] = token0; routePath[1] = token1; return router.getAmountsOut(1 ether, routePath)[1]; } function getToken1Price() public view returns (uint) { //代币价格 address[] memory routePath = new address[](2); routePath[0] = token1; routePath[1] = token0; return router.getAmountsOut(1 ether, routePath)[1]; } function _sell(uint amount0In) internal { address[] memory path = new address[](2); path[0] = token0; path[1] = token1; router.swapExactTokensForTokensSupportingFeeOnTransferTokens( amount0In, 0, path, address(_tokenDistributor), block.timestamp ); IERC20(token1).transferFrom(address(_tokenDistributor),address(this), IERC20(token1).balanceOf(address(_tokenDistributor))); } function _buy(uint amount0Out) internal { address[] memory path = new address[](2); path[0] = token1; path[1] = token0; router.swapTokensForExactTokens( amount0Out, IERC20(token1).balanceOf(address(this)), path, address(_tokenDistributor), block.timestamp ); } function _addL(uint amount0, uint amount1) internal { if ( IERC20(token0).balanceOf(address(this)) < amount0 || IERC20(token1).balanceOf(address(this)) < amount1 ) return; router.addLiquidity( token0, token1, amount0, amount1, 0, 0, ceo, block.timestamp ); } modifier canSwap(uint t) { if (t != 2 || !autoSell.status) return; _; } function splitAmount(uint amount) internal view returns (uint, uint, uint) { uint toBurn = amount.mul(allot.burn).div(allot.total); uint toAddL = amount.mul(allot.addL).div(allot.total).div(2); uint toSell = amount.sub(toAddL).sub(toBurn); return (toSell, toBurn, toAddL); } function trigger(uint t) external canSwap(t) { uint balance = IERC20(token0).balanceOf(address(this)); if ( balance < IERC20(token0).totalSupply().mul(autoSell.minPart).div( autoSell.parts ) ) return; uint maxSell = IERC20(token0).totalSupply().mul(autoSell.maxPart).div( autoSell.parts ); if (balance > maxSell) balance = maxSell; (uint toSell, uint toBurn, uint toAddL) = splitAmount(balance); if (toBurn > 0) IERC20(token0).transfer(address(0xdead), toBurn); if (toSell > 0) _sell(toSell); uint amount2 = IERC20(token1).balanceOf(address(this)); uint total2Fee = allot.total.sub(allot.addL.div(2)).sub(allot.burn); uint amount2AddL = amount2.mul(allot.addL).div(total2Fee).div(2); uint amount2Marketing = amount2.sub(amount2AddL); if (amount2Marketing > 0) { uint cake; for (uint i = 0; i < marketingAddress.length; i++) { cake = amount2Marketing.mul(marketingShare[i]).div(sharetotal); IERC20(token1).transfer(marketingAddress[i], cake); } } if (toAddL > 0) _addL(toAddL, amount2AddL); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IPancakePair { function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Swap(address indexed sender,uint amount0In,uint amount1In,uint amount0Out,uint amount1Out,address indexed to); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; function totalSupply() external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); function feeTo() external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity(address tokenA,address tokenB,uint amountADesired,uint amountBDesired,uint amountAMin,uint amountBMin,address to,uint deadline) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH(address token,uint amountTokenDesired,uint amountTokenMin,uint amountETHMin,address to,uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn,uint amountOutMin,address[] calldata path,address to,uint deadline) external; function swapExactTokensForTokens(uint amountIn,uint amountOutMin,address[] calldata path,address to,uint deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin,address[] calldata path,address to,uint deadline) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn,uint amountOutMin,address[] calldata path,address to,uint deadline) external; function swapTokensForExactTokens(uint amountOut,uint amountInMax,address[] calldata path,address to,uint deadline) external returns (uint[] memory amounts); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // 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 subtraction 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; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity ^0.8.0; import "../ERC20.sol"; import "../../../utils/Context.sol"; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./extensions/IERC20Metadata.sol"; import "../../utils/Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public 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]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ 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); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @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); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"total_","type":"uint256"}],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allot","outputs":[{"internalType":"uint256","name":"markting","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"addL","type":"uint256"},{"internalType":"uint256","name":"total","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":[],"name":"autoSell","outputs":[{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"minPart","type":"uint256"},{"internalType":"uint256","name":"maxPart","type":"uint256"},{"internalType":"uint256","name":"parts","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"canSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fees","outputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getToken0Price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getToken1Price","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":[],"name":"isLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isbuy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ispair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxU","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"adrs","type":"address[]"},{"internalType":"uint256","name":"dd","type":"uint256"}],"name":"open","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"markting","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"addL","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"internalType":"struct MktCap.Allot","name":"allotConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"minPart","type":"uint256"},{"internalType":"uint256","name":"maxPart","type":"uint256"},{"internalType":"uint256","name":"parts","type":"uint256"}],"internalType":"struct MktCap.autoConfig","name":"sellconfig","type":"tuple"},{"internalType":"address[]","name":"list","type":"address[]"},{"internalType":"uint256[]","name":"share","type":"uint256[]"}],"name":"setAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"markting","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"addL","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"internalType":"struct MktCap.Allot","name":"allot_","type":"tuple"}],"name":"setAllot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"minPart","type":"uint256"},{"internalType":"uint256","name":"maxPart","type":"uint256"},{"internalType":"uint256","name":"parts","type":"uint256"}],"internalType":"struct MktCap.autoConfig","name":"autoSell_","type":"tuple"}],"name":"setAutoSellConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"internalType":"struct Token.Fees","name":"fees_","type":"tuple"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxU_","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"list","type":"address[]"},{"internalType":"uint256[]","name":"share","type":"uint256[]"}],"name":"setMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"setPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"t","type":"uint256"}],"name":"trigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"unSetPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052601980546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217909155601a8054909116737a250d5630b4cf539739df2c5dacb4c659f2488d17905566b1a2bc2ec500006020553480156200006457600080fd5b5060405162004ed638038062004ed6833981016040819052620000879162001151565b33601a546001600160a01b031684846003620000a4838262001253565b506004620000b3828262001253565b505050620000d0620000ca620001ed60201b60201c565b620001f1565b600680546001600160a01b039384166001600160a01b03199182161790915560078054821630179055600980549290931691161790556200010e3390565b600680546001600160a01b0319166001600160a01b0392831617905560195462000139911662000243565b60195462000150906001600160a01b031662000494565b6040805160808101825260c88082526020820181905260009282018390526127106060909201829052601b819055601c55601d91909155601e55601f805460ff19166001179055601a54620001b39030906001600160a01b0316600019620006a2565b600654620001e4906001600160a01b0316620001d26009600a62001432565b620001de908462001443565b620007ca565b50505062001625565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a0155916004808201926020929091908290030181865afa15801562000293573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b991906200145d565b60405163e6a4390560e01b81526001600160a01b038581166004830152306024830152919091169063e6a4390590604401602060405180830381865afa15801562000308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032e91906200145d565b90506001600160a01b0381166200041e57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a491906200145d565b6040516364e329cb60e11b81526001600160a01b038581166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015620003f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041b91906200145d565b90505b6001600160a01b0381166200046e5760405162461bcd60e51b81526020600482015260116024820152701c185a5c881a5cc81b9bdd08199bdd5b99607a1b60448201526064015b60405180910390fd5b6001600160a01b03166000908152601860205260409020805460ff191660011790555050565b6200049e62000898565b600880546001600160a01b0319166001600160a01b038316908117909155604051620004ca906200106d565b6001600160a01b039091168152602001604051809103906000f080158015620004f7573d6000803e3d6000fd5b50600b80546001600160a01b0319166001600160a01b0392831617905560085460095460405163095ea7b360e01b81529083166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562000563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058991906200148f565b50600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060491906200145d565b60075460085460405163e6a4390560e01b81526001600160a01b039283166004820152908216602482015291169063e6a4390590604401602060405180830381865afa15801562000659573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067f91906200145d565b600a80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b038316620007065760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000465565b6001600160a01b038216620007695760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000465565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620008225760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000465565b6200083060008383620008f6565b8060026000828254620008449190620014b3565b90915550506001600160a01b0382166000818152602081815260408083208054860190555184815260008051602062004eb6833981519152910160405180910390a3620008946000838362000a77565b5050565b6005546001600160a01b03163314620008f45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000465565b565b601a54600160a01b900460ff16156200090e57505050565b601a805460ff60a01b1916600160a01b1790556001600160a01b03831660009081526018602052604090205460ff161580156200096457506001600160a01b03821660009081526018602052604090205460ff16155b806200096e575080155b62000a65576001600160a01b03831660009081526018602052604081205460ff16620009c5576001600160a01b03831660009081526018602052604090205460ff16620009bd576000620009c8565b6002620009c8565b60015b60ff1690508060010362000a165760006017541162000a165760405162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015260640162000465565b6040516376b4266360e11b815260048101829052309063ed684cc690602401600060405180830381600087803b15801562000a5057600080fd5b505af192505050801562000a62575060015b50505b5050601a805460ff60a01b1916905550565b601a54600160a01b900460ff161562000a8f57505050565b601a805460ff60a01b1916600160a01b1790556001600160a01b038316158062000ac057506001600160a01b038216155b62000a655762000ad283838362000b94565b6001600160a01b03831660009081526018602052604090205460ff16801562000afd5750601f5460ff165b801562000b1857506006546001600160a01b03838116911614155b1562000a65576001600160a01b03821660009081526021602052604090205460ff161562000b4557600080fd5b60205462000b538262000cf4565b111562000b5f57600080fd5b6001600160a01b0382166000908152602160205260409020805460ff191660011790555050601a805460ff60a01b1916905550565b6001600160a01b03831660009081526018602052604081205460ff1662000be8576001600160a01b03831660009081526018602052604090205460ff1662000bdf57601d5462000bec565b601c5462000bec565b601b545b601e5490915060009062000c0d9062000c06858562000e94565b9062000eab565b6006549091506001600160a01b038681169116148062000c3a57506006546001600160a01b038581169116145b1562000c44575060005b6001600160a01b03841660009081526018602052604090205460ff16801562000ccf5750836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ca7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ccd9190620014c9565b155b1562000cd9575060005b801562000ced5762000ced84308362000eb9565b5050505050565b601954600a546040516370a0823160e01b81526001600160a01b039182166004820152600092839216906370a0823190602401602060405180830381865afa15801562000d45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d6b9190620014c9565b111562000e8c57604080516002808252606082018352600092602083019080368337019050509050308160008151811062000daa5762000daa620014e3565b6001600160a01b03928316602091820292909201015260195482519116908290600190811062000dde5762000dde620014e3565b6001600160a01b039283166020918202929092010152601a5460405163d06ca61f60e01b815291169063d06ca61f9062000e1f9086908590600401620014f9565b600060405180830381865afa15801562000e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000e67919081019062001552565b60018151811062000e7c5762000e7c620014e3565b6020026020010151915050919050565b506000919050565b600062000ea2828462001443565b90505b92915050565b600062000ea2828462001602565b6001600160a01b03831662000f1f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000465565b6001600160a01b03821662000f835760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000465565b62000f90838383620008f6565b6001600160a01b038316600090815260208190526040902054818110156200100a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000465565b6001600160a01b038481166000818152602081815260408083208787039055938716808352918490208054870190559251858152909260008051602062004eb6833981519152910160405180910390a36200106784848462000a77565b50505050565b6101478062004d6f83390190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620010bc57620010bc6200107b565b604052919050565b600082601f830112620010d657600080fd5b81516001600160401b03811115620010f257620010f26200107b565b602062001108601f8301601f1916820162001091565b82815285828487010111156200111d57600080fd5b60005b838110156200113d57858101830151828201840152820162001120565b506000928101909101919091529392505050565b6000806000606084860312156200116757600080fd5b83516001600160401b03808211156200117f57600080fd5b6200118d87838801620010c4565b94506020860151915080821115620011a457600080fd5b50620011b386828701620010c4565b925050604084015190509250925092565b600181811c90821680620011d957607f821691505b602082108103620011fa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200124e57600081815260208120601f850160051c81016020861015620012295750805b601f850160051c820191505b818110156200124a5782815560010162001235565b5050505b505050565b81516001600160401b038111156200126f576200126f6200107b565b6200128781620012808454620011c4565b8462001200565b602080601f831160018114620012bf5760008415620012a65750858301515b600019600386901b1c1916600185901b1785556200124a565b600085815260208120601f198616915b82811015620012f057888601518255948401946001909101908401620012cf565b50858210156200130f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620013765781600019048211156200135a576200135a6200131f565b808516156200136857918102915b93841c93908002906200133a565b509250929050565b6000826200138f5750600162000ea5565b816200139e5750600062000ea5565b8160018114620013b75760028114620013c257620013e2565b600191505062000ea5565b60ff841115620013d657620013d66200131f565b50506001821b62000ea5565b5060208310610133831016604e8410600b841016171562001407575081810a62000ea5565b62001413838362001335565b80600019048211156200142a576200142a6200131f565b029392505050565b600062000ea260ff8416836200137e565b808202811582820484141762000ea55762000ea56200131f565b6000602082840312156200147057600080fd5b81516001600160a01b03811681146200148857600080fd5b9392505050565b600060208284031215620014a257600080fd5b815180151581146200148857600080fd5b8082018082111562000ea55762000ea56200131f565b600060208284031215620014dc57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000604082018483526020604081850152818551808452606086019150828701935060005b81811015620015455784516001600160a01b0316835293830193918301916001016200151e565b5090979650505050505050565b600060208083850312156200156657600080fd5b82516001600160401b03808211156200157e57600080fd5b818501915085601f8301126200159357600080fd5b815181811115620015a857620015a86200107b565b8060051b9150620015bb84830162001091565b8181529183018401918481019088841115620015d657600080fd5b938501935b83851015620015f657845182529385019390850190620015db565b98975050505050505050565b6000826200162057634e487b7160e01b600052601260045260246000fd5b500490565b61373a80620016356000396000f3fe608060405260043610620002935760003560e01c806373b6f602116200015f578063a806d62e11620000c5578063dd62ed3e1162000084578063dd62ed3e1462000840578063dea201141462000865578063ed684cc6146200087d578063f2fde38b14620008a2578063fc6daaaa14620008c7578063fd77c96014620008ec57600080fd5b8063a806d62e1462000794578063a9059cbb14620007b9578063b2ecfad414620007de578063c4451e3e1462000803578063d0679d34146200081b57600080fd5b80638bd2b736116200011e5780638bd2b73614620006a75780638da5cb5b14620006cc57806395d89b4114620006ec5780639af1d35a1462000704578063a457c2d7146200074a578063a58e0c32146200076f57600080fd5b806373b6f60214620005f157806375df81a6146200061657806379cc6790146200063b5780638187f51614620006605780638718b24f146200068557600080fd5b80633176859a1162000205578063553193ca11620001c4578063553193ca14620004f05780636225658914620005085780636accdf9414620005205780636d49531a146200055457806370a08231146200059f578063715018a614620005d957600080fd5b80633176859a146200043557806339509351146200045a5780633a9b1579146200047f57806342966c6814620004b35780634d7ca8ae14620004d857600080fd5b806323b872dd116200025257806323b872dd146200038c5780632757805514620003b157806327ea6f2b14620003cd5780632e6bb32114620003f2578063313ce567146200041757600080fd5b806306fdde0314620002a0578063095ea7b314620002d057806316b19575146200030657806318160ddd14620003445780631d55a7dc146200036557600080fd5b366200029b57005b600080fd5b348015620002ad57600080fd5b50620002b862000911565b604051620002c7919062002ce5565b60405180910390f35b348015620002dd57600080fd5b50620002f5620002ef36600462002d4b565b620009ab565b6040519015158152602001620002c7565b3480156200031357600080fd5b506200032b6200032536600462002d7a565b620009c7565b6040516001600160a01b039091168152602001620002c7565b3480156200035157600080fd5b506002545b604051908152602001620002c7565b3480156200037257600080fd5b506200038a6200038436600462002e51565b620009f2565b005b3480156200039957600080fd5b50620002f5620003ab36600462002e70565b62000a1a565b348015620003be57600080fd5b50601f54620002f59060ff1681565b348015620003da57600080fd5b506200038a620003ec36600462002d7a565b62000a42565b348015620003ff57600080fd5b506200038a6200041136600462003002565b62000a51565b3480156200042457600080fd5b5060405160098152602001620002c7565b3480156200044257600080fd5b506200038a620004543660046200309d565b62000a85565b3480156200046757600080fd5b50620002f56200047936600462002d4b565b62000cd6565b3480156200048c57600080fd5b50620002f56200049e3660046200309d565b60216020526000908152604090205460ff1681565b348015620004c057600080fd5b506200038a620004d236600462002d7a565b62000cfe565b348015620004e557600080fd5b506200035662000d0d565b348015620004fd57600080fd5b506200035660175481565b3480156200051557600080fd5b506200038a62000e3d565b3480156200052d57600080fd5b50620002f56200053f3660046200309d565b60186020526000908152604090205460ff1681565b3480156200056157600080fd5b50600c54600d54600e54600f546200057c9360ff1692919084565b6040805194151585526020850193909352918301526060820152608001620002c7565b348015620005ac57600080fd5b5062000356620005be3660046200309d565b6001600160a01b031660009081526020819052604090205490565b348015620005e657600080fd5b506200038a62000e53565b348015620005fe57600080fd5b506200038a62000610366004620030bd565b62000e6b565b3480156200062357600080fd5b506200038a620006353660046200310d565b62000f8d565b3480156200064857600080fd5b506200038a6200065a36600462002d4b565b62000fc3565b3480156200066d57600080fd5b506200038a6200067f3660046200309d565b62000fe0565b3480156200069257600080fd5b50600b546200032b906001600160a01b031681565b348015620006b457600080fd5b5062000356620006c636600462002d7a565b620011ee565b348015620006d957600080fd5b506005546001600160a01b03166200032b565b348015620006f957600080fd5b50620002b862001210565b3480156200071157600080fd5b50601b54601c54601d54601e54620007299392919084565b604080519485526020850193909352918301526060820152608001620002c7565b3480156200075757600080fd5b50620002f56200076936600462002d4b565b62001221565b3480156200077c57600080fd5b506200038a6200078e3660046200312c565b620012a2565b348015620007a157600080fd5b50601054601154601254601354620007299392919084565b348015620007c657600080fd5b50620002f5620007d836600462002d4b565b62001418565b348015620007eb57600080fd5b5062000356620007fd36600462002d7a565b62001428565b3480156200081057600080fd5b5062000356620015c8565b3480156200082857600080fd5b506200038a6200083a36600462002d4b565b62001644565b3480156200084d57600080fd5b50620003566200085f3660046200319c565b62001767565b3480156200087257600080fd5b506200035660205481565b3480156200088a57600080fd5b506200038a6200089c36600462002d7a565b62001792565b348015620008af57600080fd5b506200038a620008c13660046200309d565b62001bfe565b348015620008d457600080fd5b506200038a620008e63660046200309d565b62001c7a565b348015620008f957600080fd5b506200038a6200090b36600462002e51565b62001ca5565b6060600380546200092290620031da565b80601f01602080910402602001604051908101604052809291908181526020018280546200095090620031da565b8015620009a15780601f106200097557610100808354040283529160200191620009a1565b820191906000526020600020905b8154815290600101906020018083116200098357829003601f168201915b5050505050905090565b600033620009bb81858562001ccd565b60019150505b92915050565b60148181548110620009d857600080fd5b6000918252602090912001546001600160a01b0316905081565b620009fc62001df5565b80516010556020810151601155604081015160125560600151601355565b60003362000a2a85828562001e51565b62000a3785858562001ed2565b506001949350505050565b62000a4c62001df5565b602055565b62000a5b62001df5565b62000a6685620009f2565b62000a718462000f8d565b62000a7e838383620012a2565b5050505050565b601a546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a0155916004808201926020929091908290030181865afa15801562000ad5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000afb919062003216565b60405163e6a4390560e01b81526001600160a01b038581166004830152306024830152919091169063e6a4390590604401602060405180830381865afa15801562000b4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b70919062003216565b90506001600160a01b03811662000c6057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000bc0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be6919062003216565b6040516364e329cb60e11b81526001600160a01b038581166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562000c37573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c5d919062003216565b90505b6001600160a01b03811662000cb05760405162461bcd60e51b81526020600482015260116024820152701c185a5c881a5cc81b9bdd08199bdd5b99607a1b60448201526064015b60405180910390fd5b6001600160a01b03166000908152601860205260409020805460ff191660011790555050565b600033620009bb81858562000cec838362001767565b62000cf891906200324c565b62001ccd565b62000d0a338262002091565b50565b60408051600280825260608201835260009283929190602083019080368337505060075482519293506001600160a01b03169183915060009062000d555762000d5562003262565b6001600160a01b03928316602091820292909201015260085482519116908290600190811062000d895762000d8962003262565b6001600160a01b03928316602091820292909201015260095460405163d06ca61f60e01b815291169063d06ca61f9062000dd290670de0b6b3a7640000908590600401620032be565b600060405180830381865afa15801562000df0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000e1a9190810190620032e1565b60018151811062000e2f5762000e2f62003262565b602002602001015191505090565b62000e4762001df5565b601f805460ff19169055565b62000e5d62001df5565b62000e696000620021de565b565b62000e7562001df5565b601a54600160a01b900460ff1662000f8857601a805460ff60a01b1916600160a01b1790554360175560005b8281101562000f795762000f6462000ebb83600a62003478565b62000ec890602f62003486565b62000ed584600a62003478565b62000f0d600588888781811062000ef05762000ef062003262565b905060200201602081019062000f0791906200309d565b62002230565b62000f1a9060016200324c565b62000f26919062003486565b62000f3291906200324c565b85858481811062000f475762000f4762003262565b905060200201602081019062000f5e91906200309d565b62002298565b8062000f7081620034a0565b91505062000ea1565b50601a805460ff60a01b191690555b505050565b62000f9762001df5565b8051600c805460ff19169115159190911790556020810151600d556040810151600e5560600151600f55565b62000fd082338362001e51565b62000fdc828262002091565b5050565b62000fea62001df5565b600880546001600160a01b0319166001600160a01b038316908117909155604051620010169062002c1a565b6001600160a01b039091168152602001604051809103906000f08015801562001043573d6000803e3d6000fd5b50600b80546001600160a01b0319166001600160a01b0392831617905560085460095460405163095ea7b360e01b81529083166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620010af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010d59190620034bc565b50600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200112a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001150919062003216565b60075460085460405163e6a4390560e01b81526001600160a01b039283166004820152908216602482015291169063e6a4390590604401602060405180830381865afa158015620011a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011cb919062003216565b600a80546001600160a01b0319166001600160a01b039290921691909117905550565b60158181548110620011ff57600080fd5b600091825260209091200154905081565b6060600480546200092290620031da565b6000338162001231828662001767565b905083811015620012935760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162000ca7565b62000a37828686840362001ccd565b620012ac62001df5565b81620012f05760405162461bcd60e51b815260206004820152601260248201527144414f3a43616e277420626520456d70747960701b604482015260640162000ca7565b80518214620013425760405162461bcd60e51b815260206004820152601b60248201527f44414f3a6e756d626572206d757374206265207468652073616d650000000000604482015260640162000ca7565b6000805b825181101562001398576200138183828151811062001369576200136962003262565b6020026020010151836200241d90919063ffffffff16565b9150806200138f81620034a0565b91505062001346565b5060008111620013eb5760405162461bcd60e51b815260206004820181905260248201527f44414f3a7368617265206d7573742067726561746572207468616e207a65726f604482015260640162000ca7565b620013f96014858562002c28565b5081516200140f90601590602085019062002c90565b50601655505050565b600033620009bb81858562001ed2565b601954600a546040516370a0823160e01b81526001600160a01b039182166004820152600092839216906370a0823190602401602060405180830381865afa15801562001479573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200149f9190620034dc565b1115620015c0576040805160028082526060820183526000926020830190803683370190505090503081600081518110620014de57620014de62003262565b6001600160a01b03928316602091820292909201015260195482519116908290600190811062001512576200151262003262565b6001600160a01b039283166020918202929092010152601a5460405163d06ca61f60e01b815291169063d06ca61f90620015539086908590600401620032be565b600060405180830381865afa15801562001571573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200159b9190810190620032e1565b600181518110620015b057620015b062003262565b6020026020010151915050919050565b506000919050565b60408051600280825260608201835260009283929190602083019080368337505060085482519293506001600160a01b03169183915060009062001610576200161062003262565b6001600160a01b03928316602091820292909201015260075482519116908290600190811062000d895762000d8962003262565b6001600160a01b038216620016ec576006546040516000916001600160a01b03169083908381818185875af1925050503d8060008114620016a2576040519150601f19603f3d011682016040523d82523d6000602084013e620016a7565b606091505b505090508062000f885760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015260640162000ca7565b60065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044015b6020604051808303816000875af115801562001741573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f889190620034bc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b80806002141580620017a75750600c5460ff16155b15620017b1575050565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015620017fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018219190620034dc565b600f54600d54600754604080516318160ddd60e01b81529051949550620018b194620018aa93926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156200187d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018a39190620034dc565b906200242b565b9062002439565b811015620018be57505050565b600062001928600c60030154620018aa600c60020154600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200187d573d6000803e3d6000fd5b90508082111562001937578091505b6000806000620019478562002447565b919450925090508115620019d15760075460405163a9059cbb60e01b815261dead6004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015620019a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019cf9190620034bc565b505b8215620019e357620019e383620024c2565b6008546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801562001a2d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a539190620034dc565b60115460125491925060009162001a88919062001a819062001a7790600262002439565b6013549062002679565b9062002679565b9050600062001ab16002620018aa84620018aa601060020154886200242b90919063ffffffff16565b9050600062001ac1848362002679565b9050801562001bde576000805b60145481101562001bdb5762001b15601654620018aa6015848154811062001afa5762001afa62003262565b9060005260206000200154866200242b90919063ffffffff16565b600854601480549294506001600160a01b039091169163a9059cbb91908490811062001b455762001b4562003262565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af115801562001b9f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bc59190620034bc565b508062001bd281620034a0565b91505062001ace565b50505b841562001bf15762001bf1858362002687565b5050505050505050505050565b62001c0862001df5565b6001600160a01b03811662001c6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000ca7565b62000d0a81620021de565b62001c8462001df5565b6001600160a01b03166000908152601860205260409020805460ff19169055565b62001caf62001df5565b8051601b556020810151601c556040810151601d5560600151601e55565b6001600160a01b03831662001d315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000ca7565b6001600160a01b03821662001d945760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000ca7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b0316331462000e695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000ca7565b600062001e5f848462001767565b9050600019811462001ecc578181101562001ebd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162000ca7565b62001ecc848484840362001ccd565b50505050565b6001600160a01b03831662001f385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000ca7565b6001600160a01b03821662001f9c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000ca7565b62001fa983838362002825565b6001600160a01b03831660009081526020819052604090205481811015620020235760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000ca7565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362001ecc848484620029ab565b6001600160a01b038216620020f35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840162000ca7565b620021018260008362002825565b6001600160a01b03821660009081526020819052604090205481811015620021775760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840162000ca7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000f8883600084620029ab565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000824243846040516020016200226c93929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c6200229191906200350c565b9392505050565b604080516002808252606082018352600092602083019080368337505060085482519293506001600160a01b031691839150600090620022dc57620022dc62003262565b6001600160a01b03928316602091820292909201015260075482519116908290600190811062002310576200231062003262565b6001600160a01b0392831660209182029290920101526008546040516370a0823160e01b815230600482015260009291909116906370a0823190602401602060405180830381865afa1580156200236b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023919190620034dc565b905083600003620023a0578093505b80841162001ecc57600954604051635c11d79560e01b81526001600160a01b0390911690635c11d79590620023e390879060009087908990429060040162003523565b600060405180830381600087803b158015620023fe57600080fd5b505af115801562002413573d6000803e3d6000fd5b5050505050505050565b60006200229182846200324c565b600062002291828462003486565b600062002291828462003561565b60008060008062002471601060030154620018aa601060010154886200242b90919063ffffffff16565b905060006200249f6002620018aa601060030154620018aa6010600201548b6200242b90919063ffffffff16565b90506000620024b48362001a81898562002679565b979296509094509092505050565b604080516002808252606082018352600092602083019080368337505060075482519293506001600160a01b03169183915060009062002506576200250662003262565b6001600160a01b0392831660209182029290920101526008548251911690829060019081106200253a576200253a62003262565b6001600160a01b039283166020918202929092010152600954600b54604051635c11d79560e01b815291831692635c11d7959262002588928792600092889290911690429060040162003523565b600060405180830381600087803b158015620025a357600080fd5b505af1158015620025b8573d6000803e3d6000fd5b5050600854600b546040516370a0823160e01b81526001600160a01b03918216600482018190529190921693506323b872dd925090309084906370a0823190602401602060405180830381865afa15801562002618573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200263e9190620034dc565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152604482015260640162001721565b600062002291828462003578565b6007546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa158015620026d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026f69190620034dc565b10806200276f57506008546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa15801562002747573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200276d9190620034dc565b105b1562002779575050565b60095460075460085460065460405162e8e33760e81b81526001600160a01b0393841660048201529183166024830152604482018690526064820185905260006084830181905260a4830152821660c48201524260e482015291169063e8e3370090610104016060604051808303816000875af1158015620027ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a7e91906200358e565b601a54600160a01b900460ff16156200283d57505050565b601a805460ff60a01b1916600160a01b1790556001600160a01b03831660009081526018602052604090205460ff161580156200289357506001600160a01b03821660009081526018602052604090205460ff16155b806200289d575080155b62002999576001600160a01b03831660009081526018602052604081205460ff16620028f4576001600160a01b03831660009081526018602052604090205460ff16620028ec576000620028f7565b6002620028f7565b60015b60ff169050806001036200294557600060175411620029455760405162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015260640162000ca7565b6040516376b4266360e11b815260048101829052309063ed684cc690602401600060405180830381600087803b1580156200297f57600080fd5b505af192505050801562002991575060015b1562000f7957505b5050601a805460ff60a01b1916905550565b601a54600160a01b900460ff1615620029c357505050565b601a805460ff60a01b1916600160a01b1790556001600160a01b0383161580620029f457506001600160a01b038216155b620029995762002a0683838362002ac8565b6001600160a01b03831660009081526018602052604090205460ff16801562002a315750601f5460ff165b801562002a4c57506006546001600160a01b03838116911614155b1562002999576001600160a01b03821660009081526021602052604090205460ff161562002a7957600080fd5b60205462002a878262001428565b111562002a9357600080fd5b6001600160a01b0382166000908152602160205260409020805460ff191660011790555050601a805460ff60a01b1916905550565b6001600160a01b03831660009081526018602052604081205460ff1662002b1c576001600160a01b03831660009081526018602052604090205460ff1662002b1357601d5462002b20565b601c5462002b20565b601b545b601e5490915060009062002b3a90620018aa85856200242b565b6006549091506001600160a01b038681169116148062002b6757506006546001600160a01b038581169116145b1562002b71575060005b6001600160a01b03841660009081526018602052604090205460ff16801562002bfc5750836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002bd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bfa9190620034dc565b155b1562002c06575060005b801562000a7e5762000a7e84308362001ed2565b61014780620035be83390190565b82805482825590600052602060002090810192821562002c7e579160200282015b8281111562002c7e5781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019062002c49565b5062002c8c92915062002cce565b5090565b82805482825590600052602060002090810192821562002c7e579160200282015b8281111562002c7e57825182559160200191906001019062002cb1565b5b8082111562002c8c576000815560010162002ccf565b600060208083528351808285015260005b8181101562002d145785810183015185820160400152820162002cf6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811462000d0a57600080fd5b6000806040838503121562002d5f57600080fd5b823562002d6c8162002d35565b946020939093013593505050565b60006020828403121562002d8d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171562002dd05762002dd062002d94565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002e025762002e0262002d94565b604052919050565b60006080828403121562002e1d57600080fd5b62002e2762002daa565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b60006080828403121562002e6457600080fd5b62002291838362002e0a565b60008060006060848603121562002e8657600080fd5b833562002e938162002d35565b9250602084013562002ea58162002d35565b929592945050506040919091013590565b801515811462000d0a57600080fd5b60006080828403121562002ed857600080fd5b62002ee262002daa565b9050813562002ef18162002eb6565b8082525060208201356020820152604082013560408201526060820135606082015292915050565b60008083601f84011262002f2c57600080fd5b50813567ffffffffffffffff81111562002f4557600080fd5b6020830191508360208260051b850101111562002f6157600080fd5b9250929050565b600067ffffffffffffffff82111562002f855762002f8562002d94565b5060051b60200190565b600082601f83011262002fa157600080fd5b8135602062002fba62002fb48362002f68565b62002dd6565b82815260059290921b8401810191818101908684111562002fda57600080fd5b8286015b8481101562002ff7578035835291830191830162002fde565b509695505050505050565b600080600080600061014086880312156200301c57600080fd5b62003028878762002e0a565b945062003039876080880162002ec5565b935061010086013567ffffffffffffffff808211156200305857600080fd5b6200306689838a0162002f19565b90955093506101208801359150808211156200308157600080fd5b50620030908882890162002f8f565b9150509295509295909350565b600060208284031215620030b057600080fd5b8135620022918162002d35565b600080600060408486031215620030d357600080fd5b833567ffffffffffffffff811115620030eb57600080fd5b620030f98682870162002f19565b909790965060209590950135949350505050565b6000608082840312156200312057600080fd5b62002291838362002ec5565b6000806000604084860312156200314257600080fd5b833567ffffffffffffffff808211156200315b57600080fd5b620031698783880162002f19565b909550935060208601359150808211156200318357600080fd5b50620031928682870162002f8f565b9150509250925092565b60008060408385031215620031b057600080fd5b8235620031bd8162002d35565b91506020830135620031cf8162002d35565b809150509250929050565b600181811c90821680620031ef57607f821691505b6020821081036200321057634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200322957600080fd5b8151620022918162002d35565b634e487b7160e01b600052601160045260246000fd5b80820180821115620009c157620009c162003236565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620032b35781516001600160a01b0316875295820195908201906001016200328c565b509495945050505050565b828152604060208201526000620032d9604083018462003278565b949350505050565b60006020808385031215620032f557600080fd5b825167ffffffffffffffff8111156200330d57600080fd5b8301601f810185136200331f57600080fd5b80516200333062002fb48262002f68565b81815260059190911b820183019083810190878311156200335057600080fd5b928401925b82841015620033705783518252928401929084019062003355565b979650505050505050565b600181815b80851115620033bc578160001904821115620033a057620033a062003236565b80851615620033ae57918102915b93841c939080029062003380565b509250929050565b600082620033d557506001620009c1565b81620033e457506000620009c1565b8160018114620033fd5760028114620034085762003428565b6001915050620009c1565b60ff8411156200341c576200341c62003236565b50506001821b620009c1565b5060208310610133831016604e8410600b84101617156200344d575081810a620009c1565b6200345983836200337b565b806000190482111562003470576200347062003236565b029392505050565b6000620022918383620033c4565b8082028115828204841417620009c157620009c162003236565b600060018201620034b557620034b562003236565b5060010190565b600060208284031215620034cf57600080fd5b8151620022918162002eb6565b600060208284031215620034ef57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b6000826200351e576200351e620034f6565b500690565b85815284602082015260a0604082015260006200354460a083018662003278565b6001600160a01b0394909416606083015250608001529392505050565b600082620035735762003573620034f6565b500490565b81810381811115620009c157620009c162003236565b600080600060608486031215620035a457600080fd5b835192506020840151915060408401519050925092509256fe608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220fa89bf92c1bd0ce796757a689d72aea0d18766c13c7cf1dfffbd17afb88fc38464736f6c63430008130033a2646970667358221220d26aa3ac4e0f6e0820636e22e8441ba9046d656199c402f8213c8c61963b514c64736f6c63430008130033608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220fa89bf92c1bd0ce796757a689d72aea0d18766c13c7cf1dfffbd17afb88fc38464736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000006131f4bfc3e0000000000000000000000000000000000000000000000000000000000000000004307830780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043078307800000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405260043610620002935760003560e01c806373b6f602116200015f578063a806d62e11620000c5578063dd62ed3e1162000084578063dd62ed3e1462000840578063dea201141462000865578063ed684cc6146200087d578063f2fde38b14620008a2578063fc6daaaa14620008c7578063fd77c96014620008ec57600080fd5b8063a806d62e1462000794578063a9059cbb14620007b9578063b2ecfad414620007de578063c4451e3e1462000803578063d0679d34146200081b57600080fd5b80638bd2b736116200011e5780638bd2b73614620006a75780638da5cb5b14620006cc57806395d89b4114620006ec5780639af1d35a1462000704578063a457c2d7146200074a578063a58e0c32146200076f57600080fd5b806373b6f60214620005f157806375df81a6146200061657806379cc6790146200063b5780638187f51614620006605780638718b24f146200068557600080fd5b80633176859a1162000205578063553193ca11620001c4578063553193ca14620004f05780636225658914620005085780636accdf9414620005205780636d49531a146200055457806370a08231146200059f578063715018a614620005d957600080fd5b80633176859a146200043557806339509351146200045a5780633a9b1579146200047f57806342966c6814620004b35780634d7ca8ae14620004d857600080fd5b806323b872dd116200025257806323b872dd146200038c5780632757805514620003b157806327ea6f2b14620003cd5780632e6bb32114620003f2578063313ce567146200041757600080fd5b806306fdde0314620002a0578063095ea7b314620002d057806316b19575146200030657806318160ddd14620003445780631d55a7dc146200036557600080fd5b366200029b57005b600080fd5b348015620002ad57600080fd5b50620002b862000911565b604051620002c7919062002ce5565b60405180910390f35b348015620002dd57600080fd5b50620002f5620002ef36600462002d4b565b620009ab565b6040519015158152602001620002c7565b3480156200031357600080fd5b506200032b6200032536600462002d7a565b620009c7565b6040516001600160a01b039091168152602001620002c7565b3480156200035157600080fd5b506002545b604051908152602001620002c7565b3480156200037257600080fd5b506200038a6200038436600462002e51565b620009f2565b005b3480156200039957600080fd5b50620002f5620003ab36600462002e70565b62000a1a565b348015620003be57600080fd5b50601f54620002f59060ff1681565b348015620003da57600080fd5b506200038a620003ec36600462002d7a565b62000a42565b348015620003ff57600080fd5b506200038a6200041136600462003002565b62000a51565b3480156200042457600080fd5b5060405160098152602001620002c7565b3480156200044257600080fd5b506200038a620004543660046200309d565b62000a85565b3480156200046757600080fd5b50620002f56200047936600462002d4b565b62000cd6565b3480156200048c57600080fd5b50620002f56200049e3660046200309d565b60216020526000908152604090205460ff1681565b348015620004c057600080fd5b506200038a620004d236600462002d7a565b62000cfe565b348015620004e557600080fd5b506200035662000d0d565b348015620004fd57600080fd5b506200035660175481565b3480156200051557600080fd5b506200038a62000e3d565b3480156200052d57600080fd5b50620002f56200053f3660046200309d565b60186020526000908152604090205460ff1681565b3480156200056157600080fd5b50600c54600d54600e54600f546200057c9360ff1692919084565b6040805194151585526020850193909352918301526060820152608001620002c7565b348015620005ac57600080fd5b5062000356620005be3660046200309d565b6001600160a01b031660009081526020819052604090205490565b348015620005e657600080fd5b506200038a62000e53565b348015620005fe57600080fd5b506200038a62000610366004620030bd565b62000e6b565b3480156200062357600080fd5b506200038a620006353660046200310d565b62000f8d565b3480156200064857600080fd5b506200038a6200065a36600462002d4b565b62000fc3565b3480156200066d57600080fd5b506200038a6200067f3660046200309d565b62000fe0565b3480156200069257600080fd5b50600b546200032b906001600160a01b031681565b348015620006b457600080fd5b5062000356620006c636600462002d7a565b620011ee565b348015620006d957600080fd5b506005546001600160a01b03166200032b565b348015620006f957600080fd5b50620002b862001210565b3480156200071157600080fd5b50601b54601c54601d54601e54620007299392919084565b604080519485526020850193909352918301526060820152608001620002c7565b3480156200075757600080fd5b50620002f56200076936600462002d4b565b62001221565b3480156200077c57600080fd5b506200038a6200078e3660046200312c565b620012a2565b348015620007a157600080fd5b50601054601154601254601354620007299392919084565b348015620007c657600080fd5b50620002f5620007d836600462002d4b565b62001418565b348015620007eb57600080fd5b5062000356620007fd36600462002d7a565b62001428565b3480156200081057600080fd5b5062000356620015c8565b3480156200082857600080fd5b506200038a6200083a36600462002d4b565b62001644565b3480156200084d57600080fd5b50620003566200085f3660046200319c565b62001767565b3480156200087257600080fd5b506200035660205481565b3480156200088a57600080fd5b506200038a6200089c36600462002d7a565b62001792565b348015620008af57600080fd5b506200038a620008c13660046200309d565b62001bfe565b348015620008d457600080fd5b506200038a620008e63660046200309d565b62001c7a565b348015620008f957600080fd5b506200038a6200090b36600462002e51565b62001ca5565b6060600380546200092290620031da565b80601f01602080910402602001604051908101604052809291908181526020018280546200095090620031da565b8015620009a15780601f106200097557610100808354040283529160200191620009a1565b820191906000526020600020905b8154815290600101906020018083116200098357829003601f168201915b5050505050905090565b600033620009bb81858562001ccd565b60019150505b92915050565b60148181548110620009d857600080fd5b6000918252602090912001546001600160a01b0316905081565b620009fc62001df5565b80516010556020810151601155604081015160125560600151601355565b60003362000a2a85828562001e51565b62000a3785858562001ed2565b506001949350505050565b62000a4c62001df5565b602055565b62000a5b62001df5565b62000a6685620009f2565b62000a718462000f8d565b62000a7e838383620012a2565b5050505050565b601a546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a0155916004808201926020929091908290030181865afa15801562000ad5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000afb919062003216565b60405163e6a4390560e01b81526001600160a01b038581166004830152306024830152919091169063e6a4390590604401602060405180830381865afa15801562000b4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b70919062003216565b90506001600160a01b03811662000c6057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000bc0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be6919062003216565b6040516364e329cb60e11b81526001600160a01b038581166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562000c37573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c5d919062003216565b90505b6001600160a01b03811662000cb05760405162461bcd60e51b81526020600482015260116024820152701c185a5c881a5cc81b9bdd08199bdd5b99607a1b60448201526064015b60405180910390fd5b6001600160a01b03166000908152601860205260409020805460ff191660011790555050565b600033620009bb81858562000cec838362001767565b62000cf891906200324c565b62001ccd565b62000d0a338262002091565b50565b60408051600280825260608201835260009283929190602083019080368337505060075482519293506001600160a01b03169183915060009062000d555762000d5562003262565b6001600160a01b03928316602091820292909201015260085482519116908290600190811062000d895762000d8962003262565b6001600160a01b03928316602091820292909201015260095460405163d06ca61f60e01b815291169063d06ca61f9062000dd290670de0b6b3a7640000908590600401620032be565b600060405180830381865afa15801562000df0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000e1a9190810190620032e1565b60018151811062000e2f5762000e2f62003262565b602002602001015191505090565b62000e4762001df5565b601f805460ff19169055565b62000e5d62001df5565b62000e696000620021de565b565b62000e7562001df5565b601a54600160a01b900460ff1662000f8857601a805460ff60a01b1916600160a01b1790554360175560005b8281101562000f795762000f6462000ebb83600a62003478565b62000ec890602f62003486565b62000ed584600a62003478565b62000f0d600588888781811062000ef05762000ef062003262565b905060200201602081019062000f0791906200309d565b62002230565b62000f1a9060016200324c565b62000f26919062003486565b62000f3291906200324c565b85858481811062000f475762000f4762003262565b905060200201602081019062000f5e91906200309d565b62002298565b8062000f7081620034a0565b91505062000ea1565b50601a805460ff60a01b191690555b505050565b62000f9762001df5565b8051600c805460ff19169115159190911790556020810151600d556040810151600e5560600151600f55565b62000fd082338362001e51565b62000fdc828262002091565b5050565b62000fea62001df5565b600880546001600160a01b0319166001600160a01b038316908117909155604051620010169062002c1a565b6001600160a01b039091168152602001604051809103906000f08015801562001043573d6000803e3d6000fd5b50600b80546001600160a01b0319166001600160a01b0392831617905560085460095460405163095ea7b360e01b81529083166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620010af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010d59190620034bc565b50600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200112a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001150919062003216565b60075460085460405163e6a4390560e01b81526001600160a01b039283166004820152908216602482015291169063e6a4390590604401602060405180830381865afa158015620011a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011cb919062003216565b600a80546001600160a01b0319166001600160a01b039290921691909117905550565b60158181548110620011ff57600080fd5b600091825260209091200154905081565b6060600480546200092290620031da565b6000338162001231828662001767565b905083811015620012935760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162000ca7565b62000a37828686840362001ccd565b620012ac62001df5565b81620012f05760405162461bcd60e51b815260206004820152601260248201527144414f3a43616e277420626520456d70747960701b604482015260640162000ca7565b80518214620013425760405162461bcd60e51b815260206004820152601b60248201527f44414f3a6e756d626572206d757374206265207468652073616d650000000000604482015260640162000ca7565b6000805b825181101562001398576200138183828151811062001369576200136962003262565b6020026020010151836200241d90919063ffffffff16565b9150806200138f81620034a0565b91505062001346565b5060008111620013eb5760405162461bcd60e51b815260206004820181905260248201527f44414f3a7368617265206d7573742067726561746572207468616e207a65726f604482015260640162000ca7565b620013f96014858562002c28565b5081516200140f90601590602085019062002c90565b50601655505050565b600033620009bb81858562001ed2565b601954600a546040516370a0823160e01b81526001600160a01b039182166004820152600092839216906370a0823190602401602060405180830381865afa15801562001479573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200149f9190620034dc565b1115620015c0576040805160028082526060820183526000926020830190803683370190505090503081600081518110620014de57620014de62003262565b6001600160a01b03928316602091820292909201015260195482519116908290600190811062001512576200151262003262565b6001600160a01b039283166020918202929092010152601a5460405163d06ca61f60e01b815291169063d06ca61f90620015539086908590600401620032be565b600060405180830381865afa15801562001571573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200159b9190810190620032e1565b600181518110620015b057620015b062003262565b6020026020010151915050919050565b506000919050565b60408051600280825260608201835260009283929190602083019080368337505060085482519293506001600160a01b03169183915060009062001610576200161062003262565b6001600160a01b03928316602091820292909201015260075482519116908290600190811062000d895762000d8962003262565b6001600160a01b038216620016ec576006546040516000916001600160a01b03169083908381818185875af1925050503d8060008114620016a2576040519150601f19603f3d011682016040523d82523d6000602084013e620016a7565b606091505b505090508062000f885760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015260640162000ca7565b60065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044015b6020604051808303816000875af115801562001741573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f889190620034bc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b80806002141580620017a75750600c5460ff16155b15620017b1575050565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015620017fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018219190620034dc565b600f54600d54600754604080516318160ddd60e01b81529051949550620018b194620018aa93926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156200187d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018a39190620034dc565b906200242b565b9062002439565b811015620018be57505050565b600062001928600c60030154620018aa600c60020154600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200187d573d6000803e3d6000fd5b90508082111562001937578091505b6000806000620019478562002447565b919450925090508115620019d15760075460405163a9059cbb60e01b815261dead6004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015620019a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019cf9190620034bc565b505b8215620019e357620019e383620024c2565b6008546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801562001a2d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a539190620034dc565b60115460125491925060009162001a88919062001a819062001a7790600262002439565b6013549062002679565b9062002679565b9050600062001ab16002620018aa84620018aa601060020154886200242b90919063ffffffff16565b9050600062001ac1848362002679565b9050801562001bde576000805b60145481101562001bdb5762001b15601654620018aa6015848154811062001afa5762001afa62003262565b9060005260206000200154866200242b90919063ffffffff16565b600854601480549294506001600160a01b039091169163a9059cbb91908490811062001b455762001b4562003262565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af115801562001b9f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bc59190620034bc565b508062001bd281620034a0565b91505062001ace565b50505b841562001bf15762001bf1858362002687565b5050505050505050505050565b62001c0862001df5565b6001600160a01b03811662001c6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000ca7565b62000d0a81620021de565b62001c8462001df5565b6001600160a01b03166000908152601860205260409020805460ff19169055565b62001caf62001df5565b8051601b556020810151601c556040810151601d5560600151601e55565b6001600160a01b03831662001d315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000ca7565b6001600160a01b03821662001d945760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000ca7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b0316331462000e695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000ca7565b600062001e5f848462001767565b9050600019811462001ecc578181101562001ebd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162000ca7565b62001ecc848484840362001ccd565b50505050565b6001600160a01b03831662001f385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000ca7565b6001600160a01b03821662001f9c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000ca7565b62001fa983838362002825565b6001600160a01b03831660009081526020819052604090205481811015620020235760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000ca7565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362001ecc848484620029ab565b6001600160a01b038216620020f35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840162000ca7565b620021018260008362002825565b6001600160a01b03821660009081526020819052604090205481811015620021775760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840162000ca7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000f8883600084620029ab565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000824243846040516020016200226c93929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c6200229191906200350c565b9392505050565b604080516002808252606082018352600092602083019080368337505060085482519293506001600160a01b031691839150600090620022dc57620022dc62003262565b6001600160a01b03928316602091820292909201015260075482519116908290600190811062002310576200231062003262565b6001600160a01b0392831660209182029290920101526008546040516370a0823160e01b815230600482015260009291909116906370a0823190602401602060405180830381865afa1580156200236b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023919190620034dc565b905083600003620023a0578093505b80841162001ecc57600954604051635c11d79560e01b81526001600160a01b0390911690635c11d79590620023e390879060009087908990429060040162003523565b600060405180830381600087803b158015620023fe57600080fd5b505af115801562002413573d6000803e3d6000fd5b5050505050505050565b60006200229182846200324c565b600062002291828462003486565b600062002291828462003561565b60008060008062002471601060030154620018aa601060010154886200242b90919063ffffffff16565b905060006200249f6002620018aa601060030154620018aa6010600201548b6200242b90919063ffffffff16565b90506000620024b48362001a81898562002679565b979296509094509092505050565b604080516002808252606082018352600092602083019080368337505060075482519293506001600160a01b03169183915060009062002506576200250662003262565b6001600160a01b0392831660209182029290920101526008548251911690829060019081106200253a576200253a62003262565b6001600160a01b039283166020918202929092010152600954600b54604051635c11d79560e01b815291831692635c11d7959262002588928792600092889290911690429060040162003523565b600060405180830381600087803b158015620025a357600080fd5b505af1158015620025b8573d6000803e3d6000fd5b5050600854600b546040516370a0823160e01b81526001600160a01b03918216600482018190529190921693506323b872dd925090309084906370a0823190602401602060405180830381865afa15801562002618573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200263e9190620034dc565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152604482015260640162001721565b600062002291828462003578565b6007546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa158015620026d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026f69190620034dc565b10806200276f57506008546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa15801562002747573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200276d9190620034dc565b105b1562002779575050565b60095460075460085460065460405162e8e33760e81b81526001600160a01b0393841660048201529183166024830152604482018690526064820185905260006084830181905260a4830152821660c48201524260e482015291169063e8e3370090610104016060604051808303816000875af1158015620027ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a7e91906200358e565b601a54600160a01b900460ff16156200283d57505050565b601a805460ff60a01b1916600160a01b1790556001600160a01b03831660009081526018602052604090205460ff161580156200289357506001600160a01b03821660009081526018602052604090205460ff16155b806200289d575080155b62002999576001600160a01b03831660009081526018602052604081205460ff16620028f4576001600160a01b03831660009081526018602052604090205460ff16620028ec576000620028f7565b6002620028f7565b60015b60ff169050806001036200294557600060175411620029455760405162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015260640162000ca7565b6040516376b4266360e11b815260048101829052309063ed684cc690602401600060405180830381600087803b1580156200297f57600080fd5b505af192505050801562002991575060015b1562000f7957505b5050601a805460ff60a01b1916905550565b601a54600160a01b900460ff1615620029c357505050565b601a805460ff60a01b1916600160a01b1790556001600160a01b0383161580620029f457506001600160a01b038216155b620029995762002a0683838362002ac8565b6001600160a01b03831660009081526018602052604090205460ff16801562002a315750601f5460ff165b801562002a4c57506006546001600160a01b03838116911614155b1562002999576001600160a01b03821660009081526021602052604090205460ff161562002a7957600080fd5b60205462002a878262001428565b111562002a9357600080fd5b6001600160a01b0382166000908152602160205260409020805460ff191660011790555050601a805460ff60a01b1916905550565b6001600160a01b03831660009081526018602052604081205460ff1662002b1c576001600160a01b03831660009081526018602052604090205460ff1662002b1357601d5462002b20565b601c5462002b20565b601b545b601e5490915060009062002b3a90620018aa85856200242b565b6006549091506001600160a01b038681169116148062002b6757506006546001600160a01b038581169116145b1562002b71575060005b6001600160a01b03841660009081526018602052604090205460ff16801562002bfc5750836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002bd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bfa9190620034dc565b155b1562002c06575060005b801562000a7e5762000a7e84308362001ed2565b61014780620035be83390190565b82805482825590600052602060002090810192821562002c7e579160200282015b8281111562002c7e5781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019062002c49565b5062002c8c92915062002cce565b5090565b82805482825590600052602060002090810192821562002c7e579160200282015b8281111562002c7e57825182559160200191906001019062002cb1565b5b8082111562002c8c576000815560010162002ccf565b600060208083528351808285015260005b8181101562002d145785810183015185820160400152820162002cf6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811462000d0a57600080fd5b6000806040838503121562002d5f57600080fd5b823562002d6c8162002d35565b946020939093013593505050565b60006020828403121562002d8d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171562002dd05762002dd062002d94565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002e025762002e0262002d94565b604052919050565b60006080828403121562002e1d57600080fd5b62002e2762002daa565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b60006080828403121562002e6457600080fd5b62002291838362002e0a565b60008060006060848603121562002e8657600080fd5b833562002e938162002d35565b9250602084013562002ea58162002d35565b929592945050506040919091013590565b801515811462000d0a57600080fd5b60006080828403121562002ed857600080fd5b62002ee262002daa565b9050813562002ef18162002eb6565b8082525060208201356020820152604082013560408201526060820135606082015292915050565b60008083601f84011262002f2c57600080fd5b50813567ffffffffffffffff81111562002f4557600080fd5b6020830191508360208260051b850101111562002f6157600080fd5b9250929050565b600067ffffffffffffffff82111562002f855762002f8562002d94565b5060051b60200190565b600082601f83011262002fa157600080fd5b8135602062002fba62002fb48362002f68565b62002dd6565b82815260059290921b8401810191818101908684111562002fda57600080fd5b8286015b8481101562002ff7578035835291830191830162002fde565b509695505050505050565b600080600080600061014086880312156200301c57600080fd5b62003028878762002e0a565b945062003039876080880162002ec5565b935061010086013567ffffffffffffffff808211156200305857600080fd5b6200306689838a0162002f19565b90955093506101208801359150808211156200308157600080fd5b50620030908882890162002f8f565b9150509295509295909350565b600060208284031215620030b057600080fd5b8135620022918162002d35565b600080600060408486031215620030d357600080fd5b833567ffffffffffffffff811115620030eb57600080fd5b620030f98682870162002f19565b909790965060209590950135949350505050565b6000608082840312156200312057600080fd5b62002291838362002ec5565b6000806000604084860312156200314257600080fd5b833567ffffffffffffffff808211156200315b57600080fd5b620031698783880162002f19565b909550935060208601359150808211156200318357600080fd5b50620031928682870162002f8f565b9150509250925092565b60008060408385031215620031b057600080fd5b8235620031bd8162002d35565b91506020830135620031cf8162002d35565b809150509250929050565b600181811c90821680620031ef57607f821691505b6020821081036200321057634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200322957600080fd5b8151620022918162002d35565b634e487b7160e01b600052601160045260246000fd5b80820180821115620009c157620009c162003236565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620032b35781516001600160a01b0316875295820195908201906001016200328c565b509495945050505050565b828152604060208201526000620032d9604083018462003278565b949350505050565b60006020808385031215620032f557600080fd5b825167ffffffffffffffff8111156200330d57600080fd5b8301601f810185136200331f57600080fd5b80516200333062002fb48262002f68565b81815260059190911b820183019083810190878311156200335057600080fd5b928401925b82841015620033705783518252928401929084019062003355565b979650505050505050565b600181815b80851115620033bc578160001904821115620033a057620033a062003236565b80851615620033ae57918102915b93841c939080029062003380565b509250929050565b600082620033d557506001620009c1565b81620033e457506000620009c1565b8160018114620033fd5760028114620034085762003428565b6001915050620009c1565b60ff8411156200341c576200341c62003236565b50506001821b620009c1565b5060208310610133831016604e8410600b84101617156200344d575081810a620009c1565b6200345983836200337b565b806000190482111562003470576200347062003236565b029392505050565b6000620022918383620033c4565b8082028115828204841417620009c157620009c162003236565b600060018201620034b557620034b562003236565b5060010190565b600060208284031215620034cf57600080fd5b8151620022918162002eb6565b600060208284031215620034ef57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b6000826200351e576200351e620034f6565b500690565b85815284602082015260a0604082015260006200354460a083018662003278565b6001600160a01b0394909416606083015250608001529392505050565b600082620035735762003573620034f6565b500490565b81810381811115620009c157620009c162003236565b600080600060608486031215620035a457600080fd5b835192506020840151915060408401519050925092509256fe608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220fa89bf92c1bd0ce796757a689d72aea0d18766c13c7cf1dfffbd17afb88fc38464736f6c63430008130033a2646970667358221220d26aa3ac4e0f6e0820636e22e8441ba9046d656199c402f8213c8c61963b514c64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000006131f4bfc3e0000000000000000000000000000000000000000000000000000000000000000004307830780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043078307800000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): 0x0x
Arg [1] : symbol_ (string): 0x0x
Arg [2] : total_ (uint256): 27358000000000000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000000000000000000000000000006131f4bfc3e000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 3078307800000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 3078307800000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
476:4772:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;;;;;-1:-1:-1;4431:197:1;;;;;:::i;:::-;;:::i;:::-;;;1188:14:12;;1181:22;1163:41;;1151:2;1136:18;4431:197:1;1023:187:12;945:33:10;;;;;;;;;;-1:-1:-1;945:33:10;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1564:32:12;;;1546:51;;1534:2;1519:18;945:33:10;1400:203:12;3242:106:1;;;;;;;;;;-1:-1:-1;3329:12:1;;3242:106;;;1754:25:12;;;1742:2;1727:18;3242:106:1;1608:177:12;1643:89:10;;;;;;;;;;-1:-1:-1;1643:89:10;;;;;:::i;:::-;;:::i;:::-;;5190:286:1;;;;;;;;;;-1:-1:-1;5190:286:1;;;;;:::i;:::-;;:::i;936:19:11:-;;;;;;;;;;-1:-1:-1;936:19:11;;;;;;;;1045:82;;;;;;;;;;-1:-1:-1;1045:82:11;;;;;:::i;:::-;;:::i;1221:294:10:-;;;;;;;;;;-1:-1:-1;1221:294:10;;;;;:::i;:::-;;:::i;2147:92:11:-;;;;;;;;;;-1:-1:-1;2147:92:11;;2230:1;6472:36:12;;6460:2;6445:18;2147:92:11;6330:184:12;4491:376:11;;;;;;;;;;-1:-1:-1;4491:376:11;;;;;:::i;:::-;;:::i;5871:234:1:-;;;;;;;;;;-1:-1:-1;5871:234:1;;;;;:::i;:::-;;:::i;1001:37:11:-;;;;;;;;;;-1:-1:-1;1001:37:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;578:89:3;;;;;;;;;;-1:-1:-1;578:89:3;;;;;:::i;:::-;;:::i;2580:266:10:-;;;;;;;;;;;;;:::i;563:30:11:-;;;;;;;;;;;;;;;;1133:74;;;;;;;;;;;;;:::i;600:36::-;;;;;;;;;;-1:-1:-1;600:36:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;773:26:10;;;;;;;;;;-1:-1:-1;773:26:10;;;;;;;;;;;;;;;;;;;;;7021:14:12;;7014:22;6996:41;;7068:2;7053:18;;7046:34;;;;7096:18;;;7089:34;7154:2;7139:18;;7132:34;6983:3;6968:19;773:26:10;6771:401:12;3406:125:1;;;;;;;;;;-1:-1:-1;3406:125:1;;;;;:::i;:::-;-1:-1:-1;;;;;3506:18:1;3480:7;3506:18;;;;;;;;;;;;3406:125;1831:101:0;;;;;;;;;;;;;:::i;2816:234:11:-;;;;;;;;;;-1:-1:-1;2816:234:11;;;;;:::i;:::-;;:::i;1523:112:10:-;;;;;;;;;;-1:-1:-1;1523:112:10;;;;;:::i;:::-;;:::i;973:161:3:-;;;;;;;;;;-1:-1:-1;973:161:3;;;;;:::i;:::-;;:::i;1740:281:10:-;;;;;;;;;;-1:-1:-1;1740:281:10;;;;;:::i;:::-;;:::i;604:41::-;;;;;;;;;;-1:-1:-1;604:41:10;;;;-1:-1:-1;;;;;604:41:10;;;985:28;;;;;;;;;;-1:-1:-1;985:28:10;;;;;:::i;:::-;;:::i;1201:85:0:-;;;;;;;;;;-1:-1:-1;1273:6:0;;-1:-1:-1;;;;;1273:6:0;1201:85;;2365:102:1;;;;;;;;;;;;;:::i;913:16:11:-;;;;;;;;;;-1:-1:-1;913:16:11;;;;;;;;;;;;;;;;;;;8390:25:12;;;8446:2;8431:18;;8424:34;;;;8474:18;;;8467:34;8532:2;8517:18;;8510:34;8377:3;8362:19;913:16:11;8159:391:12;6592:427:1;;;;;;;;;;-1:-1:-1;6592:427:1;;;;;:::i;:::-;;:::i;2029:543:10:-;;;;;;;;;;-1:-1:-1;2029:543:10;;;;;:::i;:::-;;:::i;918:18::-;;;;;;;;;;-1:-1:-1;918:18:10;;;;;;;;;;;;;;;3727:189:1;;;;;;;;;;-1:-1:-1;3727:189:1;;;;;:::i;:::-;;:::i;1214:395:11:-;;;;;;;;;;-1:-1:-1;1214:395:11;;;;;:::i;:::-;;:::i;2854:266:10:-;;;;;;;;;;;;;:::i;4972:271:11:-;;;;;;;;;;-1:-1:-1;4972:271:11;;;;;:::i;:::-;;:::i;3974:149:1:-;;;;;;;;;;-1:-1:-1;3974:149:1;;;;;:::i;:::-;;:::i;962:32:11:-;;;;;;;;;;;;;;;;4882:1286:10;;;;;;;;;;-1:-1:-1;4882:1286:10;;;;;:::i;:::-;;:::i;2081:198:0:-;;;;;;;;;;-1:-1:-1;2081:198:0;;;;;:::i;:::-;;:::i;4873:90:11:-;;;;;;;;;;-1:-1:-1;4873:90:11;;;;;:::i;:::-;;:::i;2283:81::-;;;;;;;;;;-1:-1:-1;2283:81:11;;;;;:::i;:::-;;:::i;2154:98:1:-;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;719:10:5;4568:32:1;719:10:5;4584:7:1;4593:6;4568:8;:32::i;:::-;4617:4;4610:11;;;4431:197;;;;;:::o;945:33:10:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;945:33:10;;-1:-1:-1;945:33:10;:::o;1643:89::-;1094:13:0;:11;:13::i;:::-;1710:14:10;;:5:::1;:14:::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;1643:89::o;5190:286:1:-;5317:4;719:10:5;5373:38:1;5389:4;719:10:5;5404:6:1;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;-1:-1:-1;5465:4:1;;5190:286;-1:-1:-1;;;;5190:286:1:o;1045:82:11:-;1094:13:0;:11;:13::i;:::-;1107:4:11::1;:12:::0;1045:82::o;1221:294:10:-;1094:13:0;:11;:13::i;:::-;1410:21:10::1;1419:11;1410:8;:21::i;:::-;1442:29;1460:10;1442:17;:29::i;:::-;1482:25;1495:4;;1501:5;1482:12;:25::i;:::-;1221:294:::0;;;;;:::o;4491:376:11:-;4568:7;;4609:16;;;-1:-1:-1;;;4609:16:11;;;;-1:-1:-1;;;;;4568:7:11;;;;4545:14;;4568:7;;4609:14;;:16;;;;;;;;;;;;;;;4568:7;4609:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4600:65;;-1:-1:-1;;;4600:65:11;;-1:-1:-1;;;;;10736:15:12;;;4600:65:11;;;10718:34:12;4659:4:11;10768:18:12;;;10761:43;4600:34:11;;;;;;;10653:18:12;;4600:65:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4587:78;-1:-1:-1;;;;;;4679:16:11;;4676:95;;4712:6;-1:-1:-1;;;;;4712:14:11;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4703:68;;-1:-1:-1;;;4703:68:11;;-1:-1:-1;;;;;10736:15:12;;;4703:68:11;;;10718:34:12;4765:4:11;10768:18:12;;;10761:43;4703:37:11;;;;;;;10653:18:12;;4703:68:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4696:75;;4676:95;-1:-1:-1;;;;;4790:16:11;;4782:46;;;;-1:-1:-1;;;4782:46:11;;11017:2:12;4782:46:11;;;10999:21:12;11056:2;11036:18;;;11029:30;-1:-1:-1;;;11075:18:12;;;11068:47;11132:18;;4782:46:11;;;;;;;;;-1:-1:-1;;;;;4840:12:11;;;;;:6;:12;;;;;:17;;-1:-1:-1;;4840:17:11;4853:4;4840:17;;;-1:-1:-1;;4491:376:11:o;5871:234:1:-;5959:4;719:10:5;6013:64:1;719:10:5;6029:7:1;6066:10;6038:25;719:10:5;6029:7:1;6038:9;:25::i;:::-;:38;;;;:::i;:::-;6013:8;:64::i;578:89:3:-;633:27;719:10:5;653:6:3;633:5;:27::i;:::-;578:89;:::o;2580:266:10:-;2697:16;;;2711:1;2697:16;;;;;;;;2627:4;;;;2697:16;2711:1;2697:16;;;;;;;;-1:-1:-1;;2739:6:10;;2724:12;;;;-1:-1:-1;;;;;;2739:6:10;;2724:12;;-1:-1:-1;2739:6:10;;2724:12;;;;:::i;:::-;-1:-1:-1;;;;;2724:21:10;;;:12;;;;;;;;;:21;2771:6;;2756:12;;2771:6;;;2756:9;;2771:6;;2756:12;;;;;;:::i;:::-;-1:-1:-1;;;;;2756:21:10;;;:12;;;;;;;;;:21;2795:6;;:40;;-1:-1:-1;;;2795:40:10;;:6;;;:20;;:40;;2816:7;;2825:9;;2795:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2795:40:10;;;;;;;;;;;;:::i;:::-;2836:1;2795:43;;;;;;;;:::i;:::-;;;;;;;2788:50;;;2580:266;:::o;1133:74:11:-;1094:13:0;:11;:13::i;:::-;1186:7:11::1;:13:::0;;-1:-1:-1;;1186:13:11::1;::::0;;1133:74::o;1831:101:0:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;2816:234:11:-;1094:13:0;:11;:13::i;:::-;1649:9:11::1;::::0;-1:-1:-1;;;1649:9:11;::::1;;;1660:7;1646:21;1677:9;:14:::0;;-1:-1:-1;;;;1677:14:11::1;-1:-1:-1::0;;;1677:14:11::1;::::0;;2917:12:::2;2899:15;:30:::0;1677:14;2940:102:::2;2953:13:::0;;::::2;2940:102;;;2985:57;3027:6;3031:2:::0;3027::::2;:6;:::i;:::-;3024:9;::::0;:2:::2;:9;:::i;:::-;3017:6;3021:2:::0;3017::::2;:6;:::i;:::-;2996:17;3003:1;3005:4;;3010:1;3005:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2996:6;:17::i;:::-;:19;::::0;3014:1:::2;2996:19;:::i;:::-;2995:28;;;;:::i;:::-;:38;;;;:::i;:::-;3034:4;;3039:1;3034:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2985:9;:57::i;:::-;2967:3:::0;::::2;::::0;::::2;:::i;:::-;;;;2940:102;;;-1:-1:-1::0;1714:9:11::1;:15:::0;;-1:-1:-1;;;;1714:15:11::1;::::0;;1117:1:0::1;2816:234:11::0;;;:::o;1523:112:10:-;1094:13:0;:11;:13::i;:::-;1607:20:10;;:8:::1;:20:::0;;-1:-1:-1;;1607:20:10::1;::::0;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;1523:112::o;973:161:3:-;1049:46;1065:7;719:10:5;1088:6:3;1049:15;:46::i;:::-;1105:22;1111:7;1120:6;1105:5;:22::i;:::-;973:161;;:::o;1740:281:10:-;1094:13:0;:11;:13::i;:::-;1801:6:10::1;:14:::0;;-1:-1:-1;;;;;;1801:14:10::1;-1:-1:-1::0;;;;;1801:14:10;::::1;::::0;;::::1;::::0;;;1846:28:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;1564:32:12;;;1546:51;;1534:2;1519:18;1846:28:10::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;1826:17:10::1;:48:::0;;-1:-1:-1;;;;;;1826:48:10::1;-1:-1:-1::0;;;;;1826:48:10;;::::1;;::::0;;1893:6:::1;::::0;1917::::1;::::0;1886:59:::1;::::0;-1:-1:-1;;;1886:59:10;;1917:6;;::::1;1886:59;::::0;::::1;15131:51:12::0;-1:-1:-1;;15198:18:12;;;15191:34;1893:6:10;::::1;::::0;1886:22:::1;::::0;15104:18:12;;1886:59:10::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1972:6;;;;;;;;;-1:-1:-1::0;;;;;1972:6:10::1;-1:-1:-1::0;;;;;1972:14:10::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1998:6;::::0;2006::::1;::::0;1963:50:::1;::::0;-1:-1:-1;;;1963:50:10;;-1:-1:-1;;;;;1998:6:10;;::::1;1963:50;::::0;::::1;10718:34:12::0;2006:6:10;;::::1;10768:18:12::0;;;10761:43;1963:34:10;::::1;::::0;::::1;::::0;10653:18:12;;1963:50:10::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1956:4;:57:::0;;-1:-1:-1;;;;;;1956:57:10::1;-1:-1:-1::0;;;;;1956:57:10;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;1740:281:10:o;985:28::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;985:28:10;:::o;2365:102:1:-;2421:13;2453:7;2446:14;;;;;:::i;6592:427::-;6685:4;719:10:5;6685:4:1;6766:25;719:10:5;6783:7:1;6766:9;:25::i;:::-;6739:52;;6829:15;6809:16;:35;;6801:85;;;;-1:-1:-1;;;6801:85:1;;15688:2:12;6801:85:1;;;15670:21:12;15727:2;15707:18;;;15700:30;15766:34;15746:18;;;15739:62;-1:-1:-1;;;15817:18:12;;;15810:35;15862:19;;6801:85:1;15486:401:12;6801:85:1;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;2029:543:10:-;1094:13:0;:11;:13::i;:::-;2158:15:10;2150:46:::1;;;::::0;-1:-1:-1;;;2150:46:10;;16094:2:12;2150:46:10::1;::::0;::::1;16076:21:12::0;16133:2;16113:18;;;16106:30;-1:-1:-1;;;16152:18:12;;;16145:48;16210:18;;2150:46:10::1;15892:342:12::0;2150:46:10::1;2230:12:::0;;2215:27;::::1;2207:67;;;::::0;-1:-1:-1;;;2207:67:10;;16441:2:12;2207:67:10::1;::::0;::::1;16423:21:12::0;16480:2;16460:18;;;16453:30;16519:29;16499:18;;;16492:57;16566:18;;2207:67:10::1;16239:351:12::0;2207:67:10::1;2285:10;2315:6:::0;2310:94:::1;2331:5;:12;2327:1;:16;2310:94;;;2373:19;2383:5;2389:1;2383:8;;;;;;;;:::i;:::-;;;;;;;2373:5;:9;;:19;;;;:::i;:::-;2365:27:::0;-1:-1:-1;2345:3:10;::::1;::::0;::::1;:::i;:::-;;;;2310:94;;;;2430:1;2422:5;:9;2414:54;;;::::0;-1:-1:-1;;;2414:54:10;;16797:2:12;2414:54:10::1;::::0;::::1;16779:21:12::0;;;16816:18;;;16809:30;16875:34;16855:18;;;16848:62;16927:18;;2414:54:10::1;16595:356:12::0;2414:54:10::1;2479:23;:16;2498:4:::0;;2479:23:::1;:::i;:::-;-1:-1:-1::0;2513:22:10;;::::1;::::0;:14:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2546:10:10::1;:18:::0;-1:-1:-1;;;2029:543:10:o;3727:189:1:-;3806:4;719:10:5;3860:28:1;719:10:5;3877:2:1;3881:6;3860:9;:28::i;1214:395:11:-;1299:10;;1321:4;;1292:34;;-1:-1:-1;;;1292:34:11;;-1:-1:-1;;;;;1321:4:11;;;1292:34;;;1546:51:12;1268:7:11;;;;1299:10;;1292:28;;1519:18:12;;1292:34:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;1288:314;;;1376:16;;;1390:1;1376:16;;;;;;;;1347:26;;1376:16;;;;;;;;;;-1:-1:-1;1376:16:11;1347:45;;1430:4;1407:9;1417:1;1407:12;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1407:28:11;;;:12;;;;;;;;;:28;1465:10;;1450:12;;1465:10;;;1450:9;;1465:10;;1450:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1450:25:11;;;:12;;;;;;;;;:25;1505:7;;1497:49;;-1:-1:-1;;;1497:49:11;;1505:7;;;1497:30;;:49;;1528:6;;1536:9;;1497:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1497:49:11;;;;;;;;;;;;:::i;:::-;1547:1;1497:52;;;;;;;;:::i;:::-;;;;;;;1490:59;;;1214:395;;;:::o;1288:314::-;-1:-1:-1;1589:1:11;;1214:395;-1:-1:-1;1214:395:11:o;2854:266:10:-;2971:16;;;2985:1;2971:16;;;;;;;;2901:4;;;;2971:16;2985:1;2971:16;;;;;;;;-1:-1:-1;;3013:6:10;;2998:12;;;;-1:-1:-1;;;;;;3013:6:10;;2998:12;;-1:-1:-1;3013:6:10;;2998:12;;;;:::i;:::-;-1:-1:-1;;;;;2998:21:10;;;:12;;;;;;;;;:21;3045:6;;3030:12;;3045:6;;;3030:9;;3045:6;;3030:12;;;;;;:::i;4972:271:11:-;-1:-1:-1;;;;;5035:17:11;;5032:202;;5093:3;;5085:35;;5070:12;;-1:-1:-1;;;;;5093:3:11;;5109:6;;5070:12;5085:35;5070:12;5085:35;5109:6;5093:3;5085:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5069:51;;;5144:7;5136:35;;;;-1:-1:-1;;;5136:35:11;;17894:2:12;5136:35:11;;;17876:21:12;17933:2;17913:18;;;17906:30;-1:-1:-1;;;17952:18:12;;;17945:45;18007:18;;5136:35:11;17692:339:12;5032:202:11;5223:3;;5200:34;;-1:-1:-1;;;5200:34:11;;-1:-1:-1;;;;;5223:3:11;;;5200:34;;;15131:51:12;15198:18;;;15191:34;;;5200:22:11;;;;;;15104:18:12;;5200:34:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3974:149:1:-;-1:-1:-1;;;;;4089:18:1;;;4063:7;4089:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3974:149::o;4882:1286:10:-;4924:1;4497;4502;4497:6;;:26;;;-1:-1:-1;4508:8:10;:15;;;4507:16;4497:26;4493:39;;;4882:1286;;:::o;4493:39::-;4960:6:::1;::::0;4953:39:::1;::::0;-1:-1:-1;;;4953:39:10;;4986:4:::1;4953:39;::::0;::::1;1546:51:12::0;4938:12:10::1;::::0;-1:-1:-1;;;;;4960:6:10::1;::::0;4953:24:::1;::::0;1519:18:12;;4953:39:10::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5117:14:::0;;5077:16;;5051:6:::1;::::0;5044:28:::1;::::0;;-1:-1:-1;;;5044:28:10;;;;4938:54;;-1:-1:-1;5044:102:10::1;::::0;:50:::1;::::0;5077:16;-1:-1:-1;;;;;5051:6:10::1;::::0;5044:26:::1;::::0;:28:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;5051:6;5044:28:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32:::0;::::1;:50::i;:::-;:54:::0;::::1;:102::i;:::-;5021:7;:125;5003:162;;;5158:7;973:161:3::0;;:::o;5003:162:10:-:1;5175:12;5190:94;5259:8;:14;;;5190:50;5223:8;:16;;;5197:6;;;;;;;;;-1:-1:-1::0;;;;;5197:6:10::1;-1:-1:-1::0;;;;;5190:26:10::1;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;:94;5175:109;;5309:7;5299;:17;5295:40;;;5328:7;5318:17;;5295:40;5347:11;5360::::0;5373::::1;5388:20;5400:7;5388:11;:20::i;:::-;5346:62:::0;;-1:-1:-1;5346:62:10;-1:-1:-1;5346:62:10;-1:-1:-1;5423:10:10;;5419:64:::1;;5442:6;::::0;5435:48:::1;::::0;-1:-1:-1;;;5435:48:10;;5467:6:::1;5435:48;::::0;::::1;15131:51:12::0;15198:18;;;15191:34;;;-1:-1:-1;;;;;5442:6:10;;::::1;::::0;5435:23:::1;::::0;15104:18:12;;5435:48:10::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5419:64;5498:10:::0;;5494:29:::1;;5510:13;5516:6;5510:5;:13::i;:::-;5556:6;::::0;5549:39:::1;::::0;-1:-1:-1;;;5549:39:10;;5582:4:::1;5549:39;::::0;::::1;1546:51:12::0;5534:12:10::1;::::0;-1:-1:-1;;;;;5556:6:10::1;::::0;5549:24:::1;::::0;1519:18:12;;5549:39:10::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5657:10:::0;;5634;;5534:54;;-1:-1:-1;5601:14:10::1;::::0;5618:50:::1;::::0;5657:10;5618:34:::1;::::0;5634:17:::1;::::0;5649:1:::1;5634:14;:17::i;:::-;5618:11:::0;;;:15:::1;:34::i;:::-;:38:::0;::::1;:50::i;:::-;5601:67;;5679:16;5698:45;5741:1;5698:38;5726:9;5698:23;5710:5;:10;;;5698:7;:11;;:23;;;;:::i;:45::-;5679:64:::0;-1:-1:-1;5754:21:10::1;5778:24;:7:::0;5679:64;5778:11:::1;:24::i;:::-;5754:48:::0;-1:-1:-1;5819:20:10;;5815:293:::1;;5856:9;::::0;5880:217:::1;5901:16;:23:::0;5897:27;::::1;5880:217;;;5957:55;6001:10;;5957:39;5978:14;5993:1;5978:17;;;;;;;;:::i;:::-;;;;;;;;;5957:16;:20;;:39;;;;:::i;:55::-;6038:6;::::0;6055:16:::1;:19:::0;;5950:62;;-1:-1:-1;;;;;;6038:6:10;;::::1;::::0;6031:23:::1;::::0;6055:16;6072:1;;6055:19;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;6031:50:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;6031:50:10;;;-1:-1:-1;;;;;6055:19:10;;::::1;6031:50;::::0;::::1;15131:51:12::0;15198:18;;;15191:34;;;15104:18;;6031:50:10::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;5926:3:10;::::1;::::0;::::1;:::i;:::-;;;;5880:217;;;;5841:267;5815:293;6122:10:::0;;6118:42:::1;;6134:26;6140:6;6148:11;6134:5;:26::i;:::-;4927:1241;;;;;;;;;4882:1286:::0;;:::o;2081:198:0:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:0;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:0;;18238:2:12;2161:73:0::1;::::0;::::1;18220:21:12::0;18277:2;18257:18;;;18250:30;18316:34;18296:18;;;18289:62;-1:-1:-1;;;18367:18:12;;;18360:36;18413:19;;2161:73:0::1;18036:402:12::0;2161:73:0::1;2244:28;2263:8;2244:18;:28::i;4873:90:11:-:0;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;4936:12:11::1;4949:5;4936:12:::0;;;:6:::1;:12;::::0;;;;:18;;-1:-1:-1;;4936:18:11::1;::::0;;4873:90::o;2283:81::-;1094:13:0;:11;:13::i;:::-;2346:10:11;;:4:::1;:10:::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;2283:81::o;10504:370:1:-;-1:-1:-1;;;;;10635:19:1;;10627:68;;;;-1:-1:-1;;;10627:68:1;;18645:2:12;10627:68:1;;;18627:21:12;18684:2;18664:18;;;18657:30;18723:34;18703:18;;;18696:62;-1:-1:-1;;;18774:18:12;;;18767:34;18818:19;;10627:68:1;18443:400:12;10627:68:1;-1:-1:-1;;;;;10713:21:1;;10705:68;;;;-1:-1:-1;;;10705:68:1;;19050:2:12;10705:68:1;;;19032:21:12;19089:2;19069:18;;;19062:30;19128:34;19108:18;;;19101:62;-1:-1:-1;;;19179:18:12;;;19172:32;19221:19;;10705:68:1;18848:398:12;10705:68:1;-1:-1:-1;;;;;10784:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10835:32;;1754:25:12;;;10835:32:1;;1727:18:12;10835:32:1;;;;;;;10504:370;;;:::o;1359:130:0:-;1273:6;;-1:-1:-1;;;;;1273:6:0;719:10:5;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;19453:2:12;1414:68:0;;;19435:21:12;;;19472:18;;;19465:30;19531:34;19511:18;;;19504:62;19583:18;;1414:68:0;19251:356:12;11155:441:1;11285:24;11312:25;11322:5;11329:7;11312:9;:25::i;:::-;11285:52;;-1:-1:-1;;11351:16:1;:37;11347:243;;11432:6;11412:16;:26;;11404:68;;;;-1:-1:-1;;;11404:68:1;;19814:2:12;11404:68:1;;;19796:21:12;19853:2;19833:18;;;19826:30;19892:31;19872:18;;;19865:59;19941:18;;11404:68:1;19612:353:12;11404:68:1;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;:::-;11275:321;11155:441;;;:::o;7473:818::-;-1:-1:-1;;;;;7599:18:1;;7591:68;;;;-1:-1:-1;;;7591:68:1;;20172:2:12;7591:68:1;;;20154:21:12;20211:2;20191:18;;;20184:30;20250:34;20230:18;;;20223:62;-1:-1:-1;;;20301:18:12;;;20294:35;20346:19;;7591:68:1;19970:401:12;7591:68:1;-1:-1:-1;;;;;7677:16:1;;7669:64;;;;-1:-1:-1;;;7669:64:1;;20578:2:12;7669:64:1;;;20560:21:12;20617:2;20597:18;;;20590:30;20656:34;20636:18;;;20629:62;-1:-1:-1;;;20707:18:12;;;20700:33;20750:19;;7669:64:1;20376:399:12;7669:64:1;7744:38;7765:4;7771:2;7775:6;7744:20;:38::i;:::-;-1:-1:-1;;;;;7815:15:1;;7793:19;7815:15;;;;;;;;;;;7848:21;;;;7840:72;;;;-1:-1:-1;;;7840:72:1;;20982:2:12;7840:72:1;;;20964:21:12;21021:2;21001:18;;;20994:30;21060:34;21040:18;;;21033:62;-1:-1:-1;;;21111:18:12;;;21104:36;21157:19;;7840:72:1;20780:402:12;7840:72:1;-1:-1:-1;;;;;7946:15:1;;;:9;:15;;;;;;;;;;;7964:20;;;7946:38;;8161:13;;;;;;;;;;:23;;;;;;8210:26;;1754:25:12;;;8161:13:1;;8210:26;;1727:18:12;8210:26:1;;;;;;;8247:37;8267:4;8273:2;8277:6;8247:19;:37::i;9422:659::-;-1:-1:-1;;;;;9505:21:1;;9497:67;;;;-1:-1:-1;;;9497:67:1;;21389:2:12;9497:67:1;;;21371:21:12;21428:2;21408:18;;;21401:30;21467:34;21447:18;;;21440:62;-1:-1:-1;;;21518:18:12;;;21511:31;21559:19;;9497:67:1;21187:397:12;9497:67:1;9575:49;9596:7;9613:1;9617:6;9575:20;:49::i;:::-;-1:-1:-1;;;;;9660:18:1;;9635:22;9660:18;;;;;;;;;;;9696:24;;;;9688:71;;;;-1:-1:-1;;;9688:71:1;;21791:2:12;9688:71:1;;;21773:21:12;21830:2;21810:18;;;21803:30;21869:34;21849:18;;;21842:62;-1:-1:-1;;;21920:18:12;;;21913:32;21962:19;;9688:71:1;21589:398:12;9688:71:1;-1:-1:-1;;;;;9793:18:1;;:9;:18;;;;;;;;;;;9814:23;;;9793:44;;9930:12;:22;;;;;;;9978:37;1754:25:12;;;9793:9:1;;:18;9978:37;;1727:18:12;9978:37:1;;;;;;;10026:48;10046:7;10063:1;10067:6;10026:19;:48::i;2433:187:0:-;2525:6;;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;3058:176:11:-;3122:4;3220:6;3178:15;3194:12;3209:5;3161:54;;;;;;;;;22177:19:12;;;22221:2;22212:12;;22205:28;;;;22271:2;22267:15;-1:-1:-1;;22263:53:12;22258:2;22249:12;;22242:75;22342:2;22333:12;;21992:359;3161:54:11;;;;;;;;;;;;;3151:65;;;;;;3146:71;;:80;;;;:::i;:::-;3139:87;3058:176;-1:-1:-1;;;3058:176:11:o;2370:438::-;2462:16;;;2476:1;2462:16;;;;;;;;2438:21;;2462:16;;;;;;;;-1:-1:-1;;2499:6:11;;2489:7;;;;-1:-1:-1;;;;;;2499:6:11;;2489:7;;-1:-1:-1;2499:6:11;;2489:7;;;;:::i;:::-;-1:-1:-1;;;;;2489:16:11;;;:7;;;;;;;;;:16;2526:6;;2516:7;;2526:6;;;2516:4;;2526:6;;2516:7;;;;;;:::i;:::-;-1:-1:-1;;;;;2516:16:11;;;:7;;;;;;;;;:16;2568:6;;2561:39;;-1:-1:-1;;;2561:39:11;;2594:4;2561:39;;;1546:51:12;2543:15:11;;2568:6;;;;;2561:24;;1519:18:12;;2561:39:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2543:57;;2614:11;2627:1;2614:14;2611:39;;2643:7;2629:21;;2611:39;2679:7;2664:11;:22;2661:139;;2701:6;;:99;;-1:-1:-1;;;2701:99:11;;-1:-1:-1;;;;;2701:6:11;;;;:60;;:99;;2762:11;;2701:6;;2776:4;;2781:2;;2784:15;;2701:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2427:381;;2370:438;;:::o;2755:96:6:-;2813:7;2839:5;2843:1;2839;:5;:::i;3465:96::-;3523:7;3549:5;3553:1;3549;:5;:::i;3850:96::-;3908:7;3934:5;3938:1;3934;:5;:::i;4559:315:10:-;4616:4;4622;4628;4645:11;4659:39;4686:5;:11;;;4659:22;4670:5;:10;;;4659:6;:10;;:22;;;;:::i;:39::-;4645:53;;4709:11;4723:46;4767:1;4723:39;4750:5;:11;;;4723:22;4734:5;:10;;;4723:6;:10;;:22;;;;:::i;:46::-;4709:60;-1:-1:-1;4780:11:10;4794:30;4817:6;4794:18;:6;4709:60;4794:10;:18::i;:30::-;4780:44;4851:6;;-1:-1:-1;4859:6:10;;-1:-1:-1;4559:315:10;;-1:-1:-1;;;4559:315:10:o;3128:499::-;3203:16;;;3217:1;3203:16;;;;;;;;3179:21;;3203:16;;;;;;;;-1:-1:-1;;3240:6:10;;3230:7;;;;-1:-1:-1;;;;;;3240:6:10;;3230:7;;-1:-1:-1;3240:6:10;;3230:7;;;;:::i;:::-;-1:-1:-1;;;;;3230:16:10;;;:7;;;;;;;;;:16;3267:6;;3257:7;;3267:6;;;3257:4;;3267:6;;3257:7;;;;;;:::i;:::-;-1:-1:-1;;;;;3257:16:10;;;:7;;;;;;;;;:16;3284:6;;3426:17;;3284:201;;-1:-1:-1;;;3284:201:10;;:6;;;;:60;;:201;;3359:9;;3284:6;;3399:4;;3426:17;;;;3459:15;;3284:201;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3503:6:10;;3532:17;;3566:52;;-1:-1:-1;;;3566:52:10;;-1:-1:-1;;;;;3532:17:10;;;3566:52;;;1546:51:12;;;3503:6:10;;;;;-1:-1:-1;3496:27:10;;-1:-1:-1;3532:17:10;3559:4;;3503:6;;3566:24;;1519:18:12;;3566:52:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3496:123;;-1:-1:-1;;;;;;3496:123:10;;;;;;;-1:-1:-1;;;;;23575:15:12;;;3496:123:10;;;23557:34:12;23627:15;;;;23607:18;;;23600:43;23659:18;;;23652:34;23492:18;;3496:123:10;23317:375:12;3122:96:6;3180:7;3206:5;3210:1;3206;:5;:::i;4020:429:10:-;4108:6;;4101:39;;-1:-1:-1;;;4101:39:10;;4134:4;4101:39;;;1546:51:12;4143:7:10;;-1:-1:-1;;;;;4108:6:10;;4101:24;;1519:18:12;;4101:39:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:49;:115;;;-1:-1:-1;4174:6:10;;4167:39;;-1:-1:-1;;;4167:39:10;;4200:4;4167:39;;;1546:51:12;4209:7:10;;-1:-1:-1;;;;;4174:6:10;;4167:24;;1519:18:12;;4167:39:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:49;4101:115;4083:152;;;4020:429;;:::o;4083:152::-;4245:6;;4279;;4300;;4397:3;;4245:196;;-1:-1:-1;;;4245:196:10;;-1:-1:-1;;;;;4279:6:10;;;4245:196;;;24227:34:12;4300:6:10;;;24277:18:12;;;24270:43;24329:18;;;24322:34;;;24372:18;;;24365:34;;;4245:6:10;24415:19:12;;;24408:35;;;24459:19;;;24452:35;4397:3:10;;24503:19:12;;;24496:44;4415:15:10;24556:19:12;;;24549:35;4245:6:10;;;:19;;24161::12;;4245:196:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3241:307:11:-;1649:9;;-1:-1:-1;;;1649:9:11;;;;1646:21;;;3241:307;;;:::o;1646:21::-;1677:9;:14;;-1:-1:-1;;;;1677:14:11;-1:-1:-1;;;1677:14:11;;;-1:-1:-1;;;;;3348:12:11;::::1;1677:14:::0;3348:12;;;:6:::1;:12;::::0;;;;;1677:14;3348:12:::1;3347:13;:28:::0;::::1;;;-1:-1:-1::0;;;;;;3365:10:11;::::1;;::::0;;;:6:::1;:10;::::0;;;;;::::1;;3364:11;3347:28;:41;;;-1:-1:-1::0;3379:9:11;;3347:41:::1;3390:7;3344:53;-1:-1:-1::0;;;;;3414:12:11;::::1;3407:6;3414:12:::0;;;:6:::1;:12;::::0;;;;;::::1;;:29;;-1:-1:-1::0;;;;;3429:10:11;::::1;;::::0;;;:6:::1;:10;::::0;;;;;::::1;;:14;;3442:1;3414:29;;3429:14;3440:1;3414:29;;;3427:1;3414:29;3407:36;;;;3457:1;3460;3457:4:::0;3454:46:::1;;3486:1;3470:15;;:17;3462:38;;;::::0;-1:-1:-1;;;3462:38:11;;25108:2:12;3462:38:11::1;::::0;::::1;25090:21:12::0;25147:1;25127:18;;;25120:29;-1:-1:-1;;;25165:18:12;;;25158:39;25214:18;;3462:38:11::1;24906:332:12::0;3462:38:11::1;3515:15;::::0;-1:-1:-1;;;3515:15:11;;::::1;::::0;::::1;1754:25:12::0;;;3515:4:11::1;::::0;:12:::1;::::0;1727:18:12;;3515:15:11::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;3511:30:::0;::::1;;3333:215;1702:1;-1:-1:-1::0;;1714:9:11;:15;;-1:-1:-1;;;;1714:15:11;;;-1:-1:-1;3241:307:11:o;3555:364::-;1649:9;;-1:-1:-1;;;1649:9:11;;;;1646:21;;;3555:364;;;:::o;1646:21::-;1677:9;:14;;-1:-1:-1;;;;1677:14:11;-1:-1:-1;;;1677:14:11;;;-1:-1:-1;;;;;3660:16:11;::::1;::::0;;:34:::1;;-1:-1:-1::0;;;;;;3680:14:11;::::1;::::0;3660:34:::1;3696:7;3657:46;3713:23;3721:4;3726:2;3729:6;3713:7;:23::i;:::-;-1:-1:-1::0;;;;;3752:12:11;::::1;;::::0;;;:6:::1;:12;::::0;;;;;::::1;;:23:::0;::::1;;;-1:-1:-1::0;3768:7:11::1;::::0;::::1;;3752:23;:34;;;;-1:-1:-1::0;3783:3:11::1;::::0;-1:-1:-1;;;;;3779:7:11;;::::1;3783:3:::0;::::1;3779:7;;3752:34;3749:163;;;-1:-1:-1::0;;;;;3811:9:11;::::1;;::::0;;;:5:::1;:9;::::0;;;;;::::1;;3810:10;3802:19;;;::::0;::::1;;3864:4;;3845:15;3853:6;3845:7;:15::i;:::-;:23;;3837:32;;;::::0;::::1;;-1:-1:-1::0;;;;;3884:9:11;::::1;;::::0;;;:5:::1;:9;::::0;;;;:16;;-1:-1:-1;;3884:16:11::1;3896:4;3884:16;::::0;;-1:-1:-1;;1714:9:11;:15;;-1:-1:-1;;;;1714:15:11;;;-1:-1:-1;3555:364:11:o;4056:425::-;-1:-1:-1;;;;;4138:12:11;;4129:8;4138:12;;;:6;:12;;;;;;;;:56;;-1:-1:-1;;;;;4160:10:11;;;;;;:6;:10;;;;;;;;:34;;4181:13;;4138:56;;4160:34;4171:9;;4138:56;;;4151:4;:8;4138:56;4242:10;;4129:65;;-1:-1:-1;4206:14:11;;4222:31;;:15;:6;4129:65;4222:10;:15::i;:31::-;4276:3;;4206:47;;-1:-1:-1;;;;;;4270:9:11;;;4276:3;;4270:9;;:20;;-1:-1:-1;4287:3:11;;-1:-1:-1;;;;;4283:7:11;;;4287:3;;4283:7;4270:20;4266:38;;;-1:-1:-1;4303:1:11;4266:38;-1:-1:-1;;;;;4318:10:11;;;;;;:6;:10;;;;;;;;:41;;;;;4339:2;-1:-1:-1;;;;;4332:22:11;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;4318:41;4315:57;;;-1:-1:-1;4371:1:11;4315:57;4388:11;;4385:88;;4417:43;4433:2;4444:4;4450:9;4417:15;:43::i;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:548:12;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:12;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:12:o;1215:180::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;-1:-1:-1;1366:23:12;;1215:180;-1:-1:-1;1215:180:12:o;1790:127::-;1851:10;1846:3;1842:20;1839:1;1832:31;1882:4;1879:1;1872:15;1906:4;1903:1;1896:15;1922:253;1994:2;1988:9;2036:4;2024:17;;2071:18;2056:34;;2092:22;;;2053:62;2050:88;;;2118:18;;:::i;:::-;2154:2;2147:22;1922:253;:::o;2180:275::-;2251:2;2245:9;2316:2;2297:13;;-1:-1:-1;;2293:27:12;2281:40;;2351:18;2336:34;;2372:22;;;2333:62;2330:88;;;2398:18;;:::i;:::-;2434:2;2427:22;2180:275;;-1:-1:-1;2180:275:12:o;2460:410::-;2512:5;2560:4;2548:9;2543:3;2539:19;2535:30;2532:50;;;2578:1;2575;2568:12;2532:50;2600:22;;:::i;:::-;2591:31;;2658:9;2645:23;2638:5;2631:38;2729:2;2718:9;2714:18;2701:32;2696:2;2689:5;2685:14;2678:56;2794:2;2783:9;2779:18;2766:32;2761:2;2754:5;2750:14;2743:56;2859:2;2848:9;2844:18;2831:32;2826:2;2819:5;2815:14;2808:56;2460:410;;;;:::o;2875:224::-;2957:6;3010:3;2998:9;2989:7;2985:23;2981:33;2978:53;;;3027:1;3024;3017:12;2978:53;3050:43;3085:7;3074:9;3050:43;:::i;3104:456::-;3181:6;3189;3197;3250:2;3238:9;3229:7;3225:23;3221:32;3218:52;;;3266:1;3263;3256:12;3218:52;3305:9;3292:23;3324:31;3349:5;3324:31;:::i;:::-;3374:5;-1:-1:-1;3431:2:12;3416:18;;3403:32;3444:33;3403:32;3444:33;:::i;:::-;3104:456;;3496:7;;-1:-1:-1;;;3550:2:12;3535:18;;;;3522:32;;3104:456::o;3565:118::-;3651:5;3644:13;3637:21;3630:5;3627:32;3617:60;;3673:1;3670;3663:12;3688:485;3745:5;3793:4;3781:9;3776:3;3772:19;3768:30;3765:50;;;3811:1;3808;3801:12;3765:50;3833:22;;:::i;:::-;3824:31;;3892:9;3879:23;3911:30;3933:7;3911:30;:::i;:::-;3964:7;3957:5;3950:22;;4032:2;4021:9;4017:18;4004:32;3999:2;3992:5;3988:14;3981:56;4097:2;4086:9;4082:18;4069:32;4064:2;4057:5;4053:14;4046:56;4162:2;4151:9;4147:18;4134:32;4129:2;4122:5;4118:14;4111:56;3688:485;;;;:::o;4178:367::-;4241:8;4251:6;4305:3;4298:4;4290:6;4286:17;4282:27;4272:55;;4323:1;4320;4313:12;4272:55;-1:-1:-1;4346:20:12;;4389:18;4378:30;;4375:50;;;4421:1;4418;4411:12;4375:50;4458:4;4450:6;4446:17;4434:29;;4518:3;4511:4;4501:6;4498:1;4494:14;4486:6;4482:27;4478:38;4475:47;4472:67;;;4535:1;4532;4525:12;4472:67;4178:367;;;;;:::o;4550:183::-;4610:4;4643:18;4635:6;4632:30;4629:56;;;4665:18;;:::i;:::-;-1:-1:-1;4710:1:12;4706:14;4722:4;4702:25;;4550:183::o;4738:662::-;4792:5;4845:3;4838:4;4830:6;4826:17;4822:27;4812:55;;4863:1;4860;4853:12;4812:55;4899:6;4886:20;4925:4;4949:60;4965:43;5005:2;4965:43;:::i;:::-;4949:60;:::i;:::-;5043:15;;;5129:1;5125:10;;;;5113:23;;5109:32;;;5074:12;;;;5153:15;;;5150:35;;;5181:1;5178;5171:12;5150:35;5217:2;5209:6;5205:15;5229:142;5245:6;5240:3;5237:15;5229:142;;;5311:17;;5299:30;;5349:12;;;;5262;;5229:142;;;-1:-1:-1;5389:5:12;4738:662;-1:-1:-1;;;;;;4738:662:12:o;5405:920::-;5594:6;5602;5610;5618;5626;5679:3;5667:9;5658:7;5654:23;5650:33;5647:53;;;5696:1;5693;5686:12;5647:53;5719:43;5754:7;5743:9;5719:43;:::i;:::-;5709:53;;5781:58;5831:7;5825:3;5814:9;5810:19;5781:58;:::i;:::-;5771:68;;5890:3;5879:9;5875:19;5862:33;5914:18;5955:2;5947:6;5944:14;5941:34;;;5971:1;5968;5961:12;5941:34;6010:70;6072:7;6063:6;6052:9;6048:22;6010:70;:::i;:::-;6099:8;;-1:-1:-1;5984:96:12;-1:-1:-1;6187:3:12;6172:19;;6159:33;;-1:-1:-1;6204:16:12;;;6201:36;;;6233:1;6230;6223:12;6201:36;;6256:63;6311:7;6300:8;6289:9;6285:24;6256:63;:::i;:::-;6246:73;;;5405:920;;;;;;;;:::o;6519:247::-;6578:6;6631:2;6619:9;6610:7;6606:23;6602:32;6599:52;;;6647:1;6644;6637:12;6599:52;6686:9;6673:23;6705:31;6730:5;6705:31;:::i;7177:505::-;7272:6;7280;7288;7341:2;7329:9;7320:7;7316:23;7312:32;7309:52;;;7357:1;7354;7347:12;7309:52;7397:9;7384:23;7430:18;7422:6;7419:30;7416:50;;;7462:1;7459;7452:12;7416:50;7501:70;7563:7;7554:6;7543:9;7539:22;7501:70;:::i;:::-;7590:8;;7475:96;;-1:-1:-1;7672:2:12;7657:18;;;;7644:32;;7177:505;-1:-1:-1;;;;7177:505:12:o;7687:234::-;7774:6;7827:3;7815:9;7806:7;7802:23;7798:33;7795:53;;;7844:1;7841;7834:12;7795:53;7867:48;7907:7;7896:9;7867:48;:::i;8555:684::-;8675:6;8683;8691;8744:2;8732:9;8723:7;8719:23;8715:32;8712:52;;;8760:1;8757;8750:12;8712:52;8800:9;8787:23;8829:18;8870:2;8862:6;8859:14;8856:34;;;8886:1;8883;8876:12;8856:34;8925:70;8987:7;8978:6;8967:9;8963:22;8925:70;:::i;:::-;9014:8;;-1:-1:-1;8899:96:12;-1:-1:-1;9102:2:12;9087:18;;9074:32;;-1:-1:-1;9118:16:12;;;9115:36;;;9147:1;9144;9137:12;9115:36;;9170:63;9225:7;9214:8;9203:9;9199:24;9170:63;:::i;:::-;9160:73;;;8555:684;;;;;:::o;9244:388::-;9312:6;9320;9373:2;9361:9;9352:7;9348:23;9344:32;9341:52;;;9389:1;9386;9379:12;9341:52;9428:9;9415:23;9447:31;9472:5;9447:31;:::i;:::-;9497:5;-1:-1:-1;9554:2:12;9539:18;;9526:32;9567:33;9526:32;9567:33;:::i;:::-;9619:7;9609:17;;;9244:388;;;;;:::o;9865:380::-;9944:1;9940:12;;;;9987;;;10008:61;;10062:4;10054:6;10050:17;10040:27;;10008:61;10115:2;10107:6;10104:14;10084:18;10081:38;10078:161;;10161:10;10156:3;10152:20;10149:1;10142:31;10196:4;10193:1;10186:15;10224:4;10221:1;10214:15;10078:161;;9865:380;;;:::o;10250:251::-;10320:6;10373:2;10361:9;10352:7;10348:23;10344:32;10341:52;;;10389:1;10386;10379:12;10341:52;10421:9;10415:16;10440:31;10465:5;10440:31;:::i;11161:127::-;11222:10;11217:3;11213:20;11210:1;11203:31;11253:4;11250:1;11243:15;11277:4;11274:1;11267:15;11293:125;11358:9;;;11379:10;;;11376:36;;;11392:18;;:::i;11423:127::-;11484:10;11479:3;11475:20;11472:1;11465:31;11515:4;11512:1;11505:15;11539:4;11536:1;11529:15;11555:461;11608:3;11646:5;11640:12;11673:6;11668:3;11661:19;11699:4;11728:2;11723:3;11719:12;11712:19;;11765:2;11758:5;11754:14;11786:1;11796:195;11810:6;11807:1;11804:13;11796:195;;;11875:13;;-1:-1:-1;;;;;11871:39:12;11859:52;;11931:12;;;;11966:15;;;;11907:1;11825:9;11796:195;;;-1:-1:-1;12007:3:12;;11555:461;-1:-1:-1;;;;;11555:461:12:o;12021:358::-;12254:6;12243:9;12236:25;12297:2;12292;12281:9;12277:18;12270:30;12217:4;12317:56;12369:2;12358:9;12354:18;12346:6;12317:56;:::i;:::-;12309:64;12021:358;-1:-1:-1;;;;12021:358:12:o;12384:881::-;12479:6;12510:2;12553;12541:9;12532:7;12528:23;12524:32;12521:52;;;12569:1;12566;12559:12;12521:52;12602:9;12596:16;12635:18;12627:6;12624:30;12621:50;;;12667:1;12664;12657:12;12621:50;12690:22;;12743:4;12735:13;;12731:27;-1:-1:-1;12721:55:12;;12772:1;12769;12762:12;12721:55;12801:2;12795:9;12824:60;12840:43;12880:2;12840:43;:::i;12824:60::-;12918:15;;;13000:1;12996:10;;;;12988:19;;12984:28;;;12949:12;;;;13024:19;;;13021:39;;;13056:1;13053;13046:12;13021:39;13080:11;;;;13100:135;13116:6;13111:3;13108:15;13100:135;;;13182:10;;13170:23;;13133:12;;;;13213;;;;13100:135;;;13254:5;12384:881;-1:-1:-1;;;;;;;12384:881:12:o;13270:422::-;13359:1;13402:5;13359:1;13416:270;13437:7;13427:8;13424:21;13416:270;;;13496:4;13492:1;13488:6;13484:17;13478:4;13475:27;13472:53;;;13505:18;;:::i;:::-;13555:7;13545:8;13541:22;13538:55;;;13575:16;;;;13538:55;13654:22;;;;13614:15;;;;13416:270;;;13420:3;13270:422;;;;;:::o;13697:806::-;13746:5;13776:8;13766:80;;-1:-1:-1;13817:1:12;13831:5;;13766:80;13865:4;13855:76;;-1:-1:-1;13902:1:12;13916:5;;13855:76;13947:4;13965:1;13960:59;;;;14033:1;14028:130;;;;13940:218;;13960:59;13990:1;13981:10;;14004:5;;;14028:130;14065:3;14055:8;14052:17;14049:43;;;14072:18;;:::i;:::-;-1:-1:-1;;14128:1:12;14114:16;;14143:5;;13940:218;;14242:2;14232:8;14229:16;14223:3;14217:4;14214:13;14210:36;14204:2;14194:8;14191:16;14186:2;14180:4;14177:12;14173:35;14170:77;14167:159;;;-1:-1:-1;14279:19:12;;;14311:5;;14167:159;14358:34;14383:8;14377:4;14358:34;:::i;:::-;14428:6;14424:1;14420:6;14416:19;14407:7;14404:32;14401:58;;;14439:18;;:::i;:::-;14477:20;;13697:806;-1:-1:-1;;;13697:806:12:o;14508:131::-;14568:5;14597:36;14624:8;14618:4;14597:36;:::i;14644:168::-;14717:9;;;14748;;14765:15;;;14759:22;;14745:37;14735:71;;14786:18;;:::i;14817:135::-;14856:3;14877:17;;;14874:43;;14897:18;;:::i;:::-;-1:-1:-1;14944:1:12;14933:13;;14817:135::o;15236:245::-;15303:6;15356:2;15344:9;15335:7;15331:23;15327:32;15324:52;;;15372:1;15369;15362:12;15324:52;15404:9;15398:16;15423:28;15445:5;15423:28;:::i;16956:184::-;17026:6;17079:2;17067:9;17058:7;17054:23;17050:32;17047:52;;;17095:1;17092;17085:12;17047:52;-1:-1:-1;17118:16:12;;16956:184;-1:-1:-1;16956:184:12:o;22356:127::-;22417:10;22412:3;22408:20;22405:1;22398:31;22448:4;22445:1;22438:15;22472:4;22469:1;22462:15;22488:112;22520:1;22546;22536:35;;22551:18;;:::i;:::-;-1:-1:-1;22585:9:12;;22488:112::o;22605:582::-;22904:6;22893:9;22886:25;22947:6;22942:2;22931:9;22927:18;22920:34;22990:3;22985:2;22974:9;22970:18;22963:31;22867:4;23011:57;23063:3;23052:9;23048:19;23040:6;23011:57;:::i;:::-;-1:-1:-1;;;;;23104:32:12;;;;23099:2;23084:18;;23077:60;-1:-1:-1;23168:3:12;23153:19;23146:35;23003:65;22605:582;-1:-1:-1;;;22605:582:12:o;23192:120::-;23232:1;23258;23248:35;;23263:18;;:::i;:::-;-1:-1:-1;23297:9:12;;23192:120::o;23697:128::-;23764:9;;;23785:11;;;23782:37;;;23799:18;;:::i;24595:306::-;24683:6;24691;24699;24752:2;24740:9;24731:7;24727:23;24723:32;24720:52;;;24768:1;24765;24758:12;24720:52;24797:9;24791:16;24781:26;;24847:2;24836:9;24832:18;24826:25;24816:35;;24891:2;24880:9;24876:18;24870:25;24860:35;;24595:306;;;;;:::o
Swarm Source
ipfs://fa89bf92c1bd0ce796757a689d72aea0d18766c13c7cf1dfffbd17afb88fc384
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.