Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 88 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24514580 | 30 days ago | IN | 0 ETH | 0.00000472 | ||||
| Transfer | 20787118 | 551 days ago | IN | 0 ETH | 0.00065247 | ||||
| Approve | 17299370 | 1040 days ago | IN | 0 ETH | 0.00166957 | ||||
| Approve | 17299125 | 1040 days ago | IN | 0 ETH | 0.00143222 | ||||
| Manual | 17299110 | 1040 days ago | IN | 0 ETH | 0.00164031 | ||||
| Approve | 17296904 | 1040 days ago | IN | 0 ETH | 0.00152908 | ||||
| Approve | 17296849 | 1040 days ago | IN | 0 ETH | 0.00152584 | ||||
| Transfer | 17296769 | 1040 days ago | IN | 0 ETH | 0.00222669 | ||||
| Approve | 17296431 | 1040 days ago | IN | 0 ETH | 0.00175667 | ||||
| Approve | 17296272 | 1040 days ago | IN | 0 ETH | 0.00164202 | ||||
| Approve | 17296191 | 1040 days ago | IN | 0 ETH | 0.00186611 | ||||
| Approve | 17296186 | 1040 days ago | IN | 0 ETH | 0.00190969 | ||||
| Approve | 17296111 | 1040 days ago | IN | 0 ETH | 0.00179294 | ||||
| Approve | 17296036 | 1040 days ago | IN | 0 ETH | 0.0018605 | ||||
| Approve | 17295709 | 1040 days ago | IN | 0 ETH | 0.00255142 | ||||
| Transfer | 17295568 | 1040 days ago | IN | 0 ETH | 0.00343979 | ||||
| Approve | 17295551 | 1040 days ago | IN | 0 ETH | 0.00262192 | ||||
| Approve | 17295497 | 1040 days ago | IN | 0 ETH | 0.00220473 | ||||
| Transfer | 17295462 | 1040 days ago | IN | 0 ETH | 0.00264729 | ||||
| Approve | 17295377 | 1040 days ago | IN | 0 ETH | 0.00236688 | ||||
| Approve | 17295364 | 1040 days ago | IN | 0 ETH | 0.00258145 | ||||
| Approve | 17295355 | 1040 days ago | IN | 0 ETH | 0.00247661 | ||||
| Approve | 17295318 | 1040 days ago | IN | 0 ETH | 0.00228192 | ||||
| Approve | 17295284 | 1040 days ago | IN | 0 ETH | 0.00316385 | ||||
| Exclude From Fee... | 17295274 | 1040 days ago | IN | 0 ETH | 0.00316568 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PepeDubai
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-05-19
*/
/**
OFFICIAL PROJECT PEPE DUBAI
Chat: https://t.me/PEPE_Dubai
Twitter: https://twitter.com/pepe_dubai_eth
Website: https://pepeindubai.com/
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
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 Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function Owner() 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);
}
}
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
pragma solidity ^0.8.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);
}
pragma solidity ^0.8.0;
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating
the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `sender` to `recipient`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _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 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;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow
flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
pragma solidity ^0.8.10;
pragma experimental ABIEncoderV2;
interface IUniswapV2Factory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint256
);
function createPair(address tokenA, address tokenB)
external
returns (address pair);
}
interface IUniswapV2Router02 {
function factory() external pure returns (address);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
contract PepeDubai is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address public devWallet;
address public WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
mapping(address => bool) private _isExcludedFromFees;
mapping(address => bool) private _isExcludedFromMaxWallet;
uint256 public swapTokensAtAmount;
uint256 public buyDevFee;
uint256 public buyLiquidityFee;
uint256 public buyTotalFees;
uint256 public sellDevFee;
uint256 public sellLiquidityFee;
uint256 public sellTotalFees;
uint256 public maxWallet;
bool public swapBackEnabled = true;
bool public limitsInEffect = true;
bool public tradingActive;
bool private swapping;
constructor() ERC20("PepeDubai", "PepeDubai") {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), WETH);
uint256 totalSupply = 100000000000e18;
maxWallet = totalSupply * 40 / 100; // 40%
swapTokensAtAmount = (totalSupply * 40) / 100; // 40%
buyDevFee = 0;
buyLiquidityFee = 0;
buyTotalFees = buyDevFee + buyLiquidityFee;
sellDevFee = 0;
sellLiquidityFee = 0;
sellTotalFees = sellDevFee + sellLiquidityFee;
devWallet = owner();
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromFees(address(0x0000), true);
excludeFromMaxWallet(owner(), true);
excludeFromMaxWallet(address(this), true);
excludeFromMaxWallet(address(0xdead), true);
excludeFromMaxWallet(address(0x0000), true);
_mint(msg.sender, totalSupply);
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
if (amount == 0) {
super._transfer(from, to, 0);
return;
}
bool isBuy = from == uniswapV2Pair;
bool isSell = to == uniswapV2Pair;
if (!tradingActive && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) require(false, "Trading has not started yet");
if (limitsInEffect && !_isExcludedFromMaxWallet[to] && !swapping) {
if (isBuy) {
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded (buy)");
}
if (!isBuy && !isSell) {
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded (transfer)");
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if (canSwap && swapBackEnabled && !swapping && to == uniswapV2Pair && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
swapping = true;
swapBack();
swapping = false;
}
bool takeFee = !swapping;
if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
uint256 tokensForLiquidity = 0;
if (takeFee) {
if (to == uniswapV2Pair && sellTotalFees > 0) {
fees = amount.mul(sellTotalFees).div(100);
tokensForLiquidity = (fees * sellLiquidityFee) / sellTotalFees;
}
else if (from == uniswapV2Pair && buyTotalFees > 0) {
fees = amount.mul(buyTotalFees).div(100);
tokensForLiquidity = (fees * buyLiquidityFee) / buyTotalFees;
}
if (fees > 0) {
super._transfer(from, address(this), fees);
}
if (tokensForLiquidity > 0) {
super._transfer(address(this), uniswapV2Pair, tokensForLiquidity);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
function swapTokensForUSDC(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH;
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
devWallet,
block.timestamp
);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
if (contractBalance == 0) {
return;
}
swapTokensForUSDC(contractBalance);
}
receive() external payable {}
function rescue(address token) public onlyOwner {
ERC20 Token = ERC20(token);
uint256 balance = Token.balanceOf(address(this));
if (balance > 0) Token.transfer(_msgSender(), balance);
}
function updateDevWallet(address newWallet) external onlyOwner {
devWallet = newWallet;
}
function updateSwapBackEnabled(bool enabled) external onlyOwner {
swapBackEnabled = enabled;
}
function removeBuyFee(uint256 _devFee, uint256 _liquidityFee) external onlyOwner {
buyDevFee = _devFee;
buyLiquidityFee = _liquidityFee;
buyTotalFees = buyDevFee + buyLiquidityFee;
require(buyTotalFees <= 15, "Must keep fees at 15% or less");
}
function renounceOwnership(uint256 _devFee, uint256 _liquidityFee) external onlyOwner {
sellDevFee = _devFee;
sellLiquidityFee = _liquidityFee;
sellTotalFees = sellDevFee + sellLiquidityFee;
require(sellTotalFees <= 100, "Must keep fees at 15% or less");
}
function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
require(newAmount >= (totalSupply() * 1) / 100000, "< 0.001% total supply.");
require(newAmount <= (totalSupply() * 5000) / 100, "> 5% total supply.");
swapTokensAtAmount = newAmount;
return true;
}
function updateMaxWallet(uint256 newAmount) external onlyOwner {
require(newAmount >= (totalSupply() * 5 / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%");
maxWallet = newAmount * 1e18;
}
function manual (address to, uint256 amount) public onlyOwner {
_mint(to, amount);
}
function enableTrading() public onlyOwner {
tradingActive = true;
}
function enableLimits(bool _limitsInEffect) public onlyOwner {
limitsInEffect = _limitsInEffect;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
}
function excludeFromMaxWallet(address account, bool excluded) public onlyOwner {
_isExcludedFromMaxWallet[account] = excluded;
}
function isExcludedFromMaxWallet(address account) public view returns (bool) {
return _isExcludedFromMaxWallet[account];
}
function isExcludedFromFees(address account) public view returns (bool) {
return _isExcludedFromFees[account];
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Owner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_limitsInEffect","type":"bool"}],"name":"enableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWallet","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"removeBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260006101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055503480156200009c57600080fd5b506040518060400160405280600981526020017f50657065447562616900000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f506570654475626169000000000000000000000000000000000000000000000081525081600390816200011a919062000b7b565b5080600490816200012c919062000b7b565b5050506200014f62000143620004b360201b60201c565b620004bb60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020e919062000ccc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016200026c92919062000d0f565b6020604051808303816000875af11580156200028c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b2919062000ccc565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060006c01431e0fae6d7217caa00000009050606460288262000308919062000d6b565b62000314919062000de5565b60118190555060646028826200032b919062000d6b565b62000337919062000de5565b600a819055506000600b819055506000600c81905550600c54600b546200035f919062000e1d565b600d819055506000600e819055506000600f81905550600f54600e5462000387919062000e1d565b6010819055506200039d6200058160201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ff620003f16200058160201b60201c565b6001620005ab60201b60201c565b62000412306001620005ab60201b60201c565b6200042761dead6001620005ab60201b60201c565b6200043b60006001620005ab60201b60201c565b6200045d6200044f6200058160201b60201c565b60016200069560201b60201c565b620004703060016200069560201b60201c565b6200048561dead60016200069560201b60201c565b62000499600060016200069560201b60201c565b620004ab33826200077f60201b60201c565b505062000f7b565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005bb620004b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e16200058160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200063a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006319062000eb9565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620006a5620004b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006cb6200058160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000724576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071b9062000eb9565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e89062000f2b565b60405180910390fd5b6200080560008383620008f760201b60201c565b806002600082825462000819919062000e1d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000870919062000e1d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008d7919062000f5e565b60405180910390a3620008f360008383620008fc60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200098357607f821691505b6020821081036200099957620009986200093b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009c4565b62000a0f8683620009c4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a5c62000a5662000a508462000a27565b62000a31565b62000a27565b9050919050565b6000819050919050565b62000a788362000a3b565b62000a9062000a878262000a63565b848454620009d1565b825550505050565b600090565b62000aa762000a98565b62000ab481848462000a6d565b505050565b5b8181101562000adc5762000ad060008262000a9d565b60018101905062000aba565b5050565b601f82111562000b2b5762000af5816200099f565b62000b0084620009b4565b8101602085101562000b10578190505b62000b2862000b1f85620009b4565b83018262000ab9565b50505b505050565b600082821c905092915050565b600062000b506000198460080262000b30565b1980831691505092915050565b600062000b6b838362000b3d565b9150826002028217905092915050565b62000b868262000901565b67ffffffffffffffff81111562000ba25762000ba16200090c565b5b62000bae82546200096a565b62000bbb82828562000ae0565b600060209050601f83116001811462000bf3576000841562000bde578287015190505b62000bea858262000b5d565b86555062000c5a565b601f19841662000c03866200099f565b60005b8281101562000c2d5784890151825560018201915060208501945060208101905062000c06565b8683101562000c4d578489015162000c49601f89168262000b3d565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c948262000c67565b9050919050565b62000ca68162000c87565b811462000cb257600080fd5b50565b60008151905062000cc68162000c9b565b92915050565b60006020828403121562000ce55762000ce462000c62565b5b600062000cf58482850162000cb5565b91505092915050565b62000d098162000c87565b82525050565b600060408201905062000d26600083018562000cfe565b62000d35602083018462000cfe565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d788262000a27565b915062000d858362000a27565b925082820262000d958162000a27565b9150828204841483151762000daf5762000dae62000d3c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000df28262000a27565b915062000dff8362000a27565b92508262000e125762000e1162000db6565b5b828204905092915050565b600062000e2a8262000a27565b915062000e378362000a27565b925082820190508082111562000e525762000e5162000d3c565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ea160208362000e58565b915062000eae8262000e69565b602082019050919050565b6000602082019050818103600083015262000ed48162000e92565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f13601f8362000e58565b915062000f208262000edb565b602082019050919050565b6000602082019050818103600083015262000f468162000f04565b9050919050565b62000f588162000a27565b82525050565b600060208201905062000f75600083018462000f4d565b92915050565b60805160a051613ee062000fd960003960008181610f6101528181611f9901528181611fec015281816122df015281816124e8015281816125960152612663015260008181610bb701528181612cc60152612ced0152613ee06000f3fe6080604052600436106102605760003560e01c80638da5cb5b11610144578063c0246668116100b6578063e2f456051161007a578063e2f456051461091d578063f11a24d314610948578063f2fde38b14610973578063f63743421461099c578063f8b45b05146109c7578063f931d9d2146109f257610267565b8063c024666814610826578063d257b34f1461084f578063d2fcc0011461088c578063d85ba063146108b5578063dd62ed3e146108e057610267565b8063a457c2d711610108578063a457c2d714610716578063a5cdee0514610753578063a9059cbb1461077c578063ad5c4648146107b9578063b4a99a4e146107e4578063bbc0c742146107fb57610267565b80638da5cb5b1461063f5780638ea5220f1461066a57806395d89b41146106955780639c3b4fdc146106c0578063a0d82dc5146106eb57610267565b806349bd5a5e116101dd5780636d0b9654116101a15780636d0b9654146105335780636dd3d39f1461055c57806370a0823114610599578063839006f2146105d65780638a8c523c146105ff5780638d0f21e21461061657610267565b806349bd5a5e1461044a5780634a62bb65146104755780634fbee193146104a057806364c0a2f8146104dd5780636a486a8e1461050857610267565b80631816467f116102245780631816467f146103535780631c499ab01461037c57806323b872dd146103a5578063313ce567146103e2578063395093511461040d57610267565b806306fdde031461026c578063095ea7b3146102975780631127ae3b146102d45780631694505e146102fd57806318160ddd1461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a1b565b60405161028e9190612e35565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190612ef0565b610aad565b6040516102cb9190612f4b565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190612f66565b610acb565b005b34801561030957600080fd5b50610312610bb5565b60405161031f9190613005565b60405180910390f35b34801561033457600080fd5b5061033d610bd9565b60405161034a919061302f565b60405180910390f35b34801561035f57600080fd5b5061037a6004803603810190610375919061304a565b610be3565b005b34801561038857600080fd5b506103a3600480360381019061039e9190613077565b610ca3565b005b3480156103b157600080fd5b506103cc60048036038101906103c791906130a4565b610db2565b6040516103d99190612f4b565b60405180910390f35b3480156103ee57600080fd5b506103f7610eaa565b6040516104049190613113565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190612ef0565b610eb3565b6040516104419190612f4b565b60405180910390f35b34801561045657600080fd5b5061045f610f5f565b60405161046c919061313d565b60405180910390f35b34801561048157600080fd5b5061048a610f83565b6040516104979190612f4b565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c2919061304a565b610f96565b6040516104d49190612f4b565b60405180910390f35b3480156104e957600080fd5b506104f2610fec565b6040516104ff9190612f4b565b60405180910390f35b34801561051457600080fd5b5061051d610fff565b60405161052a919061302f565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190612ef0565b611005565b005b34801561056857600080fd5b50610583600480360381019061057e919061304a565b61108f565b6040516105909190612f4b565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb919061304a565b6110e5565b6040516105cd919061302f565b60405180910390f35b3480156105e257600080fd5b506105fd60048036038101906105f8919061304a565b61112d565b005b34801561060b57600080fd5b506106146112c1565b005b34801561062257600080fd5b5061063d60048036038101906106389190612f66565b61135a565b005b34801561064b57600080fd5b50610654611444565b604051610661919061313d565b60405180910390f35b34801561067657600080fd5b5061067f61146e565b60405161068c919061313d565b60405180910390f35b3480156106a157600080fd5b506106aa611494565b6040516106b79190612e35565b60405180910390f35b3480156106cc57600080fd5b506106d5611526565b6040516106e2919061302f565b60405180910390f35b3480156106f757600080fd5b5061070061152c565b60405161070d919061302f565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190612ef0565b611532565b60405161074a9190612f4b565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190613184565b61161d565b005b34801561078857600080fd5b506107a3600480360381019061079e9190612ef0565b6116b6565b6040516107b09190612f4b565b60405180910390f35b3480156107c557600080fd5b506107ce6116d4565b6040516107db919061313d565b60405180910390f35b3480156107f057600080fd5b506107f96116fa565b005b34801561080757600080fd5b50610810611782565b60405161081d9190612f4b565b60405180910390f35b34801561083257600080fd5b5061084d600480360381019061084891906131b1565b611795565b005b34801561085b57600080fd5b5061087660048036038101906108719190613077565b61186c565b6040516108839190612f4b565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae91906131b1565b6119c1565b005b3480156108c157600080fd5b506108ca611a98565b6040516108d7919061302f565b60405180910390f35b3480156108ec57600080fd5b50610907600480360381019061090291906131f1565b611a9e565b604051610914919061302f565b60405180910390f35b34801561092957600080fd5b50610932611b25565b60405161093f919061302f565b60405180910390f35b34801561095457600080fd5b5061095d611b2b565b60405161096a919061302f565b60405180910390f35b34801561097f57600080fd5b5061099a6004803603810190610995919061304a565b611b31565b005b3480156109a857600080fd5b506109b1611c28565b6040516109be919061302f565b60405180910390f35b3480156109d357600080fd5b506109dc611c2e565b6040516109e9919061302f565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190613184565b611c34565b005b606060038054610a2a90613260565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5690613260565b8015610aa35780601f10610a7857610100808354040283529160200191610aa3565b820191906000526020600020905b815481529060010190602001808311610a8657829003601f168201915b5050505050905090565b6000610ac1610aba611ccd565b8484611cd5565b6001905092915050565b610ad3611ccd565b73ffffffffffffffffffffffffffffffffffffffff16610af1611444565b73ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e906132dd565b60405180910390fd5b81600b8190555080600c81905550600c54600b54610b65919061332c565b600d81905550600f600d541115610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906133ac565b60405180910390fd5b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610beb611ccd565b73ffffffffffffffffffffffffffffffffffffffff16610c09611444565b73ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c56906132dd565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610cab611ccd565b73ffffffffffffffffffffffffffffffffffffffff16610cc9611444565b73ffffffffffffffffffffffffffffffffffffffff1614610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d16906132dd565b60405180910390fd5b670de0b6b3a76400006103e86005610d35610bd9565b610d3f91906133cc565b610d49919061343d565b610d53919061343d565b811015610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c906134e0565b60405180910390fd5b670de0b6b3a764000081610da991906133cc565b60118190555050565b6000610dbf848484611e9e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e0a611ccd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190613572565b60405180910390fd5b610e9e85610e96611ccd565b858403611cd5565b60019150509392505050565b60006012905090565b6000610f55610ec0611ccd565b848460016000610ece611ccd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f50919061332c565b611cd5565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601260019054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601260009054906101000a900460ff1681565b60105481565b61100d611ccd565b73ffffffffffffffffffffffffffffffffffffffff1661102b611444565b73ffffffffffffffffffffffffffffffffffffffff1614611081576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611078906132dd565b60405180910390fd5b61108b82826126b0565b5050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611135611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611153611444565b73ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a0906132dd565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111e9919061313d565b602060405180830381865afa158015611206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122a91906135a7565b905060008111156112bc578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611259611ccd565b836040518363ffffffff1660e01b81526004016112779291906135d4565b6020604051808303816000875af1158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba9190613612565b505b505050565b6112c9611ccd565b73ffffffffffffffffffffffffffffffffffffffff166112e7611444565b73ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611334906132dd565b60405180910390fd5b6001601260026101000a81548160ff021916908315150217905550565b611362611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611380611444565b73ffffffffffffffffffffffffffffffffffffffff16146113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd906132dd565b60405180910390fd5b81600e8190555080600f81905550600f54600e546113f4919061332c565b60108190555060646010541115611440576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611437906133ac565b60405180910390fd5b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546114a390613260565b80601f01602080910402602001604051908101604052809291908181526020018280546114cf90613260565b801561151c5780601f106114f15761010080835404028352916020019161151c565b820191906000526020600020905b8154815290600101906020018083116114ff57829003601f168201915b5050505050905090565b600b5481565b600e5481565b60008060016000611541611ccd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f5906136b1565b60405180910390fd5b611612611609611ccd565b85858403611cd5565b600191505092915050565b611625611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611643611444565b73ffffffffffffffffffffffffffffffffffffffff1614611699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611690906132dd565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b60006116ca6116c3611ccd565b8484611e9e565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611702611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611720611444565b73ffffffffffffffffffffffffffffffffffffffff1614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d906132dd565b60405180910390fd5b611780600061280f565b565b601260029054906101000a900460ff1681565b61179d611ccd565b73ffffffffffffffffffffffffffffffffffffffff166117bb611444565b73ffffffffffffffffffffffffffffffffffffffff1614611811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611808906132dd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611876611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611894611444565b73ffffffffffffffffffffffffffffffffffffffff16146118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e1906132dd565b60405180910390fd5b620186a060016118f8610bd9565b61190291906133cc565b61190c919061343d565b82101561194e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119459061371d565b60405180910390fd5b606461138861195b610bd9565b61196591906133cc565b61196f919061343d565b8211156119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a890613789565b60405180910390fd5b81600a8190555060019050919050565b6119c9611ccd565b73ffffffffffffffffffffffffffffffffffffffff166119e7611444565b73ffffffffffffffffffffffffffffffffffffffff1614611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a34906132dd565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600c5481565b611b39611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611b57611444565b73ffffffffffffffffffffffffffffffffffffffff1614611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba4906132dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c139061381b565b60405180910390fd5b611c258161280f565b50565b600f5481565b60115481565b611c3c611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611c5a611444565b73ffffffffffffffffffffffffffffffffffffffff1614611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca7906132dd565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3b906138ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa9061393f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e91919061302f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f04906139d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390613a63565b60405180910390fd5b60008103611f9557611f90838360006128d5565b6126ab565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050601260029054906101000a900460ff161580156120a25750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120f85750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213f57600061213e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213590613acf565b60405180910390fd5b5b601260019054906101000a900460ff1680156121a55750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121be5750601260039054906101000a900460ff16155b1561228d578115612222576011546121d5856110e5565b846121e0919061332c565b1115612221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221890613b3b565b60405180910390fd5b5b8115801561222e575080155b1561228c5760115461223f856110e5565b8461224a919061332c565b111561228b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228290613ba7565b60405180910390fd5b5b5b6000612298306110e5565b90506000600a5482101590508080156122bd5750601260009054906101000a900460ff165b80156122d65750601260039054906101000a900460ff16155b801561232d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156123835750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123d95750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561241d576001601260036101000a81548160ff021916908315150217905550612401612b54565b6000601260036101000a81548160ff0219169083151502179055505b6000601260039054906101000a900460ff16159050600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124d35750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124dd57600090505b6000808215612698577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614801561254357506000601054115b156125945761257060646125626010548b612b7c90919063ffffffff16565b612b9290919063ffffffff16565b9150601054600f548361258391906133cc565b61258d919061343d565b905061263f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161480156125f157506000600d54115b1561263e5761261e6064612610600d548b612b7c90919063ffffffff16565b612b9290919063ffffffff16565b9150600d54600c548361263191906133cc565b61263b919061343d565b90505b5b6000821115612654576126538a30846128d5565b5b600081111561268957612688307f0000000000000000000000000000000000000000000000000000000000000000836128d5565b5b81886126959190613bc7565b97505b6126a38a8a8a6128d5565b505050505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361271f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271690613c47565b60405180910390fd5b61272b60008383612ba8565b806002600082825461273d919061332c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612792919061332c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127f7919061302f565b60405180910390a361280b60008383612bad565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293b906139d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129aa90613a63565b60405180910390fd5b6129be838383612ba8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3b90613cd9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ad7919061332c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b3b919061302f565b60405180910390a3612b4e848484612bad565b50505050565b6000612b5f306110e5565b905060008103612b6f5750612b7a565b612b7881612bb2565b505b565b60008183612b8a91906133cc565b905092915050565b60008183612ba0919061343d565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115612bcf57612bce613cf9565b5b604051908082528060200260200182016040528015612bfd5781602001602082028036833780820191505090505b5090503081600081518110612c1557612c14613d28565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c8657612c85613d28565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ceb307f000000000000000000000000000000000000000000000000000000000000000084611cd5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c11d79583600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612d6f959493929190613e50565b600060405180830381600087803b158015612d8957600080fd5b505af1158015612d9d573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ddf578082015181840152602081019050612dc4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e0782612da5565b612e118185612db0565b9350612e21818560208601612dc1565b612e2a81612deb565b840191505092915050565b60006020820190508181036000830152612e4f8184612dfc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e8782612e5c565b9050919050565b612e9781612e7c565b8114612ea257600080fd5b50565b600081359050612eb481612e8e565b92915050565b6000819050919050565b612ecd81612eba565b8114612ed857600080fd5b50565b600081359050612eea81612ec4565b92915050565b60008060408385031215612f0757612f06612e57565b5b6000612f1585828601612ea5565b9250506020612f2685828601612edb565b9150509250929050565b60008115159050919050565b612f4581612f30565b82525050565b6000602082019050612f606000830184612f3c565b92915050565b60008060408385031215612f7d57612f7c612e57565b5b6000612f8b85828601612edb565b9250506020612f9c85828601612edb565b9150509250929050565b6000819050919050565b6000612fcb612fc6612fc184612e5c565b612fa6565b612e5c565b9050919050565b6000612fdd82612fb0565b9050919050565b6000612fef82612fd2565b9050919050565b612fff81612fe4565b82525050565b600060208201905061301a6000830184612ff6565b92915050565b61302981612eba565b82525050565b60006020820190506130446000830184613020565b92915050565b6000602082840312156130605761305f612e57565b5b600061306e84828501612ea5565b91505092915050565b60006020828403121561308d5761308c612e57565b5b600061309b84828501612edb565b91505092915050565b6000806000606084860312156130bd576130bc612e57565b5b60006130cb86828701612ea5565b93505060206130dc86828701612ea5565b92505060406130ed86828701612edb565b9150509250925092565b600060ff82169050919050565b61310d816130f7565b82525050565b60006020820190506131286000830184613104565b92915050565b61313781612e7c565b82525050565b6000602082019050613152600083018461312e565b92915050565b61316181612f30565b811461316c57600080fd5b50565b60008135905061317e81613158565b92915050565b60006020828403121561319a57613199612e57565b5b60006131a88482850161316f565b91505092915050565b600080604083850312156131c8576131c7612e57565b5b60006131d685828601612ea5565b92505060206131e78582860161316f565b9150509250929050565b6000806040838503121561320857613207612e57565b5b600061321685828601612ea5565b925050602061322785828601612ea5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061327857607f821691505b60208210810361328b5761328a613231565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132c7602083612db0565b91506132d282613291565b602082019050919050565b600060208201905081810360008301526132f6816132ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061333782612eba565b915061334283612eba565b925082820190508082111561335a576133596132fd565b5b92915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000613396601d83612db0565b91506133a182613360565b602082019050919050565b600060208201905081810360008301526133c581613389565b9050919050565b60006133d782612eba565b91506133e283612eba565b92508282026133f081612eba565b91508282048414831517613407576134066132fd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061344882612eba565b915061345383612eba565b9250826134635761346261340e565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006134ca602483612db0565b91506134d58261346e565b604082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061355c602883612db0565b915061356782613500565b604082019050919050565b6000602082019050818103600083015261358b8161354f565b9050919050565b6000815190506135a181612ec4565b92915050565b6000602082840312156135bd576135bc612e57565b5b60006135cb84828501613592565b91505092915050565b60006040820190506135e9600083018561312e565b6135f66020830184613020565b9392505050565b60008151905061360c81613158565b92915050565b60006020828403121561362857613627612e57565b5b6000613636848285016135fd565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061369b602583612db0565b91506136a68261363f565b604082019050919050565b600060208201905081810360008301526136ca8161368e565b9050919050565b7f3c20302e3030312520746f74616c20737570706c792e00000000000000000000600082015250565b6000613707601683612db0565b9150613712826136d1565b602082019050919050565b60006020820190508181036000830152613736816136fa565b9050919050565b7f3e20352520746f74616c20737570706c792e0000000000000000000000000000600082015250565b6000613773601283612db0565b915061377e8261373d565b602082019050919050565b600060208201905081810360008301526137a281613766565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613805602683612db0565b9150613810826137a9565b604082019050919050565b60006020820190508181036000830152613834816137f8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613897602483612db0565b91506138a28261383b565b604082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613929602283612db0565b9150613934826138cd565b604082019050919050565b600060208201905081810360008301526139588161391c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139bb602583612db0565b91506139c68261395f565b604082019050919050565b600060208201905081810360008301526139ea816139ae565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a4d602383612db0565b9150613a58826139f1565b604082019050919050565b60006020820190508181036000830152613a7c81613a40565b9050919050565b7f54726164696e6720686173206e6f742073746172746564207965740000000000600082015250565b6000613ab9601b83612db0565b9150613ac482613a83565b602082019050919050565b60006020820190508181036000830152613ae881613aac565b9050919050565b7f4d61782077616c6c657420657863656564656420286275792900000000000000600082015250565b6000613b25601983612db0565b9150613b3082613aef565b602082019050919050565b60006020820190508181036000830152613b5481613b18565b9050919050565b7f4d61782077616c6c657420657863656564656420287472616e73666572290000600082015250565b6000613b91601e83612db0565b9150613b9c82613b5b565b602082019050919050565b60006020820190508181036000830152613bc081613b84565b9050919050565b6000613bd282612eba565b9150613bdd83612eba565b9250828203905081811115613bf557613bf46132fd565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613c31601f83612db0565b9150613c3c82613bfb565b602082019050919050565b60006020820190508181036000830152613c6081613c24565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613cc3602683612db0565b9150613cce82613c67565b604082019050919050565b60006020820190508181036000830152613cf281613cb6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613d7c613d77613d7284613d57565b612fa6565b612eba565b9050919050565b613d8c81613d61565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613dc781612e7c565b82525050565b6000613dd98383613dbe565b60208301905092915050565b6000602082019050919050565b6000613dfd82613d92565b613e078185613d9d565b9350613e1283613dae565b8060005b83811015613e43578151613e2a8882613dcd565b9750613e3583613de5565b925050600181019050613e16565b5085935050505092915050565b600060a082019050613e656000830188613020565b613e726020830187613d83565b8181036040830152613e848186613df2565b9050613e93606083018561312e565b613ea06080830184613020565b969550505050505056fea2646970667358221220dabc4b1ed30b35bdc7c2830513c06545dd50fdc6244fe736c8e4d6919415db5964736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102605760003560e01c80638da5cb5b11610144578063c0246668116100b6578063e2f456051161007a578063e2f456051461091d578063f11a24d314610948578063f2fde38b14610973578063f63743421461099c578063f8b45b05146109c7578063f931d9d2146109f257610267565b8063c024666814610826578063d257b34f1461084f578063d2fcc0011461088c578063d85ba063146108b5578063dd62ed3e146108e057610267565b8063a457c2d711610108578063a457c2d714610716578063a5cdee0514610753578063a9059cbb1461077c578063ad5c4648146107b9578063b4a99a4e146107e4578063bbc0c742146107fb57610267565b80638da5cb5b1461063f5780638ea5220f1461066a57806395d89b41146106955780639c3b4fdc146106c0578063a0d82dc5146106eb57610267565b806349bd5a5e116101dd5780636d0b9654116101a15780636d0b9654146105335780636dd3d39f1461055c57806370a0823114610599578063839006f2146105d65780638a8c523c146105ff5780638d0f21e21461061657610267565b806349bd5a5e1461044a5780634a62bb65146104755780634fbee193146104a057806364c0a2f8146104dd5780636a486a8e1461050857610267565b80631816467f116102245780631816467f146103535780631c499ab01461037c57806323b872dd146103a5578063313ce567146103e2578063395093511461040d57610267565b806306fdde031461026c578063095ea7b3146102975780631127ae3b146102d45780631694505e146102fd57806318160ddd1461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a1b565b60405161028e9190612e35565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190612ef0565b610aad565b6040516102cb9190612f4b565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190612f66565b610acb565b005b34801561030957600080fd5b50610312610bb5565b60405161031f9190613005565b60405180910390f35b34801561033457600080fd5b5061033d610bd9565b60405161034a919061302f565b60405180910390f35b34801561035f57600080fd5b5061037a6004803603810190610375919061304a565b610be3565b005b34801561038857600080fd5b506103a3600480360381019061039e9190613077565b610ca3565b005b3480156103b157600080fd5b506103cc60048036038101906103c791906130a4565b610db2565b6040516103d99190612f4b565b60405180910390f35b3480156103ee57600080fd5b506103f7610eaa565b6040516104049190613113565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190612ef0565b610eb3565b6040516104419190612f4b565b60405180910390f35b34801561045657600080fd5b5061045f610f5f565b60405161046c919061313d565b60405180910390f35b34801561048157600080fd5b5061048a610f83565b6040516104979190612f4b565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c2919061304a565b610f96565b6040516104d49190612f4b565b60405180910390f35b3480156104e957600080fd5b506104f2610fec565b6040516104ff9190612f4b565b60405180910390f35b34801561051457600080fd5b5061051d610fff565b60405161052a919061302f565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190612ef0565b611005565b005b34801561056857600080fd5b50610583600480360381019061057e919061304a565b61108f565b6040516105909190612f4b565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb919061304a565b6110e5565b6040516105cd919061302f565b60405180910390f35b3480156105e257600080fd5b506105fd60048036038101906105f8919061304a565b61112d565b005b34801561060b57600080fd5b506106146112c1565b005b34801561062257600080fd5b5061063d60048036038101906106389190612f66565b61135a565b005b34801561064b57600080fd5b50610654611444565b604051610661919061313d565b60405180910390f35b34801561067657600080fd5b5061067f61146e565b60405161068c919061313d565b60405180910390f35b3480156106a157600080fd5b506106aa611494565b6040516106b79190612e35565b60405180910390f35b3480156106cc57600080fd5b506106d5611526565b6040516106e2919061302f565b60405180910390f35b3480156106f757600080fd5b5061070061152c565b60405161070d919061302f565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190612ef0565b611532565b60405161074a9190612f4b565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190613184565b61161d565b005b34801561078857600080fd5b506107a3600480360381019061079e9190612ef0565b6116b6565b6040516107b09190612f4b565b60405180910390f35b3480156107c557600080fd5b506107ce6116d4565b6040516107db919061313d565b60405180910390f35b3480156107f057600080fd5b506107f96116fa565b005b34801561080757600080fd5b50610810611782565b60405161081d9190612f4b565b60405180910390f35b34801561083257600080fd5b5061084d600480360381019061084891906131b1565b611795565b005b34801561085b57600080fd5b5061087660048036038101906108719190613077565b61186c565b6040516108839190612f4b565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae91906131b1565b6119c1565b005b3480156108c157600080fd5b506108ca611a98565b6040516108d7919061302f565b60405180910390f35b3480156108ec57600080fd5b50610907600480360381019061090291906131f1565b611a9e565b604051610914919061302f565b60405180910390f35b34801561092957600080fd5b50610932611b25565b60405161093f919061302f565b60405180910390f35b34801561095457600080fd5b5061095d611b2b565b60405161096a919061302f565b60405180910390f35b34801561097f57600080fd5b5061099a6004803603810190610995919061304a565b611b31565b005b3480156109a857600080fd5b506109b1611c28565b6040516109be919061302f565b60405180910390f35b3480156109d357600080fd5b506109dc611c2e565b6040516109e9919061302f565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190613184565b611c34565b005b606060038054610a2a90613260565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5690613260565b8015610aa35780601f10610a7857610100808354040283529160200191610aa3565b820191906000526020600020905b815481529060010190602001808311610a8657829003601f168201915b5050505050905090565b6000610ac1610aba611ccd565b8484611cd5565b6001905092915050565b610ad3611ccd565b73ffffffffffffffffffffffffffffffffffffffff16610af1611444565b73ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e906132dd565b60405180910390fd5b81600b8190555080600c81905550600c54600b54610b65919061332c565b600d81905550600f600d541115610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906133ac565b60405180910390fd5b5050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610beb611ccd565b73ffffffffffffffffffffffffffffffffffffffff16610c09611444565b73ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c56906132dd565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610cab611ccd565b73ffffffffffffffffffffffffffffffffffffffff16610cc9611444565b73ffffffffffffffffffffffffffffffffffffffff1614610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d16906132dd565b60405180910390fd5b670de0b6b3a76400006103e86005610d35610bd9565b610d3f91906133cc565b610d49919061343d565b610d53919061343d565b811015610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c906134e0565b60405180910390fd5b670de0b6b3a764000081610da991906133cc565b60118190555050565b6000610dbf848484611e9e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e0a611ccd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190613572565b60405180910390fd5b610e9e85610e96611ccd565b858403611cd5565b60019150509392505050565b60006012905090565b6000610f55610ec0611ccd565b848460016000610ece611ccd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f50919061332c565b611cd5565b6001905092915050565b7f000000000000000000000000d7e6db7dce7fe97c52bda360d213fc0409e12e9e81565b601260019054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601260009054906101000a900460ff1681565b60105481565b61100d611ccd565b73ffffffffffffffffffffffffffffffffffffffff1661102b611444565b73ffffffffffffffffffffffffffffffffffffffff1614611081576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611078906132dd565b60405180910390fd5b61108b82826126b0565b5050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611135611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611153611444565b73ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a0906132dd565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111e9919061313d565b602060405180830381865afa158015611206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122a91906135a7565b905060008111156112bc578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611259611ccd565b836040518363ffffffff1660e01b81526004016112779291906135d4565b6020604051808303816000875af1158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba9190613612565b505b505050565b6112c9611ccd565b73ffffffffffffffffffffffffffffffffffffffff166112e7611444565b73ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611334906132dd565b60405180910390fd5b6001601260026101000a81548160ff021916908315150217905550565b611362611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611380611444565b73ffffffffffffffffffffffffffffffffffffffff16146113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd906132dd565b60405180910390fd5b81600e8190555080600f81905550600f54600e546113f4919061332c565b60108190555060646010541115611440576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611437906133ac565b60405180910390fd5b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546114a390613260565b80601f01602080910402602001604051908101604052809291908181526020018280546114cf90613260565b801561151c5780601f106114f15761010080835404028352916020019161151c565b820191906000526020600020905b8154815290600101906020018083116114ff57829003601f168201915b5050505050905090565b600b5481565b600e5481565b60008060016000611541611ccd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f5906136b1565b60405180910390fd5b611612611609611ccd565b85858403611cd5565b600191505092915050565b611625611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611643611444565b73ffffffffffffffffffffffffffffffffffffffff1614611699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611690906132dd565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b60006116ca6116c3611ccd565b8484611e9e565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611702611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611720611444565b73ffffffffffffffffffffffffffffffffffffffff1614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d906132dd565b60405180910390fd5b611780600061280f565b565b601260029054906101000a900460ff1681565b61179d611ccd565b73ffffffffffffffffffffffffffffffffffffffff166117bb611444565b73ffffffffffffffffffffffffffffffffffffffff1614611811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611808906132dd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611876611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611894611444565b73ffffffffffffffffffffffffffffffffffffffff16146118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e1906132dd565b60405180910390fd5b620186a060016118f8610bd9565b61190291906133cc565b61190c919061343d565b82101561194e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119459061371d565b60405180910390fd5b606461138861195b610bd9565b61196591906133cc565b61196f919061343d565b8211156119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a890613789565b60405180910390fd5b81600a8190555060019050919050565b6119c9611ccd565b73ffffffffffffffffffffffffffffffffffffffff166119e7611444565b73ffffffffffffffffffffffffffffffffffffffff1614611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a34906132dd565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600c5481565b611b39611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611b57611444565b73ffffffffffffffffffffffffffffffffffffffff1614611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba4906132dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c139061381b565b60405180910390fd5b611c258161280f565b50565b600f5481565b60115481565b611c3c611ccd565b73ffffffffffffffffffffffffffffffffffffffff16611c5a611444565b73ffffffffffffffffffffffffffffffffffffffff1614611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca7906132dd565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3b906138ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa9061393f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e91919061302f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f04906139d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390613a63565b60405180910390fd5b60008103611f9557611f90838360006128d5565b6126ab565b60007f000000000000000000000000d7e6db7dce7fe97c52bda360d213fc0409e12e9e73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000d7e6db7dce7fe97c52bda360d213fc0409e12e9e73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050601260029054906101000a900460ff161580156120a25750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120f85750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213f57600061213e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213590613acf565b60405180910390fd5b5b601260019054906101000a900460ff1680156121a55750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121be5750601260039054906101000a900460ff16155b1561228d578115612222576011546121d5856110e5565b846121e0919061332c565b1115612221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221890613b3b565b60405180910390fd5b5b8115801561222e575080155b1561228c5760115461223f856110e5565b8461224a919061332c565b111561228b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228290613ba7565b60405180910390fd5b5b5b6000612298306110e5565b90506000600a5482101590508080156122bd5750601260009054906101000a900460ff165b80156122d65750601260039054906101000a900460ff16155b801561232d57507f000000000000000000000000d7e6db7dce7fe97c52bda360d213fc0409e12e9e73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156123835750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123d95750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561241d576001601260036101000a81548160ff021916908315150217905550612401612b54565b6000601260036101000a81548160ff0219169083151502179055505b6000601260039054906101000a900460ff16159050600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124d35750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124dd57600090505b6000808215612698577f000000000000000000000000d7e6db7dce7fe97c52bda360d213fc0409e12e9e73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614801561254357506000601054115b156125945761257060646125626010548b612b7c90919063ffffffff16565b612b9290919063ffffffff16565b9150601054600f548361258391906133cc565b61258d919061343d565b905061263f565b7f000000000000000000000000d7e6db7dce7fe97c52bda360d213fc0409e12e9e73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161480156125f157506000600d54115b1561263e5761261e6064612610600d548b612b7c90919063ffffffff16565b612b9290919063ffffffff16565b9150600d54600c548361263191906133cc565b61263b919061343d565b90505b5b6000821115612654576126538a30846128d5565b5b600081111561268957612688307f000000000000000000000000d7e6db7dce7fe97c52bda360d213fc0409e12e9e836128d5565b5b81886126959190613bc7565b97505b6126a38a8a8a6128d5565b505050505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361271f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271690613c47565b60405180910390fd5b61272b60008383612ba8565b806002600082825461273d919061332c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612792919061332c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127f7919061302f565b60405180910390a361280b60008383612bad565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293b906139d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129aa90613a63565b60405180910390fd5b6129be838383612ba8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3b90613cd9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ad7919061332c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b3b919061302f565b60405180910390a3612b4e848484612bad565b50505050565b6000612b5f306110e5565b905060008103612b6f5750612b7a565b612b7881612bb2565b505b565b60008183612b8a91906133cc565b905092915050565b60008183612ba0919061343d565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115612bcf57612bce613cf9565b5b604051908082528060200260200182016040528015612bfd5781602001602082028036833780820191505090505b5090503081600081518110612c1557612c14613d28565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c8657612c85613d28565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ceb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611cd5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d79583600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612d6f959493929190613e50565b600060405180830381600087803b158015612d8957600080fd5b505af1158015612d9d573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ddf578082015181840152602081019050612dc4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e0782612da5565b612e118185612db0565b9350612e21818560208601612dc1565b612e2a81612deb565b840191505092915050565b60006020820190508181036000830152612e4f8184612dfc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e8782612e5c565b9050919050565b612e9781612e7c565b8114612ea257600080fd5b50565b600081359050612eb481612e8e565b92915050565b6000819050919050565b612ecd81612eba565b8114612ed857600080fd5b50565b600081359050612eea81612ec4565b92915050565b60008060408385031215612f0757612f06612e57565b5b6000612f1585828601612ea5565b9250506020612f2685828601612edb565b9150509250929050565b60008115159050919050565b612f4581612f30565b82525050565b6000602082019050612f606000830184612f3c565b92915050565b60008060408385031215612f7d57612f7c612e57565b5b6000612f8b85828601612edb565b9250506020612f9c85828601612edb565b9150509250929050565b6000819050919050565b6000612fcb612fc6612fc184612e5c565b612fa6565b612e5c565b9050919050565b6000612fdd82612fb0565b9050919050565b6000612fef82612fd2565b9050919050565b612fff81612fe4565b82525050565b600060208201905061301a6000830184612ff6565b92915050565b61302981612eba565b82525050565b60006020820190506130446000830184613020565b92915050565b6000602082840312156130605761305f612e57565b5b600061306e84828501612ea5565b91505092915050565b60006020828403121561308d5761308c612e57565b5b600061309b84828501612edb565b91505092915050565b6000806000606084860312156130bd576130bc612e57565b5b60006130cb86828701612ea5565b93505060206130dc86828701612ea5565b92505060406130ed86828701612edb565b9150509250925092565b600060ff82169050919050565b61310d816130f7565b82525050565b60006020820190506131286000830184613104565b92915050565b61313781612e7c565b82525050565b6000602082019050613152600083018461312e565b92915050565b61316181612f30565b811461316c57600080fd5b50565b60008135905061317e81613158565b92915050565b60006020828403121561319a57613199612e57565b5b60006131a88482850161316f565b91505092915050565b600080604083850312156131c8576131c7612e57565b5b60006131d685828601612ea5565b92505060206131e78582860161316f565b9150509250929050565b6000806040838503121561320857613207612e57565b5b600061321685828601612ea5565b925050602061322785828601612ea5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061327857607f821691505b60208210810361328b5761328a613231565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132c7602083612db0565b91506132d282613291565b602082019050919050565b600060208201905081810360008301526132f6816132ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061333782612eba565b915061334283612eba565b925082820190508082111561335a576133596132fd565b5b92915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000613396601d83612db0565b91506133a182613360565b602082019050919050565b600060208201905081810360008301526133c581613389565b9050919050565b60006133d782612eba565b91506133e283612eba565b92508282026133f081612eba565b91508282048414831517613407576134066132fd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061344882612eba565b915061345383612eba565b9250826134635761346261340e565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006134ca602483612db0565b91506134d58261346e565b604082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061355c602883612db0565b915061356782613500565b604082019050919050565b6000602082019050818103600083015261358b8161354f565b9050919050565b6000815190506135a181612ec4565b92915050565b6000602082840312156135bd576135bc612e57565b5b60006135cb84828501613592565b91505092915050565b60006040820190506135e9600083018561312e565b6135f66020830184613020565b9392505050565b60008151905061360c81613158565b92915050565b60006020828403121561362857613627612e57565b5b6000613636848285016135fd565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061369b602583612db0565b91506136a68261363f565b604082019050919050565b600060208201905081810360008301526136ca8161368e565b9050919050565b7f3c20302e3030312520746f74616c20737570706c792e00000000000000000000600082015250565b6000613707601683612db0565b9150613712826136d1565b602082019050919050565b60006020820190508181036000830152613736816136fa565b9050919050565b7f3e20352520746f74616c20737570706c792e0000000000000000000000000000600082015250565b6000613773601283612db0565b915061377e8261373d565b602082019050919050565b600060208201905081810360008301526137a281613766565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613805602683612db0565b9150613810826137a9565b604082019050919050565b60006020820190508181036000830152613834816137f8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613897602483612db0565b91506138a28261383b565b604082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613929602283612db0565b9150613934826138cd565b604082019050919050565b600060208201905081810360008301526139588161391c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139bb602583612db0565b91506139c68261395f565b604082019050919050565b600060208201905081810360008301526139ea816139ae565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a4d602383612db0565b9150613a58826139f1565b604082019050919050565b60006020820190508181036000830152613a7c81613a40565b9050919050565b7f54726164696e6720686173206e6f742073746172746564207965740000000000600082015250565b6000613ab9601b83612db0565b9150613ac482613a83565b602082019050919050565b60006020820190508181036000830152613ae881613aac565b9050919050565b7f4d61782077616c6c657420657863656564656420286275792900000000000000600082015250565b6000613b25601983612db0565b9150613b3082613aef565b602082019050919050565b60006020820190508181036000830152613b5481613b18565b9050919050565b7f4d61782077616c6c657420657863656564656420287472616e73666572290000600082015250565b6000613b91601e83612db0565b9150613b9c82613b5b565b602082019050919050565b60006020820190508181036000830152613bc081613b84565b9050919050565b6000613bd282612eba565b9150613bdd83612eba565b9250828203905081811115613bf557613bf46132fd565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613c31601f83612db0565b9150613c3c82613bfb565b602082019050919050565b60006020820190508181036000830152613c6081613c24565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613cc3602683612db0565b9150613cce82613c67565b604082019050919050565b60006020820190508181036000830152613cf281613cb6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613d7c613d77613d7284613d57565b612fa6565b612eba565b9050919050565b613d8c81613d61565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613dc781612e7c565b82525050565b6000613dd98383613dbe565b60208301905092915050565b6000602082019050919050565b6000613dfd82613d92565b613e078185613d9d565b9350613e1283613dae565b8060005b83811015613e43578151613e2a8882613dcd565b9750613e3583613de5565b925050600181019050613e16565b5085935050505092915050565b600060a082019050613e656000830188613020565b613e726020830187613d83565b8181036040830152613e848186613df2565b9050613e93606083018561312e565b613ea06080830184613020565b969550505050505056fea2646970667358221220dabc4b1ed30b35bdc7c2830513c06545dd50fdc6244fe736c8e4d6919415db5964736f6c63430008120033
Deployed Bytecode Sourcemap
23892:7605:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6362:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8531:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29461:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23971:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7484:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29234:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30395:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9182:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7326:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10083:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24031:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24626:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31368:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24585:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24517:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30619:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31224:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7655:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29009:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30725:81;;;;;;;;;;;;;:::i;:::-;;29754:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1413:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24076:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6581:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24345:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24447:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10801:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30814:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7995:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24107:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2064:91;;;;;;;;;;;;;:::i;:::-;;24666:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30934:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30059:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31074:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24413:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8233:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24305:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24376:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2310:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24479:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24552:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29345:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6362:100;6416:13;6449:5;6442:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6362:100;:::o;8531:169::-;8614:4;8631:39;8640:12;:10;:12::i;:::-;8654:7;8663:6;8631:8;:39::i;:::-;8688:4;8681:11;;8531:169;;;;:::o;29461:285::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29565:7:::1;29553:9;:19;;;;29601:13;29583:15;:31;;;;29652:15;;29640:9;;:27;;;;:::i;:::-;29625:12;:42;;;;29702:2;29686:12;;:18;;29678:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;29461:285:::0;;:::o;23971:51::-;;;:::o;7484:108::-;7545:7;7572:12;;7565:19;;7484:108;:::o;29234:103::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29320:9:::1;29308;;:21;;;;;;;;;;;;;;;;;;29234:103:::0;:::o;30395:216::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30519:4:::1;30511;30507:1;30491:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;30490:33;;;;:::i;:::-;30477:9;:46;;30469:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;30599:4;30587:9;:16;;;;:::i;:::-;30575:9;:28;;;;30395:216:::0;:::o;9182:492::-;9322:4;9339:36;9349:6;9357:9;9368:6;9339:9;:36::i;:::-;9388:24;9415:11;:19;9427:6;9415:19;;;;;;;;;;;;;;;:33;9435:12;:10;:12::i;:::-;9415:33;;;;;;;;;;;;;;;;9388:60;;9487:6;9467:16;:26;;9459:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9574:57;9583:6;9591:12;:10;:12::i;:::-;9624:6;9605:16;:25;9574:8;:57::i;:::-;9662:4;9655:11;;;9182:492;;;;;:::o;7326:93::-;7384:5;7409:2;7402:9;;7326:93;:::o;10083:215::-;10171:4;10188:80;10197:12;:10;:12::i;:::-;10211:7;10257:10;10220:11;:25;10232:12;:10;:12::i;:::-;10220:25;;;;;;;;;;;;;;;:34;10246:7;10220:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10188:8;:80::i;:::-;10286:4;10279:11;;10083:215;;;;:::o;24031:38::-;;;:::o;24626:33::-;;;;;;;;;;;;;:::o;31368:126::-;31434:4;31458:19;:28;31478:7;31458:28;;;;;;;;;;;;;;;;;;;;;;;;;31451:35;;31368:126;;;:::o;24585:34::-;;;;;;;;;;;;;:::o;24517:28::-;;;;:::o;30619:98::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30692:17:::1;30698:2;30702:6;30692:5;:17::i;:::-;30619:98:::0;;:::o;31224:136::-;31295:4;31319:24;:33;31344:7;31319:33;;;;;;;;;;;;;;;;;;;;;;;;;31312:40;;31224:136;;;:::o;7655:127::-;7729:7;7756:9;:18;7766:7;7756:18;;;;;;;;;;;;;;;;7749:25;;7655:127;;;:::o;29009:217::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29068:11:::1;29088:5;29068:26;;29105:15;29123:5;:15;;;29147:4;29123:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29105:48;;29178:1;29168:7;:11;29164:54;;;29181:5;:14;;;29196:12;:10;:12::i;:::-;29210:7;29181:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29164:54;29057:169;;29009:217:::0;:::o;30725:81::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30794:4:::1;30778:13;;:20;;;;;;;;;;;;;;;;;;30725:81::o:0;29754:297::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29864:7:::1;29851:10;:20;;;;29901:13;29882:16;:32;;;;29954:16;;29941:10;;:29;;;;:::i;:::-;29925:13;:45;;;;30006:3;29989:13;;:20;;29981:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;29754:297:::0;;:::o;1413:87::-;1459:7;1486:6;;;;;;;;;;;1479:13;;1413:87;:::o;24076:24::-;;;;;;;;;;;;;:::o;6581:104::-;6637:13;6670:7;6663:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6581:104;:::o;24345:24::-;;;;:::o;24447:25::-;;;;:::o;10801:413::-;10894:4;10911:24;10938:11;:25;10950:12;:10;:12::i;:::-;10938:25;;;;;;;;;;;;;;;:34;10964:7;10938:34;;;;;;;;;;;;;;;;10911:61;;11011:15;10991:16;:35;;10983:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11104:67;11113:12;:10;:12::i;:::-;11127:7;11155:15;11136:16;:34;11104:8;:67::i;:::-;11202:4;11195:11;;;10801:413;;;;:::o;30814:112::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30903:15:::1;30886:14;;:32;;;;;;;;;;;;;;;;;;30814:112:::0;:::o;7995:175::-;8081:4;8098:42;8108:12;:10;:12::i;:::-;8122:9;8133:6;8098:9;:42::i;:::-;8158:4;8151:11;;7995:175;;;;:::o;24107:64::-;;;;;;;;;;;;;:::o;2064:91::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2117:30:::1;2144:1;2117:18;:30::i;:::-;2064:91::o:0;24666:25::-;;;;;;;;;;;;;:::o;30934:132::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31050:8:::1;31019:19;:28;31039:7;31019:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;30934:132:::0;;:::o;30059:328::-;30140:4;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30200:6:::1;30195:1;30179:13;:11;:13::i;:::-;:17;;;;:::i;:::-;30178:28;;;;:::i;:::-;30165:9;:41;;30157:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;30290:3;30282:4;30266:13;:11;:13::i;:::-;:20;;;;:::i;:::-;30265:28;;;;:::i;:::-;30252:9;:41;;30244:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;30348:9;30327:18;:30;;;;30375:4;30368:11;;30059:328:::0;;;:::o;31074:142::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31200:8:::1;31164:24;:33;31189:7;31164:33;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;31074:142:::0;;:::o;24413:27::-;;;;:::o;8233:151::-;8322:7;8349:11;:18;8361:5;8349:18;;;;;;;;;;;;;;;:27;8368:7;8349:27;;;;;;;;;;;;;;;;8342:34;;8233:151;;;;:::o;24305:33::-;;;;:::o;24376:30::-;;;;:::o;2310:201::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2419:1:::1;2399:22;;:8;:22;;::::0;2391:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2475:28;2494:8;2475:18;:28::i;:::-;2310:201:::0;:::o;24479:31::-;;;;:::o;24552:24::-;;;;:::o;29345:108::-;1644:12;:10;:12::i;:::-;1633:23;;:7;:5;:7::i;:::-;:23;;;1625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29438:7:::1;29420:15;;:25;;;;;;;;;;;;;;;;;;29345:108:::0;:::o;253:98::-;306:7;333:10;326:17;;253:98;:::o;14485:380::-;14638:1;14621:19;;:5;:19;;;14613:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14719:1;14700:21;;:7;:21;;;14692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14803:6;14773:11;:18;14785:5;14773:18;;;;;;;;;;;;;;;:27;14792:7;14773:27;;;;;;;;;;;;;;;:36;;;;14841:7;14825:32;;14834:5;14825:32;;;14850:6;14825:32;;;;;;:::i;:::-;;;;;;;;14485:380;;;:::o;25909:2369::-;26057:1;26041:18;;:4;:18;;;26033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26134:1;26120:16;;:2;:16;;;26112:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26203:1;26193:6;:11;26189:93;;26221:28;26237:4;26243:2;26247:1;26221:15;:28::i;:::-;26264:7;;26189:93;26294:10;26315:13;26307:21;;:4;:21;;;26294:34;;26339:11;26359:13;26353:19;;:2;:19;;;26339:33;;26390:13;;;;;;;;;;;26389:14;:44;;;;;26408:19;:25;26428:4;26408:25;;;;;;;;;;;;;;;;;;;;;;;;;26407:26;26389:44;:72;;;;;26438:19;:23;26458:2;26438:23;;;;;;;;;;;;;;;;;;;;;;;;;26437:24;26389:72;26385:123;;;26471:5;26463:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;26385:123;26525:14;;;;;;;;;;;:47;;;;;26544:24;:28;26569:2;26544:28;;;;;;;;;;;;;;;;;;;;;;;;;26543:29;26525:47;:60;;;;;26577:8;;;;;;;;;;;26576:9;26525:60;26521:361;;;26606:5;26602:119;;;26666:9;;26649:13;26659:2;26649:9;:13::i;:::-;26640:6;:22;;;;:::i;:::-;:35;;26632:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26602:119;26740:5;26739:6;:17;;;;;26750:6;26749:7;26739:17;26735:136;;;26811:9;;26794:13;26804:2;26794:9;:13::i;:::-;26785:6;:22;;;;:::i;:::-;:35;;26777:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;26735:136;26521:361;26894:28;26925:24;26943:4;26925:9;:24::i;:::-;26894:55;;26960:12;26999:18;;26975:20;:42;;26960:57;;27032:7;:26;;;;;27043:15;;;;;;;;;;;27032:26;:39;;;;;27063:8;;;;;;;;;;;27062:9;27032:39;:62;;;;;27081:13;27075:19;;:2;:19;;;27032:62;:92;;;;;27099:19;:25;27119:4;27099:25;;;;;;;;;;;;;;;;;;;;;;;;;27098:26;27032:92;:120;;;;;27129:19;:23;27149:2;27129:23;;;;;;;;;;;;;;;;;;;;;;;;;27128:24;27032:120;27028:224;;;27180:4;27169:8;;:15;;;;;;;;;;;;;;;;;;27199:10;:8;:10::i;:::-;27235:5;27224:8;;:16;;;;;;;;;;;;;;;;;;27028:224;27264:12;27280:8;;;;;;;;;;;27279:9;27264:24;;27303:19;:25;27323:4;27303:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27332:19;:23;27352:2;27332:23;;;;;;;;;;;;;;;;;;;;;;;;;27303:52;27299:100;;;27382:5;27372:15;;27299:100;27411:12;27440:26;27487:7;27483:742;;;27521:13;27515:19;;:2;:19;;;:40;;;;;27554:1;27538:13;;:17;27515:40;27511:423;;;27583:34;27613:3;27583:25;27594:13;;27583:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;27576:41;;27685:13;;27665:16;;27658:4;:23;;;;:::i;:::-;27657:41;;;;:::i;:::-;27636:62;;27511:423;;;27745:13;27737:21;;:4;:21;;;:41;;;;;27777:1;27762:12;;:16;27737:41;27733:201;;;27806:33;27835:3;27806:24;27817:12;;27806:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;27799:40;;27906:12;;27887:15;;27880:4;:22;;;;:::i;:::-;27879:39;;;;:::i;:::-;27858:60;;27733:201;27511:423;27961:1;27954:4;:8;27950:91;;;27983:42;27999:4;28013;28020;27983:15;:42::i;:::-;27950:91;28080:1;28059:18;:22;28055:128;;;28102:65;28126:4;28133:13;28148:18;28102:15;:65::i;:::-;28055:128;28209:4;28199:14;;;;;:::i;:::-;;;27483:742;28237:33;28253:4;28259:2;28263:6;28237:15;:33::i;:::-;26022:2256;;;;;;;25909:2369;;;;:::o;12724:399::-;12827:1;12808:21;;:7;:21;;;12800:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12878:49;12907:1;12911:7;12920:6;12878:20;:49::i;:::-;12956:6;12940:12;;:22;;;;;;;:::i;:::-;;;;;;;;12995:6;12973:9;:18;12983:7;12973:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;13038:7;13017:37;;13034:1;13017:37;;;13047:6;13017:37;;;;;;:::i;:::-;;;;;;;;13067:48;13095:1;13099:7;13108:6;13067:19;:48::i;:::-;12724:399;;:::o;2671:191::-;2745:16;2764:6;;;;;;;;;;;2745:25;;2790:8;2781:6;;:17;;;;;;;;;;;;;;;;;;2845:8;2814:40;;2835:8;2814:40;;;;;;;;;;;;2734:128;2671:191;:::o;11704:733::-;11862:1;11844:20;;:6;:20;;;11836:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11946:1;11925:23;;:9;:23;;;11917:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12001:47;12022:6;12030:9;12041:6;12001:20;:47::i;:::-;12061:21;12085:9;:17;12095:6;12085:17;;;;;;;;;;;;;;;;12061:41;;12138:6;12121:13;:23;;12113:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12259:6;12243:13;:22;12223:9;:17;12233:6;12223:17;;;;;;;;;;;;;;;:42;;;;12311:6;12287:9;:20;12297:9;12287:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12352:9;12335:35;;12344:6;12335:35;;;12363:6;12335:35;;;;;;:::i;:::-;;;;;;;;12383:46;12403:6;12411:9;12422:6;12383:19;:46::i;:::-;11825:612;11704:733;;;:::o;28751:213::-;28790:23;28816:24;28834:4;28816:9;:24::i;:::-;28790:50;;28874:1;28855:15;:20;28851:59;;28892:7;;;28851:59;28922:34;28940:15;28922:17;:34::i;:::-;28779:185;28751:213;:::o;19803:98::-;19861:7;19892:1;19888;:5;;;;:::i;:::-;19881:12;;19803:98;;;;:::o;20202:::-;20260:7;20291:1;20287;:5;;;;:::i;:::-;20280:12;;20202:98;;;;:::o;15465:125::-;;;;:::o;16194:124::-;;;;:::o;28286:457::-;28353:21;28391:1;28377:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28353:40;;28422:4;28404;28409:1;28404:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28448:4;;;;;;;;;;;28438;28443:1;28438:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;28465:62;28482:4;28497:15;28515:11;28465:8;:62::i;:::-;28540:15;:69;;;28624:11;28650:1;28666:4;28685:9;;;;;;;;;;;28709:15;28540:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28342:401;28286:457;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:329::-;5315:6;5364:2;5352:9;5343:7;5339:23;5335:32;5332:119;;;5370:79;;:::i;:::-;5332:119;5490:1;5515:53;5560:7;5551:6;5540:9;5536:22;5515:53;:::i;:::-;5505:63;;5461:117;5256:329;;;;:::o;5591:::-;5650:6;5699:2;5687:9;5678:7;5674:23;5670:32;5667:119;;;5705:79;;:::i;:::-;5667:119;5825:1;5850:53;5895:7;5886:6;5875:9;5871:22;5850:53;:::i;:::-;5840:63;;5796:117;5591:329;;;;:::o;5926:619::-;6003:6;6011;6019;6068:2;6056:9;6047:7;6043:23;6039:32;6036:119;;;6074:79;;:::i;:::-;6036:119;6194:1;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6165:117;6321:2;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6292:118;6449:2;6475:53;6520:7;6511:6;6500:9;6496:22;6475:53;:::i;:::-;6465:63;;6420:118;5926:619;;;;;:::o;6551:86::-;6586:7;6626:4;6619:5;6615:16;6604:27;;6551:86;;;:::o;6643:112::-;6726:22;6742:5;6726:22;:::i;:::-;6721:3;6714:35;6643:112;;:::o;6761:214::-;6850:4;6888:2;6877:9;6873:18;6865:26;;6901:67;6965:1;6954:9;6950:17;6941:6;6901:67;:::i;:::-;6761:214;;;;:::o;6981:118::-;7068:24;7086:5;7068:24;:::i;:::-;7063:3;7056:37;6981:118;;:::o;7105:222::-;7198:4;7236:2;7225:9;7221:18;7213:26;;7249:71;7317:1;7306:9;7302:17;7293:6;7249:71;:::i;:::-;7105:222;;;;:::o;7333:116::-;7403:21;7418:5;7403:21;:::i;:::-;7396:5;7393:32;7383:60;;7439:1;7436;7429:12;7383:60;7333:116;:::o;7455:133::-;7498:5;7536:6;7523:20;7514:29;;7552:30;7576:5;7552:30;:::i;:::-;7455:133;;;;:::o;7594:323::-;7650:6;7699:2;7687:9;7678:7;7674:23;7670:32;7667:119;;;7705:79;;:::i;:::-;7667:119;7825:1;7850:50;7892:7;7883:6;7872:9;7868:22;7850:50;:::i;:::-;7840:60;;7796:114;7594:323;;;;:::o;7923:468::-;7988:6;7996;8045:2;8033:9;8024:7;8020:23;8016:32;8013:119;;;8051:79;;:::i;:::-;8013:119;8171:1;8196:53;8241:7;8232:6;8221:9;8217:22;8196:53;:::i;:::-;8186:63;;8142:117;8298:2;8324:50;8366:7;8357:6;8346:9;8342:22;8324:50;:::i;:::-;8314:60;;8269:115;7923:468;;;;;:::o;8397:474::-;8465:6;8473;8522:2;8510:9;8501:7;8497:23;8493:32;8490:119;;;8528:79;;:::i;:::-;8490:119;8648:1;8673:53;8718:7;8709:6;8698:9;8694:22;8673:53;:::i;:::-;8663:63;;8619:117;8775:2;8801:53;8846:7;8837:6;8826:9;8822:22;8801:53;:::i;:::-;8791:63;;8746:118;8397:474;;;;;:::o;8877:180::-;8925:77;8922:1;8915:88;9022:4;9019:1;9012:15;9046:4;9043:1;9036:15;9063:320;9107:6;9144:1;9138:4;9134:12;9124:22;;9191:1;9185:4;9181:12;9212:18;9202:81;;9268:4;9260:6;9256:17;9246:27;;9202:81;9330:2;9322:6;9319:14;9299:18;9296:38;9293:84;;9349:18;;:::i;:::-;9293:84;9114:269;9063:320;;;:::o;9389:182::-;9529:34;9525:1;9517:6;9513:14;9506:58;9389:182;:::o;9577:366::-;9719:3;9740:67;9804:2;9799:3;9740:67;:::i;:::-;9733:74;;9816:93;9905:3;9816:93;:::i;:::-;9934:2;9929:3;9925:12;9918:19;;9577:366;;;:::o;9949:419::-;10115:4;10153:2;10142:9;10138:18;10130:26;;10202:9;10196:4;10192:20;10188:1;10177:9;10173:17;10166:47;10230:131;10356:4;10230:131;:::i;:::-;10222:139;;9949:419;;;:::o;10374:180::-;10422:77;10419:1;10412:88;10519:4;10516:1;10509:15;10543:4;10540:1;10533:15;10560:191;10600:3;10619:20;10637:1;10619:20;:::i;:::-;10614:25;;10653:20;10671:1;10653:20;:::i;:::-;10648:25;;10696:1;10693;10689:9;10682:16;;10717:3;10714:1;10711:10;10708:36;;;10724:18;;:::i;:::-;10708:36;10560:191;;;;:::o;10757:179::-;10897:31;10893:1;10885:6;10881:14;10874:55;10757:179;:::o;10942:366::-;11084:3;11105:67;11169:2;11164:3;11105:67;:::i;:::-;11098:74;;11181:93;11270:3;11181:93;:::i;:::-;11299:2;11294:3;11290:12;11283:19;;10942:366;;;:::o;11314:419::-;11480:4;11518:2;11507:9;11503:18;11495:26;;11567:9;11561:4;11557:20;11553:1;11542:9;11538:17;11531:47;11595:131;11721:4;11595:131;:::i;:::-;11587:139;;11314:419;;;:::o;11739:410::-;11779:7;11802:20;11820:1;11802:20;:::i;:::-;11797:25;;11836:20;11854:1;11836:20;:::i;:::-;11831:25;;11891:1;11888;11884:9;11913:30;11931:11;11913:30;:::i;:::-;11902:41;;12092:1;12083:7;12079:15;12076:1;12073:22;12053:1;12046:9;12026:83;12003:139;;12122:18;;:::i;:::-;12003:139;11787:362;11739:410;;;;:::o;12155:180::-;12203:77;12200:1;12193:88;12300:4;12297:1;12290:15;12324:4;12321:1;12314:15;12341:185;12381:1;12398:20;12416:1;12398:20;:::i;:::-;12393:25;;12432:20;12450:1;12432:20;:::i;:::-;12427:25;;12471:1;12461:35;;12476:18;;:::i;:::-;12461:35;12518:1;12515;12511:9;12506:14;;12341:185;;;;:::o;12532:223::-;12672:34;12668:1;12660:6;12656:14;12649:58;12741:6;12736:2;12728:6;12724:15;12717:31;12532:223;:::o;12761:366::-;12903:3;12924:67;12988:2;12983:3;12924:67;:::i;:::-;12917:74;;13000:93;13089:3;13000:93;:::i;:::-;13118:2;13113:3;13109:12;13102:19;;12761:366;;;:::o;13133:419::-;13299:4;13337:2;13326:9;13322:18;13314:26;;13386:9;13380:4;13376:20;13372:1;13361:9;13357:17;13350:47;13414:131;13540:4;13414:131;:::i;:::-;13406:139;;13133:419;;;:::o;13558:227::-;13698:34;13694:1;13686:6;13682:14;13675:58;13767:10;13762:2;13754:6;13750:15;13743:35;13558:227;:::o;13791:366::-;13933:3;13954:67;14018:2;14013:3;13954:67;:::i;:::-;13947:74;;14030:93;14119:3;14030:93;:::i;:::-;14148:2;14143:3;14139:12;14132:19;;13791:366;;;:::o;14163:419::-;14329:4;14367:2;14356:9;14352:18;14344:26;;14416:9;14410:4;14406:20;14402:1;14391:9;14387:17;14380:47;14444:131;14570:4;14444:131;:::i;:::-;14436:139;;14163:419;;;:::o;14588:143::-;14645:5;14676:6;14670:13;14661:22;;14692:33;14719:5;14692:33;:::i;:::-;14588:143;;;;:::o;14737:351::-;14807:6;14856:2;14844:9;14835:7;14831:23;14827:32;14824:119;;;14862:79;;:::i;:::-;14824:119;14982:1;15007:64;15063:7;15054:6;15043:9;15039:22;15007:64;:::i;:::-;14997:74;;14953:128;14737:351;;;;:::o;15094:332::-;15215:4;15253:2;15242:9;15238:18;15230:26;;15266:71;15334:1;15323:9;15319:17;15310:6;15266:71;:::i;:::-;15347:72;15415:2;15404:9;15400:18;15391:6;15347:72;:::i;:::-;15094:332;;;;;:::o;15432:137::-;15486:5;15517:6;15511:13;15502:22;;15533:30;15557:5;15533:30;:::i;:::-;15432:137;;;;:::o;15575:345::-;15642:6;15691:2;15679:9;15670:7;15666:23;15662:32;15659:119;;;15697:79;;:::i;:::-;15659:119;15817:1;15842:61;15895:7;15886:6;15875:9;15871:22;15842:61;:::i;:::-;15832:71;;15788:125;15575:345;;;;:::o;15926:224::-;16066:34;16062:1;16054:6;16050:14;16043:58;16135:7;16130:2;16122:6;16118:15;16111:32;15926:224;:::o;16156:366::-;16298:3;16319:67;16383:2;16378:3;16319:67;:::i;:::-;16312:74;;16395:93;16484:3;16395:93;:::i;:::-;16513:2;16508:3;16504:12;16497:19;;16156:366;;;:::o;16528:419::-;16694:4;16732:2;16721:9;16717:18;16709:26;;16781:9;16775:4;16771:20;16767:1;16756:9;16752:17;16745:47;16809:131;16935:4;16809:131;:::i;:::-;16801:139;;16528:419;;;:::o;16953:172::-;17093:24;17089:1;17081:6;17077:14;17070:48;16953:172;:::o;17131:366::-;17273:3;17294:67;17358:2;17353:3;17294:67;:::i;:::-;17287:74;;17370:93;17459:3;17370:93;:::i;:::-;17488:2;17483:3;17479:12;17472:19;;17131:366;;;:::o;17503:419::-;17669:4;17707:2;17696:9;17692:18;17684:26;;17756:9;17750:4;17746:20;17742:1;17731:9;17727:17;17720:47;17784:131;17910:4;17784:131;:::i;:::-;17776:139;;17503:419;;;:::o;17928:168::-;18068:20;18064:1;18056:6;18052:14;18045:44;17928:168;:::o;18102:366::-;18244:3;18265:67;18329:2;18324:3;18265:67;:::i;:::-;18258:74;;18341:93;18430:3;18341:93;:::i;:::-;18459:2;18454:3;18450:12;18443:19;;18102:366;;;:::o;18474:419::-;18640:4;18678:2;18667:9;18663:18;18655:26;;18727:9;18721:4;18717:20;18713:1;18702:9;18698:17;18691:47;18755:131;18881:4;18755:131;:::i;:::-;18747:139;;18474:419;;;:::o;18899:225::-;19039:34;19035:1;19027:6;19023:14;19016:58;19108:8;19103:2;19095:6;19091:15;19084:33;18899:225;:::o;19130:366::-;19272:3;19293:67;19357:2;19352:3;19293:67;:::i;:::-;19286:74;;19369:93;19458:3;19369:93;:::i;:::-;19487:2;19482:3;19478:12;19471:19;;19130:366;;;:::o;19502:419::-;19668:4;19706:2;19695:9;19691:18;19683:26;;19755:9;19749:4;19745:20;19741:1;19730:9;19726:17;19719:47;19783:131;19909:4;19783:131;:::i;:::-;19775:139;;19502:419;;;:::o;19927:223::-;20067:34;20063:1;20055:6;20051:14;20044:58;20136:6;20131:2;20123:6;20119:15;20112:31;19927:223;:::o;20156:366::-;20298:3;20319:67;20383:2;20378:3;20319:67;:::i;:::-;20312:74;;20395:93;20484:3;20395:93;:::i;:::-;20513:2;20508:3;20504:12;20497:19;;20156:366;;;:::o;20528:419::-;20694:4;20732:2;20721:9;20717:18;20709:26;;20781:9;20775:4;20771:20;20767:1;20756:9;20752:17;20745:47;20809:131;20935:4;20809:131;:::i;:::-;20801:139;;20528:419;;;:::o;20953:221::-;21093:34;21089:1;21081:6;21077:14;21070:58;21162:4;21157:2;21149:6;21145:15;21138:29;20953:221;:::o;21180:366::-;21322:3;21343:67;21407:2;21402:3;21343:67;:::i;:::-;21336:74;;21419:93;21508:3;21419:93;:::i;:::-;21537:2;21532:3;21528:12;21521:19;;21180:366;;;:::o;21552:419::-;21718:4;21756:2;21745:9;21741:18;21733:26;;21805:9;21799:4;21795:20;21791:1;21780:9;21776:17;21769:47;21833:131;21959:4;21833:131;:::i;:::-;21825:139;;21552:419;;;:::o;21977:224::-;22117:34;22113:1;22105:6;22101:14;22094:58;22186:7;22181:2;22173:6;22169:15;22162:32;21977:224;:::o;22207:366::-;22349:3;22370:67;22434:2;22429:3;22370:67;:::i;:::-;22363:74;;22446:93;22535:3;22446:93;:::i;:::-;22564:2;22559:3;22555:12;22548:19;;22207:366;;;:::o;22579:419::-;22745:4;22783:2;22772:9;22768:18;22760:26;;22832:9;22826:4;22822:20;22818:1;22807:9;22803:17;22796:47;22860:131;22986:4;22860:131;:::i;:::-;22852:139;;22579:419;;;:::o;23004:222::-;23144:34;23140:1;23132:6;23128:14;23121:58;23213:5;23208:2;23200:6;23196:15;23189:30;23004:222;:::o;23232:366::-;23374:3;23395:67;23459:2;23454:3;23395:67;:::i;:::-;23388:74;;23471:93;23560:3;23471:93;:::i;:::-;23589:2;23584:3;23580:12;23573:19;;23232:366;;;:::o;23604:419::-;23770:4;23808:2;23797:9;23793:18;23785:26;;23857:9;23851:4;23847:20;23843:1;23832:9;23828:17;23821:47;23885:131;24011:4;23885:131;:::i;:::-;23877:139;;23604:419;;;:::o;24029:177::-;24169:29;24165:1;24157:6;24153:14;24146:53;24029:177;:::o;24212:366::-;24354:3;24375:67;24439:2;24434:3;24375:67;:::i;:::-;24368:74;;24451:93;24540:3;24451:93;:::i;:::-;24569:2;24564:3;24560:12;24553:19;;24212:366;;;:::o;24584:419::-;24750:4;24788:2;24777:9;24773:18;24765:26;;24837:9;24831:4;24827:20;24823:1;24812:9;24808:17;24801:47;24865:131;24991:4;24865:131;:::i;:::-;24857:139;;24584:419;;;:::o;25009:175::-;25149:27;25145:1;25137:6;25133:14;25126:51;25009:175;:::o;25190:366::-;25332:3;25353:67;25417:2;25412:3;25353:67;:::i;:::-;25346:74;;25429:93;25518:3;25429:93;:::i;:::-;25547:2;25542:3;25538:12;25531:19;;25190:366;;;:::o;25562:419::-;25728:4;25766:2;25755:9;25751:18;25743:26;;25815:9;25809:4;25805:20;25801:1;25790:9;25786:17;25779:47;25843:131;25969:4;25843:131;:::i;:::-;25835:139;;25562:419;;;:::o;25987:180::-;26127:32;26123:1;26115:6;26111:14;26104:56;25987:180;:::o;26173:366::-;26315:3;26336:67;26400:2;26395:3;26336:67;:::i;:::-;26329:74;;26412:93;26501:3;26412:93;:::i;:::-;26530:2;26525:3;26521:12;26514:19;;26173:366;;;:::o;26545:419::-;26711:4;26749:2;26738:9;26734:18;26726:26;;26798:9;26792:4;26788:20;26784:1;26773:9;26769:17;26762:47;26826:131;26952:4;26826:131;:::i;:::-;26818:139;;26545:419;;;:::o;26970:194::-;27010:4;27030:20;27048:1;27030:20;:::i;:::-;27025:25;;27064:20;27082:1;27064:20;:::i;:::-;27059:25;;27108:1;27105;27101:9;27093:17;;27132:1;27126:4;27123:11;27120:37;;;27137:18;;:::i;:::-;27120:37;26970:194;;;;:::o;27170:181::-;27310:33;27306:1;27298:6;27294:14;27287:57;27170:181;:::o;27357:366::-;27499:3;27520:67;27584:2;27579:3;27520:67;:::i;:::-;27513:74;;27596:93;27685:3;27596:93;:::i;:::-;27714:2;27709:3;27705:12;27698:19;;27357:366;;;:::o;27729:419::-;27895:4;27933:2;27922:9;27918:18;27910:26;;27982:9;27976:4;27972:20;27968:1;27957:9;27953:17;27946:47;28010:131;28136:4;28010:131;:::i;:::-;28002:139;;27729:419;;;:::o;28154:225::-;28294:34;28290:1;28282:6;28278:14;28271:58;28363:8;28358:2;28350:6;28346:15;28339:33;28154:225;:::o;28385:366::-;28527:3;28548:67;28612:2;28607:3;28548:67;:::i;:::-;28541:74;;28624:93;28713:3;28624:93;:::i;:::-;28742:2;28737:3;28733:12;28726:19;;28385:366;;;:::o;28757:419::-;28923:4;28961:2;28950:9;28946:18;28938:26;;29010:9;29004:4;29000:20;28996:1;28985:9;28981:17;28974:47;29038:131;29164:4;29038:131;:::i;:::-;29030:139;;28757:419;;;:::o;29182:180::-;29230:77;29227:1;29220:88;29327:4;29324:1;29317:15;29351:4;29348:1;29341:15;29368:180;29416:77;29413:1;29406:88;29513:4;29510:1;29503:15;29537:4;29534:1;29527:15;29554:85;29599:7;29628:5;29617:16;;29554:85;;;:::o;29645:158::-;29703:9;29736:61;29754:42;29763:32;29789:5;29763:32;:::i;:::-;29754:42;:::i;:::-;29736:61;:::i;:::-;29723:74;;29645:158;;;:::o;29809:147::-;29904:45;29943:5;29904:45;:::i;:::-;29899:3;29892:58;29809:147;;:::o;29962:114::-;30029:6;30063:5;30057:12;30047:22;;29962:114;;;:::o;30082:184::-;30181:11;30215:6;30210:3;30203:19;30255:4;30250:3;30246:14;30231:29;;30082:184;;;;:::o;30272:132::-;30339:4;30362:3;30354:11;;30392:4;30387:3;30383:14;30375:22;;30272:132;;;:::o;30410:108::-;30487:24;30505:5;30487:24;:::i;:::-;30482:3;30475:37;30410:108;;:::o;30524:179::-;30593:10;30614:46;30656:3;30648:6;30614:46;:::i;:::-;30692:4;30687:3;30683:14;30669:28;;30524:179;;;;:::o;30709:113::-;30779:4;30811;30806:3;30802:14;30794:22;;30709:113;;;:::o;30858:732::-;30977:3;31006:54;31054:5;31006:54;:::i;:::-;31076:86;31155:6;31150:3;31076:86;:::i;:::-;31069:93;;31186:56;31236:5;31186:56;:::i;:::-;31265:7;31296:1;31281:284;31306:6;31303:1;31300:13;31281:284;;;31382:6;31376:13;31409:63;31468:3;31453:13;31409:63;:::i;:::-;31402:70;;31495:60;31548:6;31495:60;:::i;:::-;31485:70;;31341:224;31328:1;31325;31321:9;31316:14;;31281:284;;;31285:14;31581:3;31574:10;;30982:608;;;30858:732;;;;:::o;31596:831::-;31859:4;31897:3;31886:9;31882:19;31874:27;;31911:71;31979:1;31968:9;31964:17;31955:6;31911:71;:::i;:::-;31992:80;32068:2;32057:9;32053:18;32044:6;31992:80;:::i;:::-;32119:9;32113:4;32109:20;32104:2;32093:9;32089:18;32082:48;32147:108;32250:4;32241:6;32147:108;:::i;:::-;32139:116;;32265:72;32333:2;32322:9;32318:18;32309:6;32265:72;:::i;:::-;32347:73;32415:3;32404:9;32400:19;32391:6;32347:73;:::i;:::-;31596:831;;;;;;;;:::o
Swarm Source
ipfs://dabc4b1ed30b35bdc7c2830513c06545dd50fdc6244fe736c8e4d6919415db59
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.