ERC-20
Overview
Max Total Supply
420,691,000,000 TETHER
Holders
12
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,790,005,219 TETHERValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
YodaBidenGoku420Doge
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-07 */ //SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @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); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } pragma solidity ^0.8.0; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH(address token,uint amountTokenDesired,uint amountTokenMin,uint amountETHMin,address to,uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn,uint amountOutMin,address[] calldata path,address to,uint deadline) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract YodaBidenGoku420Doge is ERC20, Ownable { IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private swapping; bool public tradingOpen; uint256 public swapTokensAtAmount = 42_069_100 * (10**18); uint256 public maxTxAmount = 4_206_910_000 ether; uint256 public maxWalletAmount= 8_413_820_000 ether; uint256 public maxFeePercent = 20; uint256 public buyLPFee = 0; uint256 public buyMarketingFee = 0; uint256 public sellLPFee = 0; uint256 public sellMarketingFee = 5; uint256 public pendingmarketingFees; address payable public marketingAddress = payable(0x27F8582E7d59a78468dE93620111b25C184942A2); mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedFromLimits; mapping (address => bool) public automatedMarketMakerPairs; mapping(address => bool) public _isBlacklisted; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeFromLimits(address indexed account, bool isExcluded); event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded); event ExcludeMultipleAccountsFromLimits(address[] accounts, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); constructor() ERC20("YodaBidenGoku420Doge", "TETHER") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _setAutomatedMarketMakerPair(_uniswapV2Pair, true); _isExcludedFromLimits[owner()] = true; _isExcludedFromLimits[0x000000000000000000000000000000000000dEaD] = true; _isExcludedFromLimits[marketingAddress] = true; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[marketingAddress] = true; _mint(owner(), 420_691_000_000 * (10**18)); } receive() external payable {} function updateUniswapV2Router(address newAddress) public onlyOwner { require(newAddress != address(uniswapV2Router), "The router already has that address"); emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router)); uniswapV2Router = IUniswapV2Router02(newAddress); address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); uniswapV2Pair = _uniswapV2Pair; } 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 excludeFromLimits(address account, bool excluded) public onlyOwner { require(_isExcludedFromLimits[account] != excluded, "Account is already the value of 'excluded'"); _isExcludedFromLimits[account] = excluded; emit ExcludeFromLimits(account, excluded); } function excludeMultipleAccountsFromFees(address[] memory accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFees[accounts[i]] = excluded; } emit ExcludeMultipleAccountsFromFees(accounts, excluded); } function excludeMultipleAccountsFromLimits(address[] memory accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromLimits[accounts[i]] = excluded; } emit ExcludeMultipleAccountsFromLimits(accounts, excluded); } function setSwapTokensAtAmount(uint256 amount) external onlyOwner { swapTokensAtAmount = amount; } function setMaxTxAmount(uint256 _amount) external onlyOwner { require(_amount > 21000000000 ether, "Wrong Max transaction amount"); maxTxAmount = _amount; } function setMaxWalletAmount(uint256 _amount) external onlyOwner() { require(_amount > 21000000000 ether, "Wrong Max wallet amount"); maxWalletAmount = _amount; } function setTrading() public onlyOwner { require(!tradingOpen,"Trading is already open!"); tradingOpen = true; } function setBuyFee(uint256 _newlpfee, uint256 _newmarketingfee) public onlyOwner { require((_newlpfee + _newmarketingfee + sellLPFee + sellMarketingFee) <= maxFeePercent,"Fee exceed the maximum limit"); buyLPFee = _newlpfee; buyMarketingFee = _newmarketingfee; } function setSellFee(uint256 _newlpfee, uint256 _newmarketingfee) public onlyOwner { require((_newlpfee + _newmarketingfee + buyLPFee + buyMarketingFee) <= maxFeePercent,"Fee exceed the maximum limit"); sellLPFee = _newlpfee; sellMarketingFee = _newmarketingfee; } function setMaxFeePercent(uint256 _maxfee) public onlyOwner { maxFeePercent = _maxfee; } function setMarketingAddress(address payable _newaddress) external onlyOwner { _isExcludedFromLimits[marketingAddress] = false; _isExcludedFromFees[marketingAddress] = false; marketingAddress = _newaddress; _isExcludedFromLimits[marketingAddress] = true; _isExcludedFromFees[marketingAddress] = true; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function blacklistAddress(address account, bool value) external onlyOwner{ _isBlacklisted[account] = value; } function _setAutomatedMarketMakerPair(address pair, bool value) private { require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value"); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function retrieveStuckTokens(address tokenaddress, address recipient, uint amount) external onlyOwner { require(tokenaddress != address(this),"Not retrieve native tokens!"); require(amount <= IERC20(tokenaddress).balanceOf(address(this)), "Insufficient balance to transfer the requested amount."); IERC20(tokenaddress).transfer(recipient, amount); } function retrieveStuckBnb(address recipient, uint amount) external onlyOwner { require(amount <= address(this).balance, "Insufficient balance to transfer the requested amount."); (bool success, ) = payable(recipient).call{ value: amount }(""); require(success, "Address: unable to extract value"); } function swapOnDemand() external onlyOwner { swapping = true; uint256 contractTokenBalanceforlp = balanceOf(address(this))-pendingmarketingFees; swapAndLiquify(contractTokenBalanceforlp); swapping = false; } function claimMarketingFees() external onlyOwner { uint _pendingMarketingFee = pendingmarketingFees; if (_pendingMarketingFee > 0) { swapping = true; swapTokensForEth(_pendingMarketingFee); uint amount = address(this).balance; (bool success, ) = address(marketingAddress).call{ value: amount }(""); require(success, "Address: unable to extract value, tx may have reverted"); pendingmarketingFees = 0; swapping = false; } } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens/2; uint256 otherHalf = tokens-(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); uint256 newBalance = address(this).balance-(initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function feeClaim() internal { uint amount; uint _pendingMarketingFee = pendingmarketingFees; if (_pendingMarketingFee > 0) { swapTokensForEth(_pendingMarketingFee); amount = address(this).balance; (bool success, ) = address(marketingAddress).call{ value: amount }(""); require(success, "Address: unable to extract value, tx may have reverted"); pendingmarketingFees = 0; } } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } /////////////////////////// transfer 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"); require(!_isBlacklisted[from] && !_isBlacklisted[to], 'Blacklisted address'); if(amount == 0) { super._transfer(from, to, 0); return; } if (from != owner() && to != owner()) { if(!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]){ require(tradingOpen,"Trading not open yet"); require(amount < maxTxAmount ,"transfer: amount exceeds the maxTxAmount"); if (to != uniswapV2Pair) { require(balanceOf(to) + amount < maxWalletAmount, "TOKEN: Balance exceeds wallet size!"); } } } uint256 contractTokenBalanceforlp = balanceOf(address(this))-pendingmarketingFees; bool canSwap = contractTokenBalanceforlp >= swapTokensAtAmount; if( canSwap && !swapping && !automatedMarketMakerPairs[from] && from != owner() && to != owner() ) { swapping = true; swapAndLiquify(contractTokenBalanceforlp); feeClaim(); swapping = false; } bool takeFee = !swapping; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } if(takeFee) { if (automatedMarketMakerPairs[from]) { uint256 lpfee = amount * buyLPFee / 100; uint256 mfee = amount * buyMarketingFee / 100; uint totalfee = lpfee + mfee; pendingmarketingFees = pendingmarketingFees + mfee; super._transfer(from, address(this), totalfee); amount = amount - totalfee; } else if (automatedMarketMakerPairs[to]) { uint256 lpfee = amount * sellLPFee / 100; uint256 mfee = amount * sellMarketingFee / 100; uint totalfee = lpfee + mfee; pendingmarketingFees = pendingmarketingFees + mfee; super._transfer(from, address(this), totalfee); amount = amount - totalfee; } } super._transfer(from, to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimMarketingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromLimits","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":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"pendingmarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"retrieveStuckBnb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenaddress","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"retrieveStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newlpfee","type":"uint256"},{"internalType":"uint256","name":"_newmarketingfee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newaddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxfee","type":"uint256"}],"name":"setMaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newlpfee","type":"uint256"},{"internalType":"uint256","name":"_newmarketingfee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapOnDemand","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526a22cc7a7b10d37ece3000006008556b0d97dfd812929d888ac000006009556b1b2fbfb025253b1115800000600a556014600b556000600c556000600d556000600e556005600f557327f8582e7d59a78468de93620111b25c184942a2601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000ae57600080fd5b506040518060400160405280601481526020017f596f6461426964656e476f6b75343230446f67650000000000000000000000008152506040518060400160405280600681526020017f544554484552000000000000000000000000000000000000000000000000000081525081600390816200012c919062000c4c565b5080600490816200013e919062000c4c565b50505062000161620001556200062260201b60201c565b6200062a60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ee919062000d9d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027c919062000d9d565b6040518363ffffffff1660e01b81526004016200029b92919062000de0565b6020604051808303816000875af1158015620002bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e1919062000d9d565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000378816001620006f060201b60201c565b6001601360006200038e6200082660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000620004c96200082660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200061a620006006200082660201b60201c565b6c054f53706741458956330000006200085060201b60201c565b505062000fc0565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150362000785576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077c9062000e94565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b99062000f06565b60405180910390fd5b620008d660008383620009c860201b60201c565b8060026000828254620008ea919062000f57565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000941919062000f57565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009a8919062000fa3565b60405180910390a3620009c460008383620009cd60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a5457607f821691505b60208210810362000a6a5762000a6962000a0c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ad47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a95565b62000ae0868362000a95565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b2d62000b2762000b218462000af8565b62000b02565b62000af8565b9050919050565b6000819050919050565b62000b498362000b0c565b62000b6162000b588262000b34565b84845462000aa2565b825550505050565b600090565b62000b7862000b69565b62000b8581848462000b3e565b505050565b5b8181101562000bad5762000ba160008262000b6e565b60018101905062000b8b565b5050565b601f82111562000bfc5762000bc68162000a70565b62000bd18462000a85565b8101602085101562000be1578190505b62000bf962000bf08562000a85565b83018262000b8a565b50505b505050565b600082821c905092915050565b600062000c216000198460080262000c01565b1980831691505092915050565b600062000c3c838362000c0e565b9150826002028217905092915050565b62000c5782620009d2565b67ffffffffffffffff81111562000c735762000c72620009dd565b5b62000c7f825462000a3b565b62000c8c82828562000bb1565b600060209050601f83116001811462000cc4576000841562000caf578287015190505b62000cbb858262000c2e565b86555062000d2b565b601f19841662000cd48662000a70565b60005b8281101562000cfe5784890151825560018201915060208501945060208101905062000cd7565b8683101562000d1e578489015162000d1a601f89168262000c0e565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d658262000d38565b9050919050565b62000d778162000d58565b811462000d8357600080fd5b50565b60008151905062000d978162000d6c565b92915050565b60006020828403121562000db65762000db562000d33565b5b600062000dc68482850162000d86565b91505092915050565b62000dda8162000d58565b82525050565b600060408201905062000df7600083018562000dcf565b62000e06602083018462000dcf565b9392505050565b600082825260208201905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600062000e7c60388362000e0d565b915062000e898262000e1e565b604082019050919050565b6000602082019050818103600083015262000eaf8162000e6d565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000eee601f8362000e0d565b915062000efb8262000eb6565b602082019050919050565b6000602082019050818103600083015262000f218162000edf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f648262000af8565b915062000f718362000af8565b925082820190508082111562000f8c5762000f8b62000f28565b5b92915050565b62000f9d8162000af8565b82525050565b600060208201905062000fba600083018462000f92565b92915050565b6150138062000fd06000396000f3fe6080604052600436106102cd5760003560e01c8063a2c7f6a711610175578063c912cc46116100dc578063e7dabe3b11610095578063f518fbdd1161006f578063f518fbdd14610aed578063fb0ecfa414610b16578063fba8dfa314610b3f578063ffb54a9914610b68576102d4565b8063e7dabe3b14610a72578063ec28438a14610a9b578063f2fde38b14610ac4576102d4565b8063c912cc4614610960578063d1a1f3181461098b578063d830a05b146109a2578063dd62ed3e146109cd578063e2f4560514610a0a578063e550573d14610a35576102d4565b8063b62496f51161012e578063b62496f514610854578063c024666814610891578063c0a904a2146108ba578063c492f046146108e3578063c6e5a5ab1461090c578063c733da3b14610935576102d4565b8063a2c7f6a714610730578063a457c2d71461075b578063a5ece94114610798578063a9059cbb146107c3578063aa4bde2814610800578063afa4f3b21461082b576102d4565b80634fbee193116102345780637c519ffb116101ed578063906e9dd0116101c7578063906e9dd01461068857806392136913146106b157806395d89b41146106dc5780639a7a23d614610707576102d4565b80637c519ffb1461061b5780638c0b5e22146106325780638da5cb5b1461065d576102d4565b80634fbee1931461050d57806365b8dbc01461054a5780636ac9a8701461057357806370a082311461059c578063715018a6146105d95780637bce5a04146105f0576102d4565b806323b872dd1161028657806323b872dd146103eb57806327a14fc214610428578063313ce56714610451578063395093511461047c578063455a4396146104b957806349bd5a5e146104e2576102d4565b806306fdde03146102d957806307dce0f814610304578063095ea7b31461031b5780631694505e1461035857806318160ddd146103835780631cdd3be3146103ae576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610b93565b6040516102fb91906136fe565b60405180910390f35b34801561031057600080fd5b50610319610c25565b005b34801561032757600080fd5b50610342600480360381019061033d91906137c8565b610d5d565b60405161034f9190613823565b60405180910390f35b34801561036457600080fd5b5061036d610d80565b60405161037a919061389d565b60405180910390f35b34801561038f57600080fd5b50610398610da6565b6040516103a591906138c7565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d091906138e2565b610db0565b6040516103e29190613823565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d919061390f565b610dd0565b60405161041f9190613823565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190613962565b610dff565b005b34801561045d57600080fd5b50610466610e5f565b60405161047391906139ab565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e91906137c8565b610e68565b6040516104b09190613823565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db91906139f2565b610e9f565b005b3480156104ee57600080fd5b506104f7610f02565b6040516105049190613a41565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f91906138e2565b610f28565b6040516105419190613823565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c91906138e2565b610f7e565b005b34801561057f57600080fd5b5061059a60048036038101906105959190613a5c565b6112ba565b005b3480156105a857600080fd5b506105c360048036038101906105be91906138e2565b61133e565b6040516105d091906138c7565b60405180910390f35b3480156105e557600080fd5b506105ee611386565b005b3480156105fc57600080fd5b5061060561139a565b60405161061291906138c7565b60405180910390f35b34801561062757600080fd5b506106306113a0565b005b34801561063e57600080fd5b50610647611415565b60405161065491906138c7565b60405180910390f35b34801561066957600080fd5b5061067261141b565b60405161067f9190613a41565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190613ada565b611445565b005b3480156106bd57600080fd5b506106c6611679565b6040516106d391906138c7565b60405180910390f35b3480156106e857600080fd5b506106f161167f565b6040516106fe91906136fe565b60405180910390f35b34801561071357600080fd5b5061072e600480360381019061072991906139f2565b611711565b005b34801561073c57600080fd5b506107456117b7565b60405161075291906138c7565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d91906137c8565b6117bd565b60405161078f9190613823565b60405180910390f35b3480156107a457600080fd5b506107ad611834565b6040516107ba9190613b16565b60405180910390f35b3480156107cf57600080fd5b506107ea60048036038101906107e591906137c8565b61185a565b6040516107f79190613823565b60405180910390f35b34801561080c57600080fd5b5061081561187d565b60405161082291906138c7565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190613962565b611883565b005b34801561086057600080fd5b5061087b600480360381019061087691906138e2565b611895565b6040516108889190613823565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b391906139f2565b6118b5565b005b3480156108c657600080fd5b506108e160048036038101906108dc91906139f2565b6119f8565b005b3480156108ef57600080fd5b5061090a60048036038101906109059190613c79565b611b3b565b005b34801561091857600080fd5b50610933600480360381019061092e9190613c79565b611c11565b005b34801561094157600080fd5b5061094a611ce7565b60405161095791906138c7565b60405180910390f35b34801561096c57600080fd5b50610975611ced565b60405161098291906138c7565b60405180910390f35b34801561099757600080fd5b506109a0611cf3565b005b3480156109ae57600080fd5b506109b7611d57565b6040516109c491906138c7565b60405180910390f35b3480156109d957600080fd5b506109f460048036038101906109ef9190613cd5565b611d5d565b604051610a0191906138c7565b60405180910390f35b348015610a1657600080fd5b50610a1f611de4565b604051610a2c91906138c7565b60405180910390f35b348015610a4157600080fd5b50610a5c6004803603810190610a5791906138e2565b611dea565b604051610a699190613823565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a9491906137c8565b611e0a565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190613962565b611f06565b005b348015610ad057600080fd5b50610aeb6004803603810190610ae691906138e2565b611f66565b005b348015610af957600080fd5b50610b146004803603810190610b0f9190613962565b611fe9565b005b348015610b2257600080fd5b50610b3d6004803603810190610b389190613a5c565b611ffb565b005b348015610b4b57600080fd5b50610b666004803603810190610b61919061390f565b61207f565b005b348015610b7457600080fd5b50610b7d612235565b604051610b8a9190613823565b60405180910390f35b606060038054610ba290613d44565b80601f0160208091040260200160405190810160405280929190818152602001828054610bce90613d44565b8015610c1b5780601f10610bf057610100808354040283529160200191610c1b565b820191906000526020600020905b815481529060010190602001808311610bfe57829003601f168201915b5050505050905090565b610c2d612248565b600060105490506000811115610d5a576001600760146101000a81548160ff021916908315150217905550610c61816122c6565b60004790506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610cae90613da6565b60006040518083038185875af1925050503d8060008114610ceb576040519150601f19603f3d011682016040523d82523d6000602084013e610cf0565b606091505b5050905080610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90613e2d565b60405180910390fd5b60006010819055506000600760146101000a81548160ff02191690831515021790555050505b50565b600080610d68612509565b9050610d75818585612511565b600191505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60156020528060005260406000206000915054906101000a900460ff1681565b600080610ddb612509565b9050610de88582856126da565b610df3858585612766565b60019150509392505050565b610e07612248565b6b43dacaf91c1a84ff080000008111610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c90613e99565b60405180910390fd5b80600a8190555050565b60006012905090565b600080610e73612509565b9050610e94818585610e858589611d5d565b610e8f9190613ee8565b612511565b600191505092915050565b610ea7612248565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f86612248565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d90613f8e565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111669190613fc3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112139190613fc3565b6040518363ffffffff1660e01b8152600401611230929190613ff0565b6020604051808303816000875af115801561124f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112739190613fc3565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6112c2612248565b600b54600d54600c5483856112d79190613ee8565b6112e19190613ee8565b6112eb9190613ee8565b111561132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390614065565b60405180910390fd5b81600e8190555080600f819055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61138e612248565b6113986000612f83565b565b600d5481565b6113a8612248565b600760159054906101000a900460ff16156113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef906140d1565b60405180910390fd5b6001600760156101000a81548160ff021916908315150217905550565b60095481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d612248565b600060136000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060126000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160136000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f5481565b60606004805461168e90613d44565b80601f01602080910402602001604051908101604052809291908181526020018280546116ba90613d44565b80156117075780601f106116dc57610100808354040283529160200191611707565b820191906000526020600020905b8154815290600101906020018083116116ea57829003601f168201915b5050505050905090565b611719612248565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090614189565b60405180910390fd5b6117b38282613049565b5050565b60105481565b6000806117c8612509565b905060006117d68286611d5d565b90508381101561181b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118129061421b565b60405180910390fd5b6118288286868403612511565b60019250505092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611865612509565b9050611872818585612766565b600191505092915050565b600a5481565b61188b612248565b8060088190555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6118bd612248565b801515601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361194f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611946906142ad565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119ec9190613823565b60405180910390a25050565b611a00612248565b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a89906142ad565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051611b2f9190613823565b60405180910390a25050565b611b43612248565b60005b8251811015611bd3578160126000858481518110611b6757611b666142cd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611bcb906142fc565b915050611b46565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358282604051611c05929190614402565b60405180910390a15050565b611c19612248565b60005b8251811015611ca9578160136000858481518110611c3d57611c3c6142cd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ca1906142fc565b915050611c1c565b507ffa624c67591c4621770c7c716f587f3c0ca1903e71887c49eb7255ff1291baa98282604051611cdb929190614402565b60405180910390a15050565b600c5481565b600e5481565b611cfb612248565b6001600760146101000a81548160ff0219169083151502179055506000601054611d243061133e565b611d2e9190614432565b9050611d398161317c565b6000600760146101000a81548160ff02191690831515021790555050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b60136020528060005260406000206000915054906101000a900460ff1681565b611e12612248565b47811115611e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4c906144d8565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611e7b90613da6565b60006040518083038185875af1925050503d8060008114611eb8576040519150601f19603f3d011682016040523d82523d6000602084013e611ebd565b606091505b5050905080611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef890614544565b60405180910390fd5b505050565b611f0e612248565b6b43dacaf91c1a84ff080000008111611f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f53906145b0565b60405180910390fd5b8060098190555050565b611f6e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd490614642565b60405180910390fd5b611fe681612f83565b50565b611ff1612248565b80600b8190555050565b612003612248565b600b54600f54600e5483856120189190613ee8565b6120229190613ee8565b61202c9190613ee8565b111561206d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206490614065565b60405180910390fd5b81600c8190555080600d819055505050565b612087612248565b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec906146ae565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161212e9190613a41565b602060405180830381865afa15801561214b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216f91906146e3565b8111156121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a8906144d8565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016121ec929190614710565b6020604051808303816000875af115801561220b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222f919061474e565b50505050565b600760159054906101000a900460ff1681565b612250612509565b73ffffffffffffffffffffffffffffffffffffffff1661226e61141b565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb906147c7565b60405180910390fd5b565b6000600267ffffffffffffffff8111156122e3576122e2613b36565b5b6040519080825280602002602001820160405280156123115781602001602082028036833780820191505090505b5090503081600081518110612329576123286142cd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f49190613fc3565b81600181518110612408576124076142cd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061246f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612511565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124d3959493929190614822565b600060405180830381600087803b1580156124ed57600080fd5b505af1158015612501573d6000803e3d6000fd5b505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612580576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612577906148ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e690614980565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126cd91906138c7565b60405180910390a3505050565b60006126e68484611d5d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146127605781811015612752576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612749906149ec565b60405180910390fd5b61275f8484848403612511565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90614a7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283b90614b10565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128e85750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291e90614b7c565b60405180910390fd5b600081036129405761293b83836000613207565b612f7e565b61294861141b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129b6575061298661141b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ba657601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a5f5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ba557600760159054906101000a900460ff16612ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aaa90614be8565b60405180910390fd5b6009548110612af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aee90614c7a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612ba457600a5481612b598461133e565b612b639190613ee8565b10612ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9a90614d0c565b60405180910390fd5b5b5b5b6000601054612bb43061133e565b612bbe9190614432565b905060006008548210159050808015612be45750600760149054906101000a900460ff16155b8015612c3a5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c795750612c4961141b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612cb85750612c8861141b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612d05576001600760146101000a81548160ff021916908315150217905550612ce18261317c565b612ce9613486565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dbb5750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612dc557600090505b8015612f6f57601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e9e5760006064600c5486612e2f9190614d2c565b612e399190614d9d565b905060006064600d5487612e4d9190614d2c565b612e579190614d9d565b905060008183612e679190613ee8565b905081601054612e779190613ee8565b601081905550612e88893083613207565b8087612e949190614432565b9650505050612f6e565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f6d5760006064600e5486612f029190614d2c565b612f0c9190614d9d565b905060006064600f5487612f209190614d2c565b612f2a9190614d9d565b905060008183612f3a9190613ee8565b905081601054612f4a9190613ee8565b601081905550612f5b893083613207565b8087612f679190614432565b96505050505b5b5b612f7a868686613207565b5050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036130db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d290614e40565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600060028261318b9190614d9d565b90506000818361319b9190614432565b905060004790506131ab836122c6565b600081476131b99190614432565b90506131c5838261357f565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516131f893929190614e60565b60405180910390a15050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326d90614a7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036132e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132dc90614b10565b60405180910390fd5b6132f0838383613664565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d90614f09565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134099190613ee8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161346d91906138c7565b60405180910390a3613480848484613669565b50505050565b6000806010549050600081111561357b576134a0816122c6565b4791506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516134eb90613da6565b60006040518083038185875af1925050503d8060008114613528576040519150601f19603f3d011682016040523d82523d6000602084013e61352d565b606091505b5050905080613571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356890613e2d565b60405180910390fd5b6000601081905550505b5050565b6135ac30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612511565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806135f861141b565b426040518863ffffffff1660e01b815260040161361a96959493929190614f29565b60606040518083038185885af1158015613638573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061365d9190614f8a565b5050505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136a857808201518184015260208101905061368d565b60008484015250505050565b6000601f19601f8301169050919050565b60006136d08261366e565b6136da8185613679565b93506136ea81856020860161368a565b6136f3816136b4565b840191505092915050565b6000602082019050818103600083015261371881846136c5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061375f82613734565b9050919050565b61376f81613754565b811461377a57600080fd5b50565b60008135905061378c81613766565b92915050565b6000819050919050565b6137a581613792565b81146137b057600080fd5b50565b6000813590506137c28161379c565b92915050565b600080604083850312156137df576137de61372a565b5b60006137ed8582860161377d565b92505060206137fe858286016137b3565b9150509250929050565b60008115159050919050565b61381d81613808565b82525050565b60006020820190506138386000830184613814565b92915050565b6000819050919050565b600061386361385e61385984613734565b61383e565b613734565b9050919050565b600061387582613848565b9050919050565b60006138878261386a565b9050919050565b6138978161387c565b82525050565b60006020820190506138b2600083018461388e565b92915050565b6138c181613792565b82525050565b60006020820190506138dc60008301846138b8565b92915050565b6000602082840312156138f8576138f761372a565b5b60006139068482850161377d565b91505092915050565b6000806000606084860312156139285761392761372a565b5b60006139368682870161377d565b93505060206139478682870161377d565b9250506040613958868287016137b3565b9150509250925092565b6000602082840312156139785761397761372a565b5b6000613986848285016137b3565b91505092915050565b600060ff82169050919050565b6139a58161398f565b82525050565b60006020820190506139c0600083018461399c565b92915050565b6139cf81613808565b81146139da57600080fd5b50565b6000813590506139ec816139c6565b92915050565b60008060408385031215613a0957613a0861372a565b5b6000613a178582860161377d565b9250506020613a28858286016139dd565b9150509250929050565b613a3b81613754565b82525050565b6000602082019050613a566000830184613a32565b92915050565b60008060408385031215613a7357613a7261372a565b5b6000613a81858286016137b3565b9250506020613a92858286016137b3565b9150509250929050565b6000613aa782613734565b9050919050565b613ab781613a9c565b8114613ac257600080fd5b50565b600081359050613ad481613aae565b92915050565b600060208284031215613af057613aef61372a565b5b6000613afe84828501613ac5565b91505092915050565b613b1081613a9c565b82525050565b6000602082019050613b2b6000830184613b07565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613b6e826136b4565b810181811067ffffffffffffffff82111715613b8d57613b8c613b36565b5b80604052505050565b6000613ba0613720565b9050613bac8282613b65565b919050565b600067ffffffffffffffff821115613bcc57613bcb613b36565b5b602082029050602081019050919050565b600080fd5b6000613bf5613bf084613bb1565b613b96565b90508083825260208201905060208402830185811115613c1857613c17613bdd565b5b835b81811015613c415780613c2d888261377d565b845260208401935050602081019050613c1a565b5050509392505050565b600082601f830112613c6057613c5f613b31565b5b8135613c70848260208601613be2565b91505092915050565b60008060408385031215613c9057613c8f61372a565b5b600083013567ffffffffffffffff811115613cae57613cad61372f565b5b613cba85828601613c4b565b9250506020613ccb858286016139dd565b9150509250929050565b60008060408385031215613cec57613ceb61372a565b5b6000613cfa8582860161377d565b9250506020613d0b8582860161377d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d5c57607f821691505b602082108103613d6f57613d6e613d15565b5b50919050565b600081905092915050565b50565b6000613d90600083613d75565b9150613d9b82613d80565b600082019050919050565b6000613db182613d83565b9150819050919050565b7f416464726573733a20756e61626c6520746f20657874726163742076616c756560008201527f2c207478206d6179206861766520726576657274656400000000000000000000602082015250565b6000613e17603683613679565b9150613e2282613dbb565b604082019050919050565b60006020820190508181036000830152613e4681613e0a565b9050919050565b7f57726f6e67204d61782077616c6c657420616d6f756e74000000000000000000600082015250565b6000613e83601783613679565b9150613e8e82613e4d565b602082019050919050565b60006020820190508181036000830152613eb281613e76565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ef382613792565b9150613efe83613792565b9250828201905080821115613f1657613f15613eb9565b5b92915050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f78602383613679565b9150613f8382613f1c565b604082019050919050565b60006020820190508181036000830152613fa781613f6b565b9050919050565b600081519050613fbd81613766565b92915050565b600060208284031215613fd957613fd861372a565b5b6000613fe784828501613fae565b91505092915050565b60006040820190506140056000830185613a32565b6140126020830184613a32565b9392505050565b7f4665652065786365656420746865206d6178696d756d206c696d697400000000600082015250565b600061404f601c83613679565b915061405a82614019565b602082019050919050565b6000602082019050818103600083015261407e81614042565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e210000000000000000600082015250565b60006140bb601883613679565b91506140c682614085565b602082019050919050565b600060208201905081810360008301526140ea816140ae565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b6000614173604583613679565b915061417e826140f1565b606082019050919050565b600060208201905081810360008301526141a281614166565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614205602583613679565b9150614210826141a9565b604082019050919050565b60006020820190508181036000830152614234816141f8565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614297602a83613679565b91506142a28261423b565b604082019050919050565b600060208201905081810360008301526142c68161428a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061430782613792565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361433957614338613eb9565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61437981613754565b82525050565b600061438b8383614370565b60208301905092915050565b6000602082019050919050565b60006143af82614344565b6143b9818561434f565b93506143c483614360565b8060005b838110156143f55781516143dc888261437f565b97506143e783614397565b9250506001810190506143c8565b5085935050505092915050565b6000604082019050818103600083015261441c81856143a4565b905061442b6020830184613814565b9392505050565b600061443d82613792565b915061444883613792565b92508282039050818111156144605761445f613eb9565b5b92915050565b7f496e73756666696369656e742062616c616e636520746f207472616e7366657260008201527f207468652072657175657374656420616d6f756e742e00000000000000000000602082015250565b60006144c2603683613679565b91506144cd82614466565b604082019050919050565b600060208201905081810360008301526144f1816144b5565b9050919050565b7f416464726573733a20756e61626c6520746f20657874726163742076616c7565600082015250565b600061452e602083613679565b9150614539826144f8565b602082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f57726f6e67204d6178207472616e73616374696f6e20616d6f756e7400000000600082015250565b600061459a601c83613679565b91506145a582614564565b602082019050919050565b600060208201905081810360008301526145c98161458d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061462c602683613679565b9150614637826145d0565b604082019050919050565b6000602082019050818103600083015261465b8161461f565b9050919050565b7f4e6f74207265747269657665206e617469766520746f6b656e73210000000000600082015250565b6000614698601b83613679565b91506146a382614662565b602082019050919050565b600060208201905081810360008301526146c78161468b565b9050919050565b6000815190506146dd8161379c565b92915050565b6000602082840312156146f9576146f861372a565b5b6000614707848285016146ce565b91505092915050565b60006040820190506147256000830185613a32565b61473260208301846138b8565b9392505050565b600081519050614748816139c6565b92915050565b6000602082840312156147645761476361372a565b5b600061477284828501614739565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147b1602083613679565b91506147bc8261477b565b602082019050919050565b600060208201905081810360008301526147e0816147a4565b9050919050565b6000819050919050565b600061480c614807614802846147e7565b61383e565b613792565b9050919050565b61481c816147f1565b82525050565b600060a08201905061483760008301886138b8565b6148446020830187614813565b818103604083015261485681866143a4565b90506148656060830185613a32565b61487260808301846138b8565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006148d8602483613679565b91506148e38261487c565b604082019050919050565b60006020820190508181036000830152614907816148cb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061496a602283613679565b91506149758261490e565b604082019050919050565b600060208201905081810360008301526149998161495d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006149d6601d83613679565b91506149e1826149a0565b602082019050919050565b60006020820190508181036000830152614a05816149c9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614a68602583613679565b9150614a7382614a0c565b604082019050919050565b60006020820190508181036000830152614a9781614a5b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614afa602383613679565b9150614b0582614a9e565b604082019050919050565b60006020820190508181036000830152614b2981614aed565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b6000614b66601383613679565b9150614b7182614b30565b602082019050919050565b60006020820190508181036000830152614b9581614b59565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614bd2601483613679565b9150614bdd82614b9c565b602082019050919050565b60006020820190508181036000830152614c0181614bc5565b9050919050565b7f7472616e736665723a20616d6f756e74206578636565647320746865206d617860008201527f5478416d6f756e74000000000000000000000000000000000000000000000000602082015250565b6000614c64602883613679565b9150614c6f82614c08565b604082019050919050565b60006020820190508181036000830152614c9381614c57565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000614cf6602383613679565b9150614d0182614c9a565b604082019050919050565b60006020820190508181036000830152614d2581614ce9565b9050919050565b6000614d3782613792565b9150614d4283613792565b9250828202614d5081613792565b91508282048414831517614d6757614d66613eb9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614da882613792565b9150614db383613792565b925082614dc357614dc2614d6e565b5b828204905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b6000614e2a603883613679565b9150614e3582614dce565b604082019050919050565b60006020820190508181036000830152614e5981614e1d565b9050919050565b6000606082019050614e7560008301866138b8565b614e8260208301856138b8565b614e8f60408301846138b8565b949350505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614ef3602683613679565b9150614efe82614e97565b604082019050919050565b60006020820190508181036000830152614f2281614ee6565b9050919050565b600060c082019050614f3e6000830189613a32565b614f4b60208301886138b8565b614f586040830187614813565b614f656060830186614813565b614f726080830185613a32565b614f7f60a08301846138b8565b979650505050505050565b600080600060608486031215614fa357614fa261372a565b5b6000614fb1868287016146ce565b9350506020614fc2868287016146ce565b9250506040614fd3868287016146ce565b915050925092509256fea26469706673582212201b7658e00d8859cb403b7a28d80484079b7707df92f648373a94d1b2d391623764736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102cd5760003560e01c8063a2c7f6a711610175578063c912cc46116100dc578063e7dabe3b11610095578063f518fbdd1161006f578063f518fbdd14610aed578063fb0ecfa414610b16578063fba8dfa314610b3f578063ffb54a9914610b68576102d4565b8063e7dabe3b14610a72578063ec28438a14610a9b578063f2fde38b14610ac4576102d4565b8063c912cc4614610960578063d1a1f3181461098b578063d830a05b146109a2578063dd62ed3e146109cd578063e2f4560514610a0a578063e550573d14610a35576102d4565b8063b62496f51161012e578063b62496f514610854578063c024666814610891578063c0a904a2146108ba578063c492f046146108e3578063c6e5a5ab1461090c578063c733da3b14610935576102d4565b8063a2c7f6a714610730578063a457c2d71461075b578063a5ece94114610798578063a9059cbb146107c3578063aa4bde2814610800578063afa4f3b21461082b576102d4565b80634fbee193116102345780637c519ffb116101ed578063906e9dd0116101c7578063906e9dd01461068857806392136913146106b157806395d89b41146106dc5780639a7a23d614610707576102d4565b80637c519ffb1461061b5780638c0b5e22146106325780638da5cb5b1461065d576102d4565b80634fbee1931461050d57806365b8dbc01461054a5780636ac9a8701461057357806370a082311461059c578063715018a6146105d95780637bce5a04146105f0576102d4565b806323b872dd1161028657806323b872dd146103eb57806327a14fc214610428578063313ce56714610451578063395093511461047c578063455a4396146104b957806349bd5a5e146104e2576102d4565b806306fdde03146102d957806307dce0f814610304578063095ea7b31461031b5780631694505e1461035857806318160ddd146103835780631cdd3be3146103ae576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610b93565b6040516102fb91906136fe565b60405180910390f35b34801561031057600080fd5b50610319610c25565b005b34801561032757600080fd5b50610342600480360381019061033d91906137c8565b610d5d565b60405161034f9190613823565b60405180910390f35b34801561036457600080fd5b5061036d610d80565b60405161037a919061389d565b60405180910390f35b34801561038f57600080fd5b50610398610da6565b6040516103a591906138c7565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d091906138e2565b610db0565b6040516103e29190613823565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d919061390f565b610dd0565b60405161041f9190613823565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190613962565b610dff565b005b34801561045d57600080fd5b50610466610e5f565b60405161047391906139ab565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e91906137c8565b610e68565b6040516104b09190613823565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db91906139f2565b610e9f565b005b3480156104ee57600080fd5b506104f7610f02565b6040516105049190613a41565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f91906138e2565b610f28565b6040516105419190613823565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c91906138e2565b610f7e565b005b34801561057f57600080fd5b5061059a60048036038101906105959190613a5c565b6112ba565b005b3480156105a857600080fd5b506105c360048036038101906105be91906138e2565b61133e565b6040516105d091906138c7565b60405180910390f35b3480156105e557600080fd5b506105ee611386565b005b3480156105fc57600080fd5b5061060561139a565b60405161061291906138c7565b60405180910390f35b34801561062757600080fd5b506106306113a0565b005b34801561063e57600080fd5b50610647611415565b60405161065491906138c7565b60405180910390f35b34801561066957600080fd5b5061067261141b565b60405161067f9190613a41565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190613ada565b611445565b005b3480156106bd57600080fd5b506106c6611679565b6040516106d391906138c7565b60405180910390f35b3480156106e857600080fd5b506106f161167f565b6040516106fe91906136fe565b60405180910390f35b34801561071357600080fd5b5061072e600480360381019061072991906139f2565b611711565b005b34801561073c57600080fd5b506107456117b7565b60405161075291906138c7565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d91906137c8565b6117bd565b60405161078f9190613823565b60405180910390f35b3480156107a457600080fd5b506107ad611834565b6040516107ba9190613b16565b60405180910390f35b3480156107cf57600080fd5b506107ea60048036038101906107e591906137c8565b61185a565b6040516107f79190613823565b60405180910390f35b34801561080c57600080fd5b5061081561187d565b60405161082291906138c7565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190613962565b611883565b005b34801561086057600080fd5b5061087b600480360381019061087691906138e2565b611895565b6040516108889190613823565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b391906139f2565b6118b5565b005b3480156108c657600080fd5b506108e160048036038101906108dc91906139f2565b6119f8565b005b3480156108ef57600080fd5b5061090a60048036038101906109059190613c79565b611b3b565b005b34801561091857600080fd5b50610933600480360381019061092e9190613c79565b611c11565b005b34801561094157600080fd5b5061094a611ce7565b60405161095791906138c7565b60405180910390f35b34801561096c57600080fd5b50610975611ced565b60405161098291906138c7565b60405180910390f35b34801561099757600080fd5b506109a0611cf3565b005b3480156109ae57600080fd5b506109b7611d57565b6040516109c491906138c7565b60405180910390f35b3480156109d957600080fd5b506109f460048036038101906109ef9190613cd5565b611d5d565b604051610a0191906138c7565b60405180910390f35b348015610a1657600080fd5b50610a1f611de4565b604051610a2c91906138c7565b60405180910390f35b348015610a4157600080fd5b50610a5c6004803603810190610a5791906138e2565b611dea565b604051610a699190613823565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a9491906137c8565b611e0a565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190613962565b611f06565b005b348015610ad057600080fd5b50610aeb6004803603810190610ae691906138e2565b611f66565b005b348015610af957600080fd5b50610b146004803603810190610b0f9190613962565b611fe9565b005b348015610b2257600080fd5b50610b3d6004803603810190610b389190613a5c565b611ffb565b005b348015610b4b57600080fd5b50610b666004803603810190610b61919061390f565b61207f565b005b348015610b7457600080fd5b50610b7d612235565b604051610b8a9190613823565b60405180910390f35b606060038054610ba290613d44565b80601f0160208091040260200160405190810160405280929190818152602001828054610bce90613d44565b8015610c1b5780601f10610bf057610100808354040283529160200191610c1b565b820191906000526020600020905b815481529060010190602001808311610bfe57829003601f168201915b5050505050905090565b610c2d612248565b600060105490506000811115610d5a576001600760146101000a81548160ff021916908315150217905550610c61816122c6565b60004790506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610cae90613da6565b60006040518083038185875af1925050503d8060008114610ceb576040519150601f19603f3d011682016040523d82523d6000602084013e610cf0565b606091505b5050905080610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90613e2d565b60405180910390fd5b60006010819055506000600760146101000a81548160ff02191690831515021790555050505b50565b600080610d68612509565b9050610d75818585612511565b600191505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60156020528060005260406000206000915054906101000a900460ff1681565b600080610ddb612509565b9050610de88582856126da565b610df3858585612766565b60019150509392505050565b610e07612248565b6b43dacaf91c1a84ff080000008111610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c90613e99565b60405180910390fd5b80600a8190555050565b60006012905090565b600080610e73612509565b9050610e94818585610e858589611d5d565b610e8f9190613ee8565b612511565b600191505092915050565b610ea7612248565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f86612248565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d90613f8e565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111669190613fc3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112139190613fc3565b6040518363ffffffff1660e01b8152600401611230929190613ff0565b6020604051808303816000875af115801561124f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112739190613fc3565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6112c2612248565b600b54600d54600c5483856112d79190613ee8565b6112e19190613ee8565b6112eb9190613ee8565b111561132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390614065565b60405180910390fd5b81600e8190555080600f819055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61138e612248565b6113986000612f83565b565b600d5481565b6113a8612248565b600760159054906101000a900460ff16156113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef906140d1565b60405180910390fd5b6001600760156101000a81548160ff021916908315150217905550565b60095481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d612248565b600060136000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060126000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160136000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f5481565b60606004805461168e90613d44565b80601f01602080910402602001604051908101604052809291908181526020018280546116ba90613d44565b80156117075780601f106116dc57610100808354040283529160200191611707565b820191906000526020600020905b8154815290600101906020018083116116ea57829003601f168201915b5050505050905090565b611719612248565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090614189565b60405180910390fd5b6117b38282613049565b5050565b60105481565b6000806117c8612509565b905060006117d68286611d5d565b90508381101561181b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118129061421b565b60405180910390fd5b6118288286868403612511565b60019250505092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611865612509565b9050611872818585612766565b600191505092915050565b600a5481565b61188b612248565b8060088190555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6118bd612248565b801515601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361194f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611946906142ad565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119ec9190613823565b60405180910390a25050565b611a00612248565b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a89906142ad565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051611b2f9190613823565b60405180910390a25050565b611b43612248565b60005b8251811015611bd3578160126000858481518110611b6757611b666142cd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611bcb906142fc565b915050611b46565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358282604051611c05929190614402565b60405180910390a15050565b611c19612248565b60005b8251811015611ca9578160136000858481518110611c3d57611c3c6142cd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ca1906142fc565b915050611c1c565b507ffa624c67591c4621770c7c716f587f3c0ca1903e71887c49eb7255ff1291baa98282604051611cdb929190614402565b60405180910390a15050565b600c5481565b600e5481565b611cfb612248565b6001600760146101000a81548160ff0219169083151502179055506000601054611d243061133e565b611d2e9190614432565b9050611d398161317c565b6000600760146101000a81548160ff02191690831515021790555050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b60136020528060005260406000206000915054906101000a900460ff1681565b611e12612248565b47811115611e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4c906144d8565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611e7b90613da6565b60006040518083038185875af1925050503d8060008114611eb8576040519150601f19603f3d011682016040523d82523d6000602084013e611ebd565b606091505b5050905080611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef890614544565b60405180910390fd5b505050565b611f0e612248565b6b43dacaf91c1a84ff080000008111611f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f53906145b0565b60405180910390fd5b8060098190555050565b611f6e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd490614642565b60405180910390fd5b611fe681612f83565b50565b611ff1612248565b80600b8190555050565b612003612248565b600b54600f54600e5483856120189190613ee8565b6120229190613ee8565b61202c9190613ee8565b111561206d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206490614065565b60405180910390fd5b81600c8190555080600d819055505050565b612087612248565b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec906146ae565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161212e9190613a41565b602060405180830381865afa15801561214b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216f91906146e3565b8111156121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a8906144d8565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016121ec929190614710565b6020604051808303816000875af115801561220b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222f919061474e565b50505050565b600760159054906101000a900460ff1681565b612250612509565b73ffffffffffffffffffffffffffffffffffffffff1661226e61141b565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb906147c7565b60405180910390fd5b565b6000600267ffffffffffffffff8111156122e3576122e2613b36565b5b6040519080825280602002602001820160405280156123115781602001602082028036833780820191505090505b5090503081600081518110612329576123286142cd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f49190613fc3565b81600181518110612408576124076142cd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061246f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612511565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124d3959493929190614822565b600060405180830381600087803b1580156124ed57600080fd5b505af1158015612501573d6000803e3d6000fd5b505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612580576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612577906148ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e690614980565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126cd91906138c7565b60405180910390a3505050565b60006126e68484611d5d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146127605781811015612752576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612749906149ec565b60405180910390fd5b61275f8484848403612511565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90614a7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283b90614b10565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128e85750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291e90614b7c565b60405180910390fd5b600081036129405761293b83836000613207565b612f7e565b61294861141b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129b6575061298661141b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ba657601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a5f5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ba557600760159054906101000a900460ff16612ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aaa90614be8565b60405180910390fd5b6009548110612af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aee90614c7a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612ba457600a5481612b598461133e565b612b639190613ee8565b10612ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9a90614d0c565b60405180910390fd5b5b5b5b6000601054612bb43061133e565b612bbe9190614432565b905060006008548210159050808015612be45750600760149054906101000a900460ff16155b8015612c3a5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c795750612c4961141b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612cb85750612c8861141b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612d05576001600760146101000a81548160ff021916908315150217905550612ce18261317c565b612ce9613486565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dbb5750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612dc557600090505b8015612f6f57601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e9e5760006064600c5486612e2f9190614d2c565b612e399190614d9d565b905060006064600d5487612e4d9190614d2c565b612e579190614d9d565b905060008183612e679190613ee8565b905081601054612e779190613ee8565b601081905550612e88893083613207565b8087612e949190614432565b9650505050612f6e565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f6d5760006064600e5486612f029190614d2c565b612f0c9190614d9d565b905060006064600f5487612f209190614d2c565b612f2a9190614d9d565b905060008183612f3a9190613ee8565b905081601054612f4a9190613ee8565b601081905550612f5b893083613207565b8087612f679190614432565b96505050505b5b5b612f7a868686613207565b5050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036130db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d290614e40565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600060028261318b9190614d9d565b90506000818361319b9190614432565b905060004790506131ab836122c6565b600081476131b99190614432565b90506131c5838261357f565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516131f893929190614e60565b60405180910390a15050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326d90614a7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036132e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132dc90614b10565b60405180910390fd5b6132f0838383613664565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d90614f09565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134099190613ee8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161346d91906138c7565b60405180910390a3613480848484613669565b50505050565b6000806010549050600081111561357b576134a0816122c6565b4791506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516134eb90613da6565b60006040518083038185875af1925050503d8060008114613528576040519150601f19603f3d011682016040523d82523d6000602084013e61352d565b606091505b5050905080613571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356890613e2d565b60405180910390fd5b6000601081905550505b5050565b6135ac30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612511565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806135f861141b565b426040518863ffffffff1660e01b815260040161361a96959493929190614f29565b60606040518083038185885af1158015613638573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061365d9190614f8a565b5050505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136a857808201518184015260208101905061368d565b60008484015250505050565b6000601f19601f8301169050919050565b60006136d08261366e565b6136da8185613679565b93506136ea81856020860161368a565b6136f3816136b4565b840191505092915050565b6000602082019050818103600083015261371881846136c5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061375f82613734565b9050919050565b61376f81613754565b811461377a57600080fd5b50565b60008135905061378c81613766565b92915050565b6000819050919050565b6137a581613792565b81146137b057600080fd5b50565b6000813590506137c28161379c565b92915050565b600080604083850312156137df576137de61372a565b5b60006137ed8582860161377d565b92505060206137fe858286016137b3565b9150509250929050565b60008115159050919050565b61381d81613808565b82525050565b60006020820190506138386000830184613814565b92915050565b6000819050919050565b600061386361385e61385984613734565b61383e565b613734565b9050919050565b600061387582613848565b9050919050565b60006138878261386a565b9050919050565b6138978161387c565b82525050565b60006020820190506138b2600083018461388e565b92915050565b6138c181613792565b82525050565b60006020820190506138dc60008301846138b8565b92915050565b6000602082840312156138f8576138f761372a565b5b60006139068482850161377d565b91505092915050565b6000806000606084860312156139285761392761372a565b5b60006139368682870161377d565b93505060206139478682870161377d565b9250506040613958868287016137b3565b9150509250925092565b6000602082840312156139785761397761372a565b5b6000613986848285016137b3565b91505092915050565b600060ff82169050919050565b6139a58161398f565b82525050565b60006020820190506139c0600083018461399c565b92915050565b6139cf81613808565b81146139da57600080fd5b50565b6000813590506139ec816139c6565b92915050565b60008060408385031215613a0957613a0861372a565b5b6000613a178582860161377d565b9250506020613a28858286016139dd565b9150509250929050565b613a3b81613754565b82525050565b6000602082019050613a566000830184613a32565b92915050565b60008060408385031215613a7357613a7261372a565b5b6000613a81858286016137b3565b9250506020613a92858286016137b3565b9150509250929050565b6000613aa782613734565b9050919050565b613ab781613a9c565b8114613ac257600080fd5b50565b600081359050613ad481613aae565b92915050565b600060208284031215613af057613aef61372a565b5b6000613afe84828501613ac5565b91505092915050565b613b1081613a9c565b82525050565b6000602082019050613b2b6000830184613b07565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613b6e826136b4565b810181811067ffffffffffffffff82111715613b8d57613b8c613b36565b5b80604052505050565b6000613ba0613720565b9050613bac8282613b65565b919050565b600067ffffffffffffffff821115613bcc57613bcb613b36565b5b602082029050602081019050919050565b600080fd5b6000613bf5613bf084613bb1565b613b96565b90508083825260208201905060208402830185811115613c1857613c17613bdd565b5b835b81811015613c415780613c2d888261377d565b845260208401935050602081019050613c1a565b5050509392505050565b600082601f830112613c6057613c5f613b31565b5b8135613c70848260208601613be2565b91505092915050565b60008060408385031215613c9057613c8f61372a565b5b600083013567ffffffffffffffff811115613cae57613cad61372f565b5b613cba85828601613c4b565b9250506020613ccb858286016139dd565b9150509250929050565b60008060408385031215613cec57613ceb61372a565b5b6000613cfa8582860161377d565b9250506020613d0b8582860161377d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d5c57607f821691505b602082108103613d6f57613d6e613d15565b5b50919050565b600081905092915050565b50565b6000613d90600083613d75565b9150613d9b82613d80565b600082019050919050565b6000613db182613d83565b9150819050919050565b7f416464726573733a20756e61626c6520746f20657874726163742076616c756560008201527f2c207478206d6179206861766520726576657274656400000000000000000000602082015250565b6000613e17603683613679565b9150613e2282613dbb565b604082019050919050565b60006020820190508181036000830152613e4681613e0a565b9050919050565b7f57726f6e67204d61782077616c6c657420616d6f756e74000000000000000000600082015250565b6000613e83601783613679565b9150613e8e82613e4d565b602082019050919050565b60006020820190508181036000830152613eb281613e76565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ef382613792565b9150613efe83613792565b9250828201905080821115613f1657613f15613eb9565b5b92915050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f78602383613679565b9150613f8382613f1c565b604082019050919050565b60006020820190508181036000830152613fa781613f6b565b9050919050565b600081519050613fbd81613766565b92915050565b600060208284031215613fd957613fd861372a565b5b6000613fe784828501613fae565b91505092915050565b60006040820190506140056000830185613a32565b6140126020830184613a32565b9392505050565b7f4665652065786365656420746865206d6178696d756d206c696d697400000000600082015250565b600061404f601c83613679565b915061405a82614019565b602082019050919050565b6000602082019050818103600083015261407e81614042565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e210000000000000000600082015250565b60006140bb601883613679565b91506140c682614085565b602082019050919050565b600060208201905081810360008301526140ea816140ae565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b6000614173604583613679565b915061417e826140f1565b606082019050919050565b600060208201905081810360008301526141a281614166565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614205602583613679565b9150614210826141a9565b604082019050919050565b60006020820190508181036000830152614234816141f8565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614297602a83613679565b91506142a28261423b565b604082019050919050565b600060208201905081810360008301526142c68161428a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061430782613792565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361433957614338613eb9565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61437981613754565b82525050565b600061438b8383614370565b60208301905092915050565b6000602082019050919050565b60006143af82614344565b6143b9818561434f565b93506143c483614360565b8060005b838110156143f55781516143dc888261437f565b97506143e783614397565b9250506001810190506143c8565b5085935050505092915050565b6000604082019050818103600083015261441c81856143a4565b905061442b6020830184613814565b9392505050565b600061443d82613792565b915061444883613792565b92508282039050818111156144605761445f613eb9565b5b92915050565b7f496e73756666696369656e742062616c616e636520746f207472616e7366657260008201527f207468652072657175657374656420616d6f756e742e00000000000000000000602082015250565b60006144c2603683613679565b91506144cd82614466565b604082019050919050565b600060208201905081810360008301526144f1816144b5565b9050919050565b7f416464726573733a20756e61626c6520746f20657874726163742076616c7565600082015250565b600061452e602083613679565b9150614539826144f8565b602082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f57726f6e67204d6178207472616e73616374696f6e20616d6f756e7400000000600082015250565b600061459a601c83613679565b91506145a582614564565b602082019050919050565b600060208201905081810360008301526145c98161458d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061462c602683613679565b9150614637826145d0565b604082019050919050565b6000602082019050818103600083015261465b8161461f565b9050919050565b7f4e6f74207265747269657665206e617469766520746f6b656e73210000000000600082015250565b6000614698601b83613679565b91506146a382614662565b602082019050919050565b600060208201905081810360008301526146c78161468b565b9050919050565b6000815190506146dd8161379c565b92915050565b6000602082840312156146f9576146f861372a565b5b6000614707848285016146ce565b91505092915050565b60006040820190506147256000830185613a32565b61473260208301846138b8565b9392505050565b600081519050614748816139c6565b92915050565b6000602082840312156147645761476361372a565b5b600061477284828501614739565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147b1602083613679565b91506147bc8261477b565b602082019050919050565b600060208201905081810360008301526147e0816147a4565b9050919050565b6000819050919050565b600061480c614807614802846147e7565b61383e565b613792565b9050919050565b61481c816147f1565b82525050565b600060a08201905061483760008301886138b8565b6148446020830187614813565b818103604083015261485681866143a4565b90506148656060830185613a32565b61487260808301846138b8565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006148d8602483613679565b91506148e38261487c565b604082019050919050565b60006020820190508181036000830152614907816148cb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061496a602283613679565b91506149758261490e565b604082019050919050565b600060208201905081810360008301526149998161495d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006149d6601d83613679565b91506149e1826149a0565b602082019050919050565b60006020820190508181036000830152614a05816149c9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614a68602583613679565b9150614a7382614a0c565b604082019050919050565b60006020820190508181036000830152614a9781614a5b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614afa602383613679565b9150614b0582614a9e565b604082019050919050565b60006020820190508181036000830152614b2981614aed565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b6000614b66601383613679565b9150614b7182614b30565b602082019050919050565b60006020820190508181036000830152614b9581614b59565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614bd2601483613679565b9150614bdd82614b9c565b602082019050919050565b60006020820190508181036000830152614c0181614bc5565b9050919050565b7f7472616e736665723a20616d6f756e74206578636565647320746865206d617860008201527f5478416d6f756e74000000000000000000000000000000000000000000000000602082015250565b6000614c64602883613679565b9150614c6f82614c08565b604082019050919050565b60006020820190508181036000830152614c9381614c57565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000614cf6602383613679565b9150614d0182614c9a565b604082019050919050565b60006020820190508181036000830152614d2581614ce9565b9050919050565b6000614d3782613792565b9150614d4283613792565b9250828202614d5081613792565b91508282048414831517614d6757614d66613eb9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614da882613792565b9150614db383613792565b925082614dc357614dc2614d6e565b5b828204905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b6000614e2a603883613679565b9150614e3582614dce565b604082019050919050565b60006020820190508181036000830152614e5981614e1d565b9050919050565b6000606082019050614e7560008301866138b8565b614e8260208301856138b8565b614e8f60408301846138b8565b949350505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614ef3602683613679565b9150614efe82614e97565b604082019050919050565b60006020820190508181036000830152614f2281614ee6565b9050919050565b600060c082019050614f3e6000830189613a32565b614f4b60208301886138b8565b614f586040830187614813565b614f656060830186614813565b614f726080830185613a32565b614f7f60a08301846138b8565b979650505050505050565b600080600060608486031215614fa357614fa261372a565b5b6000614fb1868287016146ce565b9350506020614fc2868287016146ce565b9250506040614fd3868287016146ce565b915050925092509256fea26469706673582212201b7658e00d8859cb403b7a28d80484079b7707df92f648373a94d1b2d391623764736f6c63430008120033
Deployed Bytecode Sourcemap
20895:12464:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9387:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28568:535;;;;;;;;;;;;;:::i;:::-;;11738:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20950:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10507:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21803:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12519:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25345:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10349:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13223:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27008:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20999:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27453:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23340:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25976:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10678:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2810:103;;;;;;;;;;;;;:::i;:::-;;21351:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25535:135;;;;;;;;;;;;;:::i;:::-;;21160:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2162:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26385:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21427:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9606:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26746:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21471:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13964:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21515:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11011:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21215:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25042:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21738:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23826:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24120:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24422:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24728:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21317:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21392:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28312:248;;;;;;;;;;;;;:::i;:::-;;21275:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11267:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21096:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21677:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27973:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25160:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3068:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26277:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25676:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27586:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21064:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9387:100;9441:13;9474:5;9467:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9387:100;:::o;28568:535::-;2048:13;:11;:13::i;:::-;28628:25:::1;28656:20;;28628:48;;28714:1;28691:20;:24;28687:409;;;28749:4;28738:8;;:15;;;;;;;;;;;;;;;;;;28768:38;28785:20;28768:16;:38::i;:::-;28817:11;28831:21;28817:35;;28864:12;28890:16;;;;;;;;;;;28882:30;;28921:6;28882:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28863:70;;;28952:7;28944:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;29052:1;29029:20;:24;;;;29075:5;29064:8;;:16;;;;;;;;;;;;;;;;;;28727:369;;28687:409;28617:486;28568:535::o:0;11738:201::-;11821:4;11838:13;11854:12;:10;:12::i;:::-;11838:28;;11877:32;11886:5;11893:7;11902:6;11877:8;:32::i;:::-;11927:4;11920:11;;;11738:201;;;;:::o;20950:41::-;;;;;;;;;;;;;:::o;10507:108::-;10568:7;10595:12;;10588:19;;10507:108;:::o;21803:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;12519:295::-;12650:4;12667:15;12685:12;:10;:12::i;:::-;12667:30;;12708:38;12724:4;12730:7;12739:6;12708:15;:38::i;:::-;12757:27;12767:4;12773:2;12777:6;12757:9;:27::i;:::-;12802:4;12795:11;;;12519:295;;;;;:::o;25345:184::-;2048:13;:11;:13::i;:::-;25440:17:::1;25430:7;:27;25422:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;25514:7;25496:15;:25;;;;25345:184:::0;:::o;10349:93::-;10407:5;10432:2;10425:9;;10349:93;:::o;13223:238::-;13311:4;13328:13;13344:12;:10;:12::i;:::-;13328:28;;13367:64;13376:5;13383:7;13420:10;13392:25;13402:5;13409:7;13392:9;:25::i;:::-;:38;;;;:::i;:::-;13367:8;:64::i;:::-;13449:4;13442:11;;;13223:238;;;;:::o;27008:123::-;2048:13;:11;:13::i;:::-;27118:5:::1;27092:14;:23;27107:7;27092:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;27008:123:::0;;:::o;20999:28::-;;;;;;;;;;;;;:::o;27453:125::-;27518:4;27542:19;:28;27562:7;27542:28;;;;;;;;;;;;;;;;;;;;;;;;;27535:35;;27453:125;;;:::o;23340:478::-;2048:13;:11;:13::i;:::-;23449:15:::1;;;;;;;;;;;23427:38;;:10;:38;;::::0;23419:86:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23563:15;;;;;;;;;;;23521:59;;23543:10;23521:59;;;;;;;;;;;;23628:10;23591:15;;:48;;;;;;;;;;;;;;;;;;23650:22;23693:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23675:55;;;23739:4;23746:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23675:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23650:119;;23796:14;23780:13;;:30;;;;;;;;;;;;;;;;;;23408:410;23340:478:::0;:::o;25976:295::-;2048:13;:11;:13::i;:::-;26140::::1;;26120:15;;26109:8;;26090:16;26078:9;:28;;;;:::i;:::-;:39;;;;:::i;:::-;:57;;;;:::i;:::-;26077:76;;26069:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;26208:9;26196;:21;;;;26247:16;26228;:35;;;;25976:295:::0;;:::o;10678:127::-;10752:7;10779:9;:18;10789:7;10779:18;;;;;;;;;;;;;;;;10772:25;;10678:127;;;:::o;2810:103::-;2048:13;:11;:13::i;:::-;2875:30:::1;2902:1;2875:18;:30::i;:::-;2810:103::o:0;21351:34::-;;;;:::o;25535:135::-;2048:13;:11;:13::i;:::-;25594:11:::1;;;;;;;;;;;25593:12;25585:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25658:4;25644:11;;:18;;;;;;;;;;;;;;;;;;25535:135::o:0;21160:48::-;;;;:::o;2162:87::-;2208:7;2235:6;;;;;;;;;;;2228:13;;2162:87;:::o;26385:353::-;2048:13;:11;:13::i;:::-;26516:5:::1;26474:21;:39;26496:16;;;;;;;;;;;26474:39;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;26572:5;26532:19;:37;26552:16;;;;;;;;;;;26532:37;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;26607:11;26588:16;;:30;;;;;;;;;;;;;;;;;;26671:4;26629:21;:39;26651:16;;;;;;;;;;;26629:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;26726:4;26686:19;:37;26706:16;;;;;;;;;;;26686:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;26385:353:::0;:::o;21427:35::-;;;;:::o;9606:104::-;9662:13;9695:7;9688:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9606:104;:::o;26746:254::-;2048:13;:11;:13::i;:::-;26853::::1;;;;;;;;;;;26845:21;;:4;:21;;::::0;26837:103:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26951:41;26980:4;26986:5;26951:28;:41::i;:::-;26746:254:::0;;:::o;21471:35::-;;;;:::o;13964:436::-;14057:4;14074:13;14090:12;:10;:12::i;:::-;14074:28;;14113:24;14140:25;14150:5;14157:7;14140:9;:25::i;:::-;14113:52;;14204:15;14184:16;:35;;14176:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14297:60;14306:5;14313:7;14341:15;14322:16;:34;14297:8;:60::i;:::-;14388:4;14381:11;;;;13964:436;;;;:::o;21515:93::-;;;;;;;;;;;;;:::o;11011:193::-;11090:4;11107:13;11123:12;:10;:12::i;:::-;11107:28;;11146;11156:5;11163:2;11167:6;11146:9;:28::i;:::-;11192:4;11185:11;;;11011:193;;;;:::o;21215:51::-;;;;:::o;25042:112::-;2048:13;:11;:13::i;:::-;25140:6:::1;25119:18;:27;;;;25042:112:::0;:::o;21738:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;23826:288::-;2048:13;:11;:13::i;:::-;23951:8:::1;23919:40;;:19;:28;23939:7;23919:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;23911:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24048:8;24017:19;:28;24037:7;24017:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24088:7;24072:34;;;24097:8;24072:34;;;;;;:::i;:::-;;;;;;;;23826:288:::0;;:::o;24120:296::-;2048:13;:11;:13::i;:::-;24249:8:::1;24215:42;;:21;:30;24237:7;24215:30;;;;;;;;;;;;;;;;;;;;;;;;;:42;;::::0;24207:97:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24348:8;24315:21;:30;24337:7;24315:30;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;24390:7;24372:36;;;24399:8;24372:36;;;;;;:::i;:::-;;;;;;;;24120:296:::0;;:::o;24422:300::-;2048:13;:11;:13::i;:::-;24537:9:::1;24533:115;24556:8;:15;24552:1;:19;24533:115;;;24628:8;24593:19;:32;24613:8;24622:1;24613:11;;;;;;;;:::i;:::-;;;;;;;;24593:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;24573:3;;;;;:::i;:::-;;;;24533:115;;;;24663:51;24695:8;24705;24663:51;;;;;;;:::i;:::-;;;;;;;;24422:300:::0;;:::o;24728:306::-;2048:13;:11;:13::i;:::-;24845:9:::1;24841:117;24864:8;:15;24860:1;:19;24841:117;;;24938:8;24901:21;:34;24923:8;24932:1;24923:11;;;;;;;;:::i;:::-;;;;;;;;24901:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;24881:3;;;;;:::i;:::-;;;;24841:117;;;;24973:53;25007:8;25017;24973:53;;;;;;;:::i;:::-;;;;;;;;24728:306:::0;;:::o;21317:27::-;;;;:::o;21392:28::-;;;;:::o;28312:248::-;2048:13;:11;:13::i;:::-;28377:4:::1;28366:8;;:15;;;;;;;;;;;;;;;;;;28392:33;28453:20;;28428:24;28446:4;28428:9;:24::i;:::-;:45;;;;:::i;:::-;28392:81;;28484:41;28499:25;28484:14;:41::i;:::-;28547:5;28536:8;;:16;;;;;;;;;;;;;;;;;;28355:205;28312:248::o:0;21275:33::-;;;;:::o;11267:151::-;11356:7;11383:11;:18;11395:5;11383:18;;;;;;;;;;;;;;;:27;11402:7;11383:27;;;;;;;;;;;;;;;;11376:34;;11267:151;;;;:::o;21096:57::-;;;;:::o;21677:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;27973:331::-;2048:13;:11;:13::i;:::-;28079:21:::1;28069:6;:31;;28061:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;28171:12;28197:9;28189:23;;28221:6;28189:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28170:63;;;28252:7;28244:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;28050:254;27973:331:::0;;:::o;25160:179::-;2048:13;:11;:13::i;:::-;25249:17:::1;25239:7;:27;25231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25324:7;25310:11;:21;;;;25160:179:::0;:::o;3068:201::-;2048:13;:11;:13::i;:::-;3177:1:::1;3157:22;;:8;:22;;::::0;3149:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3233:28;3252:8;3233:18;:28::i;:::-;3068:201:::0;:::o;26277:102::-;2048:13;:11;:13::i;:::-;26364:7:::1;26348:13;:23;;;;26277:102:::0;:::o;25676:294::-;2048:13;:11;:13::i;:::-;25841::::1;;25820:16;;25808:9;;25789:16;25777:9;:28;;;;:::i;:::-;:40;;;;:::i;:::-;:59;;;;:::i;:::-;25776:78;;25768:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;25908:9;25897:8;:20;;;;25946:16;25928:15;:34;;;;25676:294:::0;;:::o;27586:381::-;2048:13;:11;:13::i;:::-;27731:4:::1;27707:29;;:12;:29;;::::0;27699:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27803:12;27796:30;;;27835:4;27796:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27786:6;:55;;27778:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;27918:12;27911:29;;;27941:9;27952:6;27911:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27586:381:::0;;;:::o;21064:23::-;;;;;;;;;;;;;:::o;2327:132::-;2402:12;:10;:12::i;:::-;2391:23;;:7;:5;:7::i;:::-;:23;;;2383:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2327:132::o;29115:472::-;29181:21;29219:1;29205:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29181:40;;29250:4;29232;29237:1;29232:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29276:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29266:4;29271:1;29266:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29309:62;29326:4;29341:15;;;;;;;;;;;29359:11;29309:8;:62::i;:::-;29382:15;;;;;;;;;;;:66;;;29463:11;29489:1;29506:4;29533;29553:15;29382:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29170:417;29115:472;:::o;713:98::-;766:7;793:10;786:17;;713:98;:::o;17589:380::-;17742:1;17725:19;;:5;:19;;;17717:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17823:1;17804:21;;:7;:21;;;17796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17907:6;17877:11;:18;17889:5;17877:18;;;;;;;;;;;;;;;:27;17896:7;17877:27;;;;;;;;;;;;;;;:36;;;;17945:7;17929:32;;17938:5;17929:32;;;17954:6;17929:32;;;;;;:::i;:::-;;;;;;;;17589:380;;;:::o;18260:453::-;18395:24;18422:25;18432:5;18439:7;18422:9;:25::i;:::-;18395:52;;18482:17;18462:16;:37;18458:248;;18544:6;18524:16;:26;;18516:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18628:51;18637:5;18644:7;18672:6;18653:16;:25;18628:8;:51::i;:::-;18458:248;18384:329;18260:453;;;:::o;30880:2476::-;31028:1;31012:18;;:4;:18;;;31004:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31105:1;31091:16;;:2;:16;;;31083:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31167:14;:20;31182:4;31167:20;;;;;;;;;;;;;;;;;;;;;;;;;31166:21;:44;;;;;31192:14;:18;31207:2;31192:18;;;;;;;;;;;;;;;;;;;;;;;;;31191:19;31166:44;31158:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;31258:1;31248:6;:11;31245:92;;31276:28;31292:4;31298:2;31302:1;31276:15;:28::i;:::-;31319:7;;31245:92;31376:7;:5;:7::i;:::-;31368:15;;:4;:15;;;;:32;;;;;31393:7;:5;:7::i;:::-;31387:13;;:2;:13;;;;31368:32;31364:470;;;31421:21;:27;31443:4;31421:27;;;;;;;;;;;;;;;;;;;;;;;;;31420:28;:58;;;;;31453:21;:25;31475:2;31453:25;;;;;;;;;;;;;;;;;;;;;;;;;31452:26;31420:58;31417:406;;;31506:11;;;;;;;;;;;31498:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;31577:11;;31568:6;:20;31560:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31662:13;;;;;;;;;;;31656:19;;:2;:19;;;31652:156;;31733:15;;31724:6;31708:13;31718:2;31708:9;:13::i;:::-;:22;;;;:::i;:::-;:40;31700:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;31652:156;31417:406;31364:470;31840:33;31901:20;;31876:24;31894:4;31876:9;:24::i;:::-;:45;;;;:::i;:::-;31840:81;;31932:12;31976:18;;31947:25;:47;;31932:62;;32009:7;:33;;;;;32034:8;;;;;;;;;;;32033:9;32009:33;:82;;;;;32060:25;:31;32086:4;32060:31;;;;;;;;;;;;;;;;;;;;;;;;;32059:32;32009:82;:114;;;;;32116:7;:5;:7::i;:::-;32108:15;;:4;:15;;;;32009:114;:144;;;;;32146:7;:5;:7::i;:::-;32140:13;;:2;:13;;;;32009:144;32005:324;;;32201:4;32190:8;;:15;;;;;;;;;;;;;;;;;;32220:41;32235:25;32220:14;:41::i;:::-;32276:10;:8;:10::i;:::-;32312:5;32301:8;;:16;;;;;;;;;;;;;;;;;;32005:324;32339:12;32355:8;;;;;;;;;;;32354:9;32339:24;;32377:19;:25;32397:4;32377:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;32406:19;:23;32426:2;32406:23;;;;;;;;;;;;;;;;;;;;;;;;;32377:52;32374:99;;;32456:5;32446:15;;32374:99;32493:7;32490:815;;;32521:25;:31;32547:4;32521:31;;;;;;;;;;;;;;;;;;;;;;;;;32517:777;;;32569:13;32605:3;32594:8;;32585:6;:17;;;;:::i;:::-;:23;;;;:::i;:::-;32569:39;;32623:12;32665:3;32647:15;;32638:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;32623:45;;32683:13;32707:4;32699:5;:12;;;;:::i;:::-;32683:28;;32774:4;32751:20;;:27;;;;:::i;:::-;32728:20;:50;;;;32793:46;32809:4;32823;32830:8;32793:15;:46::i;:::-;32872:8;32863:6;:17;;;;:::i;:::-;32854:26;;32554:342;;;32517:777;;;32919:25;:29;32945:2;32919:29;;;;;;;;;;;;;;;;;;;;;;;;;32915:379;;;32965:13;33002:3;32990:9;;32981:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;32965:40;;33020:12;33063:3;33044:16;;33035:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;33020:46;;33081:13;33105:4;33097:5;:12;;;;:::i;:::-;33081:28;;33172:4;33149:20;;:27;;;;:::i;:::-;33126:20;:50;;;;33191:46;33207:4;33221;33228:8;33191:15;:46::i;:::-;33270:8;33261:6;:17;;;;:::i;:::-;33252:26;;32950:344;;;32915:379;32517:777;32490:815;33315:33;33331:4;33337:2;33341:6;33315:15;:33::i;:::-;30993:2363;;;30880:2476;;;;:::o;3429:191::-;3503:16;3522:6;;;;;;;;;;;3503:25;;3548:8;3539:6;;:17;;;;;;;;;;;;;;;;;;3603:8;3572:40;;3593:8;3572:40;;;;;;;;;;;;3492:128;3429:191;:::o;27139:306::-;27265:5;27230:40;;:25;:31;27256:4;27230:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;27222:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;27376:5;27342:25;:31;27368:4;27342:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27431:5;27397:40;;27425:4;27397:40;;;;;;;;;;;;27139:306;;:::o;29595:399::-;29654:12;29676:1;29669:6;:8;;;;:::i;:::-;29654:23;;29688:17;29716:4;29708:6;:13;;;;:::i;:::-;29688:33;;29732:22;29757:21;29732:46;;29789:22;29806:4;29789:16;:22::i;:::-;29822:18;29866:14;29843:21;:38;;;;:::i;:::-;29822:59;;29892:35;29905:9;29916:10;29892:12;:35::i;:::-;29943:43;29958:4;29964:10;29976:9;29943:43;;;;;;;;:::i;:::-;;;;;;;;29643:351;;;;29595:399;:::o;14870:671::-;15017:1;15001:18;;:4;:18;;;14993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15094:1;15080:16;;:2;:16;;;15072:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15149:38;15170:4;15176:2;15180:6;15149:20;:38::i;:::-;15200:19;15222:9;:15;15232:4;15222:15;;;;;;;;;;;;;;;;15200:37;;15271:6;15256:11;:21;;15248:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15388:6;15374:11;:20;15356:9;:15;15366:4;15356:15;;;;;;;;;;;;;;;:38;;;;15433:6;15416:9;:13;15426:2;15416:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;15472:2;15457:26;;15466:4;15457:26;;;15476:6;15457:26;;;;;;:::i;:::-;;;;;;;;15496:37;15516:4;15522:2;15526:6;15496:19;:37::i;:::-;14982:559;14870:671;;;:::o;30002:465::-;30042:11;30064:25;30092:20;;30064:48;;30150:1;30127:20;:24;30123:337;;;30164:38;30181:20;30164:16;:38::i;:::-;30222:21;30213:30;;30255:12;30281:16;;;;;;;;;;;30273:30;;30312:6;30273:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30254:70;;;30343:7;30335:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;30443:1;30420:20;:24;;;;30153:307;30123:337;30031:436;;30002:465::o;30475:361::-;30556:62;30573:4;30588:15;;;;;;;;;;;30606:11;30556:8;:62::i;:::-;30629:15;;;;;;;;;;;:31;;;30668:9;30701:4;30721:11;30747:1;30764;30780:7;:5;:7::i;:::-;30802:15;30629:199;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30475:361;;:::o;19313:125::-;;;;:::o;20042:124::-;;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652: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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:329::-;4830:6;4879:2;4867:9;4858:7;4854:23;4850:32;4847:119;;;4885:79;;:::i;:::-;4847:119;5005:1;5030:53;5075:7;5066:6;5055:9;5051:22;5030:53;:::i;:::-;5020:63;;4976:117;4771:329;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:329::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:86::-;6101:7;6141:4;6134:5;6130:16;6119:27;;6066:86;;;:::o;6158:112::-;6241:22;6257:5;6241:22;:::i;:::-;6236:3;6229:35;6158:112;;:::o;6276:214::-;6365:4;6403:2;6392:9;6388:18;6380:26;;6416:67;6480:1;6469:9;6465:17;6456:6;6416:67;:::i;:::-;6276:214;;;;:::o;6496:116::-;6566:21;6581:5;6566:21;:::i;:::-;6559:5;6556:32;6546:60;;6602:1;6599;6592:12;6546:60;6496:116;:::o;6618:133::-;6661:5;6699:6;6686:20;6677:29;;6715:30;6739:5;6715:30;:::i;:::-;6618:133;;;;:::o;6757:468::-;6822:6;6830;6879:2;6867:9;6858:7;6854:23;6850:32;6847:119;;;6885:79;;:::i;:::-;6847:119;7005:1;7030:53;7075:7;7066:6;7055:9;7051:22;7030:53;:::i;:::-;7020:63;;6976:117;7132:2;7158:50;7200:7;7191:6;7180:9;7176:22;7158:50;:::i;:::-;7148:60;;7103:115;6757:468;;;;;:::o;7231:118::-;7318:24;7336:5;7318:24;:::i;:::-;7313:3;7306:37;7231:118;;:::o;7355:222::-;7448:4;7486:2;7475:9;7471:18;7463:26;;7499:71;7567:1;7556:9;7552:17;7543:6;7499:71;:::i;:::-;7355:222;;;;:::o;7583:474::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7583:474;;;;;:::o;8063:104::-;8108:7;8137:24;8155:5;8137:24;:::i;:::-;8126:35;;8063:104;;;:::o;8173:138::-;8254:32;8280:5;8254:32;:::i;:::-;8247:5;8244:43;8234:71;;8301:1;8298;8291:12;8234:71;8173:138;:::o;8317:155::-;8371:5;8409:6;8396:20;8387:29;;8425:41;8460:5;8425:41;:::i;:::-;8317:155;;;;:::o;8478:345::-;8545:6;8594:2;8582:9;8573:7;8569:23;8565:32;8562:119;;;8600:79;;:::i;:::-;8562:119;8720:1;8745:61;8798:7;8789:6;8778:9;8774:22;8745:61;:::i;:::-;8735:71;;8691:125;8478:345;;;;:::o;8829:142::-;8932:32;8958:5;8932:32;:::i;:::-;8927:3;8920:45;8829:142;;:::o;8977:254::-;9086:4;9124:2;9113:9;9109:18;9101:26;;9137:87;9221:1;9210:9;9206:17;9197:6;9137:87;:::i;:::-;8977:254;;;;:::o;9237:117::-;9346:1;9343;9336:12;9360:180;9408:77;9405:1;9398:88;9505:4;9502:1;9495:15;9529:4;9526:1;9519:15;9546:281;9629:27;9651:4;9629:27;:::i;:::-;9621:6;9617:40;9759:6;9747:10;9744:22;9723:18;9711:10;9708:34;9705:62;9702:88;;;9770:18;;:::i;:::-;9702:88;9810:10;9806:2;9799:22;9589:238;9546:281;;:::o;9833:129::-;9867:6;9894:20;;:::i;:::-;9884:30;;9923:33;9951:4;9943:6;9923:33;:::i;:::-;9833:129;;;:::o;9968:311::-;10045:4;10135:18;10127:6;10124:30;10121:56;;;10157:18;;:::i;:::-;10121:56;10207:4;10199:6;10195:17;10187:25;;10267:4;10261;10257:15;10249:23;;9968:311;;;:::o;10285:117::-;10394:1;10391;10384:12;10425:710;10521:5;10546:81;10562:64;10619:6;10562:64;:::i;:::-;10546:81;:::i;:::-;10537:90;;10647:5;10676:6;10669:5;10662:21;10710:4;10703:5;10699:16;10692:23;;10763:4;10755:6;10751:17;10743:6;10739:30;10792:3;10784:6;10781:15;10778:122;;;10811:79;;:::i;:::-;10778:122;10926:6;10909:220;10943:6;10938:3;10935:15;10909:220;;;11018:3;11047:37;11080:3;11068:10;11047:37;:::i;:::-;11042:3;11035:50;11114:4;11109:3;11105:14;11098:21;;10985:144;10969:4;10964:3;10960:14;10953:21;;10909:220;;;10913:21;10527:608;;10425:710;;;;;:::o;11158:370::-;11229:5;11278:3;11271:4;11263:6;11259:17;11255:27;11245:122;;11286:79;;:::i;:::-;11245:122;11403:6;11390:20;11428:94;11518:3;11510:6;11503:4;11495:6;11491:17;11428:94;:::i;:::-;11419:103;;11235:293;11158:370;;;;:::o;11534:678::-;11624:6;11632;11681:2;11669:9;11660:7;11656:23;11652:32;11649:119;;;11687:79;;:::i;:::-;11649:119;11835:1;11824:9;11820:17;11807:31;11865:18;11857:6;11854:30;11851:117;;;11887:79;;:::i;:::-;11851:117;11992:78;12062:7;12053:6;12042:9;12038:22;11992:78;:::i;:::-;11982:88;;11778:302;12119:2;12145:50;12187:7;12178:6;12167:9;12163:22;12145:50;:::i;:::-;12135:60;;12090:115;11534:678;;;;;:::o;12218:474::-;12286:6;12294;12343:2;12331:9;12322:7;12318:23;12314:32;12311:119;;;12349:79;;:::i;:::-;12311:119;12469:1;12494:53;12539:7;12530:6;12519:9;12515:22;12494:53;:::i;:::-;12484:63;;12440:117;12596:2;12622:53;12667:7;12658:6;12647:9;12643:22;12622:53;:::i;:::-;12612:63;;12567:118;12218:474;;;;;:::o;12698:180::-;12746:77;12743:1;12736:88;12843:4;12840:1;12833:15;12867:4;12864:1;12857:15;12884:320;12928:6;12965:1;12959:4;12955:12;12945:22;;13012:1;13006:4;13002:12;13033:18;13023:81;;13089:4;13081:6;13077:17;13067:27;;13023:81;13151:2;13143:6;13140:14;13120:18;13117:38;13114:84;;13170:18;;:::i;:::-;13114:84;12935:269;12884:320;;;:::o;13210:147::-;13311:11;13348:3;13333:18;;13210:147;;;;:::o;13363:114::-;;:::o;13483:398::-;13642:3;13663:83;13744:1;13739:3;13663:83;:::i;:::-;13656:90;;13755:93;13844:3;13755:93;:::i;:::-;13873:1;13868:3;13864:11;13857:18;;13483:398;;;:::o;13887:379::-;14071:3;14093:147;14236:3;14093:147;:::i;:::-;14086:154;;14257:3;14250:10;;13887:379;;;:::o;14272:241::-;14412:34;14408:1;14400:6;14396:14;14389:58;14481:24;14476:2;14468:6;14464:15;14457:49;14272:241;:::o;14519:366::-;14661:3;14682:67;14746:2;14741:3;14682:67;:::i;:::-;14675:74;;14758:93;14847:3;14758:93;:::i;:::-;14876:2;14871:3;14867:12;14860:19;;14519:366;;;:::o;14891:419::-;15057:4;15095:2;15084:9;15080:18;15072:26;;15144:9;15138:4;15134:20;15130:1;15119:9;15115:17;15108:47;15172:131;15298:4;15172:131;:::i;:::-;15164:139;;14891:419;;;:::o;15316:173::-;15456:25;15452:1;15444:6;15440:14;15433:49;15316:173;:::o;15495:366::-;15637:3;15658:67;15722:2;15717:3;15658:67;:::i;:::-;15651:74;;15734:93;15823:3;15734:93;:::i;:::-;15852:2;15847:3;15843:12;15836:19;;15495:366;;;:::o;15867:419::-;16033:4;16071:2;16060:9;16056:18;16048:26;;16120:9;16114:4;16110:20;16106:1;16095:9;16091:17;16084:47;16148:131;16274:4;16148:131;:::i;:::-;16140:139;;15867:419;;;:::o;16292:180::-;16340:77;16337:1;16330:88;16437:4;16434:1;16427:15;16461:4;16458:1;16451:15;16478:191;16518:3;16537:20;16555:1;16537:20;:::i;:::-;16532:25;;16571:20;16589:1;16571:20;:::i;:::-;16566:25;;16614:1;16611;16607:9;16600:16;;16635:3;16632:1;16629:10;16626:36;;;16642:18;;:::i;:::-;16626:36;16478:191;;;;:::o;16675:222::-;16815:34;16811:1;16803:6;16799:14;16792:58;16884:5;16879:2;16871:6;16867:15;16860:30;16675:222;:::o;16903:366::-;17045:3;17066:67;17130:2;17125:3;17066:67;:::i;:::-;17059:74;;17142:93;17231:3;17142:93;:::i;:::-;17260:2;17255:3;17251:12;17244:19;;16903:366;;;:::o;17275:419::-;17441:4;17479:2;17468:9;17464:18;17456:26;;17528:9;17522:4;17518:20;17514:1;17503:9;17499:17;17492:47;17556:131;17682:4;17556:131;:::i;:::-;17548:139;;17275:419;;;:::o;17700:143::-;17757:5;17788:6;17782:13;17773:22;;17804:33;17831:5;17804:33;:::i;:::-;17700:143;;;;:::o;17849:351::-;17919:6;17968:2;17956:9;17947:7;17943:23;17939:32;17936:119;;;17974:79;;:::i;:::-;17936:119;18094:1;18119:64;18175:7;18166:6;18155:9;18151:22;18119:64;:::i;:::-;18109:74;;18065:128;17849:351;;;;:::o;18206:332::-;18327:4;18365:2;18354:9;18350:18;18342:26;;18378:71;18446:1;18435:9;18431:17;18422:6;18378:71;:::i;:::-;18459:72;18527:2;18516:9;18512:18;18503:6;18459:72;:::i;:::-;18206:332;;;;;:::o;18544:178::-;18684:30;18680:1;18672:6;18668:14;18661:54;18544:178;:::o;18728:366::-;18870:3;18891:67;18955:2;18950:3;18891:67;:::i;:::-;18884:74;;18967:93;19056:3;18967:93;:::i;:::-;19085:2;19080:3;19076:12;19069:19;;18728:366;;;:::o;19100:419::-;19266:4;19304:2;19293:9;19289:18;19281:26;;19353:9;19347:4;19343:20;19339:1;19328:9;19324:17;19317:47;19381:131;19507:4;19381:131;:::i;:::-;19373:139;;19100:419;;;:::o;19525:174::-;19665:26;19661:1;19653:6;19649:14;19642:50;19525:174;:::o;19705:366::-;19847:3;19868:67;19932:2;19927:3;19868:67;:::i;:::-;19861:74;;19944:93;20033:3;19944:93;:::i;:::-;20062:2;20057:3;20053:12;20046:19;;19705:366;;;:::o;20077:419::-;20243:4;20281:2;20270:9;20266:18;20258:26;;20330:9;20324:4;20320:20;20316:1;20305:9;20301:17;20294:47;20358:131;20484:4;20358:131;:::i;:::-;20350:139;;20077:419;;;:::o;20502:293::-;20642:34;20638:1;20630:6;20626:14;20619:58;20711:34;20706:2;20698:6;20694:15;20687:59;20780:7;20775:2;20767:6;20763:15;20756:32;20502:293;:::o;20801:366::-;20943:3;20964:67;21028:2;21023:3;20964:67;:::i;:::-;20957:74;;21040:93;21129:3;21040:93;:::i;:::-;21158:2;21153:3;21149:12;21142:19;;20801:366;;;:::o;21173:419::-;21339:4;21377:2;21366:9;21362:18;21354:26;;21426:9;21420:4;21416:20;21412:1;21401:9;21397:17;21390:47;21454:131;21580:4;21454:131;:::i;:::-;21446:139;;21173:419;;;:::o;21598:224::-;21738:34;21734:1;21726:6;21722:14;21715:58;21807:7;21802:2;21794:6;21790:15;21783:32;21598:224;:::o;21828:366::-;21970:3;21991:67;22055:2;22050:3;21991:67;:::i;:::-;21984:74;;22067:93;22156:3;22067:93;:::i;:::-;22185:2;22180:3;22176:12;22169:19;;21828:366;;;:::o;22200:419::-;22366:4;22404:2;22393:9;22389:18;22381:26;;22453:9;22447:4;22443:20;22439:1;22428:9;22424:17;22417:47;22481:131;22607:4;22481:131;:::i;:::-;22473:139;;22200:419;;;:::o;22625:229::-;22765:34;22761:1;22753:6;22749:14;22742:58;22834:12;22829:2;22821:6;22817:15;22810:37;22625:229;:::o;22860:366::-;23002:3;23023:67;23087:2;23082:3;23023:67;:::i;:::-;23016:74;;23099:93;23188:3;23099:93;:::i;:::-;23217:2;23212:3;23208:12;23201:19;;22860:366;;;:::o;23232:419::-;23398:4;23436:2;23425:9;23421:18;23413:26;;23485:9;23479:4;23475:20;23471:1;23460:9;23456:17;23449:47;23513:131;23639:4;23513:131;:::i;:::-;23505:139;;23232:419;;;:::o;23657:180::-;23705:77;23702:1;23695:88;23802:4;23799:1;23792:15;23826:4;23823:1;23816:15;23843:233;23882:3;23905:24;23923:5;23905:24;:::i;:::-;23896:33;;23951:66;23944:5;23941:77;23938:103;;24021:18;;:::i;:::-;23938:103;24068:1;24061:5;24057:13;24050:20;;23843:233;;;:::o;24082:114::-;24149:6;24183:5;24177:12;24167:22;;24082:114;;;:::o;24202:184::-;24301:11;24335:6;24330:3;24323:19;24375:4;24370:3;24366:14;24351:29;;24202:184;;;;:::o;24392:132::-;24459:4;24482:3;24474:11;;24512:4;24507:3;24503:14;24495:22;;24392:132;;;:::o;24530:108::-;24607:24;24625:5;24607:24;:::i;:::-;24602:3;24595:37;24530:108;;:::o;24644:179::-;24713:10;24734:46;24776:3;24768:6;24734:46;:::i;:::-;24812:4;24807:3;24803:14;24789:28;;24644:179;;;;:::o;24829:113::-;24899:4;24931;24926:3;24922:14;24914:22;;24829:113;;;:::o;24978:732::-;25097:3;25126:54;25174:5;25126:54;:::i;:::-;25196:86;25275:6;25270:3;25196:86;:::i;:::-;25189:93;;25306:56;25356:5;25306:56;:::i;:::-;25385:7;25416:1;25401:284;25426:6;25423:1;25420:13;25401:284;;;25502:6;25496:13;25529:63;25588:3;25573:13;25529:63;:::i;:::-;25522:70;;25615:60;25668:6;25615:60;:::i;:::-;25605:70;;25461:224;25448:1;25445;25441:9;25436:14;;25401:284;;;25405:14;25701:3;25694:10;;25102:608;;;24978:732;;;;:::o;25716:471::-;25881:4;25919:2;25908:9;25904:18;25896:26;;25968:9;25962:4;25958:20;25954:1;25943:9;25939:17;25932:47;25996:108;26099:4;26090:6;25996:108;:::i;:::-;25988:116;;26114:66;26176:2;26165:9;26161:18;26152:6;26114:66;:::i;:::-;25716:471;;;;;:::o;26193:194::-;26233:4;26253:20;26271:1;26253:20;:::i;:::-;26248:25;;26287:20;26305:1;26287:20;:::i;:::-;26282:25;;26331:1;26328;26324:9;26316:17;;26355:1;26349:4;26346:11;26343:37;;;26360:18;;:::i;:::-;26343:37;26193:194;;;;:::o;26393:241::-;26533:34;26529:1;26521:6;26517:14;26510:58;26602:24;26597:2;26589:6;26585:15;26578:49;26393:241;:::o;26640:366::-;26782:3;26803:67;26867:2;26862:3;26803:67;:::i;:::-;26796:74;;26879:93;26968:3;26879:93;:::i;:::-;26997:2;26992:3;26988:12;26981:19;;26640:366;;;:::o;27012:419::-;27178:4;27216:2;27205:9;27201:18;27193:26;;27265:9;27259:4;27255:20;27251:1;27240:9;27236:17;27229:47;27293:131;27419:4;27293:131;:::i;:::-;27285:139;;27012:419;;;:::o;27437:182::-;27577:34;27573:1;27565:6;27561:14;27554:58;27437:182;:::o;27625:366::-;27767:3;27788:67;27852:2;27847:3;27788:67;:::i;:::-;27781:74;;27864:93;27953:3;27864:93;:::i;:::-;27982:2;27977:3;27973:12;27966:19;;27625:366;;;:::o;27997:419::-;28163:4;28201:2;28190:9;28186:18;28178:26;;28250:9;28244:4;28240:20;28236:1;28225:9;28221:17;28214:47;28278:131;28404:4;28278:131;:::i;:::-;28270:139;;27997:419;;;:::o;28422:178::-;28562:30;28558:1;28550:6;28546:14;28539:54;28422:178;:::o;28606:366::-;28748:3;28769:67;28833:2;28828:3;28769:67;:::i;:::-;28762:74;;28845:93;28934:3;28845:93;:::i;:::-;28963:2;28958:3;28954:12;28947:19;;28606:366;;;:::o;28978:419::-;29144:4;29182:2;29171:9;29167:18;29159:26;;29231:9;29225:4;29221:20;29217:1;29206:9;29202:17;29195:47;29259:131;29385:4;29259:131;:::i;:::-;29251:139;;28978:419;;;:::o;29403:225::-;29543:34;29539:1;29531:6;29527:14;29520:58;29612:8;29607:2;29599:6;29595:15;29588:33;29403:225;:::o;29634:366::-;29776:3;29797:67;29861:2;29856:3;29797:67;:::i;:::-;29790:74;;29873:93;29962:3;29873:93;:::i;:::-;29991:2;29986:3;29982:12;29975:19;;29634:366;;;:::o;30006:419::-;30172:4;30210:2;30199:9;30195:18;30187:26;;30259:9;30253:4;30249:20;30245:1;30234:9;30230:17;30223:47;30287:131;30413:4;30287:131;:::i;:::-;30279:139;;30006:419;;;:::o;30431:177::-;30571:29;30567:1;30559:6;30555:14;30548:53;30431:177;:::o;30614:366::-;30756:3;30777:67;30841:2;30836:3;30777:67;:::i;:::-;30770:74;;30853:93;30942:3;30853:93;:::i;:::-;30971:2;30966:3;30962:12;30955:19;;30614:366;;;:::o;30986:419::-;31152:4;31190:2;31179:9;31175:18;31167:26;;31239:9;31233:4;31229:20;31225:1;31214:9;31210:17;31203:47;31267:131;31393:4;31267:131;:::i;:::-;31259:139;;30986:419;;;:::o;31411:143::-;31468:5;31499:6;31493:13;31484:22;;31515:33;31542:5;31515:33;:::i;:::-;31411:143;;;;:::o;31560:351::-;31630:6;31679:2;31667:9;31658:7;31654:23;31650:32;31647:119;;;31685:79;;:::i;:::-;31647:119;31805:1;31830:64;31886:7;31877:6;31866:9;31862:22;31830:64;:::i;:::-;31820:74;;31776:128;31560:351;;;;:::o;31917:332::-;32038:4;32076:2;32065:9;32061:18;32053:26;;32089:71;32157:1;32146:9;32142:17;32133:6;32089:71;:::i;:::-;32170:72;32238:2;32227:9;32223:18;32214:6;32170:72;:::i;:::-;31917:332;;;;;:::o;32255:137::-;32309:5;32340:6;32334:13;32325:22;;32356:30;32380:5;32356:30;:::i;:::-;32255:137;;;;:::o;32398:345::-;32465:6;32514:2;32502:9;32493:7;32489:23;32485:32;32482:119;;;32520:79;;:::i;:::-;32482:119;32640:1;32665:61;32718:7;32709:6;32698:9;32694:22;32665:61;:::i;:::-;32655:71;;32611:125;32398:345;;;;:::o;32749:182::-;32889:34;32885:1;32877:6;32873:14;32866:58;32749:182;:::o;32937:366::-;33079:3;33100:67;33164:2;33159:3;33100:67;:::i;:::-;33093:74;;33176:93;33265:3;33176:93;:::i;:::-;33294:2;33289:3;33285:12;33278:19;;32937:366;;;:::o;33309:419::-;33475:4;33513:2;33502:9;33498:18;33490:26;;33562:9;33556:4;33552:20;33548:1;33537:9;33533:17;33526:47;33590:131;33716:4;33590:131;:::i;:::-;33582:139;;33309:419;;;:::o;33734:85::-;33779:7;33808:5;33797:16;;33734:85;;;:::o;33825:158::-;33883:9;33916:61;33934:42;33943:32;33969:5;33943:32;:::i;:::-;33934:42;:::i;:::-;33916:61;:::i;:::-;33903:74;;33825:158;;;:::o;33989:147::-;34084:45;34123:5;34084:45;:::i;:::-;34079:3;34072:58;33989:147;;:::o;34142:831::-;34405:4;34443:3;34432:9;34428:19;34420:27;;34457:71;34525:1;34514:9;34510:17;34501:6;34457:71;:::i;:::-;34538:80;34614:2;34603:9;34599:18;34590:6;34538:80;:::i;:::-;34665:9;34659:4;34655:20;34650:2;34639:9;34635:18;34628:48;34693:108;34796:4;34787:6;34693:108;:::i;:::-;34685:116;;34811:72;34879:2;34868:9;34864:18;34855:6;34811:72;:::i;:::-;34893:73;34961:3;34950:9;34946:19;34937:6;34893:73;:::i;:::-;34142:831;;;;;;;;:::o;34979:223::-;35119:34;35115:1;35107:6;35103:14;35096:58;35188:6;35183:2;35175:6;35171:15;35164:31;34979:223;:::o;35208:366::-;35350:3;35371:67;35435:2;35430:3;35371:67;:::i;:::-;35364:74;;35447:93;35536:3;35447:93;:::i;:::-;35565:2;35560:3;35556:12;35549:19;;35208:366;;;:::o;35580:419::-;35746:4;35784:2;35773:9;35769:18;35761:26;;35833:9;35827:4;35823:20;35819:1;35808:9;35804:17;35797:47;35861:131;35987:4;35861:131;:::i;:::-;35853:139;;35580:419;;;:::o;36005:221::-;36145:34;36141:1;36133:6;36129:14;36122:58;36214:4;36209:2;36201:6;36197:15;36190:29;36005:221;:::o;36232:366::-;36374:3;36395:67;36459:2;36454:3;36395:67;:::i;:::-;36388:74;;36471:93;36560:3;36471:93;:::i;:::-;36589:2;36584:3;36580:12;36573:19;;36232:366;;;:::o;36604:419::-;36770:4;36808:2;36797:9;36793:18;36785:26;;36857:9;36851:4;36847:20;36843:1;36832:9;36828:17;36821:47;36885:131;37011:4;36885:131;:::i;:::-;36877:139;;36604:419;;;:::o;37029:179::-;37169:31;37165:1;37157:6;37153:14;37146:55;37029:179;:::o;37214:366::-;37356:3;37377:67;37441:2;37436:3;37377:67;:::i;:::-;37370:74;;37453:93;37542:3;37453:93;:::i;:::-;37571:2;37566:3;37562:12;37555:19;;37214:366;;;:::o;37586:419::-;37752:4;37790:2;37779:9;37775:18;37767:26;;37839:9;37833:4;37829:20;37825:1;37814:9;37810:17;37803:47;37867:131;37993:4;37867:131;:::i;:::-;37859:139;;37586:419;;;:::o;38011:224::-;38151:34;38147:1;38139:6;38135:14;38128:58;38220:7;38215:2;38207:6;38203:15;38196:32;38011:224;:::o;38241:366::-;38383:3;38404:67;38468:2;38463:3;38404:67;:::i;:::-;38397:74;;38480:93;38569:3;38480:93;:::i;:::-;38598:2;38593:3;38589:12;38582:19;;38241:366;;;:::o;38613:419::-;38779:4;38817:2;38806:9;38802:18;38794:26;;38866:9;38860:4;38856:20;38852:1;38841:9;38837:17;38830:47;38894:131;39020:4;38894:131;:::i;:::-;38886:139;;38613:419;;;:::o;39038:222::-;39178:34;39174:1;39166:6;39162:14;39155:58;39247:5;39242:2;39234:6;39230:15;39223:30;39038:222;:::o;39266:366::-;39408:3;39429:67;39493:2;39488:3;39429:67;:::i;:::-;39422:74;;39505:93;39594:3;39505:93;:::i;:::-;39623:2;39618:3;39614:12;39607:19;;39266:366;;;:::o;39638:419::-;39804:4;39842:2;39831:9;39827:18;39819:26;;39891:9;39885:4;39881:20;39877:1;39866:9;39862:17;39855:47;39919:131;40045:4;39919:131;:::i;:::-;39911:139;;39638:419;;;:::o;40063:169::-;40203:21;40199:1;40191:6;40187:14;40180:45;40063:169;:::o;40238:366::-;40380:3;40401:67;40465:2;40460:3;40401:67;:::i;:::-;40394:74;;40477:93;40566:3;40477:93;:::i;:::-;40595:2;40590:3;40586:12;40579:19;;40238:366;;;:::o;40610:419::-;40776:4;40814:2;40803:9;40799:18;40791:26;;40863:9;40857:4;40853:20;40849:1;40838:9;40834:17;40827:47;40891:131;41017:4;40891:131;:::i;:::-;40883:139;;40610:419;;;:::o;41035:170::-;41175:22;41171:1;41163:6;41159:14;41152:46;41035:170;:::o;41211:366::-;41353:3;41374:67;41438:2;41433:3;41374:67;:::i;:::-;41367:74;;41450:93;41539:3;41450:93;:::i;:::-;41568:2;41563:3;41559:12;41552:19;;41211:366;;;:::o;41583:419::-;41749:4;41787:2;41776:9;41772:18;41764:26;;41836:9;41830:4;41826:20;41822:1;41811:9;41807:17;41800:47;41864:131;41990:4;41864:131;:::i;:::-;41856:139;;41583:419;;;:::o;42008:227::-;42148:34;42144:1;42136:6;42132:14;42125:58;42217:10;42212:2;42204:6;42200:15;42193:35;42008:227;:::o;42241:366::-;42383:3;42404:67;42468:2;42463:3;42404:67;:::i;:::-;42397:74;;42480:93;42569:3;42480:93;:::i;:::-;42598:2;42593:3;42589:12;42582:19;;42241:366;;;:::o;42613:419::-;42779:4;42817:2;42806:9;42802:18;42794:26;;42866:9;42860:4;42856:20;42852:1;42841:9;42837:17;42830:47;42894:131;43020:4;42894:131;:::i;:::-;42886:139;;42613:419;;;:::o;43038:222::-;43178:34;43174:1;43166:6;43162:14;43155:58;43247:5;43242:2;43234:6;43230:15;43223:30;43038:222;:::o;43266:366::-;43408:3;43429:67;43493:2;43488:3;43429:67;:::i;:::-;43422:74;;43505:93;43594:3;43505:93;:::i;:::-;43623:2;43618:3;43614:12;43607:19;;43266:366;;;:::o;43638:419::-;43804:4;43842:2;43831:9;43827:18;43819:26;;43891:9;43885:4;43881:20;43877:1;43866:9;43862:17;43855:47;43919:131;44045:4;43919:131;:::i;:::-;43911:139;;43638:419;;;:::o;44063:410::-;44103:7;44126:20;44144:1;44126:20;:::i;:::-;44121:25;;44160:20;44178:1;44160:20;:::i;:::-;44155:25;;44215:1;44212;44208:9;44237:30;44255:11;44237:30;:::i;:::-;44226:41;;44416:1;44407:7;44403:15;44400:1;44397:22;44377:1;44370:9;44350:83;44327:139;;44446:18;;:::i;:::-;44327:139;44111:362;44063:410;;;;:::o;44479:180::-;44527:77;44524:1;44517:88;44624:4;44621:1;44614:15;44648:4;44645:1;44638:15;44665:185;44705:1;44722:20;44740:1;44722:20;:::i;:::-;44717:25;;44756:20;44774:1;44756:20;:::i;:::-;44751:25;;44795:1;44785:35;;44800:18;;:::i;:::-;44785:35;44842:1;44839;44835:9;44830:14;;44665:185;;;;:::o;44856:243::-;44996:34;44992:1;44984:6;44980:14;44973:58;45065:26;45060:2;45052:6;45048:15;45041:51;44856:243;:::o;45105:366::-;45247:3;45268:67;45332:2;45327:3;45268:67;:::i;:::-;45261:74;;45344:93;45433:3;45344:93;:::i;:::-;45462:2;45457:3;45453:12;45446:19;;45105:366;;;:::o;45477:419::-;45643:4;45681:2;45670:9;45666:18;45658:26;;45730:9;45724:4;45720:20;45716:1;45705:9;45701:17;45694:47;45758:131;45884:4;45758:131;:::i;:::-;45750:139;;45477:419;;;:::o;45902:442::-;46051:4;46089:2;46078:9;46074:18;46066:26;;46102:71;46170:1;46159:9;46155:17;46146:6;46102:71;:::i;:::-;46183:72;46251:2;46240:9;46236:18;46227:6;46183:72;:::i;:::-;46265;46333:2;46322:9;46318:18;46309:6;46265:72;:::i;:::-;45902:442;;;;;;:::o;46350:225::-;46490:34;46486:1;46478:6;46474:14;46467:58;46559:8;46554:2;46546:6;46542:15;46535:33;46350:225;:::o;46581:366::-;46723:3;46744:67;46808:2;46803:3;46744:67;:::i;:::-;46737:74;;46820:93;46909:3;46820:93;:::i;:::-;46938:2;46933:3;46929:12;46922:19;;46581:366;;;:::o;46953:419::-;47119:4;47157:2;47146:9;47142:18;47134:26;;47206:9;47200:4;47196:20;47192:1;47181:9;47177:17;47170:47;47234:131;47360:4;47234:131;:::i;:::-;47226:139;;46953:419;;;:::o;47378:807::-;47627:4;47665:3;47654:9;47650:19;47642:27;;47679:71;47747:1;47736:9;47732:17;47723:6;47679:71;:::i;:::-;47760:72;47828:2;47817:9;47813:18;47804:6;47760:72;:::i;:::-;47842:80;47918:2;47907:9;47903:18;47894:6;47842:80;:::i;:::-;47932;48008:2;47997:9;47993:18;47984:6;47932:80;:::i;:::-;48022:73;48090:3;48079:9;48075:19;48066:6;48022:73;:::i;:::-;48105;48173:3;48162:9;48158:19;48149:6;48105:73;:::i;:::-;47378:807;;;;;;;;;:::o;48191:663::-;48279:6;48287;48295;48344:2;48332:9;48323:7;48319:23;48315:32;48312:119;;;48350:79;;:::i;:::-;48312:119;48470:1;48495:64;48551:7;48542:6;48531:9;48527:22;48495:64;:::i;:::-;48485:74;;48441:128;48608:2;48634:64;48690:7;48681:6;48670:9;48666:22;48634:64;:::i;:::-;48624:74;;48579:129;48747:2;48773:64;48829:7;48820:6;48809:9;48805:22;48773:64;:::i;:::-;48763:74;;48718:129;48191:663;;;;;:::o
Swarm Source
ipfs://1b7658e00d8859cb403b7a28d80484079b7707df92f648373a94d1b2d3916237
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.