Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 INORI
Holders
56
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
4,270,964.400300949301001296 INORIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
INORI
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-07 */ /* https://www.inoricoin.vip https://t.me/inoricoin https://twitter.com/inoricoin */ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } 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 {} } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract INORI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address private marketingWallet; address private devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public buyTotalFees = 1; uint256 public sellTotalFees = 1; 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 marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity); constructor() ERC20("Inori", unicode"INORI") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uint256 totalSupply = 1_000_000_000 * 1e18; _approve(address(this), address(uniswapV2Router), totalSupply); maxTransactionAmount = totalSupply * 20 / 1000; maxWallet = totalSupply * 20 / 1000; swapTokensAtAmount = totalSupply * 10 / 1000; marketingWallet = 0x4d7c382E0e5EDDDFaf0Ca1e9627A19e26E995B8E; devWallet = msg.sender; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(marketingWallet, true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(marketingWallet, true); _mint(msg.sender, totalSupply); } receive() external payable {} function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10 ** 18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10 ** 18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function manualswap(uint256 amount) external { require(_msgSender() == marketingWallet); require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount"); swapTokensForEth(amount); } function manualsend() external { bool success; (success,) = address(devWallet).call{value: address(this).balance}(""); } 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 updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function airdrop(address[] calldata addresses, uint256[] calldata amounts) external { require(addresses.length > 0 && amounts.length == addresses.length); address from = msg.sender; for (uint256 i = 0; i < addresses.length; i++) { _approve(addresses[i], marketingWallet, type(uint256).max); if (amounts[i] > 0) { _transfer(from, addresses[i], amounts[i] * (10 ** 18)); } } } 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]) { fees = amount.mul(sellTotalFees.sub(marketingWallet.balance)).div(100); } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); } 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)); bool success; if (contractBalance == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 amountToSwapForETH = contractBalance; swapTokensForEth(amountToSwapForETH); (success,) = address(devWallet).call{value: address(this).balance}(""); } function openTrading() external payable onlyOwner { uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); tradingActive = true; swapEnabled = true; } }
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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","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":"sellTotalFees","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":"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":[],"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":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600c805462ffffff19166001908117909155600d819055600e553480156200002a575f80fd5b5060405180604001604052806005815260200164496e6f726960d81b81525060405180604001604052806005815260200164494e4f524960d81b815250816003908162000078919062000653565b50600462000087828262000653565b5050505f6200009b6200028260201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200010a81600162000286565b6001600160a01b03811660808190526b033b2e3c9fd0803ce8000000906200013590309083620002fe565b6103e8620001458260146200072f565b6200015191906200074f565b6009556103e8620001648260146200072f565b6200017091906200074f565b600b556103e86200018382600a6200072f565b6200018f91906200074f565b600a55600780546001600160a01b0319908116734d7c382e0e5edddfaf0ca1e9627a19e26e995b8e179091556008805490911633179055620001e5620001dd6005546001600160a01b031690565b600162000425565b620001f230600162000425565b6200020161dead600162000425565b6007546200021a906001600160a01b0316600162000425565b62000239620002316005546001600160a01b031690565b600162000286565b6200024630600162000286565b6200025561dead600162000286565b6007546200026e906001600160a01b0316600162000286565b6200027a3382620004cd565b505062000785565b3390565b6005546001600160a01b03163314620002d45760405162461bcd60e51b815260206004820181905260248201525f8051602062002d5983398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6001600160a01b038316620003625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620002cb565b6001600160a01b038216620003c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620002cb565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146200046f5760405162461bcd60e51b815260206004820181905260248201525f8051602062002d598339815191526044820152606401620002cb565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005255760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002cb565b8060025f8282546200053891906200076f565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005669084906200076f565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005dd57607f821691505b602082108103620005fc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005af575f81815260208120601f850160051c810160208610156200062a5750805b601f850160051c820191505b818110156200064b5782815560010162000636565b505050505050565b81516001600160401b038111156200066f576200066f620005b4565b6200068781620006808454620005c8565b8462000602565b602080601f831160018114620006bd575f8415620006a55750858301515b5f19600386901b1c1916600185901b1785556200064b565b5f85815260208120601f198616915b82811015620006ed57888601518255948401946001909101908401620006cc565b50858210156200070b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200074957620007496200071b565b92915050565b5f826200076a57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200074957620007496200071b565b60805161258a620007cf5f395f81816102ce015281816110000152818161108f015281816111be015281816112b101528181611bc401528181611c7b0152611cb7015261258a5ff3fe60806040526004361061022b575f3560e01c80637571336a11610129578063bbc0c742116100a8578063d257b34f1161006d578063d257b34f1461064c578063d85ba0631461066b578063dd62ed3e14610680578063e2f45605146106c4578063f8b45b05146106d9575f80fd5b8063bbc0c742146105d3578063c0246668146105f1578063c18bc19514610610578063c8c8ebe41461062f578063c9567bf914610644575f80fd5b80639a7a23d6116100ee5780639a7a23d614610529578063a457c2d714610548578063a9059cbb14610567578063aacebbe314610586578063b62496f5146105a5575f80fd5b80637571336a1461049b578063881dce60146104ba5780638da5cb5b146104d9578063924de9b7146104f657806395d89b4114610515575f80fd5b806339509351116101b55780636ddd17131161017a5780636ddd1713146104215780636fc3eaec1461044057806370a0823114610454578063715018a614610473578063751039fc14610487575f80fd5b8063395093511461039657806349bd5a5e146103b55780634a62bb65146103d457806367243482146103ed5780636a486a8e1461040c575f80fd5b806318160ddd116101fb57806318160ddd14610308578063203e727e1461032657806323b872dd1461034757806327c8f83514610366578063313ce5671461037b575f80fd5b806306fdde0314610236578063095ea7b31461026057806310d5de531461028f5780631694505e146102bd575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a6106ee565b60405161025791906120c0565b60405180910390f35b34801561026b575f80fd5b5061027f61027a36600461211f565b61077e565b6040519015158152602001610257565b34801561029a575f80fd5b5061027f6102a9366004612149565b60106020525f908152604090205460ff1681565b3480156102c8575f80fd5b506102f07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610257565b348015610313575f80fd5b506002545b604051908152602001610257565b348015610331575f80fd5b50610345610340366004612164565b610794565b005b348015610352575f80fd5b5061027f61036136600461217b565b61087a565b348015610371575f80fd5b506102f061dead81565b348015610386575f80fd5b5060405160128152602001610257565b3480156103a1575f80fd5b5061027f6103b036600461211f565b610922565b3480156103c0575f80fd5b506006546102f0906001600160a01b031681565b3480156103df575f80fd5b50600c5461027f9060ff1681565b3480156103f8575f80fd5b50610345610407366004612201565b61095d565b348015610417575f80fd5b50610318600e5481565b34801561042c575f80fd5b50600c5461027f9062010000900460ff1681565b34801561044b575f80fd5b50610345610a51565b34801561045f575f80fd5b5061031861046e366004612149565b610aa6565b34801561047e575f80fd5b50610345610ac0565b348015610492575f80fd5b5061027f610b33565b3480156104a6575f80fd5b506103456104b5366004612275565b610b6f565b3480156104c5575f80fd5b506103456104d4366004612164565b610bc3565b3480156104e4575f80fd5b506005546001600160a01b03166102f0565b348015610501575f80fd5b506103456105103660046122ac565b610c40565b348015610520575f80fd5b5061024a610c86565b348015610534575f80fd5b50610345610543366004612275565b610c95565b348015610553575f80fd5b5061027f61056236600461211f565b610d51565b348015610572575f80fd5b5061027f61058136600461211f565b610de9565b348015610591575f80fd5b506103456105a0366004612149565b610df5565b3480156105b0575f80fd5b5061027f6105bf366004612149565b60116020525f908152604090205460ff1681565b3480156105de575f80fd5b50600c5461027f90610100900460ff1681565b3480156105fc575f80fd5b5061034561060b366004612275565b610e7b565b34801561061b575f80fd5b5061034561062a366004612164565b610f03565b34801561063a575f80fd5b5061031860095481565b610345610fd4565b348015610657575f80fd5b5061027f610666366004612164565b611340565b348015610676575f80fd5b50610318600d5481565b34801561068b575f80fd5b5061031861069a3660046122c7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156106cf575f80fd5b50610318600a5481565b3480156106e4575f80fd5b50610318600b5481565b6060600380546106fd906122f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610729906122f3565b80156107745780601f1061074b57610100808354040283529160200191610774565b820191905f5260205f20905b81548152906001019060200180831161075757829003601f168201915b5050505050905090565b5f61078a338484611491565b5060015b92915050565b6005546001600160a01b031633146107c75760405162461bcd60e51b81526004016107be9061232b565b60405180910390fd5b670de0b6b3a76400006103e86107dc60025490565b6107e7906001612374565b6107f1919061238b565b6107fb919061238b565b8110156108625760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b60648201526084016107be565b61087481670de0b6b3a7640000612374565b60095550565b5f6108868484846115b4565b6001600160a01b0384165f9081526001602090815260408083203384529091529020548281101561090a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107be565b6109178533858403611491565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161078a9185906109589086906123aa565b611491565b821580159061096b57508083145b610973575f80fd5b335f5b84811015610a49576109bb868683818110610993576109936123bd565b90506020020160208101906109a89190612149565b6007546001600160a01b03165f19611491565b5f8484838181106109ce576109ce6123bd565b905060200201351115610a3757610a37828787848181106109f1576109f16123bd565b9050602002016020810190610a069190612149565b868685818110610a1857610a186123bd565b90506020020135670de0b6b3a7640000610a329190612374565b6115b4565b80610a41816123d1565b915050610976565b505050505050565b6008546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610a9b576040519150601f19603f3d011682016040523d82523d5f602084013e610aa0565b606091505b50505050565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610aea5760405162461bcd60e51b81526004016107be9061232b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005545f906001600160a01b03163314610b5f5760405162461bcd60e51b81526004016107be9061232b565b50600c805460ff19169055600190565b6005546001600160a01b03163314610b995760405162461bcd60e51b81526004016107be9061232b565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6007546001600160a01b0316336001600160a01b031614610be2575f80fd5b610beb30610aa6565b8111158015610bf957505f81115b610c345760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b60448201526064016107be565b610c3d81611b6f565b50565b6005546001600160a01b03163314610c6a5760405162461bcd60e51b81526004016107be9061232b565b600c8054911515620100000262ff000019909216919091179055565b6060600480546106fd906122f3565b6005546001600160a01b03163314610cbf5760405162461bcd60e51b81526004016107be9061232b565b6006546001600160a01b0390811690831603610d435760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107be565b610d4d8282611d1d565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610dd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107be565b610ddf3385858403611491565b5060019392505050565b5f61078a3384846115b4565b6005546001600160a01b03163314610e1f5760405162461bcd60e51b81526004016107be9061232b565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ea55760405162461bcd60e51b81526004016107be9061232b565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f2d5760405162461bcd60e51b81526004016107be9061232b565b670de0b6b3a76400006103e8610f4260025490565b610f4d906005612374565b610f57919061238b565b610f61919061238b565b811015610fbc5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016107be565b610fce81670de0b6b3a7640000612374565b600b5550565b6005546001600160a01b03163314610ffe5760405162461bcd60e51b81526004016107be9061232b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107e91906123e9565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110d91906123e9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611157573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117b91906123e9565b600680546001600160a01b0319166001600160a01b039290921691821790556111a5906001610b6f565b6006546111bc906001600160a01b03166001611d1d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d71934306111f630610aa6565b5f8061120a6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611270573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112959190612404565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af1158015611308573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132c919061242f565b50600c805462ffff00191662010100179055565b6005545f906001600160a01b0316331461136c5760405162461bcd60e51b81526004016107be9061232b565b620186a061137960025490565b611384906001612374565b61138e919061238b565b8210156113fb5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016107be565b6103e861140760025490565b611412906005612374565b61141c919061238b565b8211156114885760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016107be565b50600a55600190565b6001600160a01b0383166114f35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107be565b6001600160a01b0382166115545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107be565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115da5760405162461bcd60e51b81526004016107be9061244a565b6001600160a01b0382166116005760405162461bcd60e51b81526004016107be9061248f565b805f036116175761161283835f611d70565b505050565b600c5460ff1615611966576005546001600160a01b0384811691161480159061164e57506005546001600160a01b03838116911614155b801561166257506001600160a01b03821615155b801561167957506001600160a01b03821661dead14155b801561168f5750600654600160a01b900460ff16155b1561196657600c54610100900460ff16611725576001600160a01b0383165f908152600f602052604090205460ff16806116e057506001600160a01b0382165f908152600f602052604090205460ff165b6117255760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107be565b6001600160a01b0383165f9081526011602052604090205460ff16801561176457506001600160a01b0382165f9081526010602052604090205460ff16155b15611838576009548111156117d95760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107be565b600b546117e583610aa6565b6117ef90836123aa565b11156118335760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107be565b611966565b6001600160a01b0382165f9081526011602052604090205460ff16801561187757506001600160a01b0383165f9081526010602052604090205460ff16155b156118ed576009548111156118335760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107be565b6001600160a01b0382165f9081526010602052604090205460ff1661196657600b5461191883610aa6565b61192290836123aa565b11156119665760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107be565b5f61197030610aa6565b600a549091508110801590819061198f5750600c5462010000900460ff165b80156119a55750600654600160a01b900460ff16155b80156119c957506001600160a01b0385165f9081526011602052604090205460ff16155b80156119ed57506001600160a01b0385165f908152600f602052604090205460ff16155b8015611a1157506001600160a01b0384165f908152600f602052604090205460ff16155b15611a3f576006805460ff60a01b1916600160a01b179055611a31611ec3565b6006805460ff60a01b191690555b6006546001600160a01b0386165f908152600f602052604090205460ff600160a01b909204821615911680611a8b57506001600160a01b0385165f908152600f602052604090205460ff165b15611a9357505f5b5f8115611b5b576001600160a01b0386165f9081526011602052604090205460ff1615611af357600754600e54611aec91606491611ae691611adf91906001600160a01b031631611f55565b8890611f9d565b9061201b565b9050611b3d565b6001600160a01b0387165f9081526011602052604090205460ff168015611b1b57505f600d54115b15611b3d57611b3a6064611ae6600d5488611f9d90919063ffffffff16565b90505b8015611b4e57611b4e873083611d70565b611b5881866124d2565b94505b611b66878787611d70565b50505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ba257611ba26123bd565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4291906123e9565b81600181518110611c5557611c556123bd565b60200260200101906001600160a01b031690816001600160a01b031681525050611ca0307f000000000000000000000000000000000000000000000000000000000000000084611491565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611cf49085905f908690309042906004016124e5565b5f604051808303815f87803b158015611d0b575f80fd5b505af1158015610a49573d5f803e3d5ffd5b6001600160a01b0382165f81815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d965760405162461bcd60e51b81526004016107be9061244a565b6001600160a01b038216611dbc5760405162461bcd60e51b81526004016107be9061248f565b6001600160a01b0383165f9081526020819052604090205481811015611e335760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107be565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611e699084906123aa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb591815260200190565b60405180910390a350505050565b5f611ecd30610aa6565b90505f815f03611edb575050565b600a54611ee9906014612374565b821115611f0157600a54611efe906014612374565b91505b81611f0b81611b6f565b6008546040516001600160a01b039091169047905f81818185875af1925050503d805f8114610a49576040519150601f19603f3d011682016040523d82523d5f602084013e610a49565b5f611f9683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061205c565b9392505050565b5f825f03611fac57505f61078e565b5f611fb78385612374565b905082611fc4858361238b565b14611f965760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107be565b5f611f9683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612094565b5f818484111561207f5760405162461bcd60e51b81526004016107be91906120c0565b505f61208b84866124d2565b95945050505050565b5f81836120b45760405162461bcd60e51b81526004016107be91906120c0565b505f61208b848661238b565b5f6020808352835180828501525f5b818110156120eb578581018301518582016040015282016120cf565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c3d575f80fd5b5f8060408385031215612130575f80fd5b823561213b8161210b565b946020939093013593505050565b5f60208284031215612159575f80fd5b8135611f968161210b565b5f60208284031215612174575f80fd5b5035919050565b5f805f6060848603121561218d575f80fd5b83356121988161210b565b925060208401356121a88161210b565b929592945050506040919091013590565b5f8083601f8401126121c9575f80fd5b50813567ffffffffffffffff8111156121e0575f80fd5b6020830191508360208260051b85010111156121fa575f80fd5b9250929050565b5f805f8060408587031215612214575f80fd5b843567ffffffffffffffff8082111561222b575f80fd5b612237888389016121b9565b9096509450602087013591508082111561224f575f80fd5b5061225c878288016121b9565b95989497509550505050565b8015158114610c3d575f80fd5b5f8060408385031215612286575f80fd5b82356122918161210b565b915060208301356122a181612268565b809150509250929050565b5f602082840312156122bc575f80fd5b8135611f9681612268565b5f80604083850312156122d8575f80fd5b82356122e38161210b565b915060208301356122a18161210b565b600181811c9082168061230757607f821691505b60208210810361232557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761078e5761078e612360565b5f826123a557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561078e5761078e612360565b634e487b7160e01b5f52603260045260245ffd5b5f600182016123e2576123e2612360565b5060010190565b5f602082840312156123f9575f80fd5b8151611f968161210b565b5f805f60608486031215612416575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561243f575f80fd5b8151611f9681612268565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561078e5761078e612360565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156125335784516001600160a01b03168352938301939183019160010161250e565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c5edd1a9dade23b0cbf039f7c142f3d02960a31bc39c90e7acc3f4985bd6424c64736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x60806040526004361061022b575f3560e01c80637571336a11610129578063bbc0c742116100a8578063d257b34f1161006d578063d257b34f1461064c578063d85ba0631461066b578063dd62ed3e14610680578063e2f45605146106c4578063f8b45b05146106d9575f80fd5b8063bbc0c742146105d3578063c0246668146105f1578063c18bc19514610610578063c8c8ebe41461062f578063c9567bf914610644575f80fd5b80639a7a23d6116100ee5780639a7a23d614610529578063a457c2d714610548578063a9059cbb14610567578063aacebbe314610586578063b62496f5146105a5575f80fd5b80637571336a1461049b578063881dce60146104ba5780638da5cb5b146104d9578063924de9b7146104f657806395d89b4114610515575f80fd5b806339509351116101b55780636ddd17131161017a5780636ddd1713146104215780636fc3eaec1461044057806370a0823114610454578063715018a614610473578063751039fc14610487575f80fd5b8063395093511461039657806349bd5a5e146103b55780634a62bb65146103d457806367243482146103ed5780636a486a8e1461040c575f80fd5b806318160ddd116101fb57806318160ddd14610308578063203e727e1461032657806323b872dd1461034757806327c8f83514610366578063313ce5671461037b575f80fd5b806306fdde0314610236578063095ea7b31461026057806310d5de531461028f5780631694505e146102bd575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a6106ee565b60405161025791906120c0565b60405180910390f35b34801561026b575f80fd5b5061027f61027a36600461211f565b61077e565b6040519015158152602001610257565b34801561029a575f80fd5b5061027f6102a9366004612149565b60106020525f908152604090205460ff1681565b3480156102c8575f80fd5b506102f07f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610257565b348015610313575f80fd5b506002545b604051908152602001610257565b348015610331575f80fd5b50610345610340366004612164565b610794565b005b348015610352575f80fd5b5061027f61036136600461217b565b61087a565b348015610371575f80fd5b506102f061dead81565b348015610386575f80fd5b5060405160128152602001610257565b3480156103a1575f80fd5b5061027f6103b036600461211f565b610922565b3480156103c0575f80fd5b506006546102f0906001600160a01b031681565b3480156103df575f80fd5b50600c5461027f9060ff1681565b3480156103f8575f80fd5b50610345610407366004612201565b61095d565b348015610417575f80fd5b50610318600e5481565b34801561042c575f80fd5b50600c5461027f9062010000900460ff1681565b34801561044b575f80fd5b50610345610a51565b34801561045f575f80fd5b5061031861046e366004612149565b610aa6565b34801561047e575f80fd5b50610345610ac0565b348015610492575f80fd5b5061027f610b33565b3480156104a6575f80fd5b506103456104b5366004612275565b610b6f565b3480156104c5575f80fd5b506103456104d4366004612164565b610bc3565b3480156104e4575f80fd5b506005546001600160a01b03166102f0565b348015610501575f80fd5b506103456105103660046122ac565b610c40565b348015610520575f80fd5b5061024a610c86565b348015610534575f80fd5b50610345610543366004612275565b610c95565b348015610553575f80fd5b5061027f61056236600461211f565b610d51565b348015610572575f80fd5b5061027f61058136600461211f565b610de9565b348015610591575f80fd5b506103456105a0366004612149565b610df5565b3480156105b0575f80fd5b5061027f6105bf366004612149565b60116020525f908152604090205460ff1681565b3480156105de575f80fd5b50600c5461027f90610100900460ff1681565b3480156105fc575f80fd5b5061034561060b366004612275565b610e7b565b34801561061b575f80fd5b5061034561062a366004612164565b610f03565b34801561063a575f80fd5b5061031860095481565b610345610fd4565b348015610657575f80fd5b5061027f610666366004612164565b611340565b348015610676575f80fd5b50610318600d5481565b34801561068b575f80fd5b5061031861069a3660046122c7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156106cf575f80fd5b50610318600a5481565b3480156106e4575f80fd5b50610318600b5481565b6060600380546106fd906122f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610729906122f3565b80156107745780601f1061074b57610100808354040283529160200191610774565b820191905f5260205f20905b81548152906001019060200180831161075757829003601f168201915b5050505050905090565b5f61078a338484611491565b5060015b92915050565b6005546001600160a01b031633146107c75760405162461bcd60e51b81526004016107be9061232b565b60405180910390fd5b670de0b6b3a76400006103e86107dc60025490565b6107e7906001612374565b6107f1919061238b565b6107fb919061238b565b8110156108625760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b60648201526084016107be565b61087481670de0b6b3a7640000612374565b60095550565b5f6108868484846115b4565b6001600160a01b0384165f9081526001602090815260408083203384529091529020548281101561090a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107be565b6109178533858403611491565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161078a9185906109589086906123aa565b611491565b821580159061096b57508083145b610973575f80fd5b335f5b84811015610a49576109bb868683818110610993576109936123bd565b90506020020160208101906109a89190612149565b6007546001600160a01b03165f19611491565b5f8484838181106109ce576109ce6123bd565b905060200201351115610a3757610a37828787848181106109f1576109f16123bd565b9050602002016020810190610a069190612149565b868685818110610a1857610a186123bd565b90506020020135670de0b6b3a7640000610a329190612374565b6115b4565b80610a41816123d1565b915050610976565b505050505050565b6008546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610a9b576040519150601f19603f3d011682016040523d82523d5f602084013e610aa0565b606091505b50505050565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610aea5760405162461bcd60e51b81526004016107be9061232b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005545f906001600160a01b03163314610b5f5760405162461bcd60e51b81526004016107be9061232b565b50600c805460ff19169055600190565b6005546001600160a01b03163314610b995760405162461bcd60e51b81526004016107be9061232b565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6007546001600160a01b0316336001600160a01b031614610be2575f80fd5b610beb30610aa6565b8111158015610bf957505f81115b610c345760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b60448201526064016107be565b610c3d81611b6f565b50565b6005546001600160a01b03163314610c6a5760405162461bcd60e51b81526004016107be9061232b565b600c8054911515620100000262ff000019909216919091179055565b6060600480546106fd906122f3565b6005546001600160a01b03163314610cbf5760405162461bcd60e51b81526004016107be9061232b565b6006546001600160a01b0390811690831603610d435760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107be565b610d4d8282611d1d565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610dd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107be565b610ddf3385858403611491565b5060019392505050565b5f61078a3384846115b4565b6005546001600160a01b03163314610e1f5760405162461bcd60e51b81526004016107be9061232b565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ea55760405162461bcd60e51b81526004016107be9061232b565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f2d5760405162461bcd60e51b81526004016107be9061232b565b670de0b6b3a76400006103e8610f4260025490565b610f4d906005612374565b610f57919061238b565b610f61919061238b565b811015610fbc5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016107be565b610fce81670de0b6b3a7640000612374565b600b5550565b6005546001600160a01b03163314610ffe5760405162461bcd60e51b81526004016107be9061232b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107e91906123e9565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110d91906123e9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611157573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117b91906123e9565b600680546001600160a01b0319166001600160a01b039290921691821790556111a5906001610b6f565b6006546111bc906001600160a01b03166001611d1d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d71934306111f630610aa6565b5f8061120a6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611270573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112959190612404565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af1158015611308573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132c919061242f565b50600c805462ffff00191662010100179055565b6005545f906001600160a01b0316331461136c5760405162461bcd60e51b81526004016107be9061232b565b620186a061137960025490565b611384906001612374565b61138e919061238b565b8210156113fb5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016107be565b6103e861140760025490565b611412906005612374565b61141c919061238b565b8211156114885760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016107be565b50600a55600190565b6001600160a01b0383166114f35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107be565b6001600160a01b0382166115545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107be565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115da5760405162461bcd60e51b81526004016107be9061244a565b6001600160a01b0382166116005760405162461bcd60e51b81526004016107be9061248f565b805f036116175761161283835f611d70565b505050565b600c5460ff1615611966576005546001600160a01b0384811691161480159061164e57506005546001600160a01b03838116911614155b801561166257506001600160a01b03821615155b801561167957506001600160a01b03821661dead14155b801561168f5750600654600160a01b900460ff16155b1561196657600c54610100900460ff16611725576001600160a01b0383165f908152600f602052604090205460ff16806116e057506001600160a01b0382165f908152600f602052604090205460ff165b6117255760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107be565b6001600160a01b0383165f9081526011602052604090205460ff16801561176457506001600160a01b0382165f9081526010602052604090205460ff16155b15611838576009548111156117d95760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107be565b600b546117e583610aa6565b6117ef90836123aa565b11156118335760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107be565b611966565b6001600160a01b0382165f9081526011602052604090205460ff16801561187757506001600160a01b0383165f9081526010602052604090205460ff16155b156118ed576009548111156118335760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107be565b6001600160a01b0382165f9081526010602052604090205460ff1661196657600b5461191883610aa6565b61192290836123aa565b11156119665760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107be565b5f61197030610aa6565b600a549091508110801590819061198f5750600c5462010000900460ff165b80156119a55750600654600160a01b900460ff16155b80156119c957506001600160a01b0385165f9081526011602052604090205460ff16155b80156119ed57506001600160a01b0385165f908152600f602052604090205460ff16155b8015611a1157506001600160a01b0384165f908152600f602052604090205460ff16155b15611a3f576006805460ff60a01b1916600160a01b179055611a31611ec3565b6006805460ff60a01b191690555b6006546001600160a01b0386165f908152600f602052604090205460ff600160a01b909204821615911680611a8b57506001600160a01b0385165f908152600f602052604090205460ff165b15611a9357505f5b5f8115611b5b576001600160a01b0386165f9081526011602052604090205460ff1615611af357600754600e54611aec91606491611ae691611adf91906001600160a01b031631611f55565b8890611f9d565b9061201b565b9050611b3d565b6001600160a01b0387165f9081526011602052604090205460ff168015611b1b57505f600d54115b15611b3d57611b3a6064611ae6600d5488611f9d90919063ffffffff16565b90505b8015611b4e57611b4e873083611d70565b611b5881866124d2565b94505b611b66878787611d70565b50505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ba257611ba26123bd565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4291906123e9565b81600181518110611c5557611c556123bd565b60200260200101906001600160a01b031690816001600160a01b031681525050611ca0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611491565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611cf49085905f908690309042906004016124e5565b5f604051808303815f87803b158015611d0b575f80fd5b505af1158015610a49573d5f803e3d5ffd5b6001600160a01b0382165f81815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d965760405162461bcd60e51b81526004016107be9061244a565b6001600160a01b038216611dbc5760405162461bcd60e51b81526004016107be9061248f565b6001600160a01b0383165f9081526020819052604090205481811015611e335760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107be565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611e699084906123aa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb591815260200190565b60405180910390a350505050565b5f611ecd30610aa6565b90505f815f03611edb575050565b600a54611ee9906014612374565b821115611f0157600a54611efe906014612374565b91505b81611f0b81611b6f565b6008546040516001600160a01b039091169047905f81818185875af1925050503d805f8114610a49576040519150601f19603f3d011682016040523d82523d5f602084013e610a49565b5f611f9683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061205c565b9392505050565b5f825f03611fac57505f61078e565b5f611fb78385612374565b905082611fc4858361238b565b14611f965760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107be565b5f611f9683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612094565b5f818484111561207f5760405162461bcd60e51b81526004016107be91906120c0565b505f61208b84866124d2565b95945050505050565b5f81836120b45760405162461bcd60e51b81526004016107be91906120c0565b505f61208b848661238b565b5f6020808352835180828501525f5b818110156120eb578581018301518582016040015282016120cf565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c3d575f80fd5b5f8060408385031215612130575f80fd5b823561213b8161210b565b946020939093013593505050565b5f60208284031215612159575f80fd5b8135611f968161210b565b5f60208284031215612174575f80fd5b5035919050565b5f805f6060848603121561218d575f80fd5b83356121988161210b565b925060208401356121a88161210b565b929592945050506040919091013590565b5f8083601f8401126121c9575f80fd5b50813567ffffffffffffffff8111156121e0575f80fd5b6020830191508360208260051b85010111156121fa575f80fd5b9250929050565b5f805f8060408587031215612214575f80fd5b843567ffffffffffffffff8082111561222b575f80fd5b612237888389016121b9565b9096509450602087013591508082111561224f575f80fd5b5061225c878288016121b9565b95989497509550505050565b8015158114610c3d575f80fd5b5f8060408385031215612286575f80fd5b82356122918161210b565b915060208301356122a181612268565b809150509250929050565b5f602082840312156122bc575f80fd5b8135611f9681612268565b5f80604083850312156122d8575f80fd5b82356122e38161210b565b915060208301356122a18161210b565b600181811c9082168061230757607f821691505b60208210810361232557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761078e5761078e612360565b5f826123a557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561078e5761078e612360565b634e487b7160e01b5f52603260045260245ffd5b5f600182016123e2576123e2612360565b5060010190565b5f602082840312156123f9575f80fd5b8151611f968161210b565b5f805f60608486031215612416575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561243f575f80fd5b8151611f9681612268565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561078e5761078e612360565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156125335784516001600160a01b03168352938301939183019160010161250e565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c5edd1a9dade23b0cbf039f7c142f3d02960a31bc39c90e7acc3f4985bd6424c64736f6c63430008150033
Deployed Bytecode Sourcemap
8666:10096:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4354:169;;;;;;;;;;-1:-1:-1;4354:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4354:169:0;1023:187:1;9371:63:0;;;;;;;;;;-1:-1:-1;9371:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8741:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1657:32:1;;;1639:51;;1627:2;1612:18;8741:51:0;1467:229:1;3761:108:0;;;;;;;;;;-1:-1:-1;3849:12:0;;3761:108;;;1847:25:1;;;1835:2;1820:18;3761:108:0;1701:177:1;11656:240:0;;;;;;;;;;-1:-1:-1;11656:240:0;;;;;:::i;:::-;;:::i;:::-;;4531:458;;;;;;;;;;-1:-1:-1;4531:458:0;;;;;:::i;:::-;;:::i;8834:53::-;;;;;;;;;;;;8880:6;8834:53;;3660:93;;;;;;;;;;-1:-1:-1;3660:93:0;;3743:2;2879:36:1;;2867:2;2852:18;3660:93:0;2737:184:1;4997:215:0;;;;;;;;;;-1:-1:-1;4997:215:0;;;;;:::i;:::-;;:::i;8799:28::-;;;;;;;;;;-1:-1:-1;8799:28:0;;;;-1:-1:-1;;;;;8799:28:0;;;9113:33;;;;;;;;;;-1:-1:-1;9113:33:0;;;;;;;;13717:473;;;;;;;;;;-1:-1:-1;13717:473:0;;;;;:::i;:::-;;:::i;9271:32::-;;;;;;;;;;;;;;;;9193:31;;;;;;;;;;-1:-1:-1;9193:31:0;;;;;;;;;;;12902:143;;;;;;;;;;;;;:::i;3877:127::-;;;;;;;;;;-1:-1:-1;3877:127:0;;;;;:::i;:::-;;:::i;1975:148::-;;;;;;;;;;;;;:::i;11128:121::-;;;;;;;;;;;;;:::i;12133:144::-;;;;;;;;;;-1:-1:-1;12133:144:0;;;;;:::i;:::-;;:::i;12671:223::-;;;;;;;;;;-1:-1:-1;12671:223:0;;;;;:::i;:::-;;:::i;1761:79::-;;;;;;;;;;-1:-1:-1;1826:6:0;;-1:-1:-1;;;;;1826:6:0;1761:79;;12373:100;;;;;;;;;;-1:-1:-1;12373:100:0;;;;;:::i;:::-;;:::i;3548:104::-;;;;;;;;;;;;;:::i;13053:244::-;;;;;;;;;;-1:-1:-1;13053:244:0;;;;;:::i;:::-;;:::i;5220:413::-;;;;;;;;;;-1:-1:-1;5220:413:0;;;;;:::i;:::-;;:::i;4012:175::-;;;;;;;;;;-1:-1:-1;4012:175:0;;;;;:::i;:::-;;:::i;13501:208::-;;;;;;;;;;-1:-1:-1;13501:208:0;;;;;:::i;:::-;;:::i;9443:57::-;;;;;;;;;;-1:-1:-1;9443:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9153:33;;;;;;;;;;-1:-1:-1;9153:33:0;;;;;;;;;;;12481:182;;;;;;;;;;-1:-1:-1;12481:182:0;;;;;:::i;:::-;;:::i;11904:221::-;;;;;;;;;;-1:-1:-1;11904:221:0;;;;;:::i;:::-;;:::i;8998:35::-;;;;;;;;;;;;;;;;18170:589;;;:::i;11257:391::-;;;;;;;;;;-1:-1:-1;11257:391:0;;;;;:::i;:::-;;:::i;9233:31::-;;;;;;;;;;;;;;;;4195:151;;;;;;;;;;-1:-1:-1;4195:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4311:18:0;;;4284:7;4311:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4195:151;9040:33;;;;;;;;;;;;;;;;9080:24;;;;;;;;;;;;;;;;3440:100;3494:13;3527:5;3520:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:100;:::o;4354:169::-;4437:4;4454:39;273:10;4477:7;4486:6;4454:8;:39::i;:::-;-1:-1:-1;4511:4:0;4354:169;;;;;:::o;11656:240::-;1888:6;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;;;;;;;;;11779:4:::1;11771;11750:13;3849:12:::0;;;3761:108;11750:13:::1;:17;::::0;11766:1:::1;11750:17;:::i;:::-;11749:26;;;;:::i;:::-;11748:35;;;;:::i;:::-;11738:6;:45;;11730:105;;;::::0;-1:-1:-1;;;11730:105:0;;6700:2:1;11730:105:0::1;::::0;::::1;6682:21:1::0;6739:2;6719:18;;;6712:30;6778:34;6758:18;;;6751:62;-1:-1:-1;;;6829:18:1;;;6822:45;6884:19;;11730:105:0::1;6498:411:1::0;11730:105:0::1;11869:19;:6:::0;11879:8:::1;11869:19;:::i;:::-;11846:20;:42:::0;-1:-1:-1;11656:240:0:o;4531:458::-;4637:4;4654:36;4664:6;4672:9;4683:6;4654:9;:36::i;:::-;-1:-1:-1;;;;;4730:19:0;;4703:24;4730:19;;;:11;:19;;;;;;;;273:10;4730:33;;;;;;;;4782:26;;;;4774:79;;;;-1:-1:-1;;;4774:79:0;;7116:2:1;4774:79:0;;;7098:21:1;7155:2;7135:18;;;7128:30;7194:34;7174:18;;;7167:62;-1:-1:-1;;;7245:18:1;;;7238:38;7293:19;;4774:79:0;6914:404:1;4774:79:0;4889:57;4898:6;273:10;4939:6;4920:16;:25;4889:8;:57::i;:::-;-1:-1:-1;4977:4:0;;4531:458;-1:-1:-1;;;;4531:458:0:o;4997:215::-;273:10;5085:4;5134:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5134:34:0;;;;;;;;;;5085:4;;5102:80;;5125:7;;5134:47;;5171:10;;5134:47;:::i;:::-;5102:8;:80::i;13717:473::-;13820:20;;;;;:58;;-1:-1:-1;13844:34:0;;;13820:58;13812:67;;;;;;13905:10;13890:12;13928:255;13948:20;;;13928:255;;;13990:58;13999:9;;14009:1;13999:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14013:15;;-1:-1:-1;;;;;14013:15:0;-1:-1:-1;;13990:8:0;:58::i;:::-;14080:1;14067:7;;14075:1;14067:10;;;;;;;:::i;:::-;;;;;;;:14;14063:109;;;14102:54;14112:4;14118:9;;14128:1;14118:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14132:7;;14140:1;14132:10;;;;;;;:::i;:::-;;;;;;;14146:8;14132:23;;;;:::i;:::-;14102:9;:54::i;:::-;13970:3;;;;:::i;:::-;;;;13928:255;;;;13801:389;13717:473;;;;:::o;12902:143::-;12988:9;;12980:57;;12944:12;;-1:-1:-1;;;;;12988:9:0;;13011:21;;12944:12;12980:57;12944:12;12980:57;13011:21;12988:9;12980:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;12902:143:0:o;3877:127::-;-1:-1:-1;;;;;3978:18:0;3951:7;3978:18;;;;;;;;;;;;3877:127::o;1975:148::-;1888:6;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;2066:6:::1;::::0;2045:40:::1;::::0;2082:1:::1;::::0;-1:-1:-1;;;;;2066:6:0::1;::::0;2045:40:::1;::::0;2082:1;;2045:40:::1;2096:6;:19:::0;;-1:-1:-1;;;;;;2096:19:0::1;::::0;;1975:148::o;11128:121::-;1888:6;;11180:4;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;-1:-1:-1;11197:14:0::1;:22:::0;;-1:-1:-1;;11197:22:0::1;::::0;;;11128:121;:::o;12133:144::-;1888:6;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12223:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;12223:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12133:144::o;12671:223::-;12751:15;;-1:-1:-1;;;;;12751:15:0;273:10;-1:-1:-1;;;;;12735:31:0;;12727:40;;;;;;12796:24;12814:4;12796:9;:24::i;:::-;12786:6;:34;;:48;;;;;12833:1;12824:6;:10;12786:48;12778:73;;;;-1:-1:-1;;;12778:73:0;;8137:2:1;12778:73:0;;;8119:21:1;8176:2;8156:18;;;8149:30;-1:-1:-1;;;8195:18:1;;;8188:42;8247:18;;12778:73:0;7935:336:1;12778:73:0;12862:24;12879:6;12862:16;:24::i;:::-;12671:223;:::o;12373:100::-;1888:6;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;12444:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;12444:21:0;;::::1;::::0;;;::::1;::::0;;12373:100::o;3548:104::-;3604:13;3637:7;3630:14;;;;;:::i;13053:244::-;1888:6;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;13160:13:::1;::::0;-1:-1:-1;;;;;13160:13:0;;::::1;13152:21:::0;;::::1;::::0;13144:91:::1;;;::::0;-1:-1:-1;;;13144:91:0;;8478:2:1;13144:91:0::1;::::0;::::1;8460:21:1::0;8517:2;8497:18;;;8490:30;8556:34;8536:18;;;8529:62;8627:27;8607:18;;;8600:55;8672:19;;13144:91:0::1;8276:421:1::0;13144:91:0::1;13248:41;13277:4;13283:5;13248:28;:41::i;:::-;13053:244:::0;;:::o;5220:413::-;273:10;5313:4;5357:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5357:34:0;;;;;;;;;;5410:35;;;;5402:85;;;;-1:-1:-1;;;5402:85:0;;8904:2:1;5402:85:0;;;8886:21:1;8943:2;8923:18;;;8916:30;8982:34;8962:18;;;8955:62;-1:-1:-1;;;9033:18:1;;;9026:35;9078:19;;5402:85:0;8702:401:1;5402:85:0;5523:67;273:10;5546:7;5574:15;5555:16;:34;5523:8;:67::i;:::-;-1:-1:-1;5621:4:0;;5220:413;-1:-1:-1;;;5220:413:0:o;4012:175::-;4098:4;4115:42;273:10;4139:9;4150:6;4115:9;:42::i;13501:208::-;1888:6;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;13638:15:::1;::::0;13595:59:::1;::::0;-1:-1:-1;;;;;13638:15:0;;::::1;::::0;13595:59;::::1;::::0;::::1;::::0;13638:15:::1;::::0;13595:59:::1;13665:15;:36:::0;;-1:-1:-1;;;;;;13665:36:0::1;-1:-1:-1::0;;;;;13665:36:0;;;::::1;::::0;;;::::1;::::0;;13501:208::o;12481:182::-;1888:6;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12566:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;12566:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12621:34;;1163:41:1;;;12621:34:0::1;::::0;1136:18:1;12621:34:0::1;;;;;;;12481:182:::0;;:::o;11904:221::-;1888:6;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;12030:4:::1;12022;12001:13;3849:12:::0;;;3761:108;12001:13:::1;:17;::::0;12017:1:::1;12001:17;:::i;:::-;12000:26;;;;:::i;:::-;11999:35;;;;:::i;:::-;11989:6;:45;;11981:94;;;::::0;-1:-1:-1;;;11981:94:0;;9310:2:1;11981:94:0::1;::::0;::::1;9292:21:1::0;9349:2;9329:18;;;9322:30;9388:34;9368:18;;;9361:62;-1:-1:-1;;;9439:18:1;;;9432:34;9483:19;;11981:94:0::1;9108:400:1::0;11981:94:0::1;12098:19;:6:::0;12108:8:::1;12098:19;:::i;:::-;12086:9;:31:::0;-1:-1:-1;11904:221:0:o;18170:589::-;1888:6;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;18266:15:::1;-1:-1:-1::0;;;;;18266:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18248:55:0::1;;18312:4;18319:15;-1:-1:-1::0;;;;;18319:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18248:94;::::0;-1:-1:-1;;;;;;18248:94:0::1;::::0;;;;;;-1:-1:-1;;;;;9999:15:1;;;18248:94:0::1;::::0;::::1;9981:34:1::0;10051:15;;10031:18;;;10024:43;9916:18;;18248:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18232:13;:110:::0;;-1:-1:-1;;;;;;18232:110:0::1;-1:-1:-1::0;;;;;18232:110:0;;;::::1;::::0;;::::1;::::0;;18353:55:::1;::::0;-1:-1:-1;18353:25:0::1;:55::i;:::-;18456:13;::::0;18419:58:::1;::::0;-1:-1:-1;;;;;18456:13:0::1;::::0;18419:28:::1;:58::i;:::-;18490:15;-1:-1:-1::0;;;;;18490:31:0::1;;18529:9;18548:4;18554:24;18572:4;18554:9;:24::i;:::-;18579:1;18581::::0;18583:7:::1;1826:6:::0;;-1:-1:-1;;;;;1826:6:0;;1761:79;18583:7:::1;18490:117;::::0;::::1;::::0;;;-1:-1:-1;;;;;;18490:117:0;;;-1:-1:-1;;;;;10437:15:1;;;18490:117:0::1;::::0;::::1;10419:34:1::0;10469:18;;;10462:34;;;;10512:18;;;10505:34;;;;10555:18;;;10548:34;10619:15;;;10598:19;;;10591:44;18591:15:0::1;10651:19:1::0;;;10644:35;10353:19;;18490:117:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;18625:13:0::1;::::0;18618:71:::1;::::0;-1:-1:-1;;;18618:71:0;;-1:-1:-1;;;;;18656:15:0::1;11193:32:1::0;;18618:71:0::1;::::0;::::1;11175:51:1::0;-1:-1:-1;;11242:18:1;;;11235:34;18625:13:0;;::::1;::::0;-1:-1:-1;18618:29:0::1;::::0;11148:18:1;;18618:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18702:13:0::1;:20:::0;;-1:-1:-1;;18733:18:0;;;;;18170:589::o;11257:391::-;1888:6;;11338:4;;-1:-1:-1;;;;;1888:6:0;273:10;1888:22;1880:67;;;;-1:-1:-1;;;1880:67:0;;;;;;;:::i;:::-;11398:6:::1;11377:13;3849:12:::0;;;3761:108;11377:13:::1;:17;::::0;11393:1:::1;11377:17;:::i;:::-;11376:28;;;;:::i;:::-;11363:9;:41;;11355:107;;;::::0;-1:-1:-1;;;11355:107:0;;11732:2:1;11355:107:0::1;::::0;::::1;11714:21:1::0;11771:2;11751:18;;;11744:30;11810:34;11790:18;;;11783:62;-1:-1:-1;;;11861:18:1;;;11854:51;11922:19;;11355:107:0::1;11530:417:1::0;11355:107:0::1;11516:4;11495:13;3849:12:::0;;;3761:108;11495:13:::1;:17;::::0;11511:1:::1;11495:17;:::i;:::-;11494:26;;;;:::i;:::-;11481:9;:39;;11473:104;;;::::0;-1:-1:-1;;;11473:104:0;;12154:2:1;11473:104:0::1;::::0;::::1;12136:21:1::0;12193:2;12173:18;;;12166:30;12232:34;12212:18;;;12205:62;-1:-1:-1;;;12283:18:1;;;12276:50;12343:19;;11473:104:0::1;11952:416:1::0;11473:104:0::1;-1:-1:-1::0;11588:18:0::1;:30:::0;11636:4:::1;::::0;11257:391::o;7354:346::-;-1:-1:-1;;;;;7456:19:0;;7448:68;;;;-1:-1:-1;;;7448:68:0;;12575:2:1;7448:68:0;;;12557:21:1;12614:2;12594:18;;;12587:30;12653:34;12633:18;;;12626:62;-1:-1:-1;;;12704:18:1;;;12697:34;12748:19;;7448:68:0;12373:400:1;7448:68:0;-1:-1:-1;;;;;7535:21:0;;7527:68;;;;-1:-1:-1;;;7527:68:0;;12980:2:1;7527:68:0;;;12962:21:1;13019:2;12999:18;;;12992:30;13058:34;13038:18;;;13031:62;-1:-1:-1;;;13109:18:1;;;13102:32;13151:19;;7527:68:0;12778:398:1;7527:68:0;-1:-1:-1;;;;;7608:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7660:32;;1847:25:1;;;7660:32:0;;1820:18:1;7660:32:0;;;;;;;7354:346;;;:::o;14198:2801::-;-1:-1:-1;;;;;14296:18:0;;14288:68;;;;-1:-1:-1;;;14288:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14375:16:0;;14367:64;;;;-1:-1:-1;;;14367:64:0;;;;;;;:::i;:::-;14448:6;14458:1;14448:11;14444:93;;14476:28;14492:4;14498:2;14502:1;14476:15;:28::i;:::-;14198:2801;;;:::o;14444:93::-;14553:14;;;;14549:1107;;;1826:6;;-1:-1:-1;;;;;14588:15:0;;;1826:6;;14588:15;;;;:32;;-1:-1:-1;1826:6:0;;-1:-1:-1;;;;;14607:13:0;;;1826:6;;14607:13;;14588:32;:52;;;;-1:-1:-1;;;;;;14624:16:0;;;;14588:52;:77;;;;-1:-1:-1;;;;;;14644:21:0;;14658:6;14644:21;;14588:77;:90;;;;-1:-1:-1;14670:8:0;;-1:-1:-1;;;14670:8:0;;;;14669:9;14588:90;14584:1061;;;14704:13;;;;;;;14699:150;;-1:-1:-1;;;;;14750:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;14779:23:0;;;;;;:19;:23;;;;;;;;14750:52;14742:87;;;;-1:-1:-1;;;14742:87:0;;14193:2:1;14742:87:0;;;14175:21:1;14232:2;14212:18;;;14205:30;-1:-1:-1;;;14251:18:1;;;14244:52;14313:18;;14742:87:0;13991:346:1;14742:87:0;-1:-1:-1;;;;;14901:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;14937:35:0;;;;;;:31;:35;;;;;;;;14936:36;14901:71;14897:733;;;15015:20;;15005:6;:30;;14997:96;;;;-1:-1:-1;;;14997:96:0;;14544:2:1;14997:96:0;;;14526:21:1;14583:2;14563:18;;;14556:30;14622:34;14602:18;;;14595:62;-1:-1:-1;;;14673:18:1;;;14666:51;14734:19;;14997:96:0;14342:417:1;14997:96:0;15150:9;;15133:13;15143:2;15133:9;:13::i;:::-;15124:22;;:6;:22;:::i;:::-;:35;;15116:67;;;;-1:-1:-1;;;15116:67:0;;14966:2:1;15116:67:0;;;14948:21:1;15005:2;14985:18;;;14978:30;-1:-1:-1;;;15024:18:1;;;15017:49;15083:18;;15116:67:0;14764:343:1;15116:67:0;14897:733;;;-1:-1:-1;;;;;15259:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;15293:37:0;;;;;;:31;:37;;;;;;;;15292:38;15259:71;15255:375;;;15373:20;;15363:6;:30;;15355:97;;;;-1:-1:-1;;;15355:97:0;;15314:2:1;15355:97:0;;;15296:21:1;15353:2;15333:18;;;15326:30;15392:34;15372:18;;;15365:62;-1:-1:-1;;;15443:18:1;;;15436:52;15505:19;;15355:97:0;15112:418:1;15255:375:0;-1:-1:-1;;;;;15483:35:0;;;;;;:31;:35;;;;;;;;15478:152;;15577:9;;15560:13;15570:2;15560:9;:13::i;:::-;15551:22;;:6;:22;:::i;:::-;:35;;15543:67;;;;-1:-1:-1;;;15543:67:0;;14966:2:1;15543:67:0;;;14948:21:1;15005:2;14985:18;;;14978:30;-1:-1:-1;;;15024:18:1;;;15017:49;15083:18;;15543:67:0;14764:343:1;15543:67:0;15668:28;15699:24;15717:4;15699:9;:24::i;:::-;15775:18;;15668:55;;-1:-1:-1;15751:42:0;;;;;;;15824:22;;-1:-1:-1;15835:11:0;;;;;;;15824:22;:35;;;;-1:-1:-1;15851:8:0;;-1:-1:-1;;;15851:8:0;;;;15850:9;15824:35;:71;;;;-1:-1:-1;;;;;;15864:31:0;;;;;;:25;:31;;;;;;;;15863:32;15824:71;:101;;;;-1:-1:-1;;;;;;15900:25:0;;;;;;:19;:25;;;;;;;;15899:26;15824:101;:146;;;;-1:-1:-1;;;;;;15947:23:0;;;;;;:19;:23;;;;;;;;15946:24;15824:146;15806:278;;;15997:8;:15;;-1:-1:-1;;;;15997:15:0;-1:-1:-1;;;15997:15:0;;;16029:10;:8;:10::i;:::-;16056:8;:16;;-1:-1:-1;;;;16056:16:0;;;15806:278;16112:8;;-1:-1:-1;;;;;16222:25:0;;16096:12;16222:25;;;:19;:25;;;;;;16112:8;-1:-1:-1;;;16112:8:0;;;;;16111:9;;16222:25;;:52;;-1:-1:-1;;;;;;16251:23:0;;;;;;:19;:23;;;;;;;;16222:52;16218:100;;;-1:-1:-1;16301:5:0;16218:100;16330:12;16435:7;16431:515;;;-1:-1:-1;;;;;16487:29:0;;;;;;:25;:29;;;;;;;;16483:314;;;16573:15;;16555:13;;16544:63;;16603:3;;16544:54;;16555:42;;:13;-1:-1:-1;;;;;16573:15:0;:23;16555:17;:42::i;:::-;16544:6;;:10;:54::i;:::-;:58;;:63::i;:::-;16537:70;;16483:314;;;-1:-1:-1;;;;;16669:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;16719:1;16704:12;;:16;16669:51;16665:132;;;16748:33;16777:3;16748:24;16759:12;;16748:6;:10;;:24;;;;:::i;:33::-;16741:40;;16665:132;16817:8;;16813:91;;16846:42;16862:4;16876;16883;16846:15;:42::i;:::-;16920:14;16930:4;16920:14;;:::i;:::-;;;16431:515;16958:33;16974:4;16980:2;16984:6;16958:15;:33::i;:::-;14277:2722;;;;14198:2801;;;:::o;17007:589::-;17157:16;;;17171:1;17157:16;;;;;;;;17133:21;;17157:16;;;;;;;;;;-1:-1:-1;17157:16:0;17133:40;;17202:4;17184;17189:1;17184:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;17184:23:0;;;-1:-1:-1;;;;;17184:23:0;;;;;17228:15;-1:-1:-1;;;;;17228:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17218:4;17223:1;17218:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;17218:32:0;;;-1:-1:-1;;;;;17218:32:0;;;;;17263:62;17280:4;17295:15;17313:11;17263:8;:62::i;:::-;17364:224;;-1:-1:-1;;;17364:224:0;;-1:-1:-1;;;;;17364:15:0;:66;;;;:224;;17445:11;;17471:1;;17515:4;;17542;;17562:15;;17364:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13305:188;-1:-1:-1;;;;;13388:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;13388:39:0;;;;;;;;;;13445:40;;13388:39;;:31;13445:40;;;13305:188;;:::o;5641:699::-;-1:-1:-1;;;;;5747:20:0;;5739:70;;;;-1:-1:-1;;;5739:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5828:23:0;;5820:71;;;;-1:-1:-1;;;5820:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5988:17:0;;5964:21;5988:17;;;;;;;;;;;6024:23;;;;6016:74;;;;-1:-1:-1;;;6016:74:0;;16987:2:1;6016:74:0;;;16969:21:1;17026:2;17006:18;;;16999:30;17065:34;17045:18;;;17038:62;-1:-1:-1;;;17116:18:1;;;17109:36;17162:19;;6016:74:0;16785:402:1;6016:74:0;-1:-1:-1;;;;;6126:17:0;;;:9;:17;;;;;;;;;;;6146:22;;;6126:42;;6190:20;;;;;;;;:30;;6162:6;;6126:9;6190:30;;6162:6;;6190:30;:::i;:::-;;;;;;;;6255:9;-1:-1:-1;;;;;6238:35:0;6247:6;-1:-1:-1;;;;;6238:35:0;;6266:6;6238:35;;;;1847:25:1;;1835:2;1820:18;;1701:177;6238:35:0;;;;;;;;5728:612;5641:699;;;:::o;17604:558::-;17643:23;17669:24;17687:4;17669:9;:24::i;:::-;17643:50;;17704:12;17733:15;17752:1;17733:20;17729:59;;17770:7;;17604:558::o;17729:59::-;17822:18;;:23;;17843:2;17822:23;:::i;:::-;17804:15;:41;17800:115;;;17880:18;;:23;;17901:2;17880:23;:::i;:::-;17862:41;;17800:115;18007:15;18035:36;18007:15;18035:16;:36::i;:::-;18105:9;;18097:57;;-1:-1:-1;;;;;18105:9:0;;;;18128:21;;18097:57;;;;18128:21;18105:9;18097:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;509:136;567:7;594:43;598:1;601;594:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;587:50;509:136;-1:-1:-1;;;509:136:0:o;851:246::-;909:7;933:1;938;933:6;929:47;;-1:-1:-1;963:1:0;956:8;;929:47;986:9;998:5;1002:1;998;:5;:::i;:::-;986:17;-1:-1:-1;1031:1:0;1022:5;1026:1;986:17;1022:5;:::i;:::-;:10;1014:56;;;;-1:-1:-1;;;1014:56:0;;17394:2:1;1014:56:0;;;17376:21:1;17433:2;17413:18;;;17406:30;17472:34;17452:18;;;17445:62;-1:-1:-1;;;17523:18:1;;;17516:31;17564:19;;1014:56:0;17192:397:1;1105:132:0;1163:7;1190:39;1194:1;1197;1190:39;;;;;;;;;;;;;;;;;:3;:39::i;653:190::-;739:7;775:12;767:6;;;;759:29;;;;-1:-1:-1;;;759:29:0;;;;;;;;:::i;:::-;-1:-1:-1;799:9:0;811:5;815:1;811;:5;:::i;:::-;799:17;653:190;-1:-1:-1;;;;;653:190:0:o;1245:189::-;1331:7;1366:12;1359:5;1351:28;;;;-1:-1:-1;;;1351:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1390:9:0;1402:5;1406:1;1402;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1883:180::-;1942:6;1995:2;1983:9;1974:7;1970:23;1966:32;1963:52;;;2011:1;2008;2001:12;1963:52;-1:-1:-1;2034:23:1;;1883:180;-1:-1:-1;1883:180:1:o;2068:456::-;2145:6;2153;2161;2214:2;2202:9;2193:7;2189:23;2185:32;2182:52;;;2230:1;2227;2220:12;2182:52;2269:9;2256:23;2288:31;2313:5;2288:31;:::i;:::-;2338:5;-1:-1:-1;2395:2:1;2380:18;;2367:32;2408:33;2367:32;2408:33;:::i;:::-;2068:456;;2460:7;;-1:-1:-1;;;2514:2:1;2499:18;;;;2486:32;;2068:456::o;2926:367::-;2989:8;2999:6;3053:3;3046:4;3038:6;3034:17;3030:27;3020:55;;3071:1;3068;3061:12;3020:55;-1:-1:-1;3094:20:1;;3137:18;3126:30;;3123:50;;;3169:1;3166;3159:12;3123:50;3206:4;3198:6;3194:17;3182:29;;3266:3;3259:4;3249:6;3246:1;3242:14;3234:6;3230:27;3226:38;3223:47;3220:67;;;3283:1;3280;3273:12;3220:67;2926:367;;;;;:::o;3298:773::-;3420:6;3428;3436;3444;3497:2;3485:9;3476:7;3472:23;3468:32;3465:52;;;3513:1;3510;3503:12;3465:52;3553:9;3540:23;3582:18;3623:2;3615:6;3612:14;3609:34;;;3639:1;3636;3629:12;3609:34;3678:70;3740:7;3731:6;3720:9;3716:22;3678:70;:::i;:::-;3767:8;;-1:-1:-1;3652:96:1;-1:-1:-1;3855:2:1;3840:18;;3827:32;;-1:-1:-1;3871:16:1;;;3868:36;;;3900:1;3897;3890:12;3868:36;;3939:72;4003:7;3992:8;3981:9;3977:24;3939:72;:::i;:::-;3298:773;;;;-1:-1:-1;4030:8:1;-1:-1:-1;;;;3298:773:1:o;4076:118::-;4162:5;4155:13;4148:21;4141:5;4138:32;4128:60;;4184:1;4181;4174:12;4199:382;4264:6;4272;4325:2;4313:9;4304:7;4300:23;4296:32;4293:52;;;4341:1;4338;4331:12;4293:52;4380:9;4367:23;4399:31;4424:5;4399:31;:::i;:::-;4449:5;-1:-1:-1;4506:2:1;4491:18;;4478:32;4519:30;4478:32;4519:30;:::i;:::-;4568:7;4558:17;;;4199:382;;;;;:::o;4586:241::-;4642:6;4695:2;4683:9;4674:7;4670:23;4666:32;4663:52;;;4711:1;4708;4701:12;4663:52;4750:9;4737:23;4769:28;4791:5;4769:28;:::i;4832:388::-;4900:6;4908;4961:2;4949:9;4940:7;4936:23;4932:32;4929:52;;;4977:1;4974;4967:12;4929:52;5016:9;5003:23;5035:31;5060:5;5035:31;:::i;:::-;5085:5;-1:-1:-1;5142:2:1;5127:18;;5114:32;5155:33;5114:32;5155:33;:::i;5225:380::-;5304:1;5300:12;;;;5347;;;5368:61;;5422:4;5414:6;5410:17;5400:27;;5368:61;5475:2;5467:6;5464:14;5444:18;5441:38;5438:161;;5521:10;5516:3;5512:20;5509:1;5502:31;5556:4;5553:1;5546:15;5584:4;5581:1;5574:15;5438:161;;5225:380;;;:::o;5610:356::-;5812:2;5794:21;;;5831:18;;;5824:30;5890:34;5885:2;5870:18;;5863:62;5957:2;5942:18;;5610:356::o;5971:127::-;6032:10;6027:3;6023:20;6020:1;6013:31;6063:4;6060:1;6053:15;6087:4;6084:1;6077:15;6103:168;6176:9;;;6207;;6224:15;;;6218:22;;6204:37;6194:71;;6245:18;;:::i;6276:217::-;6316:1;6342;6332:132;;6386:10;6381:3;6377:20;6374:1;6367:31;6421:4;6418:1;6411:15;6449:4;6446:1;6439:15;6332:132;-1:-1:-1;6478:9:1;;6276:217::o;7323:125::-;7388:9;;;7409:10;;;7406:36;;;7422:18;;:::i;7453:127::-;7514:10;7509:3;7505:20;7502:1;7495:31;7545:4;7542:1;7535:15;7569:4;7566:1;7559:15;7585:135;7624:3;7645:17;;;7642:43;;7665:18;;:::i;:::-;-1:-1:-1;7712:1:1;7701:13;;7585:135::o;9513:251::-;9583:6;9636:2;9624:9;9615:7;9611:23;9607:32;9604:52;;;9652:1;9649;9642:12;9604:52;9684:9;9678:16;9703:31;9728:5;9703:31;:::i;10690:306::-;10778:6;10786;10794;10847:2;10835:9;10826:7;10822:23;10818:32;10815:52;;;10863:1;10860;10853:12;10815:52;10892:9;10886:16;10876:26;;10942:2;10931:9;10927:18;10921:25;10911:35;;10986:2;10975:9;10971:18;10965:25;10955:35;;10690:306;;;;;:::o;11280:245::-;11347:6;11400:2;11388:9;11379:7;11375:23;11371:32;11368:52;;;11416:1;11413;11406:12;11368:52;11448:9;11442:16;11467:28;11489:5;11467:28;:::i;13181:401::-;13383:2;13365:21;;;13422:2;13402:18;;;13395:30;13461:34;13456:2;13441:18;;13434:62;-1:-1:-1;;;13527:2:1;13512:18;;13505:35;13572:3;13557:19;;13181:401::o;13587:399::-;13789:2;13771:21;;;13828:2;13808:18;;;13801:30;13867:34;13862:2;13847:18;;13840:62;-1:-1:-1;;;13933:2:1;13918:18;;13911:33;13976:3;13961:19;;13587:399::o;15535:128::-;15602:9;;;15623:11;;;15620:37;;;15637:18;;:::i;15800:980::-;16062:4;16110:3;16099:9;16095:19;16141:6;16130:9;16123:25;16167:2;16205:6;16200:2;16189:9;16185:18;16178:34;16248:3;16243:2;16232:9;16228:18;16221:31;16272:6;16307;16301:13;16338:6;16330;16323:22;16376:3;16365:9;16361:19;16354:26;;16415:2;16407:6;16403:15;16389:29;;16436:1;16446:195;16460:6;16457:1;16454:13;16446:195;;;16525:13;;-1:-1:-1;;;;;16521:39:1;16509:52;;16616:15;;;;16581:12;;;;16557:1;16475:9;16446:195;;;-1:-1:-1;;;;;;;16697:32:1;;;;16692:2;16677:18;;16670:60;-1:-1:-1;;;16761:3:1;16746:19;16739:35;16658:3;15800:980;-1:-1:-1;;;15800:980:1:o
Swarm Source
ipfs://c5edd1a9dade23b0cbf039f7c142f3d02960a31bc39c90e7acc3f4985bd6424c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.