More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 195 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20423435 | 120 days ago | IN | 0 ETH | 0.00008486 | ||||
Approve | 20285888 | 139 days ago | IN | 0 ETH | 0.00020497 | ||||
Approve | 20135990 | 160 days ago | IN | 0 ETH | 0.00027372 | ||||
Approve | 19873032 | 196 days ago | IN | 0 ETH | 0.00029195 | ||||
Approve | 19838359 | 201 days ago | IN | 0 ETH | 0.00022333 | ||||
Approve | 19669998 | 225 days ago | IN | 0 ETH | 0.00056482 | ||||
Approve | 19641637 | 229 days ago | IN | 0 ETH | 0.00432762 | ||||
Approve | 19578751 | 238 days ago | IN | 0 ETH | 0.00132381 | ||||
Approve | 19571198 | 239 days ago | IN | 0 ETH | 0.00138211 | ||||
Approve | 19525767 | 245 days ago | IN | 0 ETH | 0.00159391 | ||||
Approve | 19471550 | 253 days ago | IN | 0 ETH | 0.00628075 | ||||
Approve | 19470344 | 253 days ago | IN | 0 ETH | 0.00189143 | ||||
Approve | 19467323 | 253 days ago | IN | 0 ETH | 0.00151923 | ||||
Approve | 19467180 | 253 days ago | IN | 0 ETH | 0.00137667 | ||||
Approve | 19466178 | 253 days ago | IN | 0 ETH | 0.00132406 | ||||
Approve | 19466124 | 253 days ago | IN | 0 ETH | 0.00109752 | ||||
Approve | 19466122 | 253 days ago | IN | 0 ETH | 0.00106176 | ||||
Approve | 19466107 | 253 days ago | IN | 0 ETH | 0.00056217 | ||||
Approve | 19466094 | 253 days ago | IN | 0 ETH | 0.00135318 | ||||
Approve | 19466092 | 253 days ago | IN | 0 ETH | 0.00118761 | ||||
Approve | 19466018 | 253 days ago | IN | 0 ETH | 0.00133972 | ||||
Transfer | 19465977 | 253 days ago | IN | 0 ETH | 0.00464622 | ||||
Approve | 19465947 | 254 days ago | IN | 0 ETH | 0.00130486 | ||||
Approve | 19465913 | 254 days ago | IN | 0 ETH | 0.00118164 | ||||
Approve | 19465892 | 254 days ago | IN | 0 ETH | 0.00135234 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19838363 | 201 days ago | 0.00528921 ETH | ||||
19838363 | 201 days ago | 0.00528921 ETH | ||||
19525770 | 245 days ago | 0.00369984 ETH | ||||
19525770 | 245 days ago | 0.00369984 ETH | ||||
19471552 | 253 days ago | 0.00528114 ETH | ||||
19471552 | 253 days ago | 0.00528114 ETH | ||||
19467635 | 253 days ago | 0.00301811 ETH | ||||
19467635 | 253 days ago | 0.00301811 ETH | ||||
19466749 | 253 days ago | 0.00247384 ETH | ||||
19466749 | 253 days ago | 0.00247384 ETH | ||||
19466095 | 253 days ago | 0.00760745 ETH | ||||
19466095 | 253 days ago | 0.00760745 ETH | ||||
19466023 | 253 days ago | 0.00939921 ETH | ||||
19466023 | 253 days ago | 0.00939921 ETH | ||||
19466021 | 253 days ago | 0.02186126 ETH | ||||
19466021 | 253 days ago | 0.02186126 ETH | ||||
19465977 | 253 days ago | 0.01219185 ETH | ||||
19465977 | 253 days ago | 0.01219185 ETH | ||||
19465900 | 254 days ago | 0.02130571 ETH | ||||
19465900 | 254 days ago | 0.02130571 ETH | ||||
19465896 | 254 days ago | 0.03677373 ETH | ||||
19465896 | 254 days ago | 0.03677373 ETH | ||||
19465853 | 254 days ago | 0.01521733 ETH | ||||
19465853 | 254 days ago | 0.01521733 ETH | ||||
19465839 | 254 days ago | 0.015215 ETH |
Loading...
Loading
Contract Name:
MEDAI
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-17 */ /** * ==- --- ==--- .................................... ---= =+=:-- :::....... ... --:-= .*+-:- :-::...... .............. ... --.:=+ :*=::= :--::::.:=*#%######################*=-.. ....: -:.-++ +*=-- -==--:::%##********+++++++++++++++++++**#:.....: --:-=* -*== ===---:##-*####*******************+++++:*#:...::: :--+* -==--++==--:%%%%%%####################*****++**=..:::: ==+* -==---=+===--%%%%%%%%########%%##########******#+.:::::----- --==--:=====-=%%%%%%%#-:..:=##%%%##+:...-*#*****#+.:::::::---:- .=-===-:=====-+%%%%%%#:.-++-.:#%%%#-.:==-..+######*:::::-:.::-:-= :+=+=========-+%%%%%%-:#%%%##-=%%%*:*#####:-#####%*:::::=----=--= .+**+++++====-=%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%+:::::========= -++***+++====-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+:::::=++++==+ .-+++*+++===-%%*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%=::::--++=+++ :---+++++=*%=-+%%@%%@@@@@@@@@@%%%%%%%%%%+--%%----:--++++ ... :=+++++==#%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%*-------- .................--- .=++++++++=---==+++++++++++++++++++==---===----- .............. :-::::::::..........----- .=+******+++++++++========++++++++++++======--= --:.... ..........: =**++++++===--:::....::----.=+*****+++++++=============+++++++++++++====---:.. ....::--======== :***+++++++++++===--=:.:-==..:+++++++++=================+++++++++++++ =--::...::---=========++ +***+++++++++++++*+==-:--= ::::-=+++++++++++++++++++++++++++++++ -=---:::--============+++ =+***+++++++++*****+=--== .:=++++***+++===---::-- -==--================+++ =++***++*********+=== .--==---------------------===== .=====+++==========++* -++***********++= .-==------:::::::::::::::-------== -==+++++++======++* =###*****++ :====-------:::.:::::..:::::-------= =++++++++++==++* :===- .-=====--------:-.....-:...:::-------=++*****++**+= .=======--------.......-::::::-----==== =*##### .:=========----=-.......----------====== .-+++============-.....:-------========= .=****++=========-----================+ .====------=++============++++++++++++* .-==----::::::+=========-:::::-------= -==-----:::::-========::::::-------== :====-----:::-=======-:::---------== .=+===--------=======-:----------=== :++===-------=======----------===++ .-+++====----+======-------=====++ .-++++======+****+------=====+++ .-+*++++==================+++* :+***+++++==========+++++* .=******+++++++++++++*** .:=*******++++++++*** .:-=*********** Welcome to MEDai https://linktr.ee/MEDaiProtocol https://medai.bot/ https://t.me/MEDAITESTBOT https://t.me/MEDaiOfficial https://twitter.com/MEDaiOfficial https://medium.com/@medaiprotocol https://medai.gitbook.io/medai */ // SPDX-License-Identifier: MIT pragma solidity =0.8.10 >=0.8.10 >=0.8.0 <0.9.0; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); 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, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract MEDAI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public routerCA = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D uniswap bool private swapping; address public mktgWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public buyMktgFee; uint256 public sellMktgFee; uint256 public tokensForMktg; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event mktgWalletUpdated( address indexed newWallet, address indexed oldWallet ); constructor() ERC20("MEDai", "MED") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(routerCA); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); // launch buy fees uint256 _buyMktgFee = 25; // launch sell fees uint256 _sellMktgFee = 35; uint256 totalSupply = 1_000_000_000 * 1e18; maxTransactionAmount = 10_000_000 * 1e18; // 1% max txn maxWallet = 10_000_000 * 1e18; // 1% max wallet swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet buyMktgFee = _buyMktgFee; sellMktgFee = _sellMktgFee; mktgWallet = address(0x0Ae590e8Bd1aa1F1966c51cE86821554eAfAFf28); // exclude from paying fees or having max transaction amount excludeFromFee(owner(), true); excludeFromFee(address(this), true); excludeFromFee(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { require(!tradingActive, "Token launched"); tradingActive = true; swapEnabled = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateBuyFee( uint256 _mktgFee ) external onlyOwner { buyMktgFee = _mktgFee; } function updateSellFee( uint256 _mktgFee ) external onlyOwner { sellMktgFee = _mktgFee; } function excludeFromFee(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } 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 updatemktgWallet(address newmktgWallet) external onlyOwner { emit mktgWalletUpdated(newmktgWallet, mktgWallet); mktgWallet = newmktgWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellMktgFee > 0) { fees = amount.mul(sellMktgFee).div(100); tokensForMktg += fees; } // on buy else if (automatedMarketMakerPairs[from] && buyMktgFee > 0) { fees = amount.mul(buyMktgFee).div(100); tokensForMktg += fees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMktg; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 amountToSwapForETH = contractBalance; uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMktg = ethBalance; tokensForMktg = 0; (success, ) = address(mktgWallet).call{value: ethForMktg}(""); } }
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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"mktgWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"buyMktgFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktgWallet","outputs":[{"internalType":"address","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":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerCA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMktgFee","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":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMktg","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mktgFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mktgFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmktgWallet","type":"address"}],"name":"updatemktgWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff021916908315150217905550348015620000b757600080fd5b506040518060400160405280600581526020017f4d454461690000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d4544000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200013c92919062000a60565b5080600490805190602001906200015592919062000a60565b505050620001786200016c6200052060201b60201c565b6200052860201b60201c565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050620001b2816001620005ee60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000232573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000258919062000b7a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e6919062000b7a565b6040518363ffffffff1660e01b81526004016200030592919062000bbd565b6020604051808303816000875af115801562000325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034b919062000b7a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200039360a0516001620005ee60201b60201c565b620003a860a0516001620006d860201b60201c565b60006019905060006023905060006b033b2e3c9fd0803ce800000090506a084595161401484a0000006008819055506a084595161401484a000000600a81905550612710600582620003fb919062000c23565b62000407919062000cb3565b60098190555082600c8190555081600d81905550730ae590e8bd1aa1f1966c51ce86821554eafaff28600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000492620004846200077960201b60201c565b6001620007a360201b60201c565b620004a5306001620007a360201b60201c565b620004ba61dead6001620007a360201b60201c565b620004dc620004ce6200077960201b60201c565b6001620005ee60201b60201c565b620004ef306001620005ee60201b60201c565b6200050461dead6001620005ee60201b60201c565b620005163382620008dd60201b60201c565b5050505062000f0a565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005fe6200052060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006246200077960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200067d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006749062000d4c565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007b36200052060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007d96200077960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008299062000d4c565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008d1919062000d8b565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000950576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009479062000df8565b60405180910390fd5b620009646000838362000a5660201b60201c565b806002600082825462000978919062000e1a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009cf919062000e1a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a36919062000e88565b60405180910390a362000a526000838362000a5b60201b60201c565b5050565b505050565b505050565b82805462000a6e9062000ed4565b90600052602060002090601f01602090048101928262000a92576000855562000ade565b82601f1062000aad57805160ff191683800117855562000ade565b8280016001018555821562000ade579182015b8281111562000add57825182559160200191906001019062000ac0565b5b50905062000aed919062000af1565b5090565b5b8082111562000b0c57600081600090555060010162000af2565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b428262000b15565b9050919050565b62000b548162000b35565b811462000b6057600080fd5b50565b60008151905062000b748162000b49565b92915050565b60006020828403121562000b935762000b9262000b10565b5b600062000ba38482850162000b63565b91505092915050565b62000bb78162000b35565b82525050565b600060408201905062000bd4600083018562000bac565b62000be3602083018462000bac565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c308262000bea565b915062000c3d8362000bea565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c795762000c7862000bf4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cc08262000bea565b915062000ccd8362000bea565b92508262000ce05762000cdf62000c84565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d3460208362000ceb565b915062000d418262000cfc565b602082019050919050565b6000602082019050818103600083015262000d678162000d25565b9050919050565b60008115159050919050565b62000d858162000d6e565b82525050565b600060208201905062000da2600083018462000d7a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000de0601f8362000ceb565b915062000ded8262000da8565b602082019050919050565b6000602082019050818103600083015262000e138162000dd1565b9050919050565b600062000e278262000bea565b915062000e348362000bea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e6c5762000e6b62000bf4565b5b828201905092915050565b62000e828162000bea565b82525050565b600060208201905062000e9f600083018462000e77565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000eed57607f821691505b6020821081141562000f045762000f0362000ea5565b5b50919050565b60805160a051613bb762000f4c60003960008181610cfa015261137f0152600081816109e7015281816129a201528181612a830152612aaa0152613bb76000f3fe6080604052600436106102295760003560e01c8063715018a611610123578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e14610830578063df8408fe1461086d578063e2f4560514610896578063f2fde38b146108c1578063f8b45b05146108ea57610230565b8063a9059cbb14610735578063b62496f514610772578063bbc0c742146107af578063c0f17acd146107da578063c8c8ebe41461080557610230565b80638da5cb5b116100f25780638da5cb5b1461064e57806395d89b41146106795780639a7a23d6146106a45780639bd9bf5f146106cd578063a457c2d7146106f857610230565b8063715018a6146105cc578063751039fc146105e35780637571336a1461060e5780638a8c523c1461063757610230565b8063313ce567116101b15780634fbee193116101755780634fbee193146104d3578063534c09061461051057806364cd83dd1461053b5780636ddd17131461056457806370a082311461058f57610230565b8063313ce567146103ec5780633950935114610417578063467abe0a1461045457806349bd5a5e1461047d5780634a62bb65146104a857610230565b806318160ddd116101f857806318160ddd146103055780631d933a4a1461033057806323b872dd1461035957806324afaf8d14610396578063312394a0146103c157610230565b806306fdde0314610235578063095ea7b31461026057806310d5de531461029d5780631694505e146102da57610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610915565b6040516102579190612bef565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612caa565b6109a7565b6040516102949190612d05565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190612d20565b6109c5565b6040516102d19190612d05565b60405180910390f35b3480156102e657600080fd5b506102ef6109e5565b6040516102fc9190612dac565b60405180910390f35b34801561031157600080fd5b5061031a610a09565b6040516103279190612dd6565b60405180910390f35b34801561033c57600080fd5b5061035760048036038101906103529190612df1565b610a13565b005b34801561036557600080fd5b50610380600480360381019061037b9190612e1e565b610a99565b60405161038d9190612d05565b60405180910390f35b3480156103a257600080fd5b506103ab610b91565b6040516103b89190612e80565b60405180910390f35b3480156103cd57600080fd5b506103d6610bb7565b6040516103e39190612dd6565b60405180910390f35b3480156103f857600080fd5b50610401610bbd565b60405161040e9190612eb7565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190612caa565b610bc6565b60405161044b9190612d05565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612df1565b610c72565b005b34801561048957600080fd5b50610492610cf8565b60405161049f9190612e80565b60405180910390f35b3480156104b457600080fd5b506104bd610d1c565b6040516104ca9190612d05565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f59190612d20565b610d2f565b6040516105079190612d05565b60405180910390f35b34801561051c57600080fd5b50610525610d85565b6040516105329190612e80565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190612d20565b610dab565b005b34801561057057600080fd5b50610579610ee7565b6040516105869190612d05565b60405180910390f35b34801561059b57600080fd5b506105b660048036038101906105b19190612d20565b610efa565b6040516105c39190612dd6565b60405180910390f35b3480156105d857600080fd5b506105e1610f42565b005b3480156105ef57600080fd5b506105f8610fca565b6040516106059190612d05565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190612efe565b61106a565b005b34801561064357600080fd5b5061064c611141565b005b34801561065a57600080fd5b50610663611245565b6040516106709190612e80565b60405180910390f35b34801561068557600080fd5b5061068e61126f565b60405161069b9190612bef565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190612efe565b611301565b005b3480156106d957600080fd5b506106e261141a565b6040516106ef9190612dd6565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a9190612caa565b611420565b60405161072c9190612d05565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190612caa565b61150b565b6040516107699190612d05565b60405180910390f35b34801561077e57600080fd5b5061079960048036038101906107949190612d20565b611529565b6040516107a69190612d05565b60405180910390f35b3480156107bb57600080fd5b506107c4611549565b6040516107d19190612d05565b60405180910390f35b3480156107e657600080fd5b506107ef61155c565b6040516107fc9190612dd6565b60405180910390f35b34801561081157600080fd5b5061081a611562565b6040516108279190612dd6565b60405180910390f35b34801561083c57600080fd5b5061085760048036038101906108529190612f3e565b611568565b6040516108649190612dd6565b60405180910390f35b34801561087957600080fd5b50610894600480360381019061088f9190612efe565b6115ef565b005b3480156108a257600080fd5b506108ab611714565b6040516108b89190612dd6565b60405180910390f35b3480156108cd57600080fd5b506108e860048036038101906108e39190612d20565b61171a565b005b3480156108f657600080fd5b506108ff611812565b60405161090c9190612dd6565b60405180910390f35b60606003805461092490612fad565b80601f016020809104026020016040519081016040528092919081815260200182805461095090612fad565b801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b5050505050905090565b60006109bb6109b4611818565b8484611820565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610a1b611818565b73ffffffffffffffffffffffffffffffffffffffff16610a39611245565b73ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a869061302b565b60405180910390fd5b80600d8190555050565b6000610aa68484846119eb565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610af1611818565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b68906130bd565b60405180910390fd5b610b8585610b7d611818565b858403611820565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60006012905090565b6000610c68610bd3611818565b848460016000610be1611818565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c63919061310c565b611820565b6001905092915050565b610c7a611818565b73ffffffffffffffffffffffffffffffffffffffff16610c98611245565b73ffffffffffffffffffffffffffffffffffffffff1614610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce59061302b565b60405180910390fd5b80600c8190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610db3611818565b73ffffffffffffffffffffffffffffffffffffffff16610dd1611245565b73ffffffffffffffffffffffffffffffffffffffff1614610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e9061302b565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fceaa6f1f2115d0f5eb9934026e3a197b010d8bc98f70fe27bbfb441d6fe4a69c60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f4a611818565b73ffffffffffffffffffffffffffffffffffffffff16610f68611245565b73ffffffffffffffffffffffffffffffffffffffff1614610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb59061302b565b60405180910390fd5b610fc860006123bd565b565b6000610fd4611818565b73ffffffffffffffffffffffffffffffffffffffff16610ff2611245565b73ffffffffffffffffffffffffffffffffffffffff1614611048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103f9061302b565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b611072611818565b73ffffffffffffffffffffffffffffffffffffffff16611090611245565b73ffffffffffffffffffffffffffffffffffffffff16146110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd9061302b565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611149611818565b73ffffffffffffffffffffffffffffffffffffffff16611167611245565b73ffffffffffffffffffffffffffffffffffffffff16146111bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b49061302b565b60405180910390fd5b600b60019054906101000a900460ff161561120d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611204906131ae565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461127e90612fad565b80601f01602080910402602001604051908101604052809291908181526020018280546112aa90612fad565b80156112f75780601f106112cc576101008083540402835291602001916112f7565b820191906000526020600020905b8154815290600101906020018083116112da57829003601f168201915b5050505050905090565b611309611818565b73ffffffffffffffffffffffffffffffffffffffff16611327611245565b73ffffffffffffffffffffffffffffffffffffffff161461137d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113749061302b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613240565b60405180910390fd5b6114168282612483565b5050565b600e5481565b6000806001600061142f611818565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e3906132d2565b60405180910390fd5b6115006114f7611818565b85858403611820565b600191505092915050565b600061151f611518611818565b84846119eb565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b600c5481565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115f7611818565b73ffffffffffffffffffffffffffffffffffffffff16611615611245565b73ffffffffffffffffffffffffffffffffffffffff161461166b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116629061302b565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117089190612d05565b60405180910390a25050565b60095481565b611722611818565b73ffffffffffffffffffffffffffffffffffffffff16611740611245565b73ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061302b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd90613364565b60405180910390fd5b61180f816123bd565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611890576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611887906133f6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790613488565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119de9190612dd6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a529061351a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac2906135ac565b60405180910390fd5b6000811415611ae557611ae083836000612524565b6123b8565b600b60009054906101000a900460ff1615611fe057611b02611245565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b705750611b40611245565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611be3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bfc5750600660149054906101000a900460ff16155b15611fdf57600b60019054906101000a900460ff16611cf657600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cb65750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613618565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d995750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4057600854811115611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906136aa565b60405180910390fd5b600a54611def83610efa565b82611dfa919061310c565b1115611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3290613716565b60405180910390fd5b611fde565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee35750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f3257600854811115611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f24906137a8565b60405180910390fd5b611fdd565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fdc57600a54611f8f83610efa565b82611f9a919061310c565b1115611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd290613716565b60405180910390fd5b5b5b5b5b5b6000611feb30610efa565b9050600060095482101590508080156120105750600b60029054906101000a900460ff165b80156120295750600660149054906101000a900460ff16155b801561207f5750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120d55750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561212b5750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561216f576001600660146101000a81548160ff0219169083151502179055506121536127a5565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122255750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561222f57600090505b600081156123a857601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561229257506000600d54115b156122df576122bf60646122b1600d54886128cd90919063ffffffff16565b6128e390919063ffffffff16565b905080600e60008282546122d3919061310c565b92505081905550612384565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561233a57506000600c54115b15612383576123676064612359600c54886128cd90919063ffffffff16565b6128e390919063ffffffff16565b905080600e600082825461237b919061310c565b925050819055505b5b600081111561239957612398873083612524565b5b80856123a591906137c8565b94505b6123b3878787612524565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b9061351a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb906135ac565b60405180910390fd5b61260f8383836128f9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268c9061386e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612728919061310c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161278c9190612dd6565b60405180910390a361279f8484846128fe565b50505050565b60006127b030610efa565b90506000600e5490506000808314806127c95750600082145b156127d6575050506128cb565b60146009546127e5919061388e565b8311156127fe5760146009546127fb919061388e565b92505b6000839050600047905061281182612903565b60006128268247612b4090919063ffffffff16565b905060008190506000600e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161287b90613919565b60006040518083038185875af1925050503d80600081146128b8576040519150601f19603f3d011682016040523d82523d6000602084013e6128bd565b606091505b505080955050505050505050505b565b600081836128db919061388e565b905092915050565b600081836128f1919061395d565b905092915050565b505050565b505050565b6000600267ffffffffffffffff8111156129205761291f61398e565b5b60405190808252806020026020018201604052801561294e5781602001602082028036833780820191505090505b5090503081600081518110612966576129656139bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2f9190613a01565b81600181518110612a4357612a426139bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612aa8307f000000000000000000000000000000000000000000000000000000000000000084611820565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b0a959493929190613b27565b600060405180830381600087803b158015612b2457600080fd5b505af1158015612b38573d6000803e3d6000fd5b505050505050565b60008183612b4e91906137c8565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b90578082015181840152602081019050612b75565b83811115612b9f576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bc182612b56565b612bcb8185612b61565b9350612bdb818560208601612b72565b612be481612ba5565b840191505092915050565b60006020820190508181036000830152612c098184612bb6565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c4182612c16565b9050919050565b612c5181612c36565b8114612c5c57600080fd5b50565b600081359050612c6e81612c48565b92915050565b6000819050919050565b612c8781612c74565b8114612c9257600080fd5b50565b600081359050612ca481612c7e565b92915050565b60008060408385031215612cc157612cc0612c11565b5b6000612ccf85828601612c5f565b9250506020612ce085828601612c95565b9150509250929050565b60008115159050919050565b612cff81612cea565b82525050565b6000602082019050612d1a6000830184612cf6565b92915050565b600060208284031215612d3657612d35612c11565b5b6000612d4484828501612c5f565b91505092915050565b6000819050919050565b6000612d72612d6d612d6884612c16565b612d4d565b612c16565b9050919050565b6000612d8482612d57565b9050919050565b6000612d9682612d79565b9050919050565b612da681612d8b565b82525050565b6000602082019050612dc16000830184612d9d565b92915050565b612dd081612c74565b82525050565b6000602082019050612deb6000830184612dc7565b92915050565b600060208284031215612e0757612e06612c11565b5b6000612e1584828501612c95565b91505092915050565b600080600060608486031215612e3757612e36612c11565b5b6000612e4586828701612c5f565b9350506020612e5686828701612c5f565b9250506040612e6786828701612c95565b9150509250925092565b612e7a81612c36565b82525050565b6000602082019050612e956000830184612e71565b92915050565b600060ff82169050919050565b612eb181612e9b565b82525050565b6000602082019050612ecc6000830184612ea8565b92915050565b612edb81612cea565b8114612ee657600080fd5b50565b600081359050612ef881612ed2565b92915050565b60008060408385031215612f1557612f14612c11565b5b6000612f2385828601612c5f565b9250506020612f3485828601612ee9565b9150509250929050565b60008060408385031215612f5557612f54612c11565b5b6000612f6385828601612c5f565b9250506020612f7485828601612c5f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fc557607f821691505b60208210811415612fd957612fd8612f7e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613015602083612b61565b915061302082612fdf565b602082019050919050565b6000602082019050818103600083015261304481613008565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006130a7602883612b61565b91506130b28261304b565b604082019050919050565b600060208201905081810360008301526130d68161309a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061311782612c74565b915061312283612c74565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613157576131566130dd565b5b828201905092915050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b6000613198600e83612b61565b91506131a382613162565b602082019050919050565b600060208201905081810360008301526131c78161318b565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061322a603983612b61565b9150613235826131ce565b604082019050919050565b600060208201905081810360008301526132598161321d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006132bc602583612b61565b91506132c782613260565b604082019050919050565b600060208201905081810360008301526132eb816132af565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061334e602683612b61565b9150613359826132f2565b604082019050919050565b6000602082019050818103600083015261337d81613341565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133e0602483612b61565b91506133eb82613384565b604082019050919050565b6000602082019050818103600083015261340f816133d3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613472602283612b61565b915061347d82613416565b604082019050919050565b600060208201905081810360008301526134a181613465565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613504602583612b61565b915061350f826134a8565b604082019050919050565b60006020820190508181036000830152613533816134f7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613596602383612b61565b91506135a18261353a565b604082019050919050565b600060208201905081810360008301526135c581613589565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613602601683612b61565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613694603583612b61565b915061369f82613638565b604082019050919050565b600060208201905081810360008301526136c381613687565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613700601383612b61565b915061370b826136ca565b602082019050919050565b6000602082019050818103600083015261372f816136f3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613792603683612b61565b915061379d82613736565b604082019050919050565b600060208201905081810360008301526137c181613785565b9050919050565b60006137d382612c74565b91506137de83612c74565b9250828210156137f1576137f06130dd565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613858602683612b61565b9150613863826137fc565b604082019050919050565b600060208201905081810360008301526138878161384b565b9050919050565b600061389982612c74565b91506138a483612c74565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138dd576138dc6130dd565b5b828202905092915050565b600081905092915050565b50565b60006139036000836138e8565b915061390e826138f3565b600082019050919050565b6000613924826138f6565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061396882612c74565b915061397383612c74565b9250826139835761398261392e565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506139fb81612c48565b92915050565b600060208284031215613a1757613a16612c11565b5b6000613a25848285016139ec565b91505092915050565b6000819050919050565b6000613a53613a4e613a4984613a2e565b612d4d565b612c74565b9050919050565b613a6381613a38565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9e81612c36565b82525050565b6000613ab08383613a95565b60208301905092915050565b6000602082019050919050565b6000613ad482613a69565b613ade8185613a74565b9350613ae983613a85565b8060005b83811015613b1a578151613b018882613aa4565b9750613b0c83613abc565b925050600181019050613aed565b5085935050505092915050565b600060a082019050613b3c6000830188612dc7565b613b496020830187613a5a565b8181036040830152613b5b8186613ac9565b9050613b6a6060830185612e71565b613b776080830184612dc7565b969550505050505056fea264697066735822122046918382cf1d8a0f2f8161c702ea5a91add50f5da438125849cdb47e228f2ff464736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106102295760003560e01c8063715018a611610123578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e14610830578063df8408fe1461086d578063e2f4560514610896578063f2fde38b146108c1578063f8b45b05146108ea57610230565b8063a9059cbb14610735578063b62496f514610772578063bbc0c742146107af578063c0f17acd146107da578063c8c8ebe41461080557610230565b80638da5cb5b116100f25780638da5cb5b1461064e57806395d89b41146106795780639a7a23d6146106a45780639bd9bf5f146106cd578063a457c2d7146106f857610230565b8063715018a6146105cc578063751039fc146105e35780637571336a1461060e5780638a8c523c1461063757610230565b8063313ce567116101b15780634fbee193116101755780634fbee193146104d3578063534c09061461051057806364cd83dd1461053b5780636ddd17131461056457806370a082311461058f57610230565b8063313ce567146103ec5780633950935114610417578063467abe0a1461045457806349bd5a5e1461047d5780634a62bb65146104a857610230565b806318160ddd116101f857806318160ddd146103055780631d933a4a1461033057806323b872dd1461035957806324afaf8d14610396578063312394a0146103c157610230565b806306fdde0314610235578063095ea7b31461026057806310d5de531461029d5780631694505e146102da57610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610915565b6040516102579190612bef565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612caa565b6109a7565b6040516102949190612d05565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190612d20565b6109c5565b6040516102d19190612d05565b60405180910390f35b3480156102e657600080fd5b506102ef6109e5565b6040516102fc9190612dac565b60405180910390f35b34801561031157600080fd5b5061031a610a09565b6040516103279190612dd6565b60405180910390f35b34801561033c57600080fd5b5061035760048036038101906103529190612df1565b610a13565b005b34801561036557600080fd5b50610380600480360381019061037b9190612e1e565b610a99565b60405161038d9190612d05565b60405180910390f35b3480156103a257600080fd5b506103ab610b91565b6040516103b89190612e80565b60405180910390f35b3480156103cd57600080fd5b506103d6610bb7565b6040516103e39190612dd6565b60405180910390f35b3480156103f857600080fd5b50610401610bbd565b60405161040e9190612eb7565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190612caa565b610bc6565b60405161044b9190612d05565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612df1565b610c72565b005b34801561048957600080fd5b50610492610cf8565b60405161049f9190612e80565b60405180910390f35b3480156104b457600080fd5b506104bd610d1c565b6040516104ca9190612d05565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f59190612d20565b610d2f565b6040516105079190612d05565b60405180910390f35b34801561051c57600080fd5b50610525610d85565b6040516105329190612e80565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190612d20565b610dab565b005b34801561057057600080fd5b50610579610ee7565b6040516105869190612d05565b60405180910390f35b34801561059b57600080fd5b506105b660048036038101906105b19190612d20565b610efa565b6040516105c39190612dd6565b60405180910390f35b3480156105d857600080fd5b506105e1610f42565b005b3480156105ef57600080fd5b506105f8610fca565b6040516106059190612d05565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190612efe565b61106a565b005b34801561064357600080fd5b5061064c611141565b005b34801561065a57600080fd5b50610663611245565b6040516106709190612e80565b60405180910390f35b34801561068557600080fd5b5061068e61126f565b60405161069b9190612bef565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190612efe565b611301565b005b3480156106d957600080fd5b506106e261141a565b6040516106ef9190612dd6565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a9190612caa565b611420565b60405161072c9190612d05565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190612caa565b61150b565b6040516107699190612d05565b60405180910390f35b34801561077e57600080fd5b5061079960048036038101906107949190612d20565b611529565b6040516107a69190612d05565b60405180910390f35b3480156107bb57600080fd5b506107c4611549565b6040516107d19190612d05565b60405180910390f35b3480156107e657600080fd5b506107ef61155c565b6040516107fc9190612dd6565b60405180910390f35b34801561081157600080fd5b5061081a611562565b6040516108279190612dd6565b60405180910390f35b34801561083c57600080fd5b5061085760048036038101906108529190612f3e565b611568565b6040516108649190612dd6565b60405180910390f35b34801561087957600080fd5b50610894600480360381019061088f9190612efe565b6115ef565b005b3480156108a257600080fd5b506108ab611714565b6040516108b89190612dd6565b60405180910390f35b3480156108cd57600080fd5b506108e860048036038101906108e39190612d20565b61171a565b005b3480156108f657600080fd5b506108ff611812565b60405161090c9190612dd6565b60405180910390f35b60606003805461092490612fad565b80601f016020809104026020016040519081016040528092919081815260200182805461095090612fad565b801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b5050505050905090565b60006109bb6109b4611818565b8484611820565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610a1b611818565b73ffffffffffffffffffffffffffffffffffffffff16610a39611245565b73ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a869061302b565b60405180910390fd5b80600d8190555050565b6000610aa68484846119eb565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610af1611818565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b68906130bd565b60405180910390fd5b610b8585610b7d611818565b858403611820565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60006012905090565b6000610c68610bd3611818565b848460016000610be1611818565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c63919061310c565b611820565b6001905092915050565b610c7a611818565b73ffffffffffffffffffffffffffffffffffffffff16610c98611245565b73ffffffffffffffffffffffffffffffffffffffff1614610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce59061302b565b60405180910390fd5b80600c8190555050565b7f000000000000000000000000cc63f0c452e7075e053296b71e104ce152babb8881565b600b60009054906101000a900460ff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610db3611818565b73ffffffffffffffffffffffffffffffffffffffff16610dd1611245565b73ffffffffffffffffffffffffffffffffffffffff1614610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e9061302b565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fceaa6f1f2115d0f5eb9934026e3a197b010d8bc98f70fe27bbfb441d6fe4a69c60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f4a611818565b73ffffffffffffffffffffffffffffffffffffffff16610f68611245565b73ffffffffffffffffffffffffffffffffffffffff1614610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb59061302b565b60405180910390fd5b610fc860006123bd565b565b6000610fd4611818565b73ffffffffffffffffffffffffffffffffffffffff16610ff2611245565b73ffffffffffffffffffffffffffffffffffffffff1614611048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103f9061302b565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b611072611818565b73ffffffffffffffffffffffffffffffffffffffff16611090611245565b73ffffffffffffffffffffffffffffffffffffffff16146110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd9061302b565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611149611818565b73ffffffffffffffffffffffffffffffffffffffff16611167611245565b73ffffffffffffffffffffffffffffffffffffffff16146111bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b49061302b565b60405180910390fd5b600b60019054906101000a900460ff161561120d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611204906131ae565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461127e90612fad565b80601f01602080910402602001604051908101604052809291908181526020018280546112aa90612fad565b80156112f75780601f106112cc576101008083540402835291602001916112f7565b820191906000526020600020905b8154815290600101906020018083116112da57829003601f168201915b5050505050905090565b611309611818565b73ffffffffffffffffffffffffffffffffffffffff16611327611245565b73ffffffffffffffffffffffffffffffffffffffff161461137d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113749061302b565b60405180910390fd5b7f000000000000000000000000cc63f0c452e7075e053296b71e104ce152babb8873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613240565b60405180910390fd5b6114168282612483565b5050565b600e5481565b6000806001600061142f611818565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e3906132d2565b60405180910390fd5b6115006114f7611818565b85858403611820565b600191505092915050565b600061151f611518611818565b84846119eb565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b600c5481565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115f7611818565b73ffffffffffffffffffffffffffffffffffffffff16611615611245565b73ffffffffffffffffffffffffffffffffffffffff161461166b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116629061302b565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117089190612d05565b60405180910390a25050565b60095481565b611722611818565b73ffffffffffffffffffffffffffffffffffffffff16611740611245565b73ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061302b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd90613364565b60405180910390fd5b61180f816123bd565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611890576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611887906133f6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790613488565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119de9190612dd6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a529061351a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac2906135ac565b60405180910390fd5b6000811415611ae557611ae083836000612524565b6123b8565b600b60009054906101000a900460ff1615611fe057611b02611245565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b705750611b40611245565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611be3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bfc5750600660149054906101000a900460ff16155b15611fdf57600b60019054906101000a900460ff16611cf657600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cb65750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613618565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d995750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4057600854811115611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906136aa565b60405180910390fd5b600a54611def83610efa565b82611dfa919061310c565b1115611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3290613716565b60405180910390fd5b611fde565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee35750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f3257600854811115611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f24906137a8565b60405180910390fd5b611fdd565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fdc57600a54611f8f83610efa565b82611f9a919061310c565b1115611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd290613716565b60405180910390fd5b5b5b5b5b5b6000611feb30610efa565b9050600060095482101590508080156120105750600b60029054906101000a900460ff165b80156120295750600660149054906101000a900460ff16155b801561207f5750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120d55750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561212b5750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561216f576001600660146101000a81548160ff0219169083151502179055506121536127a5565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122255750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561222f57600090505b600081156123a857601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561229257506000600d54115b156122df576122bf60646122b1600d54886128cd90919063ffffffff16565b6128e390919063ffffffff16565b905080600e60008282546122d3919061310c565b92505081905550612384565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561233a57506000600c54115b15612383576123676064612359600c54886128cd90919063ffffffff16565b6128e390919063ffffffff16565b905080600e600082825461237b919061310c565b925050819055505b5b600081111561239957612398873083612524565b5b80856123a591906137c8565b94505b6123b3878787612524565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b9061351a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb906135ac565b60405180910390fd5b61260f8383836128f9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268c9061386e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612728919061310c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161278c9190612dd6565b60405180910390a361279f8484846128fe565b50505050565b60006127b030610efa565b90506000600e5490506000808314806127c95750600082145b156127d6575050506128cb565b60146009546127e5919061388e565b8311156127fe5760146009546127fb919061388e565b92505b6000839050600047905061281182612903565b60006128268247612b4090919063ffffffff16565b905060008190506000600e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161287b90613919565b60006040518083038185875af1925050503d80600081146128b8576040519150601f19603f3d011682016040523d82523d6000602084013e6128bd565b606091505b505080955050505050505050505b565b600081836128db919061388e565b905092915050565b600081836128f1919061395d565b905092915050565b505050565b505050565b6000600267ffffffffffffffff8111156129205761291f61398e565b5b60405190808252806020026020018201604052801561294e5781602001602082028036833780820191505090505b5090503081600081518110612966576129656139bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2f9190613a01565b81600181518110612a4357612a426139bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612aa8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611820565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b0a959493929190613b27565b600060405180830381600087803b158015612b2457600080fd5b505af1158015612b38573d6000803e3d6000fd5b505050505050565b60008183612b4e91906137c8565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b90578082015181840152602081019050612b75565b83811115612b9f576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bc182612b56565b612bcb8185612b61565b9350612bdb818560208601612b72565b612be481612ba5565b840191505092915050565b60006020820190508181036000830152612c098184612bb6565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c4182612c16565b9050919050565b612c5181612c36565b8114612c5c57600080fd5b50565b600081359050612c6e81612c48565b92915050565b6000819050919050565b612c8781612c74565b8114612c9257600080fd5b50565b600081359050612ca481612c7e565b92915050565b60008060408385031215612cc157612cc0612c11565b5b6000612ccf85828601612c5f565b9250506020612ce085828601612c95565b9150509250929050565b60008115159050919050565b612cff81612cea565b82525050565b6000602082019050612d1a6000830184612cf6565b92915050565b600060208284031215612d3657612d35612c11565b5b6000612d4484828501612c5f565b91505092915050565b6000819050919050565b6000612d72612d6d612d6884612c16565b612d4d565b612c16565b9050919050565b6000612d8482612d57565b9050919050565b6000612d9682612d79565b9050919050565b612da681612d8b565b82525050565b6000602082019050612dc16000830184612d9d565b92915050565b612dd081612c74565b82525050565b6000602082019050612deb6000830184612dc7565b92915050565b600060208284031215612e0757612e06612c11565b5b6000612e1584828501612c95565b91505092915050565b600080600060608486031215612e3757612e36612c11565b5b6000612e4586828701612c5f565b9350506020612e5686828701612c5f565b9250506040612e6786828701612c95565b9150509250925092565b612e7a81612c36565b82525050565b6000602082019050612e956000830184612e71565b92915050565b600060ff82169050919050565b612eb181612e9b565b82525050565b6000602082019050612ecc6000830184612ea8565b92915050565b612edb81612cea565b8114612ee657600080fd5b50565b600081359050612ef881612ed2565b92915050565b60008060408385031215612f1557612f14612c11565b5b6000612f2385828601612c5f565b9250506020612f3485828601612ee9565b9150509250929050565b60008060408385031215612f5557612f54612c11565b5b6000612f6385828601612c5f565b9250506020612f7485828601612c5f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fc557607f821691505b60208210811415612fd957612fd8612f7e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613015602083612b61565b915061302082612fdf565b602082019050919050565b6000602082019050818103600083015261304481613008565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006130a7602883612b61565b91506130b28261304b565b604082019050919050565b600060208201905081810360008301526130d68161309a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061311782612c74565b915061312283612c74565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613157576131566130dd565b5b828201905092915050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b6000613198600e83612b61565b91506131a382613162565b602082019050919050565b600060208201905081810360008301526131c78161318b565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061322a603983612b61565b9150613235826131ce565b604082019050919050565b600060208201905081810360008301526132598161321d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006132bc602583612b61565b91506132c782613260565b604082019050919050565b600060208201905081810360008301526132eb816132af565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061334e602683612b61565b9150613359826132f2565b604082019050919050565b6000602082019050818103600083015261337d81613341565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133e0602483612b61565b91506133eb82613384565b604082019050919050565b6000602082019050818103600083015261340f816133d3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613472602283612b61565b915061347d82613416565b604082019050919050565b600060208201905081810360008301526134a181613465565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613504602583612b61565b915061350f826134a8565b604082019050919050565b60006020820190508181036000830152613533816134f7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613596602383612b61565b91506135a18261353a565b604082019050919050565b600060208201905081810360008301526135c581613589565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613602601683612b61565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613694603583612b61565b915061369f82613638565b604082019050919050565b600060208201905081810360008301526136c381613687565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613700601383612b61565b915061370b826136ca565b602082019050919050565b6000602082019050818103600083015261372f816136f3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613792603683612b61565b915061379d82613736565b604082019050919050565b600060208201905081810360008301526137c181613785565b9050919050565b60006137d382612c74565b91506137de83612c74565b9250828210156137f1576137f06130dd565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613858602683612b61565b9150613863826137fc565b604082019050919050565b600060208201905081810360008301526138878161384b565b9050919050565b600061389982612c74565b91506138a483612c74565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138dd576138dc6130dd565b5b828202905092915050565b600081905092915050565b50565b60006139036000836138e8565b915061390e826138f3565b600082019050919050565b6000613924826138f6565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061396882612c74565b915061397383612c74565b9250826139835761398261392e565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506139fb81612c48565b92915050565b600060208284031215613a1757613a16612c11565b5b6000613a25848285016139ec565b91505092915050565b6000819050919050565b6000613a53613a4e613a4984613a2e565b612d4d565b612c74565b9050919050565b613a6381613a38565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9e81612c36565b82525050565b6000613ab08383613a95565b60208301905092915050565b6000602082019050919050565b6000613ad482613a69565b613ade8185613a74565b9350613ae983613a85565b8060005b83811015613b1a578151613b018882613aa4565b9750613b0c83613abc565b925050600181019050613aed565b5085935050505092915050565b600060a082019050613b3c6000830188612dc7565b613b496020830187613a5a565b8181036040830152613b5b8186613ac9565b9050613b6a6060830185612e71565b613b776080830184612dc7565b969550505050505056fea264697066735822122046918382cf1d8a0f2f8161c702ea5a91add50f5da438125849cdb47e228f2ff464736f6c634300080a0033
Deployed Bytecode Sourcemap
19977:9576:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7674:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8588:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20744:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20052:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7995:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23448:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8765:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20314:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20615:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7894:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9265:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23316:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20110:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20463:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24462:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20155:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24279:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20543:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8111:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5796:103;;;;;;;;;;;;;:::i;:::-;;23012:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23141:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22794:166;;;;;;;;;;;;;:::i;:::-;;5573:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7782:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23771:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20648:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9488:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8246:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20814:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20503:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20583:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20348:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8429:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23582:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20390:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5907:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20430:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7674:100;7728:13;7761:5;7754:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7674:100;:::o;8588:169::-;8671:4;8688:39;8697:12;:10;:12::i;:::-;8711:7;8720:6;8688:8;:39::i;:::-;8745:4;8738:11;;8588:169;;;;:::o;20744:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;20052:51::-;;;:::o;7995:108::-;8056:7;8083:12;;8076:19;;7995:108;:::o;23448:126::-;5719:12;:10;:12::i;:::-;5708:23;;:7;:5;:7::i;:::-;:23;;;5700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23558:8:::1;23544:11;:22;;;;23448:126:::0;:::o;8765:492::-;8905:4;8922:36;8932:6;8940:9;8951:6;8922:9;:36::i;:::-;8971:24;8998:11;:19;9010:6;8998:19;;;;;;;;;;;;;;;:33;9018:12;:10;:12::i;:::-;8998:33;;;;;;;;;;;;;;;;8971:60;;9070:6;9050:16;:26;;9042:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9157:57;9166:6;9174:12;:10;:12::i;:::-;9207:6;9188:16;:25;9157:8;:57::i;:::-;9245:4;9238:11;;;8765:492;;;;;:::o;20314:25::-;;;;;;;;;;;;;:::o;20615:26::-;;;;:::o;7894:93::-;7952:5;7977:2;7970:9;;7894:93;:::o;9265:215::-;9353:4;9370:80;9379:12;:10;:12::i;:::-;9393:7;9439:10;9402:11;:25;9414:12;:10;:12::i;:::-;9402:25;;;;;;;;;;;;;;;:34;9428:7;9402:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9370:8;:80::i;:::-;9468:4;9461:11;;9265:215;;;;:::o;23316:124::-;5719:12;:10;:12::i;:::-;5708:23;;:7;:5;:7::i;:::-;:23;;;5700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23424:8:::1;23411:10;:21;;;;23316:124:::0;:::o;20110:38::-;;;:::o;20463:33::-;;;;;;;;;;;;;:::o;24462:126::-;24528:4;24552:19;:28;24572:7;24552:28;;;;;;;;;;;;;;;;;;;;;;;;;24545:35;;24462:126;;;:::o;20155:68::-;;;;;;;;;;;;;:::o;24279:173::-;5719:12;:10;:12::i;:::-;5708:23;;:7;:5;:7::i;:::-;:23;;;5700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24396:10:::1;;;;;;;;;;;24363:44;;24381:13;24363:44;;;;;;;;;;;;24431:13;24418:10;;:26;;;;;;;;;;;;;;;;;;24279:173:::0;:::o;20543:31::-;;;;;;;;;;;;;:::o;8111:127::-;8185:7;8212:9;:18;8222:7;8212:18;;;;;;;;;;;;;;;;8205:25;;8111:127;;;:::o;5796:103::-;5719:12;:10;:12::i;:::-;5708:23;;:7;:5;:7::i;:::-;:23;;;5700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5861:30:::1;5888:1;5861:18;:30::i;:::-;5796:103::o:0;23012:121::-;23064:4;5719:12;:10;:12::i;:::-;5708:23;;:7;:5;:7::i;:::-;:23;;;5700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23098:5:::1;23081:14;;:22;;;;;;;;;;;;;;;;;;23121:4;23114:11;;23012:121:::0;:::o;23141:167::-;5719:12;:10;:12::i;:::-;5708:23;;:7;:5;:7::i;:::-;:23;;;5700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23296:4:::1;23254:31;:39;23286:6;23254:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23141:167:::0;;:::o;22794:166::-;5719:12;:10;:12::i;:::-;5708:23;;:7;:5;:7::i;:::-;:23;;;5700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22858:13:::1;;;;;;;;;;;22857:14;22849:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;22917:4;22901:13;;:20;;;;;;;;;;;;;;;;;;22946:4;22932:11;;:18;;;;;;;;;;;;;;;;;;22794:166::o:0;5573:87::-;5619:7;5646:6;;;;;;;;;;;5639:13;;5573:87;:::o;7782:104::-;7838:13;7871:7;7864:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:104;:::o;23771:304::-;5719:12;:10;:12::i;:::-;5708:23;;:7;:5;:7::i;:::-;:23;;;5700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23915:13:::1;23907:21;;:4;:21;;;;23885:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;24026:41;24055:4;24061:5;24026:28;:41::i;:::-;23771:304:::0;;:::o;20648:28::-;;;;:::o;9488:413::-;9581:4;9598:24;9625:11;:25;9637:12;:10;:12::i;:::-;9625:25;;;;;;;;;;;;;;;:34;9651:7;9625:34;;;;;;;;;;;;;;;;9598:61;;9698:15;9678:16;:35;;9670:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9791:67;9800:12;:10;:12::i;:::-;9814:7;9842:15;9823:16;:34;9791:8;:67::i;:::-;9889:4;9882:11;;;9488:413;;;;:::o;8246:175::-;8332:4;8349:42;8359:12;:10;:12::i;:::-;8373:9;8384:6;8349:9;:42::i;:::-;8409:4;8402:11;;8246:175;;;;:::o;20814:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;20503:33::-;;;;;;;;;;;;;:::o;20583:25::-;;;;:::o;20348:35::-;;;;:::o;8429:151::-;8518:7;8545:11;:18;8557:5;8545:18;;;;;;;;;;;;;;;:27;8564:7;8545:27;;;;;;;;;;;;;;;;8538:34;;8429:151;;;;:::o;23582:181::-;5719:12;:10;:12::i;:::-;5708:23;;:7;:5;:7::i;:::-;:23;;;5700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23697:8:::1;23666:19;:28;23686:7;23666:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23737:7;23721:34;;;23746:8;23721:34;;;;;;:::i;:::-;;;;;;;;23582:181:::0;;:::o;20390:33::-;;;;:::o;5907:201::-;5719:12;:10;:12::i;:::-;5708:23;;:7;:5;:7::i;:::-;:23;;;5700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6016:1:::1;5996:22;;:8;:22;;;;5988:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6072:28;6091:8;6072:18;:28::i;:::-;5907:201:::0;:::o;20430:24::-;;;;:::o;5119:98::-;5172:7;5199:10;5192:17;;5119:98;:::o;11656:380::-;11809:1;11792:19;;:5;:19;;;;11784:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11890:1;11871:21;;:7;:21;;;;11863:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11974:6;11944:11;:18;11956:5;11944:18;;;;;;;;;;;;;;;:27;11963:7;11944:27;;;;;;;;;;;;;;;:36;;;;12012:7;11996:32;;12005:5;11996:32;;;12021:6;11996:32;;;;;;:::i;:::-;;;;;;;;11656:380;;;:::o;24602:3543::-;24750:1;24734:18;;:4;:18;;;;24726:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24827:1;24813:16;;:2;:16;;;;24805:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24903:1;24893:6;:11;24889:93;;;24921:28;24937:4;24943:2;24947:1;24921:15;:28::i;:::-;24964:7;;24889:93;24998:14;;;;;;;;;;;24994:1696;;;25059:7;:5;:7::i;:::-;25051:15;;:4;:15;;;;:49;;;;;25093:7;:5;:7::i;:::-;25087:13;;:2;:13;;;;25051:49;:86;;;;;25135:1;25121:16;;:2;:16;;;;25051:86;:128;;;;;25172:6;25158:21;;:2;:21;;;;25051:128;:158;;;;;25201:8;;;;;;;;;;;25200:9;25051:158;25029:1650;;;25249:13;;;;;;;;;;;25244:223;;25321:19;:25;25341:4;25321:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25350:19;:23;25370:2;25350:23;;;;;;;;;;;;;;;;;;;;;;;;;25321:52;25287:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25244:223;25543:25;:31;25569:4;25543:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25600:31;:35;25632:2;25600:35;;;;;;;;;;;;;;;;;;;;;;;;;25599:36;25543:92;25517:1147;;;25722:20;;25712:6;:30;;25678:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;25930:9;;25913:13;25923:2;25913:9;:13::i;:::-;25904:6;:22;;;;:::i;:::-;:35;;25870:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;25517:1147;;;26108:25;:29;26134:2;26108:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;26163:31;:37;26195:4;26163:37;;;;;;;;;;;;;;;;;;;;;;;;;26162:38;26108:92;26082:582;;;26287:20;;26277:6;:30;;26243:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;26082:582;;;26444:31;:35;26476:2;26444:35;;;;;;;;;;;;;;;;;;;;;;;;;26439:225;;26564:9;;26547:13;26557:2;26547:9;:13::i;:::-;26538:6;:22;;;;:::i;:::-;:35;;26504:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26439:225;26082:582;25517:1147;25029:1650;24994:1696;26702:28;26733:24;26751:4;26733:9;:24::i;:::-;26702:55;;26770:12;26809:18;;26785:20;:42;;26770:57;;26858:7;:35;;;;;26882:11;;;;;;;;;;;26858:35;:61;;;;;26911:8;;;;;;;;;;;26910:9;26858:61;:110;;;;;26937:25;:31;26963:4;26937:31;;;;;;;;;;;;;;;;;;;;;;;;;26936:32;26858:110;:153;;;;;26986:19;:25;27006:4;26986:25;;;;;;;;;;;;;;;;;;;;;;;;;26985:26;26858:153;:194;;;;;27029:19;:23;27049:2;27029:23;;;;;;;;;;;;;;;;;;;;;;;;;27028:24;26858:194;26840:326;;;27090:4;27079:8;;:15;;;;;;;;;;;;;;;;;;27111:10;:8;:10::i;:::-;27149:5;27138:8;;:16;;;;;;;;;;;;;;;;;;26840:326;27178:12;27194:8;;;;;;;;;;;27193:9;27178:24;;27304:19;:25;27324:4;27304:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27333:19;:23;27353:2;27333:23;;;;;;;;;;;;;;;;;;;;;;;;;27304:52;27300:100;;;27383:5;27373:15;;27300:100;27412:12;27517:7;27513:579;;;27569:25;:29;27595:2;27569:29;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;27616:1;27602:11;;:15;27569:48;27565:378;;;27645:32;27673:3;27645:23;27656:11;;27645:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;27638:39;;27713:4;27696:13;;:21;;;;;;;:::i;:::-;;;;;;;;27565:378;;;27779:25;:31;27805:4;27779:31;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;27827:1;27814:10;;:14;27779:49;27775:168;;;27856:31;27883:3;27856:22;27867:10;;27856:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;27849:38;;27923:4;27906:13;;:21;;;;;;;:::i;:::-;;;;;;;;27775:168;27565:378;27970:1;27963:4;:8;27959:91;;;27992:42;28008:4;28022;28029;27992:15;:42::i;:::-;27959:91;28076:4;28066:14;;;;;:::i;:::-;;;27513:579;28104:33;28120:4;28126:2;28130:6;28104:15;:33::i;:::-;24715:3430;;;;24602:3543;;;;:::o;6116:191::-;6190:16;6209:6;;;;;;;;;;;6190:25;;6235:8;6226:6;;:17;;;;;;;;;;;;;;;;;;6290:8;6259:40;;6280:8;6259:40;;;;;;;;;;;;6179:128;6116:191;:::o;24083:188::-;24200:5;24166:25;:31;24192:4;24166:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24257:5;24223:40;;24251:4;24223:40;;;;;;;;;;;;24083:188;;:::o;9909:733::-;10067:1;10049:20;;:6;:20;;;;10041:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10151:1;10130:23;;:9;:23;;;;10122:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10206:47;10227:6;10235:9;10246:6;10206:20;:47::i;:::-;10266:21;10290:9;:17;10300:6;10290:17;;;;;;;;;;;;;;;;10266:41;;10343:6;10326:13;:23;;10318:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10464:6;10448:13;:22;10428:9;:17;10438:6;10428:17;;;;;;;;;;;;;;;:42;;;;10516:6;10492:9;:20;10502:9;10492:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10557:9;10540:35;;10549:6;10540:35;;;10568:6;10540:35;;;;;;:::i;:::-;;;;;;;;10588:46;10608:6;10616:9;10627:6;10588:19;:46::i;:::-;10030:612;9909:733;;;:::o;28752:798::-;28791:23;28817:24;28835:4;28817:9;:24::i;:::-;28791:50;;28852:25;28880:13;;28852:41;;28906:12;28954:1;28935:15;:20;:46;;;;28980:1;28959:17;:22;28935:46;28931:85;;;28998:7;;;;;28931:85;29071:2;29050:18;;:23;;;;:::i;:::-;29032:15;:41;29028:115;;;29129:2;29108:18;;:23;;;;:::i;:::-;29090:41;;29028:115;29155:26;29184:15;29155:44;;29212:25;29240:21;29212:49;;29274:36;29291:18;29274:16;:36::i;:::-;29323:18;29344:44;29370:17;29344:21;:25;;:44;;;;:::i;:::-;29323:65;;29401:18;29422:10;29401:31;;29467:1;29451:13;:17;;;;29503:10;;;;;;;;;;;29495:24;;29527:10;29495:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29481:61;;;;;28780:770;;;;;;;28752:798;:::o;13662:98::-;13720:7;13751:1;13747;:5;;;;:::i;:::-;13740:12;;13662:98;;;;:::o;13768:::-;13826:7;13857:1;13853;:5;;;;:::i;:::-;13846:12;;13768:98;;;;:::o;12044:125::-;;;;:::o;12177:124::-;;;;:::o;28153:589::-;28279:21;28317:1;28303:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28279:40;;28348:4;28330;28335:1;28330:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28374:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28364:4;28369:1;28364:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28409:62;28426:4;28441:15;28459:11;28409:8;:62::i;:::-;28510:15;:66;;;28591:11;28617:1;28661:4;28688;28708:15;28510:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28208:534;28153:589;:::o;13556:98::-;13614:7;13645:1;13641;:5;;;;:::i;:::-;13634:12;;13556:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:474::-;7704:6;7712;7761:2;7749:9;7740:7;7736:23;7732:32;7729:119;;;7767:79;;:::i;:::-;7729:119;7887:1;7912:53;7957:7;7948:6;7937:9;7933:22;7912:53;:::i;:::-;7902:63;;7858:117;8014:2;8040:53;8085:7;8076:6;8065:9;8061:22;8040:53;:::i;:::-;8030:63;;7985:118;7636:474;;;;;:::o;8116:180::-;8164:77;8161:1;8154:88;8261:4;8258:1;8251:15;8285:4;8282:1;8275:15;8302:320;8346:6;8383:1;8377:4;8373:12;8363:22;;8430:1;8424:4;8420:12;8451:18;8441:81;;8507:4;8499:6;8495:17;8485:27;;8441:81;8569:2;8561:6;8558:14;8538:18;8535:38;8532:84;;;8588:18;;:::i;:::-;8532:84;8353:269;8302:320;;;:::o;8628:182::-;8768:34;8764:1;8756:6;8752:14;8745:58;8628:182;:::o;8816:366::-;8958:3;8979:67;9043:2;9038:3;8979:67;:::i;:::-;8972:74;;9055:93;9144:3;9055:93;:::i;:::-;9173:2;9168:3;9164:12;9157:19;;8816:366;;;:::o;9188:419::-;9354:4;9392:2;9381:9;9377:18;9369:26;;9441:9;9435:4;9431:20;9427:1;9416:9;9412:17;9405:47;9469:131;9595:4;9469:131;:::i;:::-;9461:139;;9188:419;;;:::o;9613:227::-;9753:34;9749:1;9741:6;9737:14;9730:58;9822:10;9817:2;9809:6;9805:15;9798:35;9613:227;:::o;9846:366::-;9988:3;10009:67;10073:2;10068:3;10009:67;:::i;:::-;10002:74;;10085:93;10174:3;10085:93;:::i;:::-;10203:2;10198:3;10194:12;10187:19;;9846:366;;;:::o;10218:419::-;10384:4;10422:2;10411:9;10407:18;10399:26;;10471:9;10465:4;10461:20;10457:1;10446:9;10442:17;10435:47;10499:131;10625:4;10499:131;:::i;:::-;10491:139;;10218:419;;;:::o;10643:180::-;10691:77;10688:1;10681:88;10788:4;10785:1;10778:15;10812:4;10809:1;10802:15;10829:305;10869:3;10888:20;10906:1;10888:20;:::i;:::-;10883:25;;10922:20;10940:1;10922:20;:::i;:::-;10917:25;;11076:1;11008:66;11004:74;11001:1;10998:81;10995:107;;;11082:18;;:::i;:::-;10995:107;11126:1;11123;11119:9;11112:16;;10829:305;;;;:::o;11140:164::-;11280:16;11276:1;11268:6;11264:14;11257:40;11140:164;:::o;11310:366::-;11452:3;11473:67;11537:2;11532:3;11473:67;:::i;:::-;11466:74;;11549:93;11638:3;11549:93;:::i;:::-;11667:2;11662:3;11658:12;11651:19;;11310:366;;;:::o;11682:419::-;11848:4;11886:2;11875:9;11871:18;11863:26;;11935:9;11929:4;11925:20;11921:1;11910:9;11906:17;11899:47;11963:131;12089:4;11963:131;:::i;:::-;11955:139;;11682:419;;;:::o;12107:244::-;12247:34;12243:1;12235:6;12231:14;12224:58;12316:27;12311:2;12303:6;12299:15;12292:52;12107:244;:::o;12357:366::-;12499:3;12520:67;12584:2;12579:3;12520:67;:::i;:::-;12513:74;;12596:93;12685:3;12596:93;:::i;:::-;12714:2;12709:3;12705:12;12698:19;;12357:366;;;:::o;12729:419::-;12895:4;12933:2;12922:9;12918:18;12910:26;;12982:9;12976:4;12972:20;12968:1;12957:9;12953:17;12946:47;13010:131;13136:4;13010:131;:::i;:::-;13002:139;;12729:419;;;:::o;13154:224::-;13294:34;13290:1;13282:6;13278:14;13271:58;13363:7;13358:2;13350:6;13346:15;13339:32;13154:224;:::o;13384:366::-;13526:3;13547:67;13611:2;13606:3;13547:67;:::i;:::-;13540:74;;13623:93;13712:3;13623:93;:::i;:::-;13741:2;13736:3;13732:12;13725:19;;13384:366;;;:::o;13756:419::-;13922:4;13960:2;13949:9;13945:18;13937:26;;14009:9;14003:4;13999:20;13995:1;13984:9;13980:17;13973:47;14037:131;14163:4;14037:131;:::i;:::-;14029:139;;13756:419;;;:::o;14181:225::-;14321:34;14317:1;14309:6;14305:14;14298:58;14390:8;14385:2;14377:6;14373:15;14366:33;14181:225;:::o;14412:366::-;14554:3;14575:67;14639:2;14634:3;14575:67;:::i;:::-;14568:74;;14651:93;14740:3;14651:93;:::i;:::-;14769:2;14764:3;14760:12;14753:19;;14412:366;;;:::o;14784:419::-;14950:4;14988:2;14977:9;14973:18;14965:26;;15037:9;15031:4;15027:20;15023:1;15012:9;15008:17;15001:47;15065:131;15191:4;15065:131;:::i;:::-;15057:139;;14784:419;;;:::o;15209:223::-;15349:34;15345:1;15337:6;15333:14;15326:58;15418:6;15413:2;15405:6;15401:15;15394:31;15209:223;:::o;15438:366::-;15580:3;15601:67;15665:2;15660:3;15601:67;:::i;:::-;15594:74;;15677:93;15766:3;15677:93;:::i;:::-;15795:2;15790:3;15786:12;15779:19;;15438:366;;;:::o;15810:419::-;15976:4;16014:2;16003:9;15999:18;15991:26;;16063:9;16057:4;16053:20;16049:1;16038:9;16034:17;16027:47;16091:131;16217:4;16091:131;:::i;:::-;16083:139;;15810:419;;;:::o;16235:221::-;16375:34;16371:1;16363:6;16359:14;16352:58;16444:4;16439:2;16431:6;16427:15;16420:29;16235:221;:::o;16462:366::-;16604:3;16625:67;16689:2;16684:3;16625:67;:::i;:::-;16618:74;;16701:93;16790:3;16701:93;:::i;:::-;16819:2;16814:3;16810:12;16803:19;;16462:366;;;:::o;16834:419::-;17000:4;17038:2;17027:9;17023:18;17015:26;;17087:9;17081:4;17077:20;17073:1;17062:9;17058:17;17051:47;17115:131;17241:4;17115:131;:::i;:::-;17107:139;;16834:419;;;:::o;17259:224::-;17399:34;17395:1;17387:6;17383:14;17376:58;17468:7;17463:2;17455:6;17451:15;17444:32;17259:224;:::o;17489:366::-;17631:3;17652:67;17716:2;17711:3;17652:67;:::i;:::-;17645:74;;17728:93;17817:3;17728:93;:::i;:::-;17846:2;17841:3;17837:12;17830:19;;17489:366;;;:::o;17861:419::-;18027:4;18065:2;18054:9;18050:18;18042:26;;18114:9;18108:4;18104:20;18100:1;18089:9;18085:17;18078:47;18142:131;18268:4;18142:131;:::i;:::-;18134:139;;17861:419;;;:::o;18286:222::-;18426:34;18422:1;18414:6;18410:14;18403:58;18495:5;18490:2;18482:6;18478:15;18471:30;18286:222;:::o;18514:366::-;18656:3;18677:67;18741:2;18736:3;18677:67;:::i;:::-;18670:74;;18753:93;18842:3;18753:93;:::i;:::-;18871:2;18866:3;18862:12;18855:19;;18514:366;;;:::o;18886:419::-;19052:4;19090:2;19079:9;19075:18;19067:26;;19139:9;19133:4;19129:20;19125:1;19114:9;19110:17;19103:47;19167:131;19293:4;19167:131;:::i;:::-;19159:139;;18886:419;;;:::o;19311:172::-;19451:24;19447:1;19439:6;19435:14;19428:48;19311:172;:::o;19489:366::-;19631:3;19652:67;19716:2;19711:3;19652:67;:::i;:::-;19645:74;;19728:93;19817:3;19728:93;:::i;:::-;19846:2;19841:3;19837:12;19830:19;;19489:366;;;:::o;19861:419::-;20027:4;20065:2;20054:9;20050:18;20042:26;;20114:9;20108:4;20104:20;20100:1;20089:9;20085:17;20078:47;20142:131;20268:4;20142:131;:::i;:::-;20134:139;;19861:419;;;:::o;20286:240::-;20426:34;20422:1;20414:6;20410:14;20403:58;20495:23;20490:2;20482:6;20478:15;20471:48;20286:240;:::o;20532:366::-;20674:3;20695:67;20759:2;20754:3;20695:67;:::i;:::-;20688:74;;20771:93;20860:3;20771:93;:::i;:::-;20889:2;20884:3;20880:12;20873:19;;20532:366;;;:::o;20904:419::-;21070:4;21108:2;21097:9;21093:18;21085:26;;21157:9;21151:4;21147:20;21143:1;21132:9;21128:17;21121:47;21185:131;21311:4;21185:131;:::i;:::-;21177:139;;20904:419;;;:::o;21329:169::-;21469:21;21465:1;21457:6;21453:14;21446:45;21329:169;:::o;21504:366::-;21646:3;21667:67;21731:2;21726:3;21667:67;:::i;:::-;21660:74;;21743:93;21832:3;21743:93;:::i;:::-;21861:2;21856:3;21852:12;21845:19;;21504:366;;;:::o;21876:419::-;22042:4;22080:2;22069:9;22065:18;22057:26;;22129:9;22123:4;22119:20;22115:1;22104:9;22100:17;22093:47;22157:131;22283:4;22157:131;:::i;:::-;22149:139;;21876:419;;;:::o;22301:241::-;22441:34;22437:1;22429:6;22425:14;22418:58;22510:24;22505:2;22497:6;22493:15;22486:49;22301:241;:::o;22548:366::-;22690:3;22711:67;22775:2;22770:3;22711:67;:::i;:::-;22704:74;;22787:93;22876:3;22787:93;:::i;:::-;22905:2;22900:3;22896:12;22889:19;;22548:366;;;:::o;22920:419::-;23086:4;23124:2;23113:9;23109:18;23101:26;;23173:9;23167:4;23163:20;23159:1;23148:9;23144:17;23137:47;23201:131;23327:4;23201:131;:::i;:::-;23193:139;;22920:419;;;:::o;23345:191::-;23385:4;23405:20;23423:1;23405:20;:::i;:::-;23400:25;;23439:20;23457:1;23439:20;:::i;:::-;23434:25;;23478:1;23475;23472:8;23469:34;;;23483:18;;:::i;:::-;23469:34;23528:1;23525;23521:9;23513:17;;23345:191;;;;:::o;23542:225::-;23682:34;23678:1;23670:6;23666:14;23659:58;23751:8;23746:2;23738:6;23734:15;23727:33;23542:225;:::o;23773:366::-;23915:3;23936:67;24000:2;23995:3;23936:67;:::i;:::-;23929:74;;24012:93;24101:3;24012:93;:::i;:::-;24130:2;24125:3;24121:12;24114:19;;23773:366;;;:::o;24145:419::-;24311:4;24349:2;24338:9;24334:18;24326:26;;24398:9;24392:4;24388:20;24384:1;24373:9;24369:17;24362:47;24426:131;24552:4;24426:131;:::i;:::-;24418:139;;24145:419;;;:::o;24570:348::-;24610:7;24633:20;24651:1;24633:20;:::i;:::-;24628:25;;24667:20;24685:1;24667:20;:::i;:::-;24662:25;;24855:1;24787:66;24783:74;24780:1;24777:81;24772:1;24765:9;24758:17;24754:105;24751:131;;;24862:18;;:::i;:::-;24751:131;24910:1;24907;24903:9;24892:20;;24570:348;;;;:::o;24924:147::-;25025:11;25062:3;25047:18;;24924:147;;;;:::o;25077:114::-;;:::o;25197:398::-;25356:3;25377:83;25458:1;25453:3;25377:83;:::i;:::-;25370:90;;25469:93;25558:3;25469:93;:::i;:::-;25587:1;25582:3;25578:11;25571:18;;25197:398;;;:::o;25601:379::-;25785:3;25807:147;25950:3;25807:147;:::i;:::-;25800:154;;25971:3;25964:10;;25601:379;;;:::o;25986:180::-;26034:77;26031:1;26024:88;26131:4;26128:1;26121:15;26155:4;26152:1;26145:15;26172:185;26212:1;26229:20;26247:1;26229:20;:::i;:::-;26224:25;;26263:20;26281:1;26263:20;:::i;:::-;26258:25;;26302:1;26292:35;;26307:18;;:::i;:::-;26292:35;26349:1;26346;26342:9;26337:14;;26172:185;;;;:::o;26363:180::-;26411:77;26408:1;26401:88;26508:4;26505:1;26498:15;26532:4;26529:1;26522:15;26549:180;26597:77;26594:1;26587:88;26694:4;26691:1;26684:15;26718:4;26715:1;26708:15;26735:143;26792:5;26823:6;26817:13;26808:22;;26839:33;26866:5;26839:33;:::i;:::-;26735:143;;;;:::o;26884:351::-;26954:6;27003:2;26991:9;26982:7;26978:23;26974:32;26971:119;;;27009:79;;:::i;:::-;26971:119;27129:1;27154:64;27210:7;27201:6;27190:9;27186:22;27154:64;:::i;:::-;27144:74;;27100:128;26884:351;;;;:::o;27241:85::-;27286:7;27315:5;27304:16;;27241:85;;;:::o;27332:158::-;27390:9;27423:61;27441:42;27450:32;27476:5;27450:32;:::i;:::-;27441:42;:::i;:::-;27423:61;:::i;:::-;27410:74;;27332:158;;;:::o;27496:147::-;27591:45;27630:5;27591:45;:::i;:::-;27586:3;27579:58;27496:147;;:::o;27649:114::-;27716:6;27750:5;27744:12;27734:22;;27649:114;;;:::o;27769:184::-;27868:11;27902:6;27897:3;27890:19;27942:4;27937:3;27933:14;27918:29;;27769:184;;;;:::o;27959:132::-;28026:4;28049:3;28041:11;;28079:4;28074:3;28070:14;28062:22;;27959:132;;;:::o;28097:108::-;28174:24;28192:5;28174:24;:::i;:::-;28169:3;28162:37;28097:108;;:::o;28211:179::-;28280:10;28301:46;28343:3;28335:6;28301:46;:::i;:::-;28379:4;28374:3;28370:14;28356:28;;28211:179;;;;:::o;28396:113::-;28466:4;28498;28493:3;28489:14;28481:22;;28396:113;;;:::o;28545:732::-;28664:3;28693:54;28741:5;28693:54;:::i;:::-;28763:86;28842:6;28837:3;28763:86;:::i;:::-;28756:93;;28873:56;28923:5;28873:56;:::i;:::-;28952:7;28983:1;28968:284;28993:6;28990:1;28987:13;28968:284;;;29069:6;29063:13;29096:63;29155:3;29140:13;29096:63;:::i;:::-;29089:70;;29182:60;29235:6;29182:60;:::i;:::-;29172:70;;29028:224;29015:1;29012;29008:9;29003:14;;28968:284;;;28972:14;29268:3;29261:10;;28669:608;;;28545:732;;;;:::o;29283:831::-;29546:4;29584:3;29573:9;29569:19;29561:27;;29598:71;29666:1;29655:9;29651:17;29642:6;29598:71;:::i;:::-;29679:80;29755:2;29744:9;29740:18;29731:6;29679:80;:::i;:::-;29806:9;29800:4;29796:20;29791:2;29780:9;29776:18;29769:48;29834:108;29937:4;29928:6;29834:108;:::i;:::-;29826:116;;29952:72;30020:2;30009:9;30005:18;29996:6;29952:72;:::i;:::-;30034:73;30102:3;30091:9;30087:19;30078:6;30034:73;:::i;:::-;29283:831;;;;;;;;:::o
Swarm Source
ipfs://46918382cf1d8a0f2f8161c702ea5a91add50f5da438125849cdb47e228f2ff4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,633.84 | 0.0069 | $25.07 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.