Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 188 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19059921 | 223 days ago | IN | 0 ETH | 0.00054454 | ||||
Approve | 18041359 | 365 days ago | IN | 0 ETH | 0.00064514 | ||||
Approve | 17015186 | 510 days ago | IN | 0 ETH | 0.00055973 | ||||
Approve | 16962787 | 517 days ago | IN | 0 ETH | 0.0005037 | ||||
Approve | 15762582 | 685 days ago | IN | 0 ETH | 0.00077921 | ||||
Approve | 15755550 | 686 days ago | IN | 0 ETH | 0.00069463 | ||||
Approve | 15754723 | 686 days ago | IN | 0 ETH | 0.00085641 | ||||
Approve | 15748178 | 687 days ago | IN | 0 ETH | 0.00080895 | ||||
Approve | 15744691 | 688 days ago | IN | 0 ETH | 0.00074516 | ||||
Approve | 15743921 | 688 days ago | IN | 0 ETH | 0.00074231 | ||||
Approve | 15743845 | 688 days ago | IN | 0 ETH | 0.00061759 | ||||
Approve | 15743813 | 688 days ago | IN | 0 ETH | 0.00059983 | ||||
Approve | 15742992 | 688 days ago | IN | 0 ETH | 0.00054745 | ||||
Approve | 15742825 | 688 days ago | IN | 0 ETH | 0.00077893 | ||||
Approve | 15742526 | 688 days ago | IN | 0 ETH | 0.00053418 | ||||
Approve | 15742137 | 688 days ago | IN | 0 ETH | 0.00048809 | ||||
Approve | 15742137 | 688 days ago | IN | 0 ETH | 0.00048809 | ||||
Approve | 15742136 | 688 days ago | IN | 0 ETH | 0.00084875 | ||||
Approve | 15741964 | 688 days ago | IN | 0 ETH | 0.00067523 | ||||
Approve | 15741797 | 688 days ago | IN | 0 ETH | 0.0008119 | ||||
Approve | 15741698 | 688 days ago | IN | 0 ETH | 0.00091569 | ||||
Approve | 15741678 | 688 days ago | IN | 0 ETH | 0.00152151 | ||||
Approve | 15741667 | 688 days ago | IN | 0 ETH | 0.00095769 | ||||
Approve | 15741553 | 688 days ago | IN | 0 ETH | 0.00124414 | ||||
Approve | 15741522 | 688 days ago | IN | 0 ETH | 0.00145345 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20651080 | 10 hrs ago | 0.00046761 ETH | ||||
20651080 | 10 hrs ago | 0.00046761 ETH | ||||
19059922 | 223 days ago | 0.00051399 ETH | ||||
19059922 | 223 days ago | 0.00051399 ETH | ||||
15861296 | 671 days ago | 0.00053981 ETH | ||||
15861296 | 671 days ago | 0.00053981 ETH | ||||
15793619 | 681 days ago | 0.00055523 ETH | ||||
15793619 | 681 days ago | 0.00055523 ETH | ||||
15793106 | 681 days ago | 0.00057777 ETH | ||||
15793106 | 681 days ago | 0.00057777 ETH | ||||
15787243 | 682 days ago | 0.00058777 ETH | ||||
15787243 | 682 days ago | 0.00058777 ETH | ||||
15762590 | 685 days ago | 0.00059318 ETH | ||||
15762590 | 685 days ago | 0.00059318 ETH | ||||
15756356 | 686 days ago | 0.00062929 ETH | ||||
15756356 | 686 days ago | 0.00062929 ETH | ||||
15755553 | 686 days ago | 0.00065521 ETH | ||||
15755553 | 686 days ago | 0.00065521 ETH | ||||
15754888 | 686 days ago | 0.00066302 ETH | ||||
15754888 | 686 days ago | 0.00066302 ETH | ||||
15748588 | 687 days ago | 0.00069186 ETH | ||||
15748588 | 687 days ago | 0.00069186 ETH | ||||
15748186 | 687 days ago | 0.00071386 ETH | ||||
15748186 | 687 days ago | 0.00071386 ETH | ||||
15745466 | 687 days ago | 0.00076935 ETH |
Loading...
Loading
Contract Name:
PoolofWealth
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-13 */ /** When money realizes that it is in good hands, it wants to stay and multiply in those hands. Let's start the Experiment. I'm not writing a medium. But: A system that utilizes smart liquidity is superior. */ // SPDX-License-Identifier: Unlicensed /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } pragma solidity 0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ 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; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ 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); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _createInitialSupply(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); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } contract PoolofWealth is ERC20, Ownable { IUniswapV2Router02 public uniswapV2Router; address public immutable uniswapV2Pair; uint256 public liquidityFee = 400; // 4% uint256 public devFee = 0; // 0% uint256 public burnFee = 0; // 0% uint256 public maxTransactionAmount = 30000000 * (10**18); uint256 public swapTokensAtAmount = 18000000 * (10**18); uint256 public maxWalletToken = 30000000 * (10**18); address payable private devWallet = payable(0x7De9266C5262135C02c11cF1D17a67e31B5A1e04); address public deadWallet = 0x000000000000000000000000000000000000dEaD; // exlcude from fees mapping (address => bool) private _isExcludedFromFees; bool private inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapEthForTokens(uint256 amountIn, address[] path); event SwapAndLiquify(uint256 tokensIntoLiqudity, uint256 ethReceived); event ExcludeFromFees(address indexed account, bool isExcluded); event MaxWalletAmountUpdated(uint256 prevValue, uint256 newValue); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() ERC20("Pool of Wealth", "PoW") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(devWallet, true); excludeFromFees(address(this), true); /* internal function that is only called here, and CANNOT be called ever again */ _createInitialSupply(owner(), 1900000000 * (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(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){ require(amount <= maxTransactionAmount, "amount exceeds the maxSellTransactionAmount."); } if (from==uniswapV2Pair && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { uint256 contractBalanceRecepient = balanceOf(to); require(contractBalanceRecepient + amount <= maxWalletToken, "Exceeds maximum wallet token amount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= swapTokensAtAmount; if(overMinTokenBalance && !inSwapAndLiquify && to==uniswapV2Pair && swapAndLiquifyEnabled) { contractTokenBalance = swapTokensAtAmount; swapAndLiquify(contractTokenBalance); } // if any account belongs to _isExcludedFromFee account then remove the fee if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to] &&(from==uniswapV2Pair || to==uniswapV2Pair)) { uint256 swapableFees = amount*(devFee+liquidityFee)/10000; uint256 burnShare = amount*burnFee/10000; if(swapableFees > 0) { super._transfer(from, address(this), swapableFees); } if(burnShare > 0) { super._transfer(from, deadWallet, burnShare); } amount = amount-(swapableFees+burnShare); } super._transfer(from, to, amount); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 liquidityTokens = contractTokenBalance*liquidityFee/10000; uint256 devTokens = contractTokenBalance*devFee/10000; if(liquidityTokens > 0) { // split the contract balance into halves uint256 half = liquidityTokens/2; uint256 otherHalf = liquidityTokens-half; // capture the contract's current ETH balance. uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // how much ETH did we just swap into? uint256 newBalance = address(this).balance-initialBalance; // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } if(devTokens > 0 ) { swapTokensForEth(devTokens); devWallet.transfer(address(this).balance); } } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } 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(); if(allowance(address(this), address(uniswapV2Router)) < tokenAmount) { _approve(address(this), address(uniswapV2Router), ~uint256(0)); } // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } receive() external payable { } function updateFees(uint256 _liqFee, uint256 _devFee, uint256 _burnFee) public onlyOwner() { require(_liqFee+_devFee+_burnFee <= 1000, "tax too high"); liquidityFee = _liqFee; devFee = _devFee; burnFee = _burnFee; } function setMaxTransactionAmount(uint256 _maxTxAmount) public onlyOwner { maxTransactionAmount = _maxTxAmount; require(maxTransactionAmount >= totalSupply()/400, "value too low"); } function setMaxWalletToken(uint256 _newValue) external onlyOwner { uint256 prevValue = maxWalletToken; maxWalletToken = _newValue; require(maxWalletToken >= totalSupply()/400, "value too low"); emit MaxWalletAmountUpdated(prevValue, _newValue); } function updateDevWallet(address payable _devWallet) public onlyOwner { devWallet = _devWallet; } function excludeFromFees(address account, bool excluded) public onlyOwner { require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function SetSwapTokensAtAmount(uint256 newLimit) external onlyOwner { swapTokensAtAmount = newLimit; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } }
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":false,"internalType":"uint256","name":"prevValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxWalletAmountUpdated","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":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapEthForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"SetSwapTokensAtAmount","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","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":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletToken","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newValue","type":"uint256"}],"name":"setMaxWalletToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":[{"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":"address payable","name":"_devWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liqFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052610190600755600060085560006009556a18d0bf423c03d8de000000600a556a0ee3a5f48a68b552000000600b556a18d0bf423c03d8de000000600c55737de9266c5262135c02c11cf1d17a67e31b5a1e04600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060016101000a81548160ff0219169083151502179055503480156200010157600080fd5b506040518060400160405280600e81526020017f506f6f6c206f66205765616c74680000000000000000000000000000000000008152506040518060400160405280600381526020017f506f57000000000000000000000000000000000000000000000000000000000081525081600390816200017f919062000b0d565b50806004908162000191919062000b0d565b505050620001b4620001a86200044a60201b60201c565b6200045260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000241919062000c5e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cf919062000c5e565b6040518363ffffffff1660e01b8152600401620002ee92919062000ca1565b6020604051808303816000875af11580156200030e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000334919062000c5e565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620003cd620003bf6200051860201b60201c565b60016200054260201b60201c565b62000402600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200054260201b60201c565b620004153060016200054260201b60201c565b62000442620004296200051860201b60201c565b6b0623a4a662d8f3a6ec0000006200071160201b60201c565b505062000f2d565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005526200044a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005786200051860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c89062000d2f565b60405180910390fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150362000666576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200065d9062000dc7565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000705919062000e06565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000783576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077a9062000e73565b60405180910390fd5b62000797600083836200088960201b60201c565b8060026000828254620007ab919062000ec4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000802919062000ec4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000869919062000f10565b60405180910390a362000885600083836200088e60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200091557607f821691505b6020821081036200092b576200092a620008cd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000956565b620009a1868362000956565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009ee620009e8620009e284620009b9565b620009c3565b620009b9565b9050919050565b6000819050919050565b62000a0a83620009cd565b62000a2262000a1982620009f5565b84845462000963565b825550505050565b600090565b62000a3962000a2a565b62000a46818484620009ff565b505050565b5b8181101562000a6e5762000a6260008262000a2f565b60018101905062000a4c565b5050565b601f82111562000abd5762000a878162000931565b62000a928462000946565b8101602085101562000aa2578190505b62000aba62000ab18562000946565b83018262000a4b565b50505b505050565b600082821c905092915050565b600062000ae26000198460080262000ac2565b1980831691505092915050565b600062000afd838362000acf565b9150826002028217905092915050565b62000b188262000893565b67ffffffffffffffff81111562000b345762000b336200089e565b5b62000b408254620008fc565b62000b4d82828562000a72565b600060209050601f83116001811462000b85576000841562000b70578287015190505b62000b7c858262000aef565b86555062000bec565b601f19841662000b958662000931565b60005b8281101562000bbf5784890151825560018201915060208501945060208101905062000b98565b8683101562000bdf578489015162000bdb601f89168262000acf565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c268262000bf9565b9050919050565b62000c388162000c19565b811462000c4457600080fd5b50565b60008151905062000c588162000c2d565b92915050565b60006020828403121562000c775762000c7662000bf4565b5b600062000c878482850162000c47565b91505092915050565b62000c9b8162000c19565b82525050565b600060408201905062000cb8600083018562000c90565b62000cc7602083018462000c90565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d1760208362000cce565b915062000d248262000cdf565b602082019050919050565b6000602082019050818103600083015262000d4a8162000d08565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b600062000daf602a8362000cce565b915062000dbc8262000d51565b604082019050919050565b6000602082019050818103600083015262000de28162000da0565b9050919050565b60008115159050919050565b62000e008162000de9565b82525050565b600060208201905062000e1d600083018462000df5565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e5b601f8362000cce565b915062000e688262000e23565b602082019050919050565b6000602082019050818103600083015262000e8e8162000e4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ed182620009b9565b915062000ede83620009b9565b925082820190508082111562000ef95762000ef862000e95565b5b92915050565b62000f0a81620009b9565b82525050565b600060208201905062000f27600083018462000eff565b92915050565b60805161378c62000f6560003960008181610d64015281816119ac01528181611b4301528181611c6a0152611cbf015261378c6000f3fe6080604052600436106101e75760003560e01c8063715018a611610102578063c024666811610095578063e2f4560511610064578063e2f4560514610715578063e6c75f7114610740578063f2fde38b1461076b578063fce589d814610794576101ee565b8063c02466681461065b578063c49b9a8014610684578063c8c8ebe4146106ad578063dd62ed3e146106d8576101ee565b806395d89b41116100d157806395d89b411461058b57806398118cb4146105b6578063a457c2d7146105e1578063a9059cbb1461061e576101ee565b8063715018a6146104f557806385141a771461050c5780638da5cb5b1461053757806391d55f4114610562576101ee565b806323b872dd1161017a5780634a74bb02116101495780634a74bb02146104255780634fbee193146104505780636827e7641461048d57806370a08231146104b8576101ee565b806323b872dd14610355578063313ce5671461039257806339509351146103bd57806349bd5a5e146103fa576101ee565b806318160ddd116101b657806318160ddd146102af5780631816467f146102da5780631e293c1014610303578063224290851461032c576101ee565b806306fdde03146101f3578063095ea7b31461021e57806309e89af71461025b5780631694505e14610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086107bf565b604051610215919061269d565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612758565b610851565b60405161025291906127b3565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d91906127ce565b61086f565b005b34801561029057600080fd5b506102996108f5565b6040516102a6919061285a565b60405180910390f35b3480156102bb57600080fd5b506102c461091b565b6040516102d19190612884565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc91906128dd565b610925565b005b34801561030f57600080fd5b5061032a600480360381019061032591906127ce565b6109e5565b005b34801561033857600080fd5b50610353600480360381019061034e919061290a565b610ac4565b005b34801561036157600080fd5b5061037c6004803603810190610377919061295d565b610bb5565b60405161038991906127b3565b60405180910390f35b34801561039e57600080fd5b506103a7610cad565b6040516103b491906129cc565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190612758565b610cb6565b6040516103f191906127b3565b60405180910390f35b34801561040657600080fd5b5061040f610d62565b60405161041c91906129f6565b60405180910390f35b34801561043157600080fd5b5061043a610d86565b60405161044791906127b3565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190612a11565b610d99565b60405161048491906127b3565b60405180910390f35b34801561049957600080fd5b506104a2610def565b6040516104af9190612884565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190612a11565b610df5565b6040516104ec9190612884565b60405180910390f35b34801561050157600080fd5b5061050a610e3d565b005b34801561051857600080fd5b50610521610ec5565b60405161052e91906129f6565b60405180910390f35b34801561054357600080fd5b5061054c610eeb565b60405161055991906129f6565b60405180910390f35b34801561056e57600080fd5b50610589600480360381019061058491906127ce565b610f15565b005b34801561059757600080fd5b506105a0611035565b6040516105ad919061269d565b60405180910390f35b3480156105c257600080fd5b506105cb6110c7565b6040516105d89190612884565b60405180910390f35b3480156105ed57600080fd5b5061060860048036038101906106039190612758565b6110cd565b60405161061591906127b3565b60405180910390f35b34801561062a57600080fd5b5061064560048036038101906106409190612758565b6111b8565b60405161065291906127b3565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190612a6a565b6111d6565b005b34801561069057600080fd5b506106ab60048036038101906106a69190612aaa565b61138d565b005b3480156106b957600080fd5b506106c261145d565b6040516106cf9190612884565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190612ad7565b611463565b60405161070c9190612884565b60405180910390f35b34801561072157600080fd5b5061072a6114ea565b6040516107379190612884565b60405180910390f35b34801561074c57600080fd5b506107556114f0565b6040516107629190612884565b60405180910390f35b34801561077757600080fd5b50610792600480360381019061078d9190612a11565b6114f6565b005b3480156107a057600080fd5b506107a96115ed565b6040516107b69190612884565b60405180910390f35b6060600380546107ce90612b46565b80601f01602080910402602001604051908101604052809291908181526020018280546107fa90612b46565b80156108475780601f1061081c57610100808354040283529160200191610847565b820191906000526020600020905b81548152906001019060200180831161082a57829003601f168201915b5050505050905090565b600061086561085e6115f3565b84846115fb565b6001905092915050565b6108776115f3565b73ffffffffffffffffffffffffffffffffffffffff16610895610eeb565b73ffffffffffffffffffffffffffffffffffffffff16146108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e290612bc3565b60405180910390fd5b80600b8190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b61092d6115f3565b73ffffffffffffffffffffffffffffffffffffffff1661094b610eeb565b73ffffffffffffffffffffffffffffffffffffffff16146109a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099890612bc3565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109ed6115f3565b73ffffffffffffffffffffffffffffffffffffffff16610a0b610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5890612bc3565b60405180910390fd5b80600a81905550610190610a7361091b565b610a7d9190612c41565b600a541015610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab890612cbe565b60405180910390fd5b50565b610acc6115f3565b73ffffffffffffffffffffffffffffffffffffffff16610aea610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3790612bc3565b60405180910390fd5b6103e8818385610b509190612cde565b610b5a9190612cde565b1115610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290612d5e565b60405180910390fd5b826007819055508160088190555080600981905550505050565b6000610bc28484846117c4565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c0d6115f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8490612df0565b60405180910390fd5b610ca185610c996115f3565b8584036115fb565b60019150509392505050565b60006012905090565b6000610d58610cc36115f3565b848460016000610cd16115f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d539190612cde565b6115fb565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601060019054906101000a900460ff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e456115f3565b73ffffffffffffffffffffffffffffffffffffffff16610e63610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090612bc3565b60405180910390fd5b610ec36000611dd9565b565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f1d6115f3565b73ffffffffffffffffffffffffffffffffffffffff16610f3b610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8890612bc3565b60405180910390fd5b6000600c54905081600c81905550610190610faa61091b565b610fb49190612c41565b600c541015610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90612cbe565b60405180910390fd5b7f0a7c714b6801281a6e2610a6371ac6a5da9a5947616d74f4aa3ad1d289278e738183604051611029929190612e10565b60405180910390a15050565b60606004805461104490612b46565b80601f016020809104026020016040519081016040528092919081815260200182805461107090612b46565b80156110bd5780601f10611092576101008083540402835291602001916110bd565b820191906000526020600020905b8154815290600101906020018083116110a057829003601f168201915b5050505050905090565b60075481565b600080600160006110dc6115f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612eab565b60405180910390fd5b6111ad6111a46115f3565b858584036115fb565b600191505092915050565b60006111cc6111c56115f3565b84846117c4565b6001905092915050565b6111de6115f3565b73ffffffffffffffffffffffffffffffffffffffff166111fc610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990612bc3565b60405180910390fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db90612f3d565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161138191906127b3565b60405180910390a25050565b6113956115f3565b73ffffffffffffffffffffffffffffffffffffffff166113b3610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090612bc3565b60405180910390fd5b80601060016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161145291906127b3565b60405180910390a150565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b600c5481565b6114fe6115f3565b73ffffffffffffffffffffffffffffffffffffffff1661151c610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156990612bc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612fcf565b60405180910390fd5b6115ea81611dd9565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361166a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166190613061565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906130f3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117b79190612884565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a90613185565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189990613217565b60405180910390fd5b600081036118bb576118b683836000611e9f565b611dd4565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561195f5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119aa57600a548111156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a0906132a9565b60405180910390fd5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a4f5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611aa55750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b09576000611ab583610df5565b9050600c548282611ac69190612cde565b1115611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe9061333b565b60405180910390fd5b505b6000611b1430610df5565b90506000600b548210159050808015611b3a5750601060009054906101000a900460ff16155b8015611b9157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ba95750601060019054906101000a900460ff165b15611bbd57600b549150611bbc8261211e565b5b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c615750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d0e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611d0d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b5b15611dc6576000612710600754600854611d289190612cde565b85611d33919061335b565b611d3d9190612c41565b9050600061271060095486611d52919061335b565b611d5c9190612c41565b90506000821115611d7357611d72873084611e9f565b5b6000811115611daa57611da987600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e9f565b5b8082611db69190612cde565b85611dc1919061339d565b945050505b611dd1858585611e9f565b50505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590613185565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490613217565b60405180910390fd5b611f888383836122a5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561200e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200590613443565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120a19190612cde565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121059190612884565b60405180910390a36121188484846122aa565b50505050565b6001601060006101000a81548160ff02191690831515021790555060006127106007548361214c919061335b565b6121569190612c41565b905060006127106008548461216b919061335b565b6121759190612c41565b9050600082111561220957600060028361218f9190612c41565b90506000818461219f919061339d565b905060004790506121af836122af565b600081476121bd919061339d565b90506121c98382612528565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516121fc93929190613463565b60405180910390a1505050505b60008111156122855761221b816122af565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612283573d6000803e3d6000fd5b505b50506000601060006101000a81548160ff02191690831515021790555050565b505050565b505050565b6000600267ffffffffffffffff8111156122cc576122cb61349a565b5b6040519080825280602002602001820160405280156122fa5781602001602082028036833780820191505090505b5090503081600081518110612312576123116134c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dd919061350d565b816001815181106123f1576123f06134c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508161245830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611463565b101561248e5761248d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196115fb565b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124f2959493929190613633565b600060405180830381600087803b15801561250c57600080fd5b505af1158015612520573d6000803e3d6000fd5b505050505050565b61255530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115fb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806125a1610eeb565b426040518863ffffffff1660e01b81526004016125c39695949392919061368d565b60606040518083038185885af11580156125e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126069190613703565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561264757808201518184015260208101905061262c565b60008484015250505050565b6000601f19601f8301169050919050565b600061266f8261260d565b6126798185612618565b9350612689818560208601612629565b61269281612653565b840191505092915050565b600060208201905081810360008301526126b78184612664565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126ef826126c4565b9050919050565b6126ff816126e4565b811461270a57600080fd5b50565b60008135905061271c816126f6565b92915050565b6000819050919050565b61273581612722565b811461274057600080fd5b50565b6000813590506127528161272c565b92915050565b6000806040838503121561276f5761276e6126bf565b5b600061277d8582860161270d565b925050602061278e85828601612743565b9150509250929050565b60008115159050919050565b6127ad81612798565b82525050565b60006020820190506127c860008301846127a4565b92915050565b6000602082840312156127e4576127e36126bf565b5b60006127f284828501612743565b91505092915050565b6000819050919050565b600061282061281b612816846126c4565b6127fb565b6126c4565b9050919050565b600061283282612805565b9050919050565b600061284482612827565b9050919050565b61285481612839565b82525050565b600060208201905061286f600083018461284b565b92915050565b61287e81612722565b82525050565b60006020820190506128996000830184612875565b92915050565b60006128aa826126c4565b9050919050565b6128ba8161289f565b81146128c557600080fd5b50565b6000813590506128d7816128b1565b92915050565b6000602082840312156128f3576128f26126bf565b5b6000612901848285016128c8565b91505092915050565b600080600060608486031215612923576129226126bf565b5b600061293186828701612743565b935050602061294286828701612743565b925050604061295386828701612743565b9150509250925092565b600080600060608486031215612976576129756126bf565b5b60006129848682870161270d565b93505060206129958682870161270d565b92505060406129a686828701612743565b9150509250925092565b600060ff82169050919050565b6129c6816129b0565b82525050565b60006020820190506129e160008301846129bd565b92915050565b6129f0816126e4565b82525050565b6000602082019050612a0b60008301846129e7565b92915050565b600060208284031215612a2757612a266126bf565b5b6000612a358482850161270d565b91505092915050565b612a4781612798565b8114612a5257600080fd5b50565b600081359050612a6481612a3e565b92915050565b60008060408385031215612a8157612a806126bf565b5b6000612a8f8582860161270d565b9250506020612aa085828601612a55565b9150509250929050565b600060208284031215612ac057612abf6126bf565b5b6000612ace84828501612a55565b91505092915050565b60008060408385031215612aee57612aed6126bf565b5b6000612afc8582860161270d565b9250506020612b0d8582860161270d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b5e57607f821691505b602082108103612b7157612b70612b17565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bad602083612618565b9150612bb882612b77565b602082019050919050565b60006020820190508181036000830152612bdc81612ba0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c4c82612722565b9150612c5783612722565b925082612c6757612c66612be3565b5b828204905092915050565b7f76616c756520746f6f206c6f7700000000000000000000000000000000000000600082015250565b6000612ca8600d83612618565b9150612cb382612c72565b602082019050919050565b60006020820190508181036000830152612cd781612c9b565b9050919050565b6000612ce982612722565b9150612cf483612722565b9250828201905080821115612d0c57612d0b612c12565b5b92915050565b7f74617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000612d48600c83612618565b9150612d5382612d12565b602082019050919050565b60006020820190508181036000830152612d7781612d3b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612dda602883612618565b9150612de582612d7e565b604082019050919050565b60006020820190508181036000830152612e0981612dcd565b9050919050565b6000604082019050612e256000830185612875565b612e326020830184612875565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e95602583612618565b9150612ea082612e39565b604082019050919050565b60006020820190508181036000830152612ec481612e88565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612f27602a83612618565b9150612f3282612ecb565b604082019050919050565b60006020820190508181036000830152612f5681612f1a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612fb9602683612618565b9150612fc482612f5d565b604082019050919050565b60006020820190508181036000830152612fe881612fac565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061304b602483612618565b915061305682612fef565b604082019050919050565b6000602082019050818103600083015261307a8161303e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130dd602283612618565b91506130e882613081565b604082019050919050565b6000602082019050818103600083015261310c816130d0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061316f602583612618565b915061317a82613113565b604082019050919050565b6000602082019050818103600083015261319e81613162565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613201602383612618565b915061320c826131a5565b604082019050919050565b60006020820190508181036000830152613230816131f4565b9050919050565b7f616d6f756e74206578636565647320746865206d617853656c6c5472616e736160008201527f6374696f6e416d6f756e742e0000000000000000000000000000000000000000602082015250565b6000613293602c83612618565b915061329e82613237565b604082019050919050565b600060208201905081810360008301526132c281613286565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b6000613325602483612618565b9150613330826132c9565b604082019050919050565b6000602082019050818103600083015261335481613318565b9050919050565b600061336682612722565b915061337183612722565b925082820261337f81612722565b9150828204841483151761339657613395612c12565b5b5092915050565b60006133a882612722565b91506133b383612722565b92508282039050818111156133cb576133ca612c12565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061342d602683612618565b9150613438826133d1565b604082019050919050565b6000602082019050818103600083015261345c81613420565b9050919050565b60006060820190506134786000830186612875565b6134856020830185612875565b6134926040830184612875565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613507816126f6565b92915050565b600060208284031215613523576135226126bf565b5b6000613531848285016134f8565b91505092915050565b6000819050919050565b600061355f61355a6135558461353a565b6127fb565b612722565b9050919050565b61356f81613544565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135aa816126e4565b82525050565b60006135bc83836135a1565b60208301905092915050565b6000602082019050919050565b60006135e082613575565b6135ea8185613580565b93506135f583613591565b8060005b8381101561362657815161360d88826135b0565b9750613618836135c8565b9250506001810190506135f9565b5085935050505092915050565b600060a0820190506136486000830188612875565b6136556020830187613566565b818103604083015261366781866135d5565b905061367660608301856129e7565b6136836080830184612875565b9695505050505050565b600060c0820190506136a260008301896129e7565b6136af6020830188612875565b6136bc6040830187613566565b6136c96060830186613566565b6136d660808301856129e7565b6136e360a0830184612875565b979650505050505050565b6000815190506136fd8161272c565b92915050565b60008060006060848603121561371c5761371b6126bf565b5b600061372a868287016136ee565b935050602061373b868287016136ee565b925050604061374c868287016136ee565b915050925092509256fea2646970667358221220489ffa02d03a1da5d08b7027732c19669a05ef5fb988a363da8a114c56ff262364736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101e75760003560e01c8063715018a611610102578063c024666811610095578063e2f4560511610064578063e2f4560514610715578063e6c75f7114610740578063f2fde38b1461076b578063fce589d814610794576101ee565b8063c02466681461065b578063c49b9a8014610684578063c8c8ebe4146106ad578063dd62ed3e146106d8576101ee565b806395d89b41116100d157806395d89b411461058b57806398118cb4146105b6578063a457c2d7146105e1578063a9059cbb1461061e576101ee565b8063715018a6146104f557806385141a771461050c5780638da5cb5b1461053757806391d55f4114610562576101ee565b806323b872dd1161017a5780634a74bb02116101495780634a74bb02146104255780634fbee193146104505780636827e7641461048d57806370a08231146104b8576101ee565b806323b872dd14610355578063313ce5671461039257806339509351146103bd57806349bd5a5e146103fa576101ee565b806318160ddd116101b657806318160ddd146102af5780631816467f146102da5780631e293c1014610303578063224290851461032c576101ee565b806306fdde03146101f3578063095ea7b31461021e57806309e89af71461025b5780631694505e14610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086107bf565b604051610215919061269d565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612758565b610851565b60405161025291906127b3565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d91906127ce565b61086f565b005b34801561029057600080fd5b506102996108f5565b6040516102a6919061285a565b60405180910390f35b3480156102bb57600080fd5b506102c461091b565b6040516102d19190612884565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc91906128dd565b610925565b005b34801561030f57600080fd5b5061032a600480360381019061032591906127ce565b6109e5565b005b34801561033857600080fd5b50610353600480360381019061034e919061290a565b610ac4565b005b34801561036157600080fd5b5061037c6004803603810190610377919061295d565b610bb5565b60405161038991906127b3565b60405180910390f35b34801561039e57600080fd5b506103a7610cad565b6040516103b491906129cc565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190612758565b610cb6565b6040516103f191906127b3565b60405180910390f35b34801561040657600080fd5b5061040f610d62565b60405161041c91906129f6565b60405180910390f35b34801561043157600080fd5b5061043a610d86565b60405161044791906127b3565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190612a11565b610d99565b60405161048491906127b3565b60405180910390f35b34801561049957600080fd5b506104a2610def565b6040516104af9190612884565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190612a11565b610df5565b6040516104ec9190612884565b60405180910390f35b34801561050157600080fd5b5061050a610e3d565b005b34801561051857600080fd5b50610521610ec5565b60405161052e91906129f6565b60405180910390f35b34801561054357600080fd5b5061054c610eeb565b60405161055991906129f6565b60405180910390f35b34801561056e57600080fd5b50610589600480360381019061058491906127ce565b610f15565b005b34801561059757600080fd5b506105a0611035565b6040516105ad919061269d565b60405180910390f35b3480156105c257600080fd5b506105cb6110c7565b6040516105d89190612884565b60405180910390f35b3480156105ed57600080fd5b5061060860048036038101906106039190612758565b6110cd565b60405161061591906127b3565b60405180910390f35b34801561062a57600080fd5b5061064560048036038101906106409190612758565b6111b8565b60405161065291906127b3565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190612a6a565b6111d6565b005b34801561069057600080fd5b506106ab60048036038101906106a69190612aaa565b61138d565b005b3480156106b957600080fd5b506106c261145d565b6040516106cf9190612884565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190612ad7565b611463565b60405161070c9190612884565b60405180910390f35b34801561072157600080fd5b5061072a6114ea565b6040516107379190612884565b60405180910390f35b34801561074c57600080fd5b506107556114f0565b6040516107629190612884565b60405180910390f35b34801561077757600080fd5b50610792600480360381019061078d9190612a11565b6114f6565b005b3480156107a057600080fd5b506107a96115ed565b6040516107b69190612884565b60405180910390f35b6060600380546107ce90612b46565b80601f01602080910402602001604051908101604052809291908181526020018280546107fa90612b46565b80156108475780601f1061081c57610100808354040283529160200191610847565b820191906000526020600020905b81548152906001019060200180831161082a57829003601f168201915b5050505050905090565b600061086561085e6115f3565b84846115fb565b6001905092915050565b6108776115f3565b73ffffffffffffffffffffffffffffffffffffffff16610895610eeb565b73ffffffffffffffffffffffffffffffffffffffff16146108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e290612bc3565b60405180910390fd5b80600b8190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b61092d6115f3565b73ffffffffffffffffffffffffffffffffffffffff1661094b610eeb565b73ffffffffffffffffffffffffffffffffffffffff16146109a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099890612bc3565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109ed6115f3565b73ffffffffffffffffffffffffffffffffffffffff16610a0b610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5890612bc3565b60405180910390fd5b80600a81905550610190610a7361091b565b610a7d9190612c41565b600a541015610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab890612cbe565b60405180910390fd5b50565b610acc6115f3565b73ffffffffffffffffffffffffffffffffffffffff16610aea610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3790612bc3565b60405180910390fd5b6103e8818385610b509190612cde565b610b5a9190612cde565b1115610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290612d5e565b60405180910390fd5b826007819055508160088190555080600981905550505050565b6000610bc28484846117c4565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c0d6115f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8490612df0565b60405180910390fd5b610ca185610c996115f3565b8584036115fb565b60019150509392505050565b60006012905090565b6000610d58610cc36115f3565b848460016000610cd16115f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d539190612cde565b6115fb565b6001905092915050565b7f000000000000000000000000b49bf6877e5df5f75b09b79b7af055246725e47c81565b601060019054906101000a900460ff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e456115f3565b73ffffffffffffffffffffffffffffffffffffffff16610e63610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090612bc3565b60405180910390fd5b610ec36000611dd9565b565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f1d6115f3565b73ffffffffffffffffffffffffffffffffffffffff16610f3b610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8890612bc3565b60405180910390fd5b6000600c54905081600c81905550610190610faa61091b565b610fb49190612c41565b600c541015610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90612cbe565b60405180910390fd5b7f0a7c714b6801281a6e2610a6371ac6a5da9a5947616d74f4aa3ad1d289278e738183604051611029929190612e10565b60405180910390a15050565b60606004805461104490612b46565b80601f016020809104026020016040519081016040528092919081815260200182805461107090612b46565b80156110bd5780601f10611092576101008083540402835291602001916110bd565b820191906000526020600020905b8154815290600101906020018083116110a057829003601f168201915b5050505050905090565b60075481565b600080600160006110dc6115f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612eab565b60405180910390fd5b6111ad6111a46115f3565b858584036115fb565b600191505092915050565b60006111cc6111c56115f3565b84846117c4565b6001905092915050565b6111de6115f3565b73ffffffffffffffffffffffffffffffffffffffff166111fc610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990612bc3565b60405180910390fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db90612f3d565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161138191906127b3565b60405180910390a25050565b6113956115f3565b73ffffffffffffffffffffffffffffffffffffffff166113b3610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090612bc3565b60405180910390fd5b80601060016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161145291906127b3565b60405180910390a150565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b600c5481565b6114fe6115f3565b73ffffffffffffffffffffffffffffffffffffffff1661151c610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156990612bc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612fcf565b60405180910390fd5b6115ea81611dd9565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361166a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166190613061565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906130f3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117b79190612884565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a90613185565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189990613217565b60405180910390fd5b600081036118bb576118b683836000611e9f565b611dd4565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561195f5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119aa57600a548111156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a0906132a9565b60405180910390fd5b5b7f000000000000000000000000b49bf6877e5df5f75b09b79b7af055246725e47c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a4f5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611aa55750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b09576000611ab583610df5565b9050600c548282611ac69190612cde565b1115611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe9061333b565b60405180910390fd5b505b6000611b1430610df5565b90506000600b548210159050808015611b3a5750601060009054906101000a900460ff16155b8015611b9157507f000000000000000000000000b49bf6877e5df5f75b09b79b7af055246725e47c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ba95750601060019054906101000a900460ff165b15611bbd57600b549150611bbc8261211e565b5b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c615750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d0e57507f000000000000000000000000b49bf6877e5df5f75b09b79b7af055246725e47c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611d0d57507f000000000000000000000000b49bf6877e5df5f75b09b79b7af055246725e47c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b5b15611dc6576000612710600754600854611d289190612cde565b85611d33919061335b565b611d3d9190612c41565b9050600061271060095486611d52919061335b565b611d5c9190612c41565b90506000821115611d7357611d72873084611e9f565b5b6000811115611daa57611da987600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e9f565b5b8082611db69190612cde565b85611dc1919061339d565b945050505b611dd1858585611e9f565b50505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590613185565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490613217565b60405180910390fd5b611f888383836122a5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561200e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200590613443565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120a19190612cde565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121059190612884565b60405180910390a36121188484846122aa565b50505050565b6001601060006101000a81548160ff02191690831515021790555060006127106007548361214c919061335b565b6121569190612c41565b905060006127106008548461216b919061335b565b6121759190612c41565b9050600082111561220957600060028361218f9190612c41565b90506000818461219f919061339d565b905060004790506121af836122af565b600081476121bd919061339d565b90506121c98382612528565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516121fc93929190613463565b60405180910390a1505050505b60008111156122855761221b816122af565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612283573d6000803e3d6000fd5b505b50506000601060006101000a81548160ff02191690831515021790555050565b505050565b505050565b6000600267ffffffffffffffff8111156122cc576122cb61349a565b5b6040519080825280602002602001820160405280156122fa5781602001602082028036833780820191505090505b5090503081600081518110612312576123116134c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dd919061350d565b816001815181106123f1576123f06134c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508161245830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611463565b101561248e5761248d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196115fb565b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124f2959493929190613633565b600060405180830381600087803b15801561250c57600080fd5b505af1158015612520573d6000803e3d6000fd5b505050505050565b61255530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115fb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806125a1610eeb565b426040518863ffffffff1660e01b81526004016125c39695949392919061368d565b60606040518083038185885af11580156125e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126069190613703565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561264757808201518184015260208101905061262c565b60008484015250505050565b6000601f19601f8301169050919050565b600061266f8261260d565b6126798185612618565b9350612689818560208601612629565b61269281612653565b840191505092915050565b600060208201905081810360008301526126b78184612664565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126ef826126c4565b9050919050565b6126ff816126e4565b811461270a57600080fd5b50565b60008135905061271c816126f6565b92915050565b6000819050919050565b61273581612722565b811461274057600080fd5b50565b6000813590506127528161272c565b92915050565b6000806040838503121561276f5761276e6126bf565b5b600061277d8582860161270d565b925050602061278e85828601612743565b9150509250929050565b60008115159050919050565b6127ad81612798565b82525050565b60006020820190506127c860008301846127a4565b92915050565b6000602082840312156127e4576127e36126bf565b5b60006127f284828501612743565b91505092915050565b6000819050919050565b600061282061281b612816846126c4565b6127fb565b6126c4565b9050919050565b600061283282612805565b9050919050565b600061284482612827565b9050919050565b61285481612839565b82525050565b600060208201905061286f600083018461284b565b92915050565b61287e81612722565b82525050565b60006020820190506128996000830184612875565b92915050565b60006128aa826126c4565b9050919050565b6128ba8161289f565b81146128c557600080fd5b50565b6000813590506128d7816128b1565b92915050565b6000602082840312156128f3576128f26126bf565b5b6000612901848285016128c8565b91505092915050565b600080600060608486031215612923576129226126bf565b5b600061293186828701612743565b935050602061294286828701612743565b925050604061295386828701612743565b9150509250925092565b600080600060608486031215612976576129756126bf565b5b60006129848682870161270d565b93505060206129958682870161270d565b92505060406129a686828701612743565b9150509250925092565b600060ff82169050919050565b6129c6816129b0565b82525050565b60006020820190506129e160008301846129bd565b92915050565b6129f0816126e4565b82525050565b6000602082019050612a0b60008301846129e7565b92915050565b600060208284031215612a2757612a266126bf565b5b6000612a358482850161270d565b91505092915050565b612a4781612798565b8114612a5257600080fd5b50565b600081359050612a6481612a3e565b92915050565b60008060408385031215612a8157612a806126bf565b5b6000612a8f8582860161270d565b9250506020612aa085828601612a55565b9150509250929050565b600060208284031215612ac057612abf6126bf565b5b6000612ace84828501612a55565b91505092915050565b60008060408385031215612aee57612aed6126bf565b5b6000612afc8582860161270d565b9250506020612b0d8582860161270d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b5e57607f821691505b602082108103612b7157612b70612b17565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bad602083612618565b9150612bb882612b77565b602082019050919050565b60006020820190508181036000830152612bdc81612ba0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c4c82612722565b9150612c5783612722565b925082612c6757612c66612be3565b5b828204905092915050565b7f76616c756520746f6f206c6f7700000000000000000000000000000000000000600082015250565b6000612ca8600d83612618565b9150612cb382612c72565b602082019050919050565b60006020820190508181036000830152612cd781612c9b565b9050919050565b6000612ce982612722565b9150612cf483612722565b9250828201905080821115612d0c57612d0b612c12565b5b92915050565b7f74617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000612d48600c83612618565b9150612d5382612d12565b602082019050919050565b60006020820190508181036000830152612d7781612d3b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612dda602883612618565b9150612de582612d7e565b604082019050919050565b60006020820190508181036000830152612e0981612dcd565b9050919050565b6000604082019050612e256000830185612875565b612e326020830184612875565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e95602583612618565b9150612ea082612e39565b604082019050919050565b60006020820190508181036000830152612ec481612e88565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612f27602a83612618565b9150612f3282612ecb565b604082019050919050565b60006020820190508181036000830152612f5681612f1a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612fb9602683612618565b9150612fc482612f5d565b604082019050919050565b60006020820190508181036000830152612fe881612fac565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061304b602483612618565b915061305682612fef565b604082019050919050565b6000602082019050818103600083015261307a8161303e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130dd602283612618565b91506130e882613081565b604082019050919050565b6000602082019050818103600083015261310c816130d0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061316f602583612618565b915061317a82613113565b604082019050919050565b6000602082019050818103600083015261319e81613162565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613201602383612618565b915061320c826131a5565b604082019050919050565b60006020820190508181036000830152613230816131f4565b9050919050565b7f616d6f756e74206578636565647320746865206d617853656c6c5472616e736160008201527f6374696f6e416d6f756e742e0000000000000000000000000000000000000000602082015250565b6000613293602c83612618565b915061329e82613237565b604082019050919050565b600060208201905081810360008301526132c281613286565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b6000613325602483612618565b9150613330826132c9565b604082019050919050565b6000602082019050818103600083015261335481613318565b9050919050565b600061336682612722565b915061337183612722565b925082820261337f81612722565b9150828204841483151761339657613395612c12565b5b5092915050565b60006133a882612722565b91506133b383612722565b92508282039050818111156133cb576133ca612c12565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061342d602683612618565b9150613438826133d1565b604082019050919050565b6000602082019050818103600083015261345c81613420565b9050919050565b60006060820190506134786000830186612875565b6134856020830185612875565b6134926040830184612875565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613507816126f6565b92915050565b600060208284031215613523576135226126bf565b5b6000613531848285016134f8565b91505092915050565b6000819050919050565b600061355f61355a6135558461353a565b6127fb565b612722565b9050919050565b61356f81613544565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135aa816126e4565b82525050565b60006135bc83836135a1565b60208301905092915050565b6000602082019050919050565b60006135e082613575565b6135ea8185613580565b93506135f583613591565b8060005b8381101561362657815161360d88826135b0565b9750613618836135c8565b9250506001810190506135f9565b5085935050505092915050565b600060a0820190506136486000830188612875565b6136556020830187613566565b818103604083015261366781866135d5565b905061367660608301856129e7565b6136836080830184612875565b9695505050505050565b600060c0820190506136a260008301896129e7565b6136af6020830188612875565b6136bc6040830187613566565b6136c96060830186613566565b6136d660808301856129e7565b6136e360a0830184612875565b979650505050505050565b6000815190506136fd8161272c565b92915050565b60008060006060848603121561371c5761371b6126bf565b5b600061372a868287016136ee565b935050602061373b868287016136ee565b925050604061374c868287016136ee565b915050925092509256fea2646970667358221220489ffa02d03a1da5d08b7027732c19669a05ef5fb988a363da8a114c56ff262364736f6c63430008110033
Deployed Bytecode Sourcemap
21687:8190:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7115:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9282:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29422:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21736:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8235:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29003:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28497:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28232:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9933:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8077:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10834:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21784:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22442:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29550:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21877:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8406:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4873:94;;;;;;;;;;;;;:::i;:::-;;22237:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4222:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28709:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7334:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21831:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11552:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8746:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29124:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29687:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21956:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8984:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22020:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22082:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5122:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21915:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7115:100;7169:13;7202:5;7195:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7115:100;:::o;9282:169::-;9365:4;9382:39;9391:12;:10;:12::i;:::-;9405:7;9414:6;9382:8;:39::i;:::-;9439:4;9432:11;;9282:169;;;;:::o;29422:116::-;4453:12;:10;:12::i;:::-;4442:23;;:7;:5;:7::i;:::-;:23;;;4434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29522:8:::1;29501:18;:29;;;;29422:116:::0;:::o;21736:41::-;;;;;;;;;;;;;:::o;8235:108::-;8296:7;8323:12;;8316:19;;8235:108;:::o;29003:113::-;4453:12;:10;:12::i;:::-;4442:23;;:7;:5;:7::i;:::-;:23;;;4434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29098:10:::1;29086:9;;:22;;;;;;;;;;;;;;;;;;29003:113:::0;:::o;28497:204::-;4453:12;:10;:12::i;:::-;4442:23;;:7;:5;:7::i;:::-;:23;;;4434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28603:12:::1;28580:20;:35;;;;28672:3;28658:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28634:20;;:41;;28626:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28497:204:::0;:::o;28232:256::-;4453:12;:10;:12::i;:::-;4442:23;;:7;:5;:7::i;:::-;:23;;;4434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28370:4:::1;28358:8;28350:7;28342;:15;;;;:::i;:::-;:24;;;;:::i;:::-;:32;;28334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;28417:7;28402:12;:22;;;;28444:7;28435:6;:16;;;;28472:8;28462:7;:18;;;;28232:256:::0;;;:::o;9933:492::-;10073:4;10090:36;10100:6;10108:9;10119:6;10090:9;:36::i;:::-;10139:24;10166:11;:19;10178:6;10166:19;;;;;;;;;;;;;;;:33;10186:12;:10;:12::i;:::-;10166:33;;;;;;;;;;;;;;;;10139:60;;10238:6;10218:16;:26;;10210:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10325:57;10334:6;10342:12;:10;:12::i;:::-;10375:6;10356:16;:25;10325:8;:57::i;:::-;10413:4;10406:11;;;9933:492;;;;;:::o;8077:93::-;8135:5;8160:2;8153:9;;8077:93;:::o;10834:215::-;10922:4;10939:80;10948:12;:10;:12::i;:::-;10962:7;11008:10;10971:11;:25;10983:12;:10;:12::i;:::-;10971:25;;;;;;;;;;;;;;;:34;10997:7;10971:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10939:8;:80::i;:::-;11037:4;11030:11;;10834:215;;;;:::o;21784:38::-;;;:::o;22442:40::-;;;;;;;;;;;;;:::o;29550:125::-;29615:4;29639:19;:28;29659:7;29639:28;;;;;;;;;;;;;;;;;;;;;;;;;29632:35;;29550:125;;;:::o;21877:25::-;;;;:::o;8406:127::-;8480:7;8507:9;:18;8517:7;8507:18;;;;;;;;;;;;;;;;8500:25;;8406:127;;;:::o;4873:94::-;4453:12;:10;:12::i;:::-;4442:23;;:7;:5;:7::i;:::-;:23;;;4434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4938:21:::1;4956:1;4938:9;:21::i;:::-;4873:94::o:0;22237:70::-;;;;;;;;;;;;;:::o;4222:87::-;4268:7;4295:6;;;;;;;;;;;4288:13;;4222:87;:::o;28709:285::-;4453:12;:10;:12::i;:::-;4442:23;;:7;:5;:7::i;:::-;:23;;;4434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28785:17:::1;28805:14;;28785:34;;28846:9;28829:14;:26;;;;28906:3;28892:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28874:14;;:35;;28866:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;28943:44;28966:9;28977;28943:44;;;;;;;:::i;:::-;;;;;;;;28774:220;28709:285:::0;:::o;7334:104::-;7390:13;7423:7;7416:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7334:104;:::o;21831:33::-;;;;:::o;11552:413::-;11645:4;11662:24;11689:11;:25;11701:12;:10;:12::i;:::-;11689:25;;;;;;;;;;;;;;;:34;11715:7;11689:34;;;;;;;;;;;;;;;;11662:61;;11762:15;11742:16;:35;;11734:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11855:67;11864:12;:10;:12::i;:::-;11878:7;11906:15;11887:16;:34;11855:8;:67::i;:::-;11953:4;11946:11;;;11552:413;;;;:::o;8746:175::-;8832:4;8849:42;8859:12;:10;:12::i;:::-;8873:9;8884:6;8849:9;:42::i;:::-;8909:4;8902:11;;8746:175;;;;:::o;29124:290::-;4453:12;:10;:12::i;:::-;4442:23;;:7;:5;:7::i;:::-;:23;;;4434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29249:8:::1;29217:40;;:19;:28;29237:7;29217:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;29209:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29346:8;29315:19;:28;29335:7;29315:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;29388:7;29372:34;;;29397:8;29372:34;;;;;;:::i;:::-;;;;;;;;29124:290:::0;;:::o;29687:171::-;4453:12;:10;:12::i;:::-;4442:23;;:7;:5;:7::i;:::-;:23;;;4434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29788:8:::1;29764:21;;:32;;;;;;;;;;;;;;;;;;29812:38;29841:8;29812:38;;;;;;:::i;:::-;;;;;;;;29687:171:::0;:::o;21956:57::-;;;;:::o;8984:151::-;9073:7;9100:11;:18;9112:5;9100:18;;;;;;;;;;;;;;;:27;9119:7;9100:27;;;;;;;;;;;;;;;;9093:34;;8984:151;;;;:::o;22020:55::-;;;;:::o;22082:51::-;;;;:::o;5122:192::-;4453:12;:10;:12::i;:::-;4442:23;;:7;:5;:7::i;:::-;:23;;;4434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5231:1:::1;5211:22;;:8;:22;;::::0;5203:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5287:19;5297:8;5287:9;:19::i;:::-;5122:192:::0;:::o;21915:26::-;;;;:::o;3096:98::-;3149:7;3176:10;3169:17;;3096:98;:::o;14332:380::-;14485:1;14468:19;;:5;:19;;;14460:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14566:1;14547:21;;:7;:21;;;14539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14650:6;14620:11;:18;14632:5;14620:18;;;;;;;;;;;;;;;:27;14639:7;14620:27;;;;;;;;;;;;;;;:36;;;;14688:7;14672:32;;14681:5;14672:32;;;14697:6;14672:32;;;;;;:::i;:::-;;;;;;;;14332:380;;;:::o;23946:1955::-;24094:1;24078:18;;:4;:18;;;24070:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24171:1;24157:16;;:2;:16;;;24149:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24239:1;24229:6;:11;24226:92;;24257:28;24273:4;24279:2;24283:1;24257:15;:28::i;:::-;24300:7;;24226:92;24334:19;:25;24354:4;24334:25;;;;;;;;;;;;;;;;;;;;;;;;;24333:26;:54;;;;;24364:19;:23;24384:2;24364:23;;;;;;;;;;;;;;;;;;;;;;;;;24363:24;24333:54;24330:172;;;24421:20;;24411:6;:30;;24403:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;24330:172;24524:13;24518:19;;:4;:19;;;:49;;;;;24542:19;:25;24562:4;24542:25;;;;;;;;;;;;;;;;;;;;;;;;;24541:26;24518:49;:77;;;;;24572:19;:23;24592:2;24572:23;;;;;;;;;;;;;;;;;;;;;;;;;24571:24;24518:77;24514:273;;;24612:32;24647:13;24657:2;24647:9;:13::i;:::-;24612:48;;24720:14;;24710:6;24683:24;:33;;;;:::i;:::-;:51;;24675:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;24597:190;24514:273;24799:28;24830:24;24848:4;24830:9;:24::i;:::-;24799:55;;24875:24;24926:18;;24902:20;:42;;24875:69;;24973:19;:40;;;;;24997:16;;;;;;;;;;;24996:17;24973:40;:61;;;;;25021:13;25017:17;;:2;:17;;;24973:61;:86;;;;;25038:21;;;;;;;;;;;24973:86;24970:210;;;25099:18;;25076:41;;25132:36;25147:20;25132:14;:36::i;:::-;24970:210;25297:19;:25;25317:4;25297:25;;;;;;;;;;;;;;;;;;;;;;;;;25296:26;:54;;;;;25327:19;:23;25347:2;25327:23;;;;;;;;;;;;;;;;;;;;;;;;;25326:24;25296:54;:99;;;;;25360:13;25354:19;;:4;:19;;;:40;;;;25381:13;25377:17;;:2;:17;;;25354:40;25296:99;25293:553;;;25412:20;25464:5;25450:12;;25443:6;;:19;;;;:::i;:::-;25435:6;:28;;;;:::i;:::-;:34;;;;:::i;:::-;25412:57;;25484:17;25519:5;25511:7;;25504:6;:14;;;;:::i;:::-;:20;;;;:::i;:::-;25484:40;;25575:1;25560:12;:16;25557:106;;;25597:50;25613:4;25627;25634:12;25597:15;:50::i;:::-;25557:106;25694:1;25682:9;:13;25679:97;;;25716:44;25732:4;25738:10;;;;;;;;;;;25750:9;25716:15;:44::i;:::-;25679:97;25822:9;25809:12;:22;;;;:::i;:::-;25801:6;:31;;;;:::i;:::-;25792:40;;25397:449;;25293:553;25858:33;25874:4;25880:2;25884:6;25858:15;:33::i;:::-;24059:1842;;23946:1955;;;;:::o;5322:173::-;5378:16;5397:6;;;;;;;;;;;5378:25;;5423:8;5414:6;;:17;;;;;;;;;;;;;;;;;;5478:8;5447:40;;5468:8;5447:40;;;;;;;;;;;;5367:128;5322:173;:::o;12455:733::-;12613:1;12595:20;;:6;:20;;;12587:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12697:1;12676:23;;:9;:23;;;12668:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12752:47;12773:6;12781:9;12792:6;12752:20;:47::i;:::-;12812:21;12836:9;:17;12846:6;12836:17;;;;;;;;;;;;;;;;12812:41;;12889:6;12872:13;:23;;12864:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13010:6;12994:13;:22;12974:9;:17;12984:6;12974:17;;;;;;;;;;;;;;;:42;;;;13062:6;13038:9;:20;13048:9;13038:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13103:9;13086:35;;13095:6;13086:35;;;13114:6;13086:35;;;;;;:::i;:::-;;;;;;;;13134:46;13154:6;13162:9;13173:6;13134:19;:46::i;:::-;12576:612;12455:733;;;:::o;25909:1050::-;23017:4;22998:16;;:23;;;;;;;;;;;;;;;;;;25994::::1;26054:5;26041:12;;26020:20;:33;;;;:::i;:::-;:39;;;;:::i;:::-;25994:65;;26070:17;26118:5;26111:6;;26090:20;:27;;;;:::i;:::-;:33;;;;:::i;:::-;26070:53;;26157:1;26139:15;:19;26136:673;;;26230:12;26261:1;26245:15;:17;;;;:::i;:::-;26230:32;;26277:17;26313:4;26297:15;:20;;;;:::i;:::-;26277:40;;26394:22;26419:21;26394:46;;26493:22;26510:4;26493:16;:22::i;:::-;26584:18;26627:14;26605:21;:36;;;;:::i;:::-;26584:57;;26699:35;26712:9;26723:10;26699:12;:35::i;:::-;26754:43;26769:4;26775:10;26787:9;26754:43;;;;;;;;:::i;:::-;;;;;;;;26160:649;;;;26136:673;26836:1;26824:9;:13;26821:129;;;26855:27;26872:9;26855:16;:27::i;:::-;26897:9;;;;;;;;;;;:18;;:41;26916:21;26897:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26821:129;25983:976;;23063:5:::0;23044:16;;:24;;;;;;;;;;;;;;;;;;25909:1050;:::o;15312:125::-;;;;:::o;16041:124::-;;;;:::o;27488:692::-;27614:21;27652:1;27638:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27614:40;;27683:4;27665;27670:1;27665:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27709:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27699:4;27704:1;27699:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27800:11;27747:50;27765:4;27780:15;;;;;;;;;;;27747:9;:50::i;:::-;:64;27744:156;;;27826:62;27843:4;27858:15;;;;;;;;;;;27885:1;27876:11;27826:8;:62::i;:::-;27744:156;27938:15;;;;;;;;;;;:66;;;28019:11;28045:1;28089:4;28116;28136:15;27938:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27543:637;27488:692;:::o;26967:513::-;27115:62;27132:4;27147:15;;;;;;;;;;;27165:11;27115:8;:62::i;:::-;27220:15;;;;;;;;;;;:31;;;27259:9;27292:4;27312:11;27338:1;27381;27424:7;:5;:7::i;:::-;27446:15;27220:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26967:513;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:104::-;5156:7;5185:24;5203:5;5185:24;:::i;:::-;5174:35;;5111:104;;;:::o;5221:138::-;5302:32;5328:5;5302:32;:::i;:::-;5295:5;5292:43;5282:71;;5349:1;5346;5339:12;5282:71;5221:138;:::o;5365:155::-;5419:5;5457:6;5444:20;5435:29;;5473:41;5508:5;5473:41;:::i;:::-;5365:155;;;;:::o;5526:345::-;5593:6;5642:2;5630:9;5621:7;5617:23;5613:32;5610:119;;;5648:79;;:::i;:::-;5610:119;5768:1;5793:61;5846:7;5837:6;5826:9;5822:22;5793:61;:::i;:::-;5783:71;;5739:125;5526:345;;;;:::o;5877:619::-;5954:6;5962;5970;6019:2;6007:9;5998:7;5994:23;5990:32;5987:119;;;6025:79;;:::i;:::-;5987:119;6145:1;6170:53;6215:7;6206:6;6195:9;6191:22;6170:53;:::i;:::-;6160:63;;6116:117;6272:2;6298:53;6343:7;6334:6;6323:9;6319:22;6298:53;:::i;:::-;6288:63;;6243:118;6400:2;6426:53;6471:7;6462:6;6451:9;6447:22;6426:53;:::i;:::-;6416:63;;6371:118;5877:619;;;;;:::o;6502:::-;6579:6;6587;6595;6644:2;6632:9;6623:7;6619:23;6615:32;6612:119;;;6650:79;;:::i;:::-;6612:119;6770:1;6795:53;6840:7;6831:6;6820:9;6816:22;6795:53;:::i;:::-;6785:63;;6741:117;6897:2;6923:53;6968:7;6959:6;6948:9;6944:22;6923:53;:::i;:::-;6913:63;;6868:118;7025:2;7051:53;7096:7;7087:6;7076:9;7072:22;7051:53;:::i;:::-;7041:63;;6996:118;6502:619;;;;;:::o;7127:86::-;7162:7;7202:4;7195:5;7191:16;7180:27;;7127:86;;;:::o;7219:112::-;7302:22;7318:5;7302:22;:::i;:::-;7297:3;7290:35;7219:112;;:::o;7337:214::-;7426:4;7464:2;7453:9;7449:18;7441:26;;7477:67;7541:1;7530:9;7526:17;7517:6;7477:67;:::i;:::-;7337:214;;;;:::o;7557:118::-;7644:24;7662:5;7644:24;:::i;:::-;7639:3;7632:37;7557:118;;:::o;7681:222::-;7774:4;7812:2;7801:9;7797:18;7789:26;;7825:71;7893:1;7882:9;7878:17;7869:6;7825:71;:::i;:::-;7681:222;;;;:::o;7909:329::-;7968:6;8017:2;8005:9;7996:7;7992:23;7988:32;7985:119;;;8023:79;;:::i;:::-;7985:119;8143:1;8168:53;8213:7;8204:6;8193:9;8189:22;8168:53;:::i;:::-;8158:63;;8114:117;7909:329;;;;:::o;8244:116::-;8314:21;8329:5;8314:21;:::i;:::-;8307:5;8304:32;8294:60;;8350:1;8347;8340:12;8294:60;8244:116;:::o;8366:133::-;8409:5;8447:6;8434:20;8425:29;;8463:30;8487:5;8463:30;:::i;:::-;8366:133;;;;:::o;8505:468::-;8570:6;8578;8627:2;8615:9;8606:7;8602:23;8598:32;8595:119;;;8633:79;;:::i;:::-;8595:119;8753:1;8778:53;8823:7;8814:6;8803:9;8799:22;8778:53;:::i;:::-;8768:63;;8724:117;8880:2;8906:50;8948:7;8939:6;8928:9;8924:22;8906:50;:::i;:::-;8896:60;;8851:115;8505:468;;;;;:::o;8979:323::-;9035:6;9084:2;9072:9;9063:7;9059:23;9055:32;9052:119;;;9090:79;;:::i;:::-;9052:119;9210:1;9235:50;9277:7;9268:6;9257:9;9253:22;9235:50;:::i;:::-;9225:60;;9181:114;8979:323;;;;:::o;9308:474::-;9376:6;9384;9433:2;9421:9;9412:7;9408:23;9404:32;9401:119;;;9439:79;;:::i;:::-;9401:119;9559:1;9584:53;9629:7;9620:6;9609:9;9605:22;9584:53;:::i;:::-;9574:63;;9530:117;9686:2;9712:53;9757:7;9748:6;9737:9;9733:22;9712:53;:::i;:::-;9702:63;;9657:118;9308:474;;;;;:::o;9788:180::-;9836:77;9833:1;9826:88;9933:4;9930:1;9923:15;9957:4;9954:1;9947:15;9974:320;10018:6;10055:1;10049:4;10045:12;10035:22;;10102:1;10096:4;10092:12;10123:18;10113:81;;10179:4;10171:6;10167:17;10157:27;;10113:81;10241:2;10233:6;10230:14;10210:18;10207:38;10204:84;;10260:18;;:::i;:::-;10204:84;10025:269;9974:320;;;:::o;10300:182::-;10440:34;10436:1;10428:6;10424:14;10417:58;10300:182;:::o;10488:366::-;10630:3;10651:67;10715:2;10710:3;10651:67;:::i;:::-;10644:74;;10727:93;10816:3;10727:93;:::i;:::-;10845:2;10840:3;10836:12;10829:19;;10488:366;;;:::o;10860:419::-;11026:4;11064:2;11053:9;11049:18;11041:26;;11113:9;11107:4;11103:20;11099:1;11088:9;11084:17;11077:47;11141:131;11267:4;11141:131;:::i;:::-;11133:139;;10860:419;;;:::o;11285:180::-;11333:77;11330:1;11323:88;11430:4;11427:1;11420:15;11454:4;11451:1;11444:15;11471:180;11519:77;11516:1;11509:88;11616:4;11613:1;11606:15;11640:4;11637:1;11630:15;11657:185;11697:1;11714:20;11732:1;11714:20;:::i;:::-;11709:25;;11748:20;11766:1;11748:20;:::i;:::-;11743:25;;11787:1;11777:35;;11792:18;;:::i;:::-;11777:35;11834:1;11831;11827:9;11822:14;;11657:185;;;;:::o;11848:163::-;11988:15;11984:1;11976:6;11972:14;11965:39;11848:163;:::o;12017:366::-;12159:3;12180:67;12244:2;12239:3;12180:67;:::i;:::-;12173:74;;12256:93;12345:3;12256:93;:::i;:::-;12374:2;12369:3;12365:12;12358:19;;12017:366;;;:::o;12389:419::-;12555:4;12593:2;12582:9;12578:18;12570:26;;12642:9;12636:4;12632:20;12628:1;12617:9;12613:17;12606:47;12670:131;12796:4;12670:131;:::i;:::-;12662:139;;12389:419;;;:::o;12814:191::-;12854:3;12873:20;12891:1;12873:20;:::i;:::-;12868:25;;12907:20;12925:1;12907:20;:::i;:::-;12902:25;;12950:1;12947;12943:9;12936:16;;12971:3;12968:1;12965:10;12962:36;;;12978:18;;:::i;:::-;12962:36;12814:191;;;;:::o;13011:162::-;13151:14;13147:1;13139:6;13135:14;13128:38;13011:162;:::o;13179:366::-;13321:3;13342:67;13406:2;13401:3;13342:67;:::i;:::-;13335:74;;13418:93;13507:3;13418:93;:::i;:::-;13536:2;13531:3;13527:12;13520:19;;13179:366;;;:::o;13551:419::-;13717:4;13755:2;13744:9;13740:18;13732:26;;13804:9;13798:4;13794:20;13790:1;13779:9;13775:17;13768:47;13832:131;13958:4;13832:131;:::i;:::-;13824:139;;13551:419;;;:::o;13976:227::-;14116:34;14112:1;14104:6;14100:14;14093:58;14185:10;14180:2;14172:6;14168:15;14161:35;13976:227;:::o;14209:366::-;14351:3;14372:67;14436:2;14431:3;14372:67;:::i;:::-;14365:74;;14448:93;14537:3;14448:93;:::i;:::-;14566:2;14561:3;14557:12;14550:19;;14209:366;;;:::o;14581:419::-;14747:4;14785:2;14774:9;14770:18;14762:26;;14834:9;14828:4;14824:20;14820:1;14809:9;14805:17;14798:47;14862:131;14988:4;14862:131;:::i;:::-;14854:139;;14581:419;;;:::o;15006:332::-;15127:4;15165:2;15154:9;15150:18;15142:26;;15178:71;15246:1;15235:9;15231:17;15222:6;15178:71;:::i;:::-;15259:72;15327:2;15316:9;15312:18;15303:6;15259:72;:::i;:::-;15006:332;;;;;:::o;15344:224::-;15484:34;15480:1;15472:6;15468:14;15461:58;15553:7;15548:2;15540:6;15536:15;15529:32;15344:224;:::o;15574:366::-;15716:3;15737:67;15801:2;15796:3;15737:67;:::i;:::-;15730:74;;15813:93;15902:3;15813:93;:::i;:::-;15931:2;15926:3;15922:12;15915:19;;15574:366;;;:::o;15946:419::-;16112:4;16150:2;16139:9;16135:18;16127:26;;16199:9;16193:4;16189:20;16185:1;16174:9;16170:17;16163:47;16227:131;16353:4;16227:131;:::i;:::-;16219:139;;15946:419;;;:::o;16371:229::-;16511:34;16507:1;16499:6;16495:14;16488:58;16580:12;16575:2;16567:6;16563:15;16556:37;16371:229;:::o;16606:366::-;16748:3;16769:67;16833:2;16828:3;16769:67;:::i;:::-;16762:74;;16845:93;16934:3;16845:93;:::i;:::-;16963:2;16958:3;16954:12;16947:19;;16606:366;;;:::o;16978:419::-;17144:4;17182:2;17171:9;17167:18;17159:26;;17231:9;17225:4;17221:20;17217:1;17206:9;17202:17;17195:47;17259:131;17385:4;17259:131;:::i;:::-;17251:139;;16978:419;;;:::o;17403:225::-;17543:34;17539:1;17531:6;17527:14;17520:58;17612:8;17607:2;17599:6;17595:15;17588:33;17403:225;:::o;17634:366::-;17776:3;17797:67;17861:2;17856:3;17797:67;:::i;:::-;17790:74;;17873:93;17962:3;17873:93;:::i;:::-;17991:2;17986:3;17982:12;17975:19;;17634:366;;;:::o;18006:419::-;18172:4;18210:2;18199:9;18195:18;18187:26;;18259:9;18253:4;18249:20;18245:1;18234:9;18230:17;18223:47;18287:131;18413:4;18287:131;:::i;:::-;18279:139;;18006:419;;;:::o;18431:223::-;18571:34;18567:1;18559:6;18555:14;18548:58;18640:6;18635:2;18627:6;18623:15;18616:31;18431:223;:::o;18660:366::-;18802:3;18823:67;18887:2;18882:3;18823:67;:::i;:::-;18816:74;;18899:93;18988:3;18899:93;:::i;:::-;19017:2;19012:3;19008:12;19001:19;;18660:366;;;:::o;19032:419::-;19198:4;19236:2;19225:9;19221:18;19213:26;;19285:9;19279:4;19275:20;19271:1;19260:9;19256:17;19249:47;19313:131;19439:4;19313:131;:::i;:::-;19305:139;;19032:419;;;:::o;19457:221::-;19597:34;19593:1;19585:6;19581:14;19574:58;19666:4;19661:2;19653:6;19649:15;19642:29;19457:221;:::o;19684:366::-;19826:3;19847:67;19911:2;19906:3;19847:67;:::i;:::-;19840:74;;19923:93;20012:3;19923:93;:::i;:::-;20041:2;20036:3;20032:12;20025:19;;19684:366;;;:::o;20056:419::-;20222:4;20260:2;20249:9;20245:18;20237:26;;20309:9;20303:4;20299:20;20295:1;20284:9;20280:17;20273:47;20337:131;20463:4;20337:131;:::i;:::-;20329:139;;20056:419;;;:::o;20481:224::-;20621:34;20617:1;20609:6;20605:14;20598:58;20690:7;20685:2;20677:6;20673:15;20666:32;20481:224;:::o;20711:366::-;20853:3;20874:67;20938:2;20933:3;20874:67;:::i;:::-;20867:74;;20950:93;21039:3;20950:93;:::i;:::-;21068:2;21063:3;21059:12;21052:19;;20711:366;;;:::o;21083:419::-;21249:4;21287:2;21276:9;21272:18;21264:26;;21336:9;21330:4;21326:20;21322:1;21311:9;21307:17;21300:47;21364:131;21490:4;21364:131;:::i;:::-;21356:139;;21083:419;;;:::o;21508:222::-;21648:34;21644:1;21636:6;21632:14;21625:58;21717:5;21712:2;21704:6;21700:15;21693:30;21508:222;:::o;21736:366::-;21878:3;21899:67;21963:2;21958:3;21899:67;:::i;:::-;21892:74;;21975:93;22064:3;21975:93;:::i;:::-;22093:2;22088:3;22084:12;22077:19;;21736:366;;;:::o;22108:419::-;22274:4;22312:2;22301:9;22297:18;22289:26;;22361:9;22355:4;22351:20;22347:1;22336:9;22332:17;22325:47;22389:131;22515:4;22389:131;:::i;:::-;22381:139;;22108:419;;;:::o;22533:231::-;22673:34;22669:1;22661:6;22657:14;22650:58;22742:14;22737:2;22729:6;22725:15;22718:39;22533:231;:::o;22770:366::-;22912:3;22933:67;22997:2;22992:3;22933:67;:::i;:::-;22926:74;;23009:93;23098:3;23009:93;:::i;:::-;23127:2;23122:3;23118:12;23111:19;;22770:366;;;:::o;23142:419::-;23308:4;23346:2;23335:9;23331:18;23323:26;;23395:9;23389:4;23385:20;23381:1;23370:9;23366:17;23359:47;23423:131;23549:4;23423:131;:::i;:::-;23415:139;;23142:419;;;:::o;23567:223::-;23707:34;23703:1;23695:6;23691:14;23684:58;23776:6;23771:2;23763:6;23759:15;23752:31;23567:223;:::o;23796:366::-;23938:3;23959:67;24023:2;24018:3;23959:67;:::i;:::-;23952:74;;24035:93;24124:3;24035:93;:::i;:::-;24153:2;24148:3;24144:12;24137:19;;23796:366;;;:::o;24168:419::-;24334:4;24372:2;24361:9;24357:18;24349:26;;24421:9;24415:4;24411:20;24407:1;24396:9;24392:17;24385:47;24449:131;24575:4;24449:131;:::i;:::-;24441:139;;24168:419;;;:::o;24593:410::-;24633:7;24656:20;24674:1;24656:20;:::i;:::-;24651:25;;24690:20;24708:1;24690:20;:::i;:::-;24685:25;;24745:1;24742;24738:9;24767:30;24785:11;24767:30;:::i;:::-;24756:41;;24946:1;24937:7;24933:15;24930:1;24927:22;24907:1;24900:9;24880:83;24857:139;;24976:18;;:::i;:::-;24857:139;24641:362;24593:410;;;;:::o;25009:194::-;25049:4;25069:20;25087:1;25069:20;:::i;:::-;25064:25;;25103:20;25121:1;25103:20;:::i;:::-;25098:25;;25147:1;25144;25140:9;25132:17;;25171:1;25165:4;25162:11;25159:37;;;25176:18;;:::i;:::-;25159:37;25009:194;;;;:::o;25209:225::-;25349:34;25345:1;25337:6;25333:14;25326:58;25418:8;25413:2;25405:6;25401:15;25394:33;25209:225;:::o;25440:366::-;25582:3;25603:67;25667:2;25662:3;25603:67;:::i;:::-;25596:74;;25679:93;25768:3;25679:93;:::i;:::-;25797:2;25792:3;25788:12;25781:19;;25440:366;;;:::o;25812:419::-;25978:4;26016:2;26005:9;26001:18;25993:26;;26065:9;26059:4;26055:20;26051:1;26040:9;26036:17;26029:47;26093:131;26219:4;26093:131;:::i;:::-;26085:139;;25812:419;;;:::o;26237:442::-;26386:4;26424:2;26413:9;26409:18;26401:26;;26437:71;26505:1;26494:9;26490:17;26481:6;26437:71;:::i;:::-;26518:72;26586:2;26575:9;26571:18;26562:6;26518:72;:::i;:::-;26600;26668:2;26657:9;26653:18;26644:6;26600:72;:::i;:::-;26237:442;;;;;;:::o;26685:180::-;26733:77;26730:1;26723:88;26830:4;26827:1;26820:15;26854:4;26851:1;26844:15;26871:180;26919:77;26916:1;26909:88;27016:4;27013:1;27006:15;27040:4;27037:1;27030:15;27057:143;27114:5;27145:6;27139:13;27130:22;;27161:33;27188:5;27161:33;:::i;:::-;27057:143;;;;:::o;27206:351::-;27276:6;27325:2;27313:9;27304:7;27300:23;27296:32;27293:119;;;27331:79;;:::i;:::-;27293:119;27451:1;27476:64;27532:7;27523:6;27512:9;27508:22;27476:64;:::i;:::-;27466:74;;27422:128;27206:351;;;;:::o;27563:85::-;27608:7;27637:5;27626:16;;27563:85;;;:::o;27654:158::-;27712:9;27745:61;27763:42;27772:32;27798:5;27772:32;:::i;:::-;27763:42;:::i;:::-;27745:61;:::i;:::-;27732:74;;27654:158;;;:::o;27818:147::-;27913:45;27952:5;27913:45;:::i;:::-;27908:3;27901:58;27818:147;;:::o;27971:114::-;28038:6;28072:5;28066:12;28056:22;;27971:114;;;:::o;28091:184::-;28190:11;28224:6;28219:3;28212:19;28264:4;28259:3;28255:14;28240:29;;28091:184;;;;:::o;28281:132::-;28348:4;28371:3;28363:11;;28401:4;28396:3;28392:14;28384:22;;28281:132;;;:::o;28419:108::-;28496:24;28514:5;28496:24;:::i;:::-;28491:3;28484:37;28419:108;;:::o;28533:179::-;28602:10;28623:46;28665:3;28657:6;28623:46;:::i;:::-;28701:4;28696:3;28692:14;28678:28;;28533:179;;;;:::o;28718:113::-;28788:4;28820;28815:3;28811:14;28803:22;;28718:113;;;:::o;28867:732::-;28986:3;29015:54;29063:5;29015:54;:::i;:::-;29085:86;29164:6;29159:3;29085:86;:::i;:::-;29078:93;;29195:56;29245:5;29195:56;:::i;:::-;29274:7;29305:1;29290:284;29315:6;29312:1;29309:13;29290:284;;;29391:6;29385:13;29418:63;29477:3;29462:13;29418:63;:::i;:::-;29411:70;;29504:60;29557:6;29504:60;:::i;:::-;29494:70;;29350:224;29337:1;29334;29330:9;29325:14;;29290:284;;;29294:14;29590:3;29583:10;;28991:608;;;28867:732;;;;:::o;29605:831::-;29868:4;29906:3;29895:9;29891:19;29883:27;;29920:71;29988:1;29977:9;29973:17;29964:6;29920:71;:::i;:::-;30001:80;30077:2;30066:9;30062:18;30053:6;30001:80;:::i;:::-;30128:9;30122:4;30118:20;30113:2;30102:9;30098:18;30091:48;30156:108;30259:4;30250:6;30156:108;:::i;:::-;30148:116;;30274:72;30342:2;30331:9;30327:18;30318:6;30274:72;:::i;:::-;30356:73;30424:3;30413:9;30409:19;30400:6;30356:73;:::i;:::-;29605:831;;;;;;;;:::o;30442:807::-;30691:4;30729:3;30718:9;30714:19;30706:27;;30743:71;30811:1;30800:9;30796:17;30787:6;30743:71;:::i;:::-;30824:72;30892:2;30881:9;30877:18;30868:6;30824:72;:::i;:::-;30906:80;30982:2;30971:9;30967:18;30958:6;30906:80;:::i;:::-;30996;31072:2;31061:9;31057:18;31048:6;30996:80;:::i;:::-;31086:73;31154:3;31143:9;31139:19;31130:6;31086:73;:::i;:::-;31169;31237:3;31226:9;31222:19;31213:6;31169:73;:::i;:::-;30442:807;;;;;;;;;:::o;31255:143::-;31312:5;31343:6;31337:13;31328:22;;31359:33;31386:5;31359:33;:::i;:::-;31255:143;;;;:::o;31404:663::-;31492:6;31500;31508;31557:2;31545:9;31536:7;31532:23;31528:32;31525:119;;;31563:79;;:::i;:::-;31525:119;31683:1;31708:64;31764:7;31755:6;31744:9;31740:22;31708:64;:::i;:::-;31698:74;;31654:128;31821:2;31847:64;31903:7;31894:6;31883:9;31879:22;31847:64;:::i;:::-;31837:74;;31792:129;31960:2;31986:64;32042:7;32033:6;32022:9;32018:22;31986:64;:::i;:::-;31976:74;;31931:129;31404:663;;;;;:::o
Swarm Source
ipfs://489ffa02d03a1da5d08b7027732c19669a05ef5fb988a363da8a114c56ff2623
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.