ERC-20
Overview
Max Total Supply
23,333,333,231 ASTRAEA
Holders
35
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
803,500,000.000000005646393718 ASTRAEAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ASTRAEA
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-29 */ /** ▄╖╓ ▄▓╨─,»ƒ≈, ▄██▌⌐,¬Q ░U⌂. ▄█▓▓┘^^2,┐VΣ⌐^∩╩» ,▄▓▓█▓Q╠"░¬¬╙í╙▐l¿-╚▀╓ ,#▓▓▓▓▓µ╙eµOΓÇ⌠"▄└w¬▐»⌠╩╚] ╓▓▓██▓▓▌╪p"╗╗Åε"∩░ⁿ╩╨╗C╞wN./ÜU⌐ ▄▓█▓▓█▓╣▀▒╗╪çj╥╘»^"≡╙»¬⌂"Ç╪\j "¬└⌡╖ ▄▓▓▀▓▓▓▓▓╙╩^~└┘┘h ¬Ö╥⌠└╚ƒ░,⌡Ü╙-╛╤";--╥≈ ▄██▌▓▓███▌b*╥ └J╥ │░╙├╓b┘▌5▄╠╣v░j╙╕╔╬J╔▐┴╝Æ ▄███▓╣▓▓██▌ `╜─'╙░Å╕▀⌐µ∩──┘╥╢▒▄▒▀┬▐▄*▒▐╙▄▒▄═╘╬½ ▄▓▓█▓▓██▓▓▓▓▌.╙l-j▄½-≤│╙²~▄╡ ┴▄╚╠%┐`▐Ñ╜Θ╘⌠▐╛▌▀╛╜╨Ö»=╥ .▄█▓█▓▓▓▓▓████▌«G,M╙t"ΓJÖN╚tÅ:`ÅM⌂╙ñ╙╗²#╥╖╟║▐7╚/▒d╚p╦▒\▐╩╗ ╓▄█▓▓▓██▓█▓█▓█▀ ╦╙h╙Å╡└I"7╚",ΓΣ`╩▄┘ª╓"µ╘,╙"*ƒ└┐╥╠ ▌┤Φµ▐Σ╔╜╪╫▒⌐ ▄▓▓▓█▓▓╣╬▓▓▓███▓▀ª▄^.- └J▄ N.≈.╩╘/╩`▐.╠`─▒┘▄╖≈─ÖÿΓ╚╧─╠╥▒╡Æ╙╥╬╦╠╔╫╫▄ ▄▓▓▀█▌╬▓▓▓▓▌▓████ ▄Στ¬ƒ"⌐Ot{⌐ΣD,M,╞#╘─^ăÖ> Ωⁿⁿ-;`¬,Θb╙─`┬╙-\⌡▒⌠"ƒ▄▄⌂╙▒╥ ▄█▓▓▓█▌▌▓▓█▓█▓███▓▀▄╙,╗τ║▒O,║ ¥▄░Cⁿ√,│╓╛.░≈╚▌└$∩^^ [¡%╘╓\]>Y⌐≤Γ╝╚≥╨╠╘Å╦ΦmÜ⌠w ▄▓▓▓▓╫▓▓╬▓▓▓▓▓▓▓█▓▓.MÑδçD,╡æε▐≤. ⌐▌L≥"C]j╔∞,]"3▒^L"╓,═╙U╓╛▐╙╛╨ε├╡╝ÖΦQ▄═╙▀▌╔╪╟╩▌╥ ▄█▓▓▓▓▌╫▓▓▓▓▌█▓▌██▓╩¿╧ⁿJ╙⌂╧,Σ&Γ▄.ïΓⁿ,Σ└". ╙¼,N⌐∩▄▄⌐»J╥≥*└└═Θ?%▒▒╛¬▀Γ╪╘,╦╨⌐Q╛┤Qæ╛▐▐▒╗⌠" ╓▓▓▓▓╬▓▓▓╣▓▓▓▓▓▓█╣█▓▌▀¬≈▌▄{,▒"Θ╥½,%*"┘"~²Y\Hê⌂»╙?.T└┴╫p\╞╙▄└ ▄┐p²▐╨╬╨*┘╥╙µ╫╩dæ⌡▐,▐Ö╓É"▐▄Γª⌠" ▄▓▓▓▓▓▓╣▓▓▓█▓▓██▓█▓█▌▓╝─▐▒▌▒▀@▀µ▒╣╚7╚▒▌▒²╬ç▀▄╙╨▄╜╚▒╟=╙╝╨╬▀ΓÇÑ╖åΓ╜ΓÇ.,╚ ├"Σ▒▒╠≡▒▐╓╓╙╥╝╙5╫╬▐╚╬▄╝╦⌠" ▄▓ ▒▄▐▒╗⌐ ▄▓▓▓ >< ><< << ><<<><<<<<<><<<<<<< >< ><<<<<<<< >< ╬▐▒╗╟▄▄╓ ▄▓▓▓▓╫▓ >< << ><< ><< ><< ><< ><< >< << ><< >< << ⌠"▐▒╗▄▄╝╦╜ ▄▓▓▓▓╫▓▓╬▓ >< ><< ><< ><< ><< ><< >< ><< ><< >< ><< æ⌠"╛▐▒╗▐▐▄▄▄ ▀▓▐▐╛æb┤ ><< ><< ><< ><< >< ><< ><< ><< ><<<<<< ><< ><< ⌠"æ▐▄▄▒╗╩▄ ▀▓╬▓▓▓ ><<<<<< ><< ><< ><< ><< ><< ><<<<<< ><< ><< ><<<<<< ><< Ü⌠▐▄▄▒╗"w ▀▓╬▓ ><< ><< ><< ><< ><< ><< ><< ><< ><< ><< ><< ><< ╩▌▄▄▄▄╥ ▀▓ ><< ><< ><< << ><< ><< ><<><< ><<><<<<<<<<><< ><< ▒▄▄▄▄╥ ▀ ╗▄▄▄ ▀▓▓╬▓▓▓╣▓▓▓▓▓▓█╣█▓▌▓╝─▐▒▌▒▀@▀µ▒╣╚7╚▒▌▒²╬ç▀▄╙╨▄╜╚▒╟=╙╝╨╬▀ΓÇÑ╖åΓ╜ΓÇ.,╚ ├"Σ▒▒╠≡▒▐╓╓╙╥╝╙5╫╬▐╚╬╝╦▄▄▄ ▀▓▀█▌╬▓▓▓▓▓▓▓▓ æ⌠"ƒ▄▄─╠╥▒╡ ▀▓ ▀█▌╬▓▓▓▓▓ 𓂀 ASTRAEA - E PLURIBUS UNUM 𓂀 ╥╬ ─╠▒╡╙╥ ▀▓ ▓▓▓▓▓▓▓ ╪─╠╥╡╦▀⌐ ▀▓▓▓▓▓▓▓ Vision is teh art of seeing what is invisible to others. ╗╠╥▒▀ ▀▓█▓▓▓ Teh people shall make teh community and they shall see light. =╠╥▒ ▀▓▓▓ 5% Tax ╠╦½ ▀▓▓ ALL TAXES WILL GO TO THE LIQUIDITY POOLS ⁿⁿ ▀ b ▀▓▓▓█▓▓██▓ ¬D,╡æε▐≤. ⌐▌L≥"C]j╔∞,]"3▒ⁿⁿ-;`¬,Θb╙─`┬╙^L"╓,═╙U╓╛▐╙╛╨ ▀▓▓▓█▓▓██▓ ÜD,╡æε▐≤. ⌐▌L≥"ⁿⁿ-;`¬,Θb╙─`╙C]j╔∞,ⁿⁿ-;`¬,Θb╙─╙─`┬ ▀▓▓▓█▓▓██▓ ΓÇ⌠"▄└w¬Oⁿⁿ-;`¬,Θb╙─`┬╙,║¥▄░Cⁿ√,│╓╛.░≈╚▌b╙─$∩^ ▀▓▓▓█▓▓██▓ │╙²~▄╡ ┴▄╚╠%┐`b╙─▐Ñ╜Θ╘⌠╛░Å╕▀⌐┐`▐Ñ╜Θ┐`▐Ñ╜Θ ,#█▓▓█▓▓▓▓▓╠"░¬¬╙ⁿⁿ-;`b╙─¬,Θb╙─`┬í╙ l¿-╚▀╓`╜─'╙░Å ▓▀▓▓▓▓▓▓▓╙╩^~└┘┘h ¬Ö╥⌠└ⁿⁿ-;`¬╙─Θb╙─`┬╙╚ƒ░, ,#▓▓▓▓▓▓▓µ╙eµOΓÇ⌠"▄└ⁿⁿb╙─-;`,Θb╙─`┬╙w¬▐» ▄█▓▓▓▓▓┘^^2,┐Vⁿⁿ-;`¬,Θbb╙─╙b╙─`┬╙Σ ▀▓▓▓ ▓▄┘^^ⁿⁿ-;`¬,Θbb╙─╙─┬╙2b╙ ▄▓▓▓ └J╥ │░╙├╓b┘▌5▄╠╣v░╖ ▀▓▓▓▒O,║ ¥▄░Cⁿ√,│╓╛. ▄▓▄╖▄╖╓▒O,║ ¥╚ ▓▄╖╓▒O,OΓ ▄╖╓▒ ╖ */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender,address recipient,uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } 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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract ASTRAEA is Context,IERC20, Ownable{ using Address for address; string private _name = "E Pluribus Unum"; string private _symbol = "ASTRAEA"; uint8 private _decimals = 18; uint256 totalFeeFortx = 0; uint256 maxWalletTreshold = 3; uint256 maxTxTreshold = 2; uint256 private swapTreshold =2; uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset) uint256 private _totalSupply = 23333333231 * 10**_decimals; uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000; mapping (address => uint256) private _balances; mapping (address => bool) private _excludedFromFees; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public automatedMarketMakerPairs; address _owner; address payable public marketingAddress = payable(0x31A5512D3b640C9235cDF57b351A6e0d586ce279); address public NOS = (0x234736F78a6F18d20d3d2eD0544c55d38F26b1CD); address public POO = (0x2B52cC9051991B42A77CA1Dc703f6d15E0981241); uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; uint256 maxTxAmount = _totalSupply*maxTxTreshold/100; mapping (address => bool) botWallets; bool botTradeEnabled = false; bool checkWalletSize = true; mapping (address => bool) private _liquidityHolders; mapping (address => bool) private presaleAddresses; uint256 private buyliqFee = 1; uint256 private buyprevLiqFee = 1; uint256 private buymktFee = 2; uint256 private buyPrevmktFee = 2; uint256 private buyNOS = 1; uint256 private buyprevNOS = 1; uint256 private buyPOO = 1; uint256 private buyPrevPOO = 1; bool private tradeEnabled = false; uint256 private sellliqFee = 1; uint256 private sellprevLiqFee = 1; uint256 private sellmktFee = 2; uint256 private sellPrevmktFee = 2; uint256 private sellNOS = 1; uint256 private sellprevNOS = 1; uint256 private sellPOO = 1; uint256 private sellPrevPOO =1; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; uint256 private mktTokens = 0; uint256 private NOSTokens = 0; uint256 private liqTokens = 0; uint256 private POOtokens =0; event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event tokensSwappedDuringTokenomics(uint256 amount); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D IUniswapV2Router02 _router; address public uniswapV2Pair; //Balances tracker modifier lockTheSwap{ inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor(){ _balances[_msgSender()] = _totalSupply; //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory()) .createPair(address(this), _uniRouter.WETH()); _excludedFromFees[owner()] = true; _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees _router = _uniRouter; _liquidityHolders[address(_router)] = true; _liquidityHolders[owner()] = true; _liquidityHolders[address(this)] = true; _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); emit Transfer(address(0),_msgSender(),_totalSupply); } receive() external payable{} //general token data and tracking of balances to be swapped. function getOwner()external view returns(address){ return owner(); } function currentmktTokens() external view returns (uint256){ return mktTokens; } function currentPZTokens() external view returns (uint256){ return NOSTokens; } function currentPOOokens() external view returns (uint256){ return POOtokens; } function currentLiqTokens() external view returns (uint256){ return liqTokens; } function totalSupply() external view override returns (uint256){ return _totalSupply; } function balanceOf(address account) public view override returns (uint256){ return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool){ _transfer(_msgSender(),recipient,amount); return true; } function allowance(address owner, address spender) external view override returns (uint256){ return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool){ _approve(_msgSender(),spender,amount); return true; } function decimals()external view returns(uint256){ return _decimals; } function name() external view returns (string memory) { return _name; } function symbol() external view returns (string memory){ return _symbol; } function updateMaxTxTreshold(uint256 newVal) public onlyOwner{ maxTxTreshold = newVal; maxTxAmount = _totalSupply*maxTxTreshold/100;// 1% } function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{ maxWalletTreshold = newVal; maxWalletAmount = _totalSupply*maxWalletTreshold/100; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool){ require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance"); _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{ botWallets[detectedBot] = isBot; } function currentbuyliqFee() public view returns (uint256){ return buyliqFee; } function currentbuymktfee() public view returns (uint256){ return buymktFee; } function currentbuyNOSfee() public view returns (uint256){ return buyNOS; } function currentbuyPOOfee() public view returns (uint256){ return buyPOO; } function currentsellLiqFee() public view returns (uint256){ return sellliqFee; } function currentsellmktfee() public view returns (uint256){ return sellmktFee; } function currentsellyNOSfee() public view returns (uint256){ return sellNOS; } function currentsellyPOOfee() public view returns (uint256){ return sellPOO; } function currentThresholdInt()public view returns (uint256){ return currentThreshold; } function isExcluded(address toCheck)public view returns (bool){ return _excludedFromFees[toCheck]; } function _transfer(address from, address to, uint256 amount) internal{ require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0,"ERC20: transfered amount must be greater than zero"); uint256 senderBalance = _balances[from]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); if(tradeEnabled == false){ require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled"); } if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){ require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 inContractBalance = balanceOf(address(this)); if(inContractBalance >=requiredTokensToSwap && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled){ if(inContractBalance >= requiredTokensToSwap ){ inContractBalance = requiredTokensToSwap; swapForTokenomics(inContractBalance); } } bool takeFees = true; if(_excludedFromFees[from] || _excludedFromFees[to]) { totalFeeFortx = 0; takeFees = false; } uint256 mktAmount = 0; uint256 NOSAmount = 0; // Amount to be added to prize pool. uint256 liqAmount = 0; // Amount to be added to liquidity. uint256 POOamount = 0; if(takeFees){ //bot fees if(botWallets[from] == true||botWallets[to]==true){ revert("No bots allowed to trade"); } //Selling fees if (automatedMarketMakerPairs[to] && to != address(_router) ){ totalFeeFortx = 0; mktAmount = amount * sellmktFee/100; liqAmount = amount * sellliqFee/100; NOSAmount = amount * sellNOS/100; POOamount = amount * sellPOO/100; totalFeeFortx = mktAmount + liqAmount + NOSAmount; } //Buy Fees else if(automatedMarketMakerPairs[from] && from != address(_router)) { totalFeeFortx = 0; mktAmount = amount * buymktFee/100; liqAmount = amount * buyliqFee/100; NOSAmount = amount * buyNOS/100; POOamount = amount * buyPOO/100; totalFeeFortx = mktAmount + liqAmount + NOSAmount; } } _balances[from] = senderBalance - amount; _balances[to] += amount - mktAmount - NOSAmount - liqAmount-POOamount; if(liqAmount != 0) { _balances[address(this)] += totalFeeFortx; //tLiqTotal += liqAmount; liqTokens += liqAmount; NOSTokens += NOSAmount; mktTokens += mktAmount; POOtokens += POOamount; emit Transfer(from, address(this), totalFeeFortx); } emit Transfer(from, to,amount-totalFeeFortx); } function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{ swapAndLiquify(liqTokens); swapTokensForETHmkt(mktTokens); SwapForNOS(NOSTokens); uint256 halfETHBalance = address(this).balance; processNOS(halfETHBalance,NOS); SwapForNOS(POOtokens); uint256 remainingETHBalance = address(this).balance; processNOS(remainingETHBalance,POO); emit tokensSwappedDuringTokenomics(balanceToswap); mktTokens = 0; NOSTokens = 0; liqTokens = 0; POOtokens = 0; } function addLimitExempt(address newAddress)external onlyOwner{ _liquidityHolders[newAddress] = true; } function swapTokensForETHmkt(uint256 amount)private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), amount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // Accept any amount of ETH. path, marketingAddress, block.timestamp ); } function SwapForNOS(uint256 amount)private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), amount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // Accept any amount of ETH. path, address(this), block.timestamp ); } function updateNOS(address newToken) external{ NOS = newToken; } function updatePOO(address newToken) external{ POO = newToken; } function processNOS(uint256 ethAmount, address rewardToken) internal { // generate the uniswap pair path of weth -> eth address[] memory path = new address[](2); path[0] = _router.WETH(); path[1] = rewardToken; // make the swap _router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}( 0, // accept any amount of Ethereum path, address(this), block.timestamp ); } function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{ //uint256 contractBalance = tokenToClear.balanceOf(address(this)); tokenToClear.transfer(destination, amount); } function unstuckETH(address payable destination) public onlyOwner{ uint256 ethBalance = address(this).balance; payable(destination).transfer(ethBalance); } function tradeStatus(bool status) public onlyOwner{ tradeEnabled = status; } function swapAndLiquify(uint256 liqTokensPassed) private { uint256 half = liqTokensPassed / 2; uint256 otherHalf = liqTokensPassed - half; uint256 initialBalance = address(this).balance; swapTokensForETH(half); uint256 newBalance = address(this).balance - (initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half,newBalance,otherHalf); } function swapTokensForETH(uint256 tokenAmount) private{ address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), tokenAmount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // Accept any amount of ETH. path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{ _approve(address(this), address(_router), tokenAmount); _router.addLiquidityETH{value:ethAmount}( address(this), tokenAmount, 0, 0, deadAddress,// tr block.timestamp ); } function _approve(address owner,address spender, uint256 amount) internal{ 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); } //Fees related functions function addToExcluded(address toExclude) public onlyOwner{ _excludedFromFees[toExclude] = true; } function removeFromExcluded(address toRemove) public onlyOwner{ _excludedFromFees[toRemove] = false; } function excludePresaleAddresses(address router, address presale) external onlyOwner { _liquidityHolders[address(router)] = true; _liquidityHolders[presale] = true; presaleAddresses[address(router)] = true; presaleAddresses[presale] = true; } function startPresaleStatus()public onlyOwner{ buymktFee = 0; sellmktFee =0; buyliqFee =0; sellliqFee =0; buyNOS =0; sellNOS = 0; buyPOO =0; sellPOO = 0; setSwapAndLiquify(false); } function endPresaleStatus() public onlyOwner{ buymktFee = 1; buyliqFee = 1; buyNOS = 1; buyPOO =1; sellmktFee = 1; sellliqFee = 1; sellNOS = 1; sellPOO =1; setSwapAndLiquify(true); } function updateThreshold(uint newThreshold) public onlyOwner{ currentThreshold = newThreshold; } function setSwapAndLiquify(bool _enabled) public onlyOwner{ swapAndLiquifyEnabled = _enabled; } //Marketing related function setMktAddress(address newAddress) external onlyOwner{ marketingAddress = payable(newAddress); } function transferAssetsETH(address payable to, uint256 amount) internal{ to.transfer(amount); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{ buyliqFee = newAmount; } function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{ buymktFee= newAmount; } function updatecurrentbuyNOSfee(uint256 newAmount) public onlyOwner{ buyNOS= newAmount; } function updatecurrentbuyPOOfee(uint256 newAmount) public onlyOwner{ buyPOO= newAmount; } function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{ sellliqFee= newAmount; } function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{ sellmktFee= newAmount; } function updatecurrentsellyNOSfee(uint256 newAmount) public onlyOwner{ sellNOS= newAmount; } function updatecurrentsellyPOOfee(uint256 newAmount) public onlyOwner{ sellPOO= newAmount; } function currentMaxWallet() public view returns(uint256){ return maxWalletAmount; } function currentMaxTx() public view returns(uint256){ return maxTxAmount; } function updateSwapTreshold(uint256 newVal) public onlyOwner{ swapTreshold = newVal; requiredTokensToSwap = _totalSupply*swapTreshold/1000; } function currentTradeStatus() public view returns (bool){ return tradeEnabled; } function currentSwapTreshold() public view returns(uint256){ return swapTreshold; } function currentTokensToSwap() public view returns(uint256){ return requiredTokensToSwap; } function AHD666LaunchPad() public pure returns(uint256) { return 1; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); 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 Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); 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; } interface IUniswapV2Router01 { 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 removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"AHD666LaunchPad","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"NOS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPOOokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPZTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyNOSfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyPOOfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellyNOSfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellyPOOfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newToken","type":"address"}],"name":"updateNOS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newToken","type":"address"}],"name":"updatePOO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyNOSfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyPOOfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyNOSfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyPOOfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e0604052600f60a08190526e4520506c75726962757320556e756d60881b60c090815262000032916001919062000619565b50604080518082019091526007808252664153545241454160c81b6020909201918252620000639160029162000619565b506003805460ff191660121780825560006004556005919091556002600681905560075560146008556200009c9060ff16600a62000780565b620000ad9064056ec668ef6200086b565b6009556103e8600754600954620000c591906200086b565b620000d1919062000712565b600a55601080546001600160a01b03199081167331a5512d3b640c9235cdf57b351a6e0d586ce2791790915560118054821673234736f78a6f18d20d3d2ed0544c55d38f26b1cd17905560128054909116732b52cc9051991b42a77ca1dc703f6d15e09812411790556005546009546064916200014e916200086b565b6200015a919062000712565b60135560646006546009546200017191906200086b565b6200017d919062000712565b6014556016805461ffff191661010090811790915560016019819055601a8190556002601b819055601c819055601d829055601e829055601f82905560208290556021805460ff19169055602282905560238290556024819055602555602681905560278190556028819055602955602a805461ff00191690911790556ddead0000000000000000000000006080526000602b819055602c819055602d819055602e553480156200022d57600080fd5b50620002426200023c62000562565b62000566565b600954600b60006200025362000562565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ca57600080fd5b505afa158015620002df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003059190620006bf565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034e57600080fd5b505afa15801562000363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003899190620006bf565b6040518363ffffffff1660e01b8152600401620003a8929190620006ef565b602060405180830381600087803b158015620003c357600080fd5b505af1158015620003d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fe9190620006bf565b603080546001600160a01b0319166001600160a01b03929092169190911790556001600c60006200042e620005b6565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600c8452828120805486166001908117909155602f80548885166001600160a01b03199091161790819055909216815260179384905291822080549094168117909355620004ac620005b6565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260179093529120805490921660019081179092556030546200050292911690620005c5565b6200050c62000562565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60095460405162000553919062000709565b60405180910390a350620008e0565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031690565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b82805462000627906200088d565b90600052602060002090601f0160209004810192826200064b576000855562000696565b82601f106200066657805160ff191683800117855562000696565b8280016001018555821562000696579182015b828111156200069657825182559160200191906001019062000679565b50620006a4929150620006a8565b5090565b5b80821115620006a45760008155600101620006a9565b600060208284031215620006d1578081fd5b81516001600160a01b0381168114620006e8578182fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b90815260200190565b6000826200072e57634e487b7160e01b81526012600452602481fd5b500490565b80825b600180861162000747575062000777565b8187048211156200075c576200075c620008ca565b808616156200076a57918102915b9490941c93800262000736565b94509492505050565b6000620006e860001960ff8516846000826200079f57506001620006e8565b81620007ae57506000620006e8565b8160018114620007c75760028114620007d25762000806565b6001915050620006e8565b60ff841115620007e657620007e6620008ca565b6001841b915084821115620007ff57620007ff620008ca565b50620006e8565b5060208310610133831016604e8410600b84101617156200083e575081810a83811115620008385762000838620008ca565b620006e8565b6200084d848484600162000733565b808604821115620008625762000862620008ca565b02949350505050565b6000816000190483118215151615620008885762000888620008ca565b500290565b600281046001821680620008a257607f821691505b60208210811415620008c457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c612ea36200090660003960008181610def01526126410152612ea36000f3fe6080604052600436106103fe5760003560e01c8063893d20e811610213578063b4d95a9311610123578063d15bcf0f116100ab578063e1370dd31161007a578063e1370dd314610ad3578063edcf19b214610ae8578063f2fde38b14610b08578063f7da678514610b28578063f953cf3a14610b4857610405565b8063d15bcf0f14610a69578063d7d7442f14610a7e578063dd62ed3e14610a9e578063ddcf9b9814610abe57610405565b8063bf9b0159116100f2578063bf9b0159146109d4578063bf9eb540146109e9578063cb66453414610a09578063cba0e99614610a29578063d1294d4c14610a4957610405565b8063b4d95a931461095f578063b62496f51461097f578063b682428e1461099f578063b934f33b146109bf57610405565b80639a7a23d6116101a6578063a6c38f5911610175578063a6c38f59146108d5578063a7a07452146108f5578063a8c40a4214610915578063a9059cbb1461092a578063b195b8391461094a57610405565b80639a7a23d6146108765780639b136da414610896578063a04bdc81146108ab578063a5ece941146108c057610405565b806390f50283116101e257806390f502831461080c57806395d89b411461082157806397385fa9146108365780639878665f1461085657610405565b8063893d20e8146107a25780638ace0a9e146107b75780638cd0260c146107d75780638da5cb5b146107f757610405565b80634a74bb021161030e5780636f426886116102a15780637a94d54b116102705780637a94d54b146107185780637c27b824146107385780637ffb40331461074d578063801527ce146107625780638628c23f1461078257610405565b80636f426886146106b957806370a08231146106ce578063715018a6146106ee57806377bc419e1461070357610405565b806364c16163116102dd57806364c161631461065a5780636573c4df1461066f5780636ce5a8a51461068f5780636df3333a146106a457610405565b80634a74bb02146105fb5780634bd7ace5146106105780635297defd146106255780635be76f111461063a57610405565b806323b872dd11610391578063313ce56711610360578063313ce5671461057c5780633ec7d06e14610591578063487a6905146105b157806349bd5a5e146105c65780634a0e963c146105db57610405565b806323b872dd1461050557806323dbce821461052557806327c8f8351461053a5780632d03420b1461055c57610405565b806314c0eaf9116103cd57806314c0eaf9146104a457806318160ddd146104c6578063220f6696146104db57806322788f86146104f057610405565b806306fdde031461040a5780630882a86314610435578063095ea7b31461045757806313b4a7f41461048457610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f610b5d565b60405161042c9190612961565b60405180910390f35b34801561044157600080fd5b50610455610450366004612831565b610bef565b005b34801561046357600080fd5b506104776104723660046127ba565b610c3c565b60405161042c9190612921565b34801561049057600080fd5b5061045561049f36600461273b565b610c59565b3480156104b057600080fd5b506104b9610cf8565b60405161042c9190612d30565b3480156104d257600080fd5b506104b9610cfe565b3480156104e757600080fd5b50610477610d04565b3480156104fc57600080fd5b506104b9610d0d565b34801561051157600080fd5b50610477610520366004612768565b610d13565b34801561053157600080fd5b506104b9610de7565b34801561054657600080fd5b5061054f610ded565b60405161042c91906128b9565b34801561056857600080fd5b506104556105773660046127e5565b610e11565b34801561058857600080fd5b506104b9610e63565b34801561059d57600080fd5b506104556105ac3660046126c4565b610e6c565b3480156105bd57600080fd5b506104b9610e8e565b3480156105d257600080fd5b5061054f610e94565b3480156105e757600080fd5b506104556105f63660046126c4565b610ea3565b34801561060757600080fd5b50610477610f06565b34801561061c57600080fd5b506104b9610f14565b34801561063157600080fd5b506104b9610f1a565b34801561064657600080fd5b506104556106553660046126c4565b610f20565b34801561066657600080fd5b506104b9610f9c565b34801561067b57600080fd5b5061045561068a366004612831565b610fa2565b34801561069b57600080fd5b506104b9611007565b3480156106b057600080fd5b506104b961100d565b3480156106c557600080fd5b506104b9611013565b3480156106da57600080fd5b506104b96106e93660046126c4565b611019565b3480156106fa57600080fd5b50610455611034565b34801561070f57600080fd5b506104b961107f565b34801561072457600080fd5b50610455610733366004612831565b611085565b34801561074457600080fd5b506104b96110c9565b34801561075957600080fd5b506104b96110ce565b34801561076e57600080fd5b5061045561077d3660046127e5565b6110d4565b34801561078e57600080fd5b5061045561079d366004612831565b61112d565b3480156107ae57600080fd5b5061054f611171565b3480156107c357600080fd5b506104556107d2366004612831565b611180565b3480156107e357600080fd5b506104556107f2366004612831565b6111c4565b34801561080357600080fd5b5061054f611208565b34801561081857600080fd5b506104b9611217565b34801561082d57600080fd5b5061041f61121d565b34801561084257600080fd5b50610455610851366004612831565b61122c565b34801561086257600080fd5b50610455610871366004612831565b611270565b34801561088257600080fd5b506104556108913660046127a8565b6112b4565b3480156108a257600080fd5b506104b961132f565b3480156108b757600080fd5b506104b9611335565b3480156108cc57600080fd5b5061054f61133b565b3480156108e157600080fd5b506104556108f0366004612703565b61134a565b34801561090157600080fd5b50610455610910366004612831565b6113b4565b34801561092157600080fd5b5061054f611419565b34801561093657600080fd5b506104776109453660046127ba565b611428565b34801561095657600080fd5b5061045561143c565b34801561096b57600080fd5b5061045561097a3660046126c4565b6114ae565b34801561098b57600080fd5b5061047761099a3660046126c4565b61150e565b3480156109ab57600080fd5b506104556109ba3660046126c4565b611523565b3480156109cb57600080fd5b5061054f611545565b3480156109e057600080fd5b506104b9611554565b3480156109f557600080fd5b50610455610a043660046126c4565b61155a565b348015610a1557600080fd5b50610455610a243660046126c4565b6115bb565b348015610a3557600080fd5b50610477610a443660046126c4565b61161e565b348015610a5557600080fd5b50610455610a64366004612831565b61163c565b348015610a7557600080fd5b506104776116a2565b348015610a8a57600080fd5b50610455610a99366004612831565b6116ab565b348015610aaa57600080fd5b506104b9610ab936600461273b565b6116ef565b348015610aca57600080fd5b506104b961171a565b348015610adf57600080fd5b506104b9611720565b348015610af457600080fd5b50610455610b03366004612831565b611726565b348015610b1457600080fd5b50610455610b233660046126c4565b61176a565b348015610b3457600080fd5b50610455610b4336600461281d565b6117db565b348015610b5457600080fd5b506104556118a0565b606060018054610b6c90612df9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9890612df9565b8015610be55780601f10610bba57610100808354040283529160200191610be5565b820191906000526020600020905b815481529060010190602001808311610bc857829003601f168201915b5050505050905090565b610bf7611912565b6001600160a01b0316610c08611208565b6001600160a01b031614610c375760405162461bcd60e51b8152600401610c2e90612c3b565b60405180910390fd5b601955565b6000610c50610c49611912565b8484611916565b50600192915050565b610c61611912565b6001600160a01b0316610c72611208565b6001600160a01b031614610c985760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b0391821660008181526017602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601890915280822080548516861790559181522080549091169091179055565b602c5490565b60095490565b602a5460ff1681565b60085490565b6001600160a01b0383166000908152600d6020526040812081610d34611912565b6001600160a01b03166001600160a01b0316815260200190815260200160002054821115610d745760405162461bcd60e51b8152600401610c2e90612bf3565b610d7f8484846119ca565b610ddd84610d8b611912565b6001600160a01b0387166000908152600d602052604081208691610dad611912565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610dd89190612de2565b611916565b5060019392505050565b60285490565b7f000000000000000000000000000000000000000000000000000000000000000081565b610e19611912565b6001600160a01b0316610e2a611208565b6001600160a01b031614610e505760405162461bcd60e51b8152600401610c2e90612c3b565b6021805460ff1916911515919091179055565b60035460ff1690565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b600a5490565b6030546001600160a01b031681565b610eab611912565b6001600160a01b0316610ebc611208565b6001600160a01b031614610ee25760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b602a54610100900460ff1681565b60195490565b60245490565b610f28611912565b6001600160a01b0316610f39611208565b6001600160a01b031614610f5f5760405162461bcd60e51b8152600401610c2e90612c3b565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f97573d6000803e3d6000fd5b505050565b602d5490565b610faa611912565b6001600160a01b0316610fbb611208565b6001600160a01b031614610fe15760405162461bcd60e51b8152600401610c2e90612c3b565b6005819055600954606490610ff7908390612dc3565b6110019190612da3565b60135550565b601f5490565b60075490565b602e5490565b6001600160a01b03166000908152600b602052604090205490565b61103c611912565b6001600160a01b031661104d611208565b6001600160a01b0316146110735760405162461bcd60e51b8152600401610c2e90612c3b565b61107d6000611fb6565b565b60265490565b61108d611912565b6001600160a01b031661109e611208565b6001600160a01b0316146110c45760405162461bcd60e51b8152600401610c2e90612c3b565b601d55565b600190565b601d5490565b6110dc611912565b6001600160a01b03166110ed611208565b6001600160a01b0316146111135760405162461bcd60e51b8152600401610c2e90612c3b565b602a80549115156101000261ff0019909216919091179055565b611135611912565b6001600160a01b0316611146611208565b6001600160a01b03161461116c5760405162461bcd60e51b8152600401610c2e90612c3b565b602455565b600061117b611208565b905090565b611188611912565b6001600160a01b0316611199611208565b6001600160a01b0316146111bf5760405162461bcd60e51b8152600401610c2e90612c3b565b602855565b6111cc611912565b6001600160a01b03166111dd611208565b6001600160a01b0316146112035760405162461bcd60e51b8152600401610c2e90612c3b565b602255565b6000546001600160a01b031690565b60225490565b606060028054610b6c90612df9565b611234611912565b6001600160a01b0316611245611208565b6001600160a01b03161461126b5760405162461bcd60e51b8152600401610c2e90612c3b565b601f55565b611278611912565b6001600160a01b0316611289611208565b6001600160a01b0316146112af5760405162461bcd60e51b8152600401610c2e90612c3b565b602655565b6112bc611912565b6001600160a01b03166112cd611208565b6001600160a01b0316146112f35760405162461bcd60e51b8152600401610c2e90612c3b565b6030546001600160a01b03838116911614156113215760405162461bcd60e51b8152600401610c2e90612a7f565b61132b8282612006565b5050565b601b5490565b600a5481565b6010546001600160a01b031681565b611352611912565b6001600160a01b0316611363611208565b6001600160a01b0316146113895760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6113bc611912565b6001600160a01b03166113cd611208565b6001600160a01b0316146113f35760405162461bcd60e51b8152600401610c2e90612c3b565b6006819055600954606490611409908390612dc3565b6114139190612da3565b60145550565b6012546001600160a01b031681565b6000610c50611435611912565b84846119ca565b611444611912565b6001600160a01b0316611455611208565b6001600160a01b03161461147b5760405162461bcd60e51b8152600401610c2e90612c3b565b6000601b819055602481905560198190556022819055601d8190556026819055601f819055602881905561107d906110d4565b6114b6611912565b6001600160a01b03166114c7611208565b6001600160a01b0316146114ed5760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b600e6020526000908152604090205460ff1681565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6011546001600160a01b031681565b60145490565b611562611912565b6001600160a01b0316611573611208565b6001600160a01b0316146115995760405162461bcd60e51b8152600401610c2e90612c3b565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6115c3611912565b6001600160a01b03166115d4611208565b6001600160a01b0316146115fa5760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b6001600160a01b03166000908152600c602052604090205460ff1690565b611644611912565b6001600160a01b0316611655611208565b6001600160a01b03161461167b5760405162461bcd60e51b8152600401610c2e90612c3b565b60078190556009546103e890611692908390612dc3565b61169c9190612da3565b600a5550565b60215460ff1690565b6116b3611912565b6001600160a01b03166116c4611208565b6001600160a01b0316146116ea5760405162461bcd60e51b8152600401610c2e90612c3b565b600855565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b602b5490565b60135490565b61172e611912565b6001600160a01b031661173f611208565b6001600160a01b0316146117655760405162461bcd60e51b8152600401610c2e90612c3b565b601b55565b611772611912565b6001600160a01b0316611783611208565b6001600160a01b0316146117a95760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b0381166117cf5760405162461bcd60e51b8152600401610c2e906129f7565b6117d881611fb6565b50565b6117e3611912565b6001600160a01b03166117f4611208565b6001600160a01b03161461181a5760405162461bcd60e51b8152600401610c2e90612c3b565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061184890859085906004016128cd565b602060405180830381600087803b15801561186257600080fd5b505af1158015611876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189a9190612801565b50505050565b6118a8611912565b6001600160a01b03166118b9611208565b6001600160a01b0316146118df5760405162461bcd60e51b8152600401610c2e90612c3b565b6001601b8190556019819055601d819055601f819055602481905560228190556026819055602881905561107d906110d4565b3390565b6001600160a01b03831661193c5760405162461bcd60e51b8152600401610c2e90612cec565b6001600160a01b0382166119625760405162461bcd60e51b8152600401610c2e90612a3d565b6001600160a01b038084166000818152600d602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906119bd908590612d30565b60405180910390a3505050565b6001600160a01b0383166119f05760405162461bcd60e51b8152600401610c2e90612ca7565b6001600160a01b038216611a165760405162461bcd60e51b8152600401610c2e906129b4565b60008111611a365760405162461bcd60e51b8152600401610c2e90612b6a565b6001600160a01b0383166000908152600b602052604090205481811015611a6f5760405162461bcd60e51b8152600401610c2e90612adc565b60215460ff16611ad4576001600160a01b03831660009081526017602052604090205460ff1680611ab857506001600160a01b03841660009081526017602052604090205460ff165b611ad45760405162461bcd60e51b8152600401610c2e90612bbc565b6001600160a01b03831660009081526017602052604090205460ff16158015611b1657506001600160a01b03841660009081526017602052604090205460ff16155b15611b3d57601454821115611b3d5760405162461bcd60e51b8152600401610c2e90612b22565b6000611b4830611019565b9050600a548110158015611b5f5750602a5460ff16155b8015611b7957506030546001600160a01b03868116911614155b8015611b8c5750602a54610100900460ff165b15611ba757600a548110611ba75750600a54611ba78161205a565b6001600160a01b0385166000908152600c602052604090205460019060ff1680611be957506001600160a01b0385166000908152600c602052604090205460ff165b15611bf75750600060048190555b6000806000808415611dff576001600160a01b038a1660009081526015602052604090205460ff16151560011480611c4c57506001600160a01b03891660009081526015602052604090205460ff1615156001145b15611c695760405162461bcd60e51b8152600401610c2e90612c70565b6001600160a01b0389166000908152600e602052604090205460ff168015611c9f5750602f546001600160a01b038a8116911614155b15611d36576000600455602454606490611cb9908a612dc3565b611cc39190612da3565b9350606460225489611cd59190612dc3565b611cdf9190612da3565b9150606460265489611cf19190612dc3565b611cfb9190612da3565b9250606460285489611d0d9190612dc3565b611d179190612da3565b905082611d248386612d8b565b611d2e9190612d8b565b600455611dff565b6001600160a01b038a166000908152600e602052604090205460ff168015611d6c5750602f546001600160a01b038b8116911614155b15611dff576000600455601b54606490611d86908a612dc3565b611d909190612da3565b9350606460195489611da29190612dc3565b611dac9190612da3565b91506064601d5489611dbe9190612dc3565b611dc89190612da3565b92506064601f5489611dda9190612dc3565b611de49190612da3565b905082611df18386612d8b565b611dfb9190612d8b565b6004555b611e098888612de2565b6001600160a01b038b166000908152600b6020526040902055808284611e2f878c612de2565b611e399190612de2565b611e439190612de2565b611e4d9190612de2565b6001600160a01b038a166000908152600b602052604081208054909190611e75908490612d8b565b90915550508115611f5257600454306000908152600b602052604081208054909190611ea2908490612d8b565b9250508190555081602d6000828254611ebb9190612d8b565b9250508190555082602c6000828254611ed49190612d8b565b9250508190555083602b6000828254611eed9190612d8b565b9250508190555080602e6000828254611f069190612d8b565b909155505060045460405130916001600160a01b038d16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611f4991612d30565b60405180910390a35b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548b611f959190612de2565b604051611fa29190612d30565b60405180910390a350505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b602a805460ff19166001179055602d5461207390612120565b61207e602b546121a1565b612089602c5461232a565b60115447906120a29082906001600160a01b0316612479565b6120ad602e5461232a565b60125447906120c69082906001600160a01b0316612479565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904836040516120f59190612d30565b60405180910390a150506000602b819055602c819055602d819055602e5550602a805460ff19169055565b600061212d600283612da3565b9050600061213b8284612de2565b9050476121478361232a565b60006121538247612de2565b905061215f83826125f6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161219293929190612d75565b60405180910390a15050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121e457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561223857600080fd5b505afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227091906126e7565b8160018151811061229157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602f546122b79130911684611916565b602f5460105460405163791ac94760e01b81526001600160a01b039283169263791ac947926122f492879260009288929116904290600401612d39565b600060405180830381600087803b15801561230e57600080fd5b505af1158015612322573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061236d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156123c157600080fd5b505afa1580156123d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f991906126e7565b8160018151811061241a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602f546124409130911684611916565b602f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906122f4908590600090869030904290600401612d39565b6040805160028082526060820183526000926020830190803683375050602f54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156124de57600080fd5b505afa1580156124f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251691906126e7565b8160008151811061253757634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050818160018151811061257957634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602f5460405163b6f9de9560e01b815291169063b6f9de959085906125bf9060009086903090429060040161292c565b6000604051808303818588803b1580156125d857600080fd5b505af11580156125ec573d6000803e3d6000fd5b5050505050505050565b602f5461260e9030906001600160a01b031684611916565b602f5460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061266b903090879060009081907f00000000000000000000000000000000000000000000000000000000000000009042906004016128e6565b6060604051808303818588803b15801561268457600080fd5b505af1158015612698573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126bd9190612849565b5050505050565b6000602082840312156126d5578081fd5b81356126e081612e4a565b9392505050565b6000602082840312156126f8578081fd5b81516126e081612e4a565b60008060408385031215612715578081fd5b823561272081612e4a565b9150602083013561273081612e5f565b809150509250929050565b6000806040838503121561274d578182fd5b823561275881612e4a565b9150602083013561273081612e4a565b60008060006060848603121561277c578081fd5b833561278781612e4a565b9250602084013561279781612e4a565b929592945050506040919091013590565b60008060408385031215612715578182fd5b600080604083850312156127cc578182fd5b82356127d781612e4a565b946020939093013593505050565b6000602082840312156127f6578081fd5b81356126e081612e5f565b600060208284031215612812578081fd5b81516126e081612e5f565b60008060006060848603121561277c578283fd5b600060208284031215612842578081fd5b5035919050565b60008060006060848603121561285d578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156128ae5781516001600160a01b031687529582019590820190600101612889565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000858252608060208301526129456080830186612876565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b8181101561298d57858101830151858201604001528201612971565b8181111561299e5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526039908201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060408201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526032908201527f45524332303a207472616e73666572656420616d6f756e74206d7573742062656040820152712067726561746572207468616e207a65726f60701b606082015260800190565b6020808252601d908201527f43616e742074726164652c2074726164652069732064697361626c6564000000604082015260600190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b600086825285602083015260a06040830152612d5860a0830186612876565b6001600160a01b0394909416606083015250608001529392505050565b9283526020830191909152604082015260600190565b60008219821115612d9e57612d9e612e34565b500190565b600082612dbe57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612ddd57612ddd612e34565b500290565b600082821015612df457612df4612e34565b500390565b600281046001821680612e0d57607f821691505b60208210811415612e2e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146117d857600080fd5b80151581146117d857600080fdfea26469706673582212202d558d176f67c61e1a02a6e9ad079132b72f6d39777336cfc211c3d4d2a5011164736f6c63430008000033
Deployed Bytecode
0x6080604052600436106103fe5760003560e01c8063893d20e811610213578063b4d95a9311610123578063d15bcf0f116100ab578063e1370dd31161007a578063e1370dd314610ad3578063edcf19b214610ae8578063f2fde38b14610b08578063f7da678514610b28578063f953cf3a14610b4857610405565b8063d15bcf0f14610a69578063d7d7442f14610a7e578063dd62ed3e14610a9e578063ddcf9b9814610abe57610405565b8063bf9b0159116100f2578063bf9b0159146109d4578063bf9eb540146109e9578063cb66453414610a09578063cba0e99614610a29578063d1294d4c14610a4957610405565b8063b4d95a931461095f578063b62496f51461097f578063b682428e1461099f578063b934f33b146109bf57610405565b80639a7a23d6116101a6578063a6c38f5911610175578063a6c38f59146108d5578063a7a07452146108f5578063a8c40a4214610915578063a9059cbb1461092a578063b195b8391461094a57610405565b80639a7a23d6146108765780639b136da414610896578063a04bdc81146108ab578063a5ece941146108c057610405565b806390f50283116101e257806390f502831461080c57806395d89b411461082157806397385fa9146108365780639878665f1461085657610405565b8063893d20e8146107a25780638ace0a9e146107b75780638cd0260c146107d75780638da5cb5b146107f757610405565b80634a74bb021161030e5780636f426886116102a15780637a94d54b116102705780637a94d54b146107185780637c27b824146107385780637ffb40331461074d578063801527ce146107625780638628c23f1461078257610405565b80636f426886146106b957806370a08231146106ce578063715018a6146106ee57806377bc419e1461070357610405565b806364c16163116102dd57806364c161631461065a5780636573c4df1461066f5780636ce5a8a51461068f5780636df3333a146106a457610405565b80634a74bb02146105fb5780634bd7ace5146106105780635297defd146106255780635be76f111461063a57610405565b806323b872dd11610391578063313ce56711610360578063313ce5671461057c5780633ec7d06e14610591578063487a6905146105b157806349bd5a5e146105c65780634a0e963c146105db57610405565b806323b872dd1461050557806323dbce821461052557806327c8f8351461053a5780632d03420b1461055c57610405565b806314c0eaf9116103cd57806314c0eaf9146104a457806318160ddd146104c6578063220f6696146104db57806322788f86146104f057610405565b806306fdde031461040a5780630882a86314610435578063095ea7b31461045757806313b4a7f41461048457610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f610b5d565b60405161042c9190612961565b60405180910390f35b34801561044157600080fd5b50610455610450366004612831565b610bef565b005b34801561046357600080fd5b506104776104723660046127ba565b610c3c565b60405161042c9190612921565b34801561049057600080fd5b5061045561049f36600461273b565b610c59565b3480156104b057600080fd5b506104b9610cf8565b60405161042c9190612d30565b3480156104d257600080fd5b506104b9610cfe565b3480156104e757600080fd5b50610477610d04565b3480156104fc57600080fd5b506104b9610d0d565b34801561051157600080fd5b50610477610520366004612768565b610d13565b34801561053157600080fd5b506104b9610de7565b34801561054657600080fd5b5061054f610ded565b60405161042c91906128b9565b34801561056857600080fd5b506104556105773660046127e5565b610e11565b34801561058857600080fd5b506104b9610e63565b34801561059d57600080fd5b506104556105ac3660046126c4565b610e6c565b3480156105bd57600080fd5b506104b9610e8e565b3480156105d257600080fd5b5061054f610e94565b3480156105e757600080fd5b506104556105f63660046126c4565b610ea3565b34801561060757600080fd5b50610477610f06565b34801561061c57600080fd5b506104b9610f14565b34801561063157600080fd5b506104b9610f1a565b34801561064657600080fd5b506104556106553660046126c4565b610f20565b34801561066657600080fd5b506104b9610f9c565b34801561067b57600080fd5b5061045561068a366004612831565b610fa2565b34801561069b57600080fd5b506104b9611007565b3480156106b057600080fd5b506104b961100d565b3480156106c557600080fd5b506104b9611013565b3480156106da57600080fd5b506104b96106e93660046126c4565b611019565b3480156106fa57600080fd5b50610455611034565b34801561070f57600080fd5b506104b961107f565b34801561072457600080fd5b50610455610733366004612831565b611085565b34801561074457600080fd5b506104b96110c9565b34801561075957600080fd5b506104b96110ce565b34801561076e57600080fd5b5061045561077d3660046127e5565b6110d4565b34801561078e57600080fd5b5061045561079d366004612831565b61112d565b3480156107ae57600080fd5b5061054f611171565b3480156107c357600080fd5b506104556107d2366004612831565b611180565b3480156107e357600080fd5b506104556107f2366004612831565b6111c4565b34801561080357600080fd5b5061054f611208565b34801561081857600080fd5b506104b9611217565b34801561082d57600080fd5b5061041f61121d565b34801561084257600080fd5b50610455610851366004612831565b61122c565b34801561086257600080fd5b50610455610871366004612831565b611270565b34801561088257600080fd5b506104556108913660046127a8565b6112b4565b3480156108a257600080fd5b506104b961132f565b3480156108b757600080fd5b506104b9611335565b3480156108cc57600080fd5b5061054f61133b565b3480156108e157600080fd5b506104556108f0366004612703565b61134a565b34801561090157600080fd5b50610455610910366004612831565b6113b4565b34801561092157600080fd5b5061054f611419565b34801561093657600080fd5b506104776109453660046127ba565b611428565b34801561095657600080fd5b5061045561143c565b34801561096b57600080fd5b5061045561097a3660046126c4565b6114ae565b34801561098b57600080fd5b5061047761099a3660046126c4565b61150e565b3480156109ab57600080fd5b506104556109ba3660046126c4565b611523565b3480156109cb57600080fd5b5061054f611545565b3480156109e057600080fd5b506104b9611554565b3480156109f557600080fd5b50610455610a043660046126c4565b61155a565b348015610a1557600080fd5b50610455610a243660046126c4565b6115bb565b348015610a3557600080fd5b50610477610a443660046126c4565b61161e565b348015610a5557600080fd5b50610455610a64366004612831565b61163c565b348015610a7557600080fd5b506104776116a2565b348015610a8a57600080fd5b50610455610a99366004612831565b6116ab565b348015610aaa57600080fd5b506104b9610ab936600461273b565b6116ef565b348015610aca57600080fd5b506104b961171a565b348015610adf57600080fd5b506104b9611720565b348015610af457600080fd5b50610455610b03366004612831565b611726565b348015610b1457600080fd5b50610455610b233660046126c4565b61176a565b348015610b3457600080fd5b50610455610b4336600461281d565b6117db565b348015610b5457600080fd5b506104556118a0565b606060018054610b6c90612df9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9890612df9565b8015610be55780601f10610bba57610100808354040283529160200191610be5565b820191906000526020600020905b815481529060010190602001808311610bc857829003601f168201915b5050505050905090565b610bf7611912565b6001600160a01b0316610c08611208565b6001600160a01b031614610c375760405162461bcd60e51b8152600401610c2e90612c3b565b60405180910390fd5b601955565b6000610c50610c49611912565b8484611916565b50600192915050565b610c61611912565b6001600160a01b0316610c72611208565b6001600160a01b031614610c985760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b0391821660008181526017602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601890915280822080548516861790559181522080549091169091179055565b602c5490565b60095490565b602a5460ff1681565b60085490565b6001600160a01b0383166000908152600d6020526040812081610d34611912565b6001600160a01b03166001600160a01b0316815260200190815260200160002054821115610d745760405162461bcd60e51b8152600401610c2e90612bf3565b610d7f8484846119ca565b610ddd84610d8b611912565b6001600160a01b0387166000908152600d602052604081208691610dad611912565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610dd89190612de2565b611916565b5060019392505050565b60285490565b7f000000000000000000000000000000000000000000000000000000000000dead81565b610e19611912565b6001600160a01b0316610e2a611208565b6001600160a01b031614610e505760405162461bcd60e51b8152600401610c2e90612c3b565b6021805460ff1916911515919091179055565b60035460ff1690565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b600a5490565b6030546001600160a01b031681565b610eab611912565b6001600160a01b0316610ebc611208565b6001600160a01b031614610ee25760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b602a54610100900460ff1681565b60195490565b60245490565b610f28611912565b6001600160a01b0316610f39611208565b6001600160a01b031614610f5f5760405162461bcd60e51b8152600401610c2e90612c3b565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f97573d6000803e3d6000fd5b505050565b602d5490565b610faa611912565b6001600160a01b0316610fbb611208565b6001600160a01b031614610fe15760405162461bcd60e51b8152600401610c2e90612c3b565b6005819055600954606490610ff7908390612dc3565b6110019190612da3565b60135550565b601f5490565b60075490565b602e5490565b6001600160a01b03166000908152600b602052604090205490565b61103c611912565b6001600160a01b031661104d611208565b6001600160a01b0316146110735760405162461bcd60e51b8152600401610c2e90612c3b565b61107d6000611fb6565b565b60265490565b61108d611912565b6001600160a01b031661109e611208565b6001600160a01b0316146110c45760405162461bcd60e51b8152600401610c2e90612c3b565b601d55565b600190565b601d5490565b6110dc611912565b6001600160a01b03166110ed611208565b6001600160a01b0316146111135760405162461bcd60e51b8152600401610c2e90612c3b565b602a80549115156101000261ff0019909216919091179055565b611135611912565b6001600160a01b0316611146611208565b6001600160a01b03161461116c5760405162461bcd60e51b8152600401610c2e90612c3b565b602455565b600061117b611208565b905090565b611188611912565b6001600160a01b0316611199611208565b6001600160a01b0316146111bf5760405162461bcd60e51b8152600401610c2e90612c3b565b602855565b6111cc611912565b6001600160a01b03166111dd611208565b6001600160a01b0316146112035760405162461bcd60e51b8152600401610c2e90612c3b565b602255565b6000546001600160a01b031690565b60225490565b606060028054610b6c90612df9565b611234611912565b6001600160a01b0316611245611208565b6001600160a01b03161461126b5760405162461bcd60e51b8152600401610c2e90612c3b565b601f55565b611278611912565b6001600160a01b0316611289611208565b6001600160a01b0316146112af5760405162461bcd60e51b8152600401610c2e90612c3b565b602655565b6112bc611912565b6001600160a01b03166112cd611208565b6001600160a01b0316146112f35760405162461bcd60e51b8152600401610c2e90612c3b565b6030546001600160a01b03838116911614156113215760405162461bcd60e51b8152600401610c2e90612a7f565b61132b8282612006565b5050565b601b5490565b600a5481565b6010546001600160a01b031681565b611352611912565b6001600160a01b0316611363611208565b6001600160a01b0316146113895760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6113bc611912565b6001600160a01b03166113cd611208565b6001600160a01b0316146113f35760405162461bcd60e51b8152600401610c2e90612c3b565b6006819055600954606490611409908390612dc3565b6114139190612da3565b60145550565b6012546001600160a01b031681565b6000610c50611435611912565b84846119ca565b611444611912565b6001600160a01b0316611455611208565b6001600160a01b03161461147b5760405162461bcd60e51b8152600401610c2e90612c3b565b6000601b819055602481905560198190556022819055601d8190556026819055601f819055602881905561107d906110d4565b6114b6611912565b6001600160a01b03166114c7611208565b6001600160a01b0316146114ed5760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b600e6020526000908152604090205460ff1681565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6011546001600160a01b031681565b60145490565b611562611912565b6001600160a01b0316611573611208565b6001600160a01b0316146115995760405162461bcd60e51b8152600401610c2e90612c3b565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6115c3611912565b6001600160a01b03166115d4611208565b6001600160a01b0316146115fa5760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b6001600160a01b03166000908152600c602052604090205460ff1690565b611644611912565b6001600160a01b0316611655611208565b6001600160a01b03161461167b5760405162461bcd60e51b8152600401610c2e90612c3b565b60078190556009546103e890611692908390612dc3565b61169c9190612da3565b600a5550565b60215460ff1690565b6116b3611912565b6001600160a01b03166116c4611208565b6001600160a01b0316146116ea5760405162461bcd60e51b8152600401610c2e90612c3b565b600855565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b602b5490565b60135490565b61172e611912565b6001600160a01b031661173f611208565b6001600160a01b0316146117655760405162461bcd60e51b8152600401610c2e90612c3b565b601b55565b611772611912565b6001600160a01b0316611783611208565b6001600160a01b0316146117a95760405162461bcd60e51b8152600401610c2e90612c3b565b6001600160a01b0381166117cf5760405162461bcd60e51b8152600401610c2e906129f7565b6117d881611fb6565b50565b6117e3611912565b6001600160a01b03166117f4611208565b6001600160a01b03161461181a5760405162461bcd60e51b8152600401610c2e90612c3b565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061184890859085906004016128cd565b602060405180830381600087803b15801561186257600080fd5b505af1158015611876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189a9190612801565b50505050565b6118a8611912565b6001600160a01b03166118b9611208565b6001600160a01b0316146118df5760405162461bcd60e51b8152600401610c2e90612c3b565b6001601b8190556019819055601d819055601f819055602481905560228190556026819055602881905561107d906110d4565b3390565b6001600160a01b03831661193c5760405162461bcd60e51b8152600401610c2e90612cec565b6001600160a01b0382166119625760405162461bcd60e51b8152600401610c2e90612a3d565b6001600160a01b038084166000818152600d602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906119bd908590612d30565b60405180910390a3505050565b6001600160a01b0383166119f05760405162461bcd60e51b8152600401610c2e90612ca7565b6001600160a01b038216611a165760405162461bcd60e51b8152600401610c2e906129b4565b60008111611a365760405162461bcd60e51b8152600401610c2e90612b6a565b6001600160a01b0383166000908152600b602052604090205481811015611a6f5760405162461bcd60e51b8152600401610c2e90612adc565b60215460ff16611ad4576001600160a01b03831660009081526017602052604090205460ff1680611ab857506001600160a01b03841660009081526017602052604090205460ff165b611ad45760405162461bcd60e51b8152600401610c2e90612bbc565b6001600160a01b03831660009081526017602052604090205460ff16158015611b1657506001600160a01b03841660009081526017602052604090205460ff16155b15611b3d57601454821115611b3d5760405162461bcd60e51b8152600401610c2e90612b22565b6000611b4830611019565b9050600a548110158015611b5f5750602a5460ff16155b8015611b7957506030546001600160a01b03868116911614155b8015611b8c5750602a54610100900460ff165b15611ba757600a548110611ba75750600a54611ba78161205a565b6001600160a01b0385166000908152600c602052604090205460019060ff1680611be957506001600160a01b0385166000908152600c602052604090205460ff165b15611bf75750600060048190555b6000806000808415611dff576001600160a01b038a1660009081526015602052604090205460ff16151560011480611c4c57506001600160a01b03891660009081526015602052604090205460ff1615156001145b15611c695760405162461bcd60e51b8152600401610c2e90612c70565b6001600160a01b0389166000908152600e602052604090205460ff168015611c9f5750602f546001600160a01b038a8116911614155b15611d36576000600455602454606490611cb9908a612dc3565b611cc39190612da3565b9350606460225489611cd59190612dc3565b611cdf9190612da3565b9150606460265489611cf19190612dc3565b611cfb9190612da3565b9250606460285489611d0d9190612dc3565b611d179190612da3565b905082611d248386612d8b565b611d2e9190612d8b565b600455611dff565b6001600160a01b038a166000908152600e602052604090205460ff168015611d6c5750602f546001600160a01b038b8116911614155b15611dff576000600455601b54606490611d86908a612dc3565b611d909190612da3565b9350606460195489611da29190612dc3565b611dac9190612da3565b91506064601d5489611dbe9190612dc3565b611dc89190612da3565b92506064601f5489611dda9190612dc3565b611de49190612da3565b905082611df18386612d8b565b611dfb9190612d8b565b6004555b611e098888612de2565b6001600160a01b038b166000908152600b6020526040902055808284611e2f878c612de2565b611e399190612de2565b611e439190612de2565b611e4d9190612de2565b6001600160a01b038a166000908152600b602052604081208054909190611e75908490612d8b565b90915550508115611f5257600454306000908152600b602052604081208054909190611ea2908490612d8b565b9250508190555081602d6000828254611ebb9190612d8b565b9250508190555082602c6000828254611ed49190612d8b565b9250508190555083602b6000828254611eed9190612d8b565b9250508190555080602e6000828254611f069190612d8b565b909155505060045460405130916001600160a01b038d16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611f4991612d30565b60405180910390a35b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548b611f959190612de2565b604051611fa29190612d30565b60405180910390a350505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b602a805460ff19166001179055602d5461207390612120565b61207e602b546121a1565b612089602c5461232a565b60115447906120a29082906001600160a01b0316612479565b6120ad602e5461232a565b60125447906120c69082906001600160a01b0316612479565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904836040516120f59190612d30565b60405180910390a150506000602b819055602c819055602d819055602e5550602a805460ff19169055565b600061212d600283612da3565b9050600061213b8284612de2565b9050476121478361232a565b60006121538247612de2565b905061215f83826125f6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161219293929190612d75565b60405180910390a15050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121e457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561223857600080fd5b505afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227091906126e7565b8160018151811061229157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602f546122b79130911684611916565b602f5460105460405163791ac94760e01b81526001600160a01b039283169263791ac947926122f492879260009288929116904290600401612d39565b600060405180830381600087803b15801561230e57600080fd5b505af1158015612322573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061236d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156123c157600080fd5b505afa1580156123d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f991906126e7565b8160018151811061241a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602f546124409130911684611916565b602f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906122f4908590600090869030904290600401612d39565b6040805160028082526060820183526000926020830190803683375050602f54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156124de57600080fd5b505afa1580156124f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251691906126e7565b8160008151811061253757634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050818160018151811061257957634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602f5460405163b6f9de9560e01b815291169063b6f9de959085906125bf9060009086903090429060040161292c565b6000604051808303818588803b1580156125d857600080fd5b505af11580156125ec573d6000803e3d6000fd5b5050505050505050565b602f5461260e9030906001600160a01b031684611916565b602f5460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061266b903090879060009081907f000000000000000000000000000000000000000000000000000000000000dead9042906004016128e6565b6060604051808303818588803b15801561268457600080fd5b505af1158015612698573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126bd9190612849565b5050505050565b6000602082840312156126d5578081fd5b81356126e081612e4a565b9392505050565b6000602082840312156126f8578081fd5b81516126e081612e4a565b60008060408385031215612715578081fd5b823561272081612e4a565b9150602083013561273081612e5f565b809150509250929050565b6000806040838503121561274d578182fd5b823561275881612e4a565b9150602083013561273081612e4a565b60008060006060848603121561277c578081fd5b833561278781612e4a565b9250602084013561279781612e4a565b929592945050506040919091013590565b60008060408385031215612715578182fd5b600080604083850312156127cc578182fd5b82356127d781612e4a565b946020939093013593505050565b6000602082840312156127f6578081fd5b81356126e081612e5f565b600060208284031215612812578081fd5b81516126e081612e5f565b60008060006060848603121561277c578283fd5b600060208284031215612842578081fd5b5035919050565b60008060006060848603121561285d578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156128ae5781516001600160a01b031687529582019590820190600101612889565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000858252608060208301526129456080830186612876565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b8181101561298d57858101830151858201604001528201612971565b8181111561299e5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526039908201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060408201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526032908201527f45524332303a207472616e73666572656420616d6f756e74206d7573742062656040820152712067726561746572207468616e207a65726f60701b606082015260800190565b6020808252601d908201527f43616e742074726164652c2074726164652069732064697361626c6564000000604082015260600190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b600086825285602083015260a06040830152612d5860a0830186612876565b6001600160a01b0394909416606083015250608001529392505050565b9283526020830191909152604082015260600190565b60008219821115612d9e57612d9e612e34565b500190565b600082612dbe57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612ddd57612ddd612e34565b500290565b600082821015612df457612df4612e34565b500390565b600281046001821680612e0d57607f821691505b60208210811415612e2e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146117d857600080fd5b80151581146117d857600080fdfea26469706673582212202d558d176f67c61e1a02a6e9ad079132b72f6d39777336cfc211c3d4d2a5011164736f6c63430008000033
Deployed Bytecode Sourcemap
13396:18921:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18722:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30591:111;;;;;;;;;;-1:-1:-1;30591:111:0;;;;;:::i;:::-;;:::i;:::-;;18456:168;;;;;;;;;;-1:-1:-1;18456:168:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;28750:302::-;;;;;;;;;;-1:-1:-1;28750:302:0;;;;;:::i;:::-;;:::i;17547:98::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17866:106::-;;;;;;;;;;;;;:::i;15547:28::-;;;;;;;;;;;;;:::i;20614:101::-;;;;;;;;;;;;;:::i;19262:388::-;;;;;;;;;;-1:-1:-1;19262:388:0;;;;;:::i;:::-;;:::i;20512:96::-;;;;;;;;;;;;;:::i;15629:81::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26948:90::-;;;;;;;;;;-1:-1:-1;26948:90:0;;;;;:::i;:::-;;:::i;18632:84::-;;;;;;;;;;;;;:::i;25914:78::-;;;;;;;;;;-1:-1:-1;25914:78:0;;;;;:::i;:::-;;:::i;32120:105::-;;;;;;;;;;;;;:::i;16207:28::-;;;;;;;;;;;;;:::i;28504:114::-;;;;;;;;;;-1:-1:-1;28504:114:0;;;;;:::i;:::-;;:::i;15582:40::-;;;;;;;;;;;;;:::i;19794:96::-;;;;;;;;;;;;;:::i;20305:98::-;;;;;;;;;;;;;:::i;26762:178::-;;;;;;;;;;-1:-1:-1;26762:178:0;;;;;:::i;:::-;;:::i;17758:99::-;;;;;;;;;;;;;:::i;19073:175::-;;;;;;;;;;-1:-1:-1;19073:175:0;;;;;:::i;:::-;;:::i;20098:93::-;;;;;;;;;;;;;:::i;32017:97::-;;;;;;;;;;;;;:::i;17653:98::-;;;;;;;;;;;;;:::i;17983:118::-;;;;;;;;;;-1:-1:-1;17983:118:0;;;;;:::i;:::-;;:::i;12761:94::-;;;;;;;;;;;;;:::i;20409:96::-;;;;;;;;;;;;;:::i;30825:108::-;;;;;;;;;;-1:-1:-1;30825:108:0;;;;;:::i;:::-;;:::i;32231:83::-;;;;;;;;;;;;;:::i;19998:93::-;;;;;;;;;;;;;:::i;29743:113::-;;;;;;;;;;-1:-1:-1;29743:113:0;;;;;:::i;:::-;;:::i;31177:112::-;;;;;;;;;;-1:-1:-1;31177:112:0;;;;;:::i;:::-;;:::i;17349:86::-;;;;;;;;;;;;;:::i;31419:111::-;;;;;;;;;;-1:-1:-1;31419:111:0;;;;;:::i;:::-;;:::i;31058:113::-;;;;;;;;;;-1:-1:-1;31058:113:0;;;;;:::i;:::-;;:::i;12110:87::-;;;;;;;;;;;;;:::i;20201:98::-;;;;;;;;;;;;;:::i;18804:88::-;;;;;;;;;;;;;:::i;30940:108::-;;;;;;;;;;-1:-1:-1;30940:108:0;;;;;:::i;:::-;;:::i;31301:111::-;;;;;;;;;;-1:-1:-1;31301:111:0;;;;;:::i;:::-;;:::i;30147:242::-;;;;;;;;;;-1:-1:-1;30147:242:0;;;;;:::i;:::-;;:::i;19896:96::-;;;;;;;;;;;;;:::i;13947:71::-;;;;;;;;;;;;;:::i;14298:93::-;;;;;;;;;;;;;:::i;19658:130::-;;;;;;;;;;-1:-1:-1;19658:130:0;;;;;:::i;:::-;;:::i;18902:164::-;;;;;;;;;;-1:-1:-1;18902:164:0;;;;;:::i;:::-;;:::i;14471:65::-;;;;;;;;;;;;;:::i;18112:176::-;;;;;;;;;;-1:-1:-1;18112:176:0;;;;;:::i;:::-;;:::i;29060:279::-;;;;;;;;;;;;;:::i;28626:116::-;;;;;;;;;;-1:-1:-1;28626:116:0;;;;;:::i;:::-;;:::i;14212:58::-;;;;;;;;;;-1:-1:-1;14212:58:0;;;;;:::i;:::-;;:::i;25829:78::-;;;;;;;;;;-1:-1:-1;25829:78:0;;;;;:::i;:::-;;:::i;14398:66::-;;;;;;;;;;;;;:::i;31639:89::-;;;;;;;;;;;;;:::i;29894:118::-;;;;;;;;;;-1:-1:-1;29894:118:0;;;;;:::i;:::-;;:::i;24890:123::-;;;;;;;;;;-1:-1:-1;24890:123:0;;;;;:::i;:::-;;:::i;20721:118::-;;;;;;;;;;-1:-1:-1;20721:118:0;;;;;:::i;:::-;;:::i;31734:174::-;;;;;;;;;;-1:-1:-1;31734:174:0;;;;;:::i;:::-;;:::i;31914:97::-;;;;;;;;;;;;;:::i;29623:112::-;;;;;;;;;;-1:-1:-1;29623:112:0;;;;;:::i;:::-;;:::i;18299:148::-;;;;;;;;;;-1:-1:-1;18299:148:0;;;;;:::i;:::-;;:::i;17441:99::-;;;;;;;;;;;;;:::i;31536:97::-;;;;;;;;;;;;;:::i;30708:111::-;;;;;;;;;;-1:-1:-1;30708:111:0;;;;;:::i;:::-;;:::i;13010:192::-;;;;;;;;;;-1:-1:-1;13010:192:0;;;;;:::i;:::-;;:::i;26511:243::-;;;;;;;;;;-1:-1:-1;26511:243:0;;;;;:::i;:::-;;:::i;29345:270::-;;;;;;;;;;;;;:::i;18722:76::-;18761:13;18788:5;18781:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18722:76;:::o;30591:111::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;;;;;;;;;30673:9:::1;:21:::0;30591:111::o;18456:168::-;18533:4;18553:37;18562:12;:10;:12::i;:::-;18575:7;18583:6;18553:8;:37::i;:::-;-1:-1:-1;18612:4:0;18456:168;;;;:::o;28750:302::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28856:34:0;;::::1;;::::0;;;:17:::1;:34;::::0;;;;;;;:41;;28893:4:::1;-1:-1:-1::0;;28856:41:0;;::::1;::::0;::::1;::::0;;;28908:26;;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;28952;;;:16:::1;:33:::0;;;;;;:40;;;::::1;::::0;::::1;::::0;;29003:25;;;;:32;;;;::::1;::::0;;::::1;::::0;;28750:302::o;17547:98::-;17627:9;;17547:98;:::o;17866:106::-;17951:12;;17866:106;:::o;15547:28::-;;;;;;:::o;20614:101::-;20691:16;;20614:101;:::o;19262:388::-;-1:-1:-1;;;;;19428:19:0;;19394:4;19428:19;;;:11;:19;;;;;19394:4;19448:12;:10;:12::i;:::-;-1:-1:-1;;;;;19428:33:0;-1:-1:-1;;;;;19428:33:0;;;;;;;;;;;;;19418:6;:43;;19410:96;;;;-1:-1:-1;;;19410:96:0;;;;;;;:::i;:::-;19511:36;19521:6;19529:9;19540:6;19511:9;:36::i;:::-;19552:74;19561:6;19569:12;:10;:12::i;:::-;-1:-1:-1;;;;;19583:19:0;;;;;;:11;:19;;;;;19619:6;;19603:12;:10;:12::i;:::-;-1:-1:-1;;;;;19583:33:0;-1:-1:-1;;;;;19583:33:0;;;;;;;;;;;;;:42;;;;:::i;:::-;19552:8;:74::i;:::-;-1:-1:-1;19638:4:0;19262:388;;;;;:::o;20512:96::-;20593:7;;20512:96;:::o;15629:81::-;;;:::o;26948:90::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;27009:12:::1;:21:::0;;-1:-1:-1;;27009:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26948:90::o;18632:84::-;18699:9;;;;18632:84;:::o;25914:78::-;25970:3;:14;;-1:-1:-1;;;;;;25970:14:0;-1:-1:-1;;;;;25970:14:0;;;;;;;;;;25914:78::o;32120:105::-;32197:20;;32120:105;:::o;16207:28::-;;;-1:-1:-1;;;;;16207:28:0;;:::o;28504:114::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28575:28:0::1;;::::0;;;:17:::1;:28;::::0;;;;:35;;-1:-1:-1;;28575:35:0::1;28606:4;28575:35;::::0;;28504:114::o;15582:40::-;;;;;;;;;:::o;19794:96::-;19873:9;;19794:96;:::o;20305:98::-;20385:10;;20305:98;:::o;26762:178::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;26891:41:::1;::::0;26859:21:::1;::::0;-1:-1:-1;;;;;26891:29:0;::::1;::::0;:41;::::1;;;::::0;26859:21;;26838:18:::1;26891:41:::0;26838:18;26891:41;26859:21;26891:29;:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12401:1;26762:178:::0;:::o;17758:99::-;17839:9;;17758:99;:::o;19073:175::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;19149:17:::1;:26:::0;;;19204:12:::1;::::0;19235:3:::1;::::0;19204:30:::1;::::0;19169:6;;19204:30:::1;:::i;:::-;:34;;;;:::i;:::-;19186:15;:52:::0;-1:-1:-1;19073:175:0:o;20098:93::-;20177:6;;20098:93;:::o;32017:97::-;32094:12;;32017:97;:::o;17653:98::-;17733:9;;17653:98;:::o;17983:118::-;-1:-1:-1;;;;;18075:18:0;18049:7;18075:18;;;:9;:18;;;;;;;17983:118::o;12761:94::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;12826:21:::1;12844:1;12826:9;:21::i;:::-;12761:94::o:0;20409:96::-;20490:7;;20409:96;:::o;30825:108::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;30908:6:::1;:17:::0;30825:108::o;32231:83::-;32305:1;32231:83;:::o;19998:93::-;20077:6;;19998:93;:::o;29743:113::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;29816:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;29816:32:0;;::::1;::::0;;;::::1;::::0;;29743:113::o;31177:112::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;31260:10:::1;:21:::0;31177:112::o;17349:86::-;17390:7;17420;:5;:7::i;:::-;17413:14;;17349:86;:::o;31419:111::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;31504:7:::1;:18:::0;31419:111::o;31058:113::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;31142:10:::1;:21:::0;31058:113::o;12110:87::-;12156:7;12183:6;-1:-1:-1;;;;;12183:6:0;12110:87;:::o;20201:98::-;20281:10;;20201:98;:::o;18804:88::-;18845:13;18877:7;18870:14;;;;;:::i;30940:108::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;31023:6:::1;:17:::0;30940:108::o;31301:111::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;31386:7:::1;:18:::0;31301:111::o;30147:242::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;30254:13:::1;::::0;-1:-1:-1;;;;;30246:21:0;;::::1;30254:13:::0;::::1;30246:21;;30238:91;;;;-1:-1:-1::0;;;30238:91:0::1;;;;;;;:::i;:::-;30340:41;30369:4;30375:5;30340:28;:41::i;:::-;30147:242:::0;;:::o;19896:96::-;19975:9;;19896:96;:::o;13947:71::-;;;;:::o;14298:93::-;;;-1:-1:-1;;;;;14298:93:0;;:::o;19658:130::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19749:23:0;;;::::1;;::::0;;;:10:::1;:23;::::0;;;;:31;;-1:-1:-1;;19749:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19658:130::o;18902:164::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;18974:13:::1;:22:::0;;;19021:12:::1;::::0;19048:3:::1;::::0;19021:26:::1;::::0;18990:6;;19021:26:::1;:::i;:::-;:30;;;;:::i;:::-;19007:11;:44:::0;-1:-1:-1;18902:164:0:o;14471:65::-;;;-1:-1:-1;;;;;14471:65:0;;:::o;18112:176::-;18192:4;18212:40;18222:12;:10;:12::i;:::-;18235:9;18245:6;18212:9;:40::i;29060:279::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;29138:1:::1;29126:9;:13:::0;;;29150:10:::1;:13:::0;;;29174:9:::1;:12:::0;;;29197:10:::1;:13:::0;;;29221:6:::1;:9:::0;;;29241:7:::1;:11:::0;;;29263:6:::1;:9:::0;;;29283:7:::1;:11:::0;;;29305:24:::1;::::0;:17:::1;:24::i;28626:116::-:0;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28699:27:0::1;28729:5;28699:27:::0;;;:17:::1;:27;::::0;;;;:35;;-1:-1:-1;;28699:35:0::1;::::0;;28626:116::o;14212:58::-;;;;;;;;;;;;;;;:::o;25829:78::-;25885:3;:14;;-1:-1:-1;;;;;;25885:14:0;-1:-1:-1;;;;;25885:14:0;;;;;;;;;;25829:78::o;14398:66::-;;;-1:-1:-1;;;;;14398:66:0;;:::o;31639:89::-;31709:11;;31639:89;:::o;29894:118::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;29966:16:::1;:38:::0;;-1:-1:-1;;;;;;29966:38:0::1;-1:-1:-1::0;;;;;29966:38:0;;;::::1;::::0;;;::::1;::::0;;29894:118::o;24890:123::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24962:29:0::1;;::::0;;;:17:::1;:29;::::0;;;;:36;;-1:-1:-1;;24962:36:0::1;24994:4;24962:36;::::0;;24890:123::o;20721:118::-;-1:-1:-1;;;;;20805:26:0;20778:4;20805:26;;;:17;:26;;;;;;;;;20721:118::o;31734:174::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;31805:12:::1;:21:::0;;;31860:12:::1;::::0;31886:4:::1;::::0;31860:25:::1;::::0;31820:6;;31860:25:::1;:::i;:::-;:30;;;;:::i;:::-;31837:20;:53:::0;-1:-1:-1;31734:174:0:o;31914:97::-;31988:12;;;;31914:97;:::o;29623:112::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;29694:16:::1;:31:::0;29623:112::o;18299:148::-;-1:-1:-1;;;;;18412:18:0;;;18382:7;18412:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18299:148::o;17441:99::-;17522:9;;17441:99;:::o;31536:97::-;31610:15;;31536:97;:::o;30708:111::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;30791:9:::1;:20:::0;30708:111::o;13010:192::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13099:22:0;::::1;13091:73;;;;-1:-1:-1::0;;;13091:73:0::1;;;;;;;:::i;:::-;13175:19;13185:8;13175:9;:19::i;:::-;13010:192:::0;:::o;26511:243::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;26704:42:::1;::::0;-1:-1:-1;;;26704:42:0;;-1:-1:-1;;;;;26704:21:0;::::1;::::0;::::1;::::0;:42:::1;::::0;26726:11;;26739:6;;26704:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26511:243:::0;;;:::o;29345:270::-;12341:12;:10;:12::i;:::-;-1:-1:-1;;;;;12330:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;12330:23:0;;12322:68;;;;-1:-1:-1;;;12322:68:0;;;;;;;:::i;:::-;29412:1:::1;29400:9;:13:::0;;;29424:9:::1;:13:::0;;;29448:6:::1;:10:::0;;;29469:6:::1;:9:::0;;;29491:10:::1;:14:::0;;;29516:10:::1;:14:::0;;;29541:7:::1;:11:::0;;;29563:7:::1;:10:::0;;;29584:23:::1;::::0;:17:::1;:23::i;8070:98::-:0;8150:10;8070:98;:::o;28136:322::-;-1:-1:-1;;;;;28228:19:0;;28220:68;;;;-1:-1:-1;;;28220:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28301:21:0;;28293:68;;;;-1:-1:-1;;;28293:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28368:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;28414:32;;;;;28398:6;;28414:32;:::i;:::-;;;;;;;;28136:322;;;:::o;20847:3446::-;-1:-1:-1;;;;;20945:18:0;;20937:68;;;;-1:-1:-1;;;20937:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21018:16:0;;21010:64;;;;-1:-1:-1;;;21010:64:0;;;;;;;:::i;:::-;21102:1;21093:6;:10;21085:72;;;;-1:-1:-1;;;21085:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21192:15:0;;21168:21;21192:15;;;:9;:15;;;;;;21226:23;;;;21218:74;;;;-1:-1:-1;;;21218:74:0;;;;;;;:::i;:::-;21306:12;;;;21303:141;;-1:-1:-1;;;;;21351:21:0;;;;;;:17;:21;;;;;;;;;:48;;-1:-1:-1;;;;;;21376:23:0;;;;;;:17;:23;;;;;;;;21351:48;21343:89;;;;-1:-1:-1;;;21343:89:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21457:21:0;;;;;;:17;:21;;;;;;;;:28;;;:62;;-1:-1:-1;;;;;;21489:23:0;;;;;;:17;:23;;;;;;;;:30;21457:62;21454:163;;;21549:11;;21539:6;:21;;21531:74;;;;-1:-1:-1;;;21531:74:0;;;;;;;:::i;:::-;21627:25;21655:24;21673:4;21655:9;:24::i;:::-;21627:52;;21713:20;;21693:17;:40;;:66;;;;-1:-1:-1;21743:16:0;;;;21742:17;21693:66;:96;;;;-1:-1:-1;21776:13:0;;-1:-1:-1;;;;;21768:21:0;;;21776:13;;21768:21;;21693:96;:126;;;;-1:-1:-1;21798:21:0;;;;;;;21693:126;21690:352;;;21863:20;;21842:17;:41;21839:188;;-1:-1:-1;21928:20:0;;21971:36;21928:20;21971:17;:36::i;:::-;-1:-1:-1;;;;;22124:23:0;;22058:13;22124:23;;;:17;:23;;;;;;22074:4;;22124:23;;;:48;;-1:-1:-1;;;;;;22151:21:0;;;;;;:17;:21;;;;;;;;22124:48;22121:159;;;-1:-1:-1;22209:1:0;22193:13;:17;;;22121:159;22294:17;22330;22397;22470;22509:8;22506:1219;;;-1:-1:-1;;;;;22586:16:0;;;;;;:10;:16;;;;;;;;:24;;:16;:24;;:46;;-1:-1:-1;;;;;;22612:14:0;;;;;;:10;:14;;;;;;;;:20;;:14;:20;22586:46;22583:127;;;22656:34;;-1:-1:-1;;;22656:34:0;;;;;;;:::i;22583:127::-;-1:-1:-1;;;;;22764:29:0;;;;;;:25;:29;;;;;;;;:55;;;;-1:-1:-1;22811:7:0;;-1:-1:-1;;;;;22797:22:0;;;22811:7;;22797:22;;22764:55;22760:930;;;22864:1;22848:13;:17;22913:10;;22924:3;;22904:19;;:6;:19;:::i;:::-;:23;;;;:::i;:::-;22892:35;;22986:3;22975:10;;22966:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;22954:35;;23045:3;23037:7;;23028:6;:16;;;;:::i;:::-;:20;;;;:::i;:::-;23016:32;;23104:3;23096:7;;23087:6;:16;;;;:::i;:::-;:20;;;;:::i;:::-;23075:32;-1:-1:-1;23174:9:0;23150:21;23162:9;23150;:21;:::i;:::-;:33;;;;:::i;:::-;23134:13;:49;22760:930;;;-1:-1:-1;;;;;23257:31:0;;;;;;:25;:31;;;;;;;;:59;;;;-1:-1:-1;23308:7:0;;-1:-1:-1;;;;;23292:24:0;;;23308:7;;23292:24;;23257:59;23254:436;;;23375:1;23359:13;:17;23420:9;;23430:3;;23411:18;;:6;:18;:::i;:::-;:22;;;;:::i;:::-;23399:34;;23487:3;23477:9;;23468:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;23456:34;;23541:3;23534:6;;23525;:15;;;;:::i;:::-;:19;;;;:::i;:::-;23513:31;;23595:3;23588:6;;23579;:15;;;;:::i;:::-;:19;;;;:::i;:::-;23567:31;-1:-1:-1;23661:9:0;23637:21;23649:9;23637;:21;:::i;:::-;:33;;;;:::i;:::-;23621:13;:49;23254:436;23759:22;23775:6;23759:13;:22;:::i;:::-;-1:-1:-1;;;;;23741:15:0;;;;;;:9;:15;;;;;:40;23856:9;23846;23834;23813:18;23822:9;23813:6;:18;:::i;:::-;:30;;;;:::i;:::-;:42;;;;:::i;:::-;:52;;;;:::i;:::-;-1:-1:-1;;;;;23796:13:0;;;;;;:9;:13;;;;;:69;;:13;;;:69;;;;;:::i;:::-;;;;-1:-1:-1;;23883:14:0;;23880:323;;23933:13;;23923:4;23905:24;;;;:9;:24;;;;;:41;;:24;;;:41;;23933:13;;23905:41;:::i;:::-;;;;;;;;24004:9;23991;;:22;;;;;;;:::i;:::-;;;;;;;;24041:9;24028;;:22;;;;;;;:::i;:::-;;;;;;;;24078:9;24065;;:22;;;;;;;:::i;:::-;;;;;;;;24115:9;24102;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;24165:13:0;;24135:44;;24158:4;;-1:-1:-1;;;;;24135:44:0;;;;;;;;:::i;:::-;;;;;;;;23880:323;24237:2;-1:-1:-1;;;;;24222:39:0;24231:4;-1:-1:-1;;;;;24222:39:0;;24247:13;;24240:6;:20;;;;:::i;:::-;24222:39;;;;;;:::i;:::-;;;;;;;;20847:3446;;;;;;;;;;:::o;13210:173::-;13266:16;13285:6;;-1:-1:-1;;;;;13302:17:0;;;-1:-1:-1;;;;;;13302:17:0;;;;;;13335:40;;13285:6;;;;;;;13335:40;;13266:16;13335:40;13210:173;;:::o;30395:188::-;-1:-1:-1;;;;;30478:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;30478:39:0;;;;;;;;;;30535:40;;30478:39;;:31;30535:40;;;30395:188;;:::o;24299:584::-;16295:16;:23;;-1:-1:-1;;16295:23:0;16314:4;16295:23;;;24394:9:::1;::::0;24379:25:::1;::::0;:14:::1;:25::i;:::-;24415:30;24435:9;;24415:19;:30::i;:::-;24456:21;24467:9;;24456:10;:21::i;:::-;24571:3;::::0;24513:21:::1;::::0;24545:30:::1;::::0;24513:21;;-1:-1:-1;;;;;24571:3:0::1;24545:10;:30::i;:::-;24586:21;24597:9;;24586:10;:21::i;:::-;24711:3;::::0;24648:21:::1;::::0;24680:35:::1;::::0;24648:21;;-1:-1:-1;;;;;24711:3:0::1;24680:10;:35::i;:::-;24735:44;24765:13;24735:44;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;24802:1:0::1;24790:9;:13:::0;;;24814:9:::1;:13:::0;;;24838:9:::1;:13:::0;;;24862:9:::1;:13:::0;-1:-1:-1;16329:16:0;:24;;-1:-1:-1;;16329:24:0;;;24299:584::o;27046:388::-;27108:12;27123:19;27141:1;27123:15;:19;:::i;:::-;27108:34;-1:-1:-1;27147:17:0;27167:22;27108:34;27167:15;:22;:::i;:::-;27147:42;-1:-1:-1;27219:21:0;27247:22;27264:4;27247:16;:22::i;:::-;27274:18;27295:40;27320:14;27295:21;:40;:::i;:::-;27274:61;;27343:35;27356:9;27367:10;27343:12;:35::i;:::-;27388:41;27403:4;27408:10;27419:9;27388:41;;;;;;;;:::i;:::-;;;;;;;;27046:388;;;;;:::o;25019:399::-;25106:16;;;25120:1;25106:16;;;;;;;;25082:21;;25106:16;;;;;;;;;;-1:-1:-1;25106:16:0;25082:40;;25145:4;25127;25132:1;25127:7;;;;;;-1:-1:-1;;;25127:7:0;;;;;;;;;-1:-1:-1;;;;;25127:23:0;;;:7;;;;;;;;;;:23;;;;25165:7;;:14;;;-1:-1:-1;;;25165:14:0;;;;:7;;;;;:12;;:14;;;;;25127:7;;25165:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25155:4;25160:1;25155:7;;;;;;-1:-1:-1;;;25155:7:0;;;;;;;;;-1:-1:-1;;;;;25155:24:0;;;:7;;;;;;;;;:24;25216:7;;25184:49;;25201:4;;25216:7;25226:6;25184:8;:49::i;:::-;25244:7;;25366:16;;25244:164;;-1:-1:-1;;;25244:164:0;;-1:-1:-1;;;;;25244:7:0;;;;:58;;:164;;25308:6;;25244:7;;25356:4;;25366:16;;;25388:15;;25244:164;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25019:399;;:::o;25426:397::-;25504:16;;;25518:1;25504:16;;;;;;;;25480:21;;25504:16;;;;;;;;;;-1:-1:-1;25504:16:0;25480:40;;25543:4;25525;25530:1;25525:7;;;;;;-1:-1:-1;;;25525:7:0;;;;;;;;;-1:-1:-1;;;;;25525:23:0;;;:7;;;;;;;;;;:23;;;;25563:7;;:14;;;-1:-1:-1;;;25563:14:0;;;;:7;;;;;:12;;:14;;;;;25525:7;;25563:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25553:4;25558:1;25553:7;;;;;;-1:-1:-1;;;25553:7:0;;;;;;;;;-1:-1:-1;;;;;25553:24:0;;;:7;;;;;;;;;:24;25614:7;;25582:49;;25599:4;;25614:7;25624:6;25582:8;:49::i;:::-;25642:7;;:161;;-1:-1:-1;;;25642:161:0;;-1:-1:-1;;;;;25642:7:0;;;;:58;;:161;;25706:6;;25642:7;;25754:4;;25772;;25783:15;;25642:161;;;:::i;25998:505::-;26160:16;;;26174:1;26160:16;;;;;;;;26136:21;;26160:16;;;;;;;;-1:-1:-1;;26197:7:0;;:14;;;-1:-1:-1;;;26197:14:0;;;;26136:40;;-1:-1:-1;;;;;;26197:7:0;;;;:12;;-1:-1:-1;26197:14:0;;;;;;;;;;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26187:4;26192:1;26187:7;;;;;;-1:-1:-1;;;26187:7:0;;;;;;;;;;;;;;:24;-1:-1:-1;;;;;26187:24:0;;;-1:-1:-1;;;;;26187:24:0;;;;;26232:11;26222:4;26227:1;26222:7;;;;;;-1:-1:-1;;;26222:7:0;;;;;;;;;-1:-1:-1;;;;;26222:21:0;;;:7;;;;;;;;;:21;26282:7;;:213;;-1:-1:-1;;;26282:213:0;;:7;;;:58;;26348:9;;26282:213;;:7;;26422:4;;26449;;26469:15;;26282:213;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25998:505;;;:::o;27851:277::-;27956:7;;27924:54;;27941:4;;-1:-1:-1;;;;;27956:7:0;27966:11;27924:8;:54::i;:::-;27985:7;;:138;;-1:-1:-1;;;27985:138:0;;-1:-1:-1;;;;;27985:7:0;;;;:23;;28015:9;;27985:138;;28039:4;;28050:11;;27985:7;;;;28081:11;;28103:15;;27985:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27851:277;;:::o;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;:::-;262:5;84:189;-1:-1:-1;;;84:189:1:o;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;818:404::-;;;952:2;940:9;931:7;927:23;923:32;920:2;;;973:6;965;958:22;920:2;1017:9;1004:23;1036:33;1063:5;1036:33;:::i;:::-;1088:5;-1:-1:-1;1145:2:1;1130:18;;1117:32;1158;1117;1158;:::i;:::-;1209:7;1199:17;;;910:312;;;;;:::o;1227:402::-;;;1356:2;1344:9;1335:7;1331:23;1327:32;1324:2;;;1377:6;1369;1362:22;1324:2;1421:9;1408:23;1440:33;1467:5;1440:33;:::i;:::-;1492:5;-1:-1:-1;1549:2:1;1534:18;;1521:32;1562:35;1521:32;1562:35;:::i;1634:470::-;;;;1780:2;1768:9;1759:7;1755:23;1751:32;1748:2;;;1801:6;1793;1786:22;1748:2;1845:9;1832:23;1864:33;1891:5;1864:33;:::i;:::-;1916:5;-1:-1:-1;1973:2:1;1958:18;;1945:32;1986:35;1945:32;1986:35;:::i;:::-;1738:366;;2040:7;;-1:-1:-1;;;2094:2:1;2079:18;;;;2066:32;;1738:366::o;2109:396::-;;;2235:2;2223:9;2214:7;2210:23;2206:32;2203:2;;;2256:6;2248;2241:22;2510:327;;;2639:2;2627:9;2618:7;2614:23;2610:32;2607:2;;;2660:6;2652;2645:22;2607:2;2704:9;2691:23;2723:33;2750:5;2723:33;:::i;:::-;2775:5;2827:2;2812:18;;;;2799:32;;-1:-1:-1;;;2597:240:1:o;2842:253::-;;2951:2;2939:9;2930:7;2926:23;2922:32;2919:2;;;2972:6;2964;2957:22;2919:2;3016:9;3003:23;3035:30;3059:5;3035:30;:::i;3100:257::-;;3220:2;3208:9;3199:7;3195:23;3191:32;3188:2;;;3241:6;3233;3226:22;3188:2;3278:9;3272:16;3297:30;3321:5;3297:30;:::i;3362:491::-;;;;3529:2;3517:9;3508:7;3504:23;3500:32;3497:2;;;3550:6;3542;3535:22;3858:190;;3970:2;3958:9;3949:7;3945:23;3941:32;3938:2;;;3991:6;3983;3976:22;3938:2;-1:-1:-1;4019:23:1;;3928:120;-1:-1:-1;3928:120:1:o;4053:316::-;;;;4210:2;4198:9;4189:7;4185:23;4181:32;4178:2;;;4231:6;4223;4216:22;4178:2;4265:9;4259:16;4249:26;;4315:2;4304:9;4300:18;4294:25;4284:35;;4359:2;4348:9;4344:18;4338:25;4328:35;;4168:201;;;;;:::o;4374:469::-;;4471:5;4465:12;4498:6;4493:3;4486:19;4524:4;4553:2;4548:3;4544:12;4537:19;;4590:2;4583:5;4579:14;4611:3;4623:195;4637:6;4634:1;4631:13;4623:195;;;4702:13;;-1:-1:-1;;;;;4698:39:1;4686:52;;4758:12;;;;4793:15;;;;4734:1;4652:9;4623:195;;;-1:-1:-1;4834:3:1;;4441:402;-1:-1:-1;;;;;4441:402:1:o;4848:203::-;-1:-1:-1;;;;;5012:32:1;;;;4994:51;;4982:2;4967:18;;4949:102::o;5280:282::-;-1:-1:-1;;;;;5480:32:1;;;;5462:51;;5544:2;5529:18;;5522:34;5450:2;5435:18;;5417:145::o;5567:607::-;-1:-1:-1;;;;;5926:15:1;;;5908:34;;5973:2;5958:18;;5951:34;;;;6016:2;6001:18;;5994:34;;;;6059:2;6044:18;;6037:34;;;;6108:15;;;6102:3;6087:19;;6080:44;5888:3;6140:19;;6133:35;;;;5857:3;5842:19;;5824:350::o;6179:187::-;6344:14;;6337:22;6319:41;;6307:2;6292:18;;6274:92::o;6371:516::-;;6642:6;6631:9;6624:25;6685:3;6680:2;6669:9;6665:18;6658:31;6706:63;6764:3;6753:9;6749:19;6741:6;6706:63;:::i;:::-;-1:-1:-1;;;;;6805:32:1;;;;6800:2;6785:18;;6778:60;-1:-1:-1;6869:2:1;6854:18;6847:34;6698:71;6614:273;-1:-1:-1;;6614:273:1:o;6892:603::-;;7033:2;7062;7051:9;7044:21;7094:6;7088:13;7137:6;7132:2;7121:9;7117:18;7110:34;7162:4;7175:140;7189:6;7186:1;7183:13;7175:140;;;7284:14;;;7280:23;;7274:30;7250:17;;;7269:2;7246:26;7239:66;7204:10;;7175:140;;;7333:6;7330:1;7327:13;7324:2;;;7403:4;7398:2;7389:6;7378:9;7374:22;7370:31;7363:45;7324:2;-1:-1:-1;7479:2:1;7458:15;-1:-1:-1;;7454:29:1;7439:45;;;;7486:2;7435:54;;7013:482;-1:-1:-1;;;7013:482:1:o;7500:399::-;7702:2;7684:21;;;7741:2;7721:18;;;7714:30;7780:34;7775:2;7760:18;;7753:62;-1:-1:-1;;;7846:2:1;7831:18;;7824:33;7889:3;7874:19;;7674:225::o;7904:402::-;8106:2;8088:21;;;8145:2;8125:18;;;8118:30;8184:34;8179:2;8164:18;;8157:62;-1:-1:-1;;;8250:2:1;8235:18;;8228:36;8296:3;8281:19;;8078:228::o;8311:398::-;8513:2;8495:21;;;8552:2;8532:18;;;8525:30;8591:34;8586:2;8571:18;;8564:62;-1:-1:-1;;;8657:2:1;8642:18;;8635:32;8699:3;8684:19;;8485:224::o;8714:421::-;8916:2;8898:21;;;8955:2;8935:18;;;8928:30;8994:34;8989:2;8974:18;;8967:62;9065:27;9060:2;9045:18;;9038:55;9125:3;9110:19;;8888:247::o;9140:402::-;9342:2;9324:21;;;9381:2;9361:18;;;9354:30;9420:34;9415:2;9400:18;;9393:62;-1:-1:-1;;;9486:2:1;9471:18;;9464:36;9532:3;9517:19;;9314:228::o;9547:404::-;9749:2;9731:21;;;9788:2;9768:18;;;9761:30;9827:34;9822:2;9807:18;;9800:62;-1:-1:-1;;;9893:2:1;9878:18;;9871:38;9941:3;9926:19;;9721:230::o;9956:414::-;10158:2;10140:21;;;10197:2;10177:18;;;10170:30;10236:34;10231:2;10216:18;;10209:62;-1:-1:-1;;;10302:2:1;10287:18;;10280:48;10360:3;10345:19;;10130:240::o;10375:353::-;10577:2;10559:21;;;10616:2;10596:18;;;10589:30;10655:31;10650:2;10635:18;;10628:59;10719:2;10704:18;;10549:179::o;10733:404::-;10935:2;10917:21;;;10974:2;10954:18;;;10947:30;11013:34;11008:2;10993:18;;10986:62;-1:-1:-1;;;11079:2:1;11064:18;;11057:38;11127:3;11112:19;;10907:230::o;11142:356::-;11344:2;11326:21;;;11363:18;;;11356:30;11422:34;11417:2;11402:18;;11395:62;11489:2;11474:18;;11316:182::o;11503:348::-;11705:2;11687:21;;;11744:2;11724:18;;;11717:30;11783:26;11778:2;11763:18;;11756:54;11842:2;11827:18;;11677:174::o;11856:401::-;12058:2;12040:21;;;12097:2;12077:18;;;12070:30;12136:34;12131:2;12116:18;;12109:62;-1:-1:-1;;;12202:2:1;12187:18;;12180:35;12247:3;12232:19;;12030:227::o;12262:400::-;12464:2;12446:21;;;12503:2;12483:18;;;12476:30;12542:34;12537:2;12522:18;;12515:62;-1:-1:-1;;;12608:2:1;12593:18;;12586:34;12652:3;12637:19;;12436:226::o;12667:177::-;12813:25;;;12801:2;12786:18;;12768:76::o;12849:596::-;;13156:6;13145:9;13138:25;13199:6;13194:2;13183:9;13179:18;13172:34;13242:3;13237:2;13226:9;13222:18;13215:31;13263:63;13321:3;13310:9;13306:19;13298:6;13263:63;:::i;:::-;-1:-1:-1;;;;;13362:32:1;;;;13357:2;13342:18;;13335:60;-1:-1:-1;13426:3:1;13411:19;13404:35;13255:71;13128:317;-1:-1:-1;;;13128:317:1:o;14043:319::-;14245:25;;;14301:2;14286:18;;14279:34;;;;14344:2;14329:18;;14322:34;14233:2;14218:18;;14200:162::o;14367:128::-;;14438:1;14434:6;14431:1;14428:13;14425:2;;;14444:18;;:::i;:::-;-1:-1:-1;14480:9:1;;14415:80::o;14500:217::-;;14566:1;14556:2;;-1:-1:-1;;;14591:31:1;;14645:4;14642:1;14635:15;14673:4;14598:1;14663:15;14556:2;-1:-1:-1;14702:9:1;;14546:171::o;14722:168::-;;14828:1;14824;14820:6;14816:14;14813:1;14810:21;14805:1;14798:9;14791:17;14787:45;14784:2;;;14835:18;;:::i;:::-;-1:-1:-1;14875:9:1;;14774:116::o;14895:125::-;;14963:1;14960;14957:8;14954:2;;;14968:18;;:::i;:::-;-1:-1:-1;15005:9:1;;14944:76::o;15025:380::-;15110:1;15100:12;;15157:1;15147:12;;;15168:2;;15222:4;15214:6;15210:17;15200:27;;15168:2;15275;15267:6;15264:14;15244:18;15241:38;15238:2;;;15321:10;15316:3;15312:20;15309:1;15302:31;15356:4;15353:1;15346:15;15384:4;15381:1;15374:15;15238:2;;15080:325;;;:::o;15410:127::-;15471:10;15466:3;15462:20;15459:1;15452:31;15502:4;15499:1;15492:15;15526:4;15523:1;15516:15;15542:133;-1:-1:-1;;;;;15619:31:1;;15609:42;;15599:2;;15665:1;15662;15655:12;15680:120;15768:5;15761:13;15754:21;15747:5;15744:32;15734:2;;15790:1;15787;15780:12
Swarm Source
ipfs://2d558d176f67c61e1a02a6e9ad079132b72f6d39777336cfc211c3d4d2a50111
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.