ERC-20
Overview
Max Total Supply
53,466,466,300 FREEPAVEL
Holders
131
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
18,293,893,352.483603743221077737 FREEPAVELValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
FREEPAVEL
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-25 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; pragma experimental ABIEncoderV2; // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); } // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Metadata.sol) interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol) contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor(address initialOwner) { _transferOwnership(initialOwner); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; } function _nonReentrantAfter() private { _status = _NOT_ENTERED; } } // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/utils/SafeERC20.sol) library SafeERC20 { using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol) library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract FREEPAVEL is ERC20, Ownable, ReentrancyGuard { using SafeERC20 for IERC20; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool public tradingEnabled = false; uint256 public sellFeePercentage = 0; uint256 public swapPortion = 0; uint256 public VitalikPortion = 0; mapping(address => bool) public isExcludedFromFees; mapping(address => bool) public isFeeApplicable; address public constant deadAddress = 0x000000000000000000000000000000000000dEaD; address public immutable WETH; address public constant vitalikAddress = 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045; uint256 public accumulatedFees; uint256 public constant MINIMUM_SWAP_AMOUNT = 0.1 ether; bool private swapping; event ExcludeFromFees(address indexed account, bool isExcluded); event SetFeeApplicable(address indexed account, bool isFeeApplicable); event SetSwapPortion(uint256 swapPortion); event EnableTrading(); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived); event TokensSentToVitalik(uint256 amount); constructor() ERC20(unicode"FREE PAVEL", unicode"FREEPAVEL") Ownable(msg.sender) { _mint(msg.sender, 53466466300 * 10 ** decimals()); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = _uniswapV2Router.WETH(); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), WETH); uniswapV2Router = _uniswapV2Router; isExcludedFromFees[owner()] = true; isExcludedFromFees[address(this)] = true; isExcludedFromFees[deadAddress] = true; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _toTransfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _toTransfer(sender, recipient, amount); uint256 currentAllowance = allowance(sender, _msgSender()); require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function _toTransfer( address sender, address recipient, uint256 amount ) internal { require(tradingEnabled || isExcludedFromFees[sender] || isExcludedFromFees[recipient], "Trading is not enabled yet"); require(!swapping, "Transfer failed due to internal swap in progress"); if (isExcludedFromFees[sender] || isExcludedFromFees[recipient] || !isFeeApplicable[sender]) { _transfer(sender, recipient, amount); } else { uint256 feeAmount = (amount * sellFeePercentage) / 100; uint256 transferAmount = amount - feeAmount; uint256 vitalikAmount = (feeAmount * VitalikPortion * 100 ) / (swapPortion + VitalikPortion) / 100; uint256 swapAmount = (feeAmount * swapPortion * 100 ) / (swapPortion + VitalikPortion) / 100; _transfer(sender, address(this), swapAmount); _transfer(sender, vitalikAddress, vitalikAmount); _transfer(sender, recipient, transferAmount); accumulatedFees += swapAmount; if (accumulatedFees >= MINIMUM_SWAP_AMOUNT) { swapping = true; _swapTokensForEth(); swapping = false; } emit TokensSentToVitalik(vitalikAmount); } } function _swapTokensForEth() private nonReentrant { uint256 tokenAmount = accumulatedFees; accumulatedFees = 0; address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; _approve(address(this), address(uniswapV2Router), tokenAmount); uint256 initialETHBalance = address(this).balance; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); uint256 ethReceived = address(this).balance - initialETHBalance; emit SwapAndLiquify(tokenAmount, ethReceived); } function setExcludeFromFees(address[] memory accounts, bool excluded) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { isExcludedFromFees[accounts[i]] = excluded; emit ExcludeFromFees(accounts[i], excluded); } } function setAutomatedMarketMakerPair(address[] memory accounts, bool applicable) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { if(accounts[i] == uniswapV2Pair) continue; isFeeApplicable[accounts[i]] = applicable; emit SetFeeApplicable(accounts[i], applicable); } } function setSwapPortion(uint256 _swapPortion) public onlyOwner { require(_swapPortion <= 100, "Swap portion cannot exceed 100"); swapPortion = _swapPortion; emit SetSwapPortion(_swapPortion); } function setVitalikPortion(uint256 _swapPortion) public onlyOwner { require(_swapPortion <= 100, "Swap portion cannot exceed 100"); VitalikPortion = _swapPortion; } function enableTrading() public onlyOwner { tradingEnabled = true; emit EnableTrading(); } receive() external payable {} }
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":[],"name":"EnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isFeeApplicable","type":"bool"}],"name":"SetFeeApplicable","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapPortion","type":"uint256"}],"name":"SetSwapPortion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensSentToVitalik","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MINIMUM_SWAP_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VitalikPortion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accumulatedFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeApplicable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"applicable","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapPortion","type":"uint256"}],"name":"setSwapPortion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapPortion","type":"uint256"}],"name":"setVitalikPortion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPortion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vitalikAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040525f600860146101000a81548160ff0219169083151502179055505f6009555f600a555f600b55348015610035575f80fd5b50336040518060400160405280600a81526020017f4652454520504156454c000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f46524545504156454c000000000000000000000000000000000000000000000081525081600390816100b291906108db565b5080600490816100c291906108db565b5050506100d48161044a60201b60201c565b506001600681905550610116336100ef61050d60201b60201c565b600a6100fb9190610b12565b640c72d987fc61010b9190610b5c565b61051560201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610177573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019b9190610bfb565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610217573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023b9190610bfb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b8152600401610277929190610c35565b6020604051808303815f875af1158015610293573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b79190610bfb565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f61034961066f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050610d2f565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057a90610cb6565b60405180910390fd5b6105945f838361069760201b60201c565b8060025f8282546105a59190610cd4565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106529190610d16565b60405180910390a361066b5f838361069c60201b60201c565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061071c57607f821691505b60208210810361072f5761072e6106d8565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026107917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610756565b61079b8683610756565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6107df6107da6107d5846107b3565b6107bc565b6107b3565b9050919050565b5f819050919050565b6107f8836107c5565b61080c610804826107e6565b848454610762565b825550505050565b5f90565b610820610814565b61082b8184846107ef565b505050565b5b8181101561084e576108435f82610818565b600181019050610831565b5050565b601f8211156108935761086481610735565b61086d84610747565b8101602085101561087c578190505b61089061088885610747565b830182610830565b50505b505050565b5f82821c905092915050565b5f6108b35f1984600802610898565b1980831691505092915050565b5f6108cb83836108a4565b9150826002028217905092915050565b6108e4826106a1565b67ffffffffffffffff8111156108fd576108fc6106ab565b5b6109078254610705565b610912828285610852565b5f60209050601f831160018114610943575f8415610931578287015190505b61093b85826108c0565b8655506109a2565b601f19841661095186610735565b5f5b8281101561097857848901518255600182019150602085019450602081019050610953565b868310156109955784890151610991601f8916826108a4565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610a2c57808604811115610a0857610a076109aa565b5b6001851615610a175780820291505b8081029050610a25856109d7565b94506109ec565b94509492505050565b5f82610a445760019050610aff565b81610a51575f9050610aff565b8160018114610a675760028114610a7157610aa0565b6001915050610aff565b60ff841115610a8357610a826109aa565b5b8360020a915084821115610a9a57610a996109aa565b5b50610aff565b5060208310610133831016604e8410600b8410161715610ad55782820a905083811115610ad057610acf6109aa565b5b610aff565b610ae284848460016109e3565b92509050818404811115610af957610af86109aa565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610b1c826107b3565b9150610b2783610b06565b9250610b547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610a35565b905092915050565b5f610b66826107b3565b9150610b71836107b3565b9250828202610b7f816107b3565b91508282048414831517610b9657610b956109aa565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bca82610ba1565b9050919050565b610bda81610bc0565b8114610be4575f80fd5b50565b5f81519050610bf581610bd1565b92915050565b5f60208284031215610c1057610c0f610b9d565b5b5f610c1d84828501610be7565b91505092915050565b610c2f81610bc0565b82525050565b5f604082019050610c485f830185610c26565b610c556020830184610c26565b9392505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610ca0601f83610c5c565b9150610cab82610c6c565b602082019050919050565b5f6020820190508181035f830152610ccd81610c94565b9050919050565b5f610cde826107b3565b9150610ce9836107b3565b9250828201905080821115610d0157610d006109aa565b5b92915050565b610d10816107b3565b82525050565b5f602082019050610d295f830184610d07565b92915050565b608051612b74610d4e5f395f8181610c5a0152611a520152612b745ff3fe6080604052600436106101e6575f3560e01c806370a0823111610101578063ad5c464811610094578063d2c7219111610063578063d2c72191146106eb578063dd62ed3e14610713578063e208a9391461074f578063f2fde38b14610779576101ed565b8063ad5c464814610647578063b6e8521614610671578063c2be2c9214610699578063d16f8de9146106c1576101ed565b80638da5cb5b116100d05780638da5cb5b1461057b57806395d89b41146105a5578063a457c2d7146105cf578063a9059cbb1461060b576101ed565b806370a08231146104e9578063715018a6146105255780637a65a3b81461053b5780638a8c523c14610565576101ed565b806327c8f8351161017957806349bd5a5e1161014857806349bd5a5e1461042f5780634ada218b146104595780634fbee19314610483578063587f5ed7146104bf576101ed565b806327c8f83514610377578063313ce567146103a157806339509351146103cb5780633aa646fe14610407576101ed565b806318160ddd116101b557806318160ddd146102ab578063186dbffb146102d55780631aae9b4f146102ff57806323b872dd1461033b576101ed565b806306fdde03146101f1578063095ea7b31461021b57806312ae15c6146102575780631694505e14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b506102056107a1565b6040516102129190611ca7565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190611d65565b610831565b60405161024e9190611dbd565b60405180910390f35b348015610262575f80fd5b5061026b610853565b6040516102789190611de5565b60405180910390f35b34801561028c575f80fd5b5061029561085f565b6040516102a29190611e59565b60405180910390f35b3480156102b6575f80fd5b506102bf610884565b6040516102cc9190611de5565b60405180910390f35b3480156102e0575f80fd5b506102e961088d565b6040516102f69190611de5565b60405180910390f35b34801561030a575f80fd5b5061032560048036038101906103209190611e72565b610893565b6040516103329190611dbd565b60405180910390f35b348015610346575f80fd5b50610361600480360381019061035c9190611e9d565b6108b0565b60405161036e9190611dbd565b60405180910390f35b348015610382575f80fd5b5061038b610933565b6040516103989190611efc565b60405180910390f35b3480156103ac575f80fd5b506103b5610939565b6040516103c29190611f30565b60405180910390f35b3480156103d6575f80fd5b506103f160048036038101906103ec9190611d65565b610941565b6040516103fe9190611dbd565b60405180910390f35b348015610412575f80fd5b5061042d60048036038101906104289190611f49565b610977565b005b34801561043a575f80fd5b50610443610a04565b6040516104509190611efc565b60405180910390f35b348015610464575f80fd5b5061046d610a29565b60405161047a9190611dbd565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a49190611e72565b610a3c565b6040516104b69190611dbd565b60405180910390f35b3480156104ca575f80fd5b506104d3610a59565b6040516104e09190611de5565b60405180910390f35b3480156104f4575f80fd5b5061050f600480360381019061050a9190611e72565b610a5f565b60405161051c9190611de5565b60405180910390f35b348015610530575f80fd5b50610539610aa4565b005b348015610546575f80fd5b5061054f610ab7565b60405161055c9190611de5565b60405180910390f35b348015610570575f80fd5b50610579610abd565b005b348015610586575f80fd5b5061058f610b0e565b60405161059c9190611efc565b60405180910390f35b3480156105b0575f80fd5b506105b9610b36565b6040516105c69190611ca7565b60405180910390f35b3480156105da575f80fd5b506105f560048036038101906105f09190611d65565b610bc6565b6040516106029190611dbd565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c9190611d65565b610c3b565b60405161063e9190611dbd565b60405180910390f35b348015610652575f80fd5b5061065b610c58565b6040516106689190611efc565b60405180910390f35b34801561067c575f80fd5b50610697600480360381019061069291906120de565b610c7c565b005b3480156106a4575f80fd5b506106bf60048036038101906106ba9190611f49565b610d77565b005b3480156106cc575f80fd5b506106d5610dcd565b6040516106e29190611efc565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c91906120de565b610de5565b005b34801561071e575f80fd5b5061073960048036038101906107349190612138565b610f50565b6040516107469190611de5565b60405180910390f35b34801561075a575f80fd5b50610763610fd2565b6040516107709190611de5565b60405180910390f35b348015610784575f80fd5b5061079f600480360381019061079a9190611e72565b610fd8565b005b6060600380546107b0906121a3565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc906121a3565b80156108275780601f106107fe57610100808354040283529160200191610827565b820191905f5260205f20905b81548152906001019060200180831161080a57829003601f168201915b5050505050905090565b5f8061083b61105a565b9050610848818585611061565b600191505092915050565b67016345785d8a000081565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b600b5481565b600d602052805f5260405f205f915054906101000a900460ff1681565b5f6108bc848484611224565b5f6108ce856108c961105a565b610f50565b905082811015610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90612243565b60405180910390fd5b6109278561091f61105a565b858403611061565b60019150509392505050565b61dead81565b5f6012905090565b5f8061094b61105a565b905061096c81858561095d8589610f50565b610967919061228e565b611061565b600191505092915050565b61097f6115f3565b60648111156109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba9061230b565b60405180910390fd5b80600a819055507feabd3b3b7a8ca5058b4778ca7daf516ebc6d5da7b6259714b32fc49ecdb110b1816040516109f99190611de5565b60405180910390a150565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860149054906101000a900460ff1681565b600c602052805f5260405f205f915054906101000a900460ff1681565b600e5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aac6115f3565b610ab55f611671565b565b600a5481565b610ac56115f3565b6001600860146101000a81548160ff0219169083151502179055507f1d97b7cdf6b6f3405cbe398b69512e5419a0ce78232b6e9c6ffbf1466774bd8d60405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b45906121a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b71906121a3565b8015610bbc5780601f10610b9357610100808354040283529160200191610bbc565b820191905f5260205f20905b815481529060010190602001808311610b9f57829003601f168201915b5050505050905090565b5f80610bd061105a565b90505f610bdd8286610f50565b905083811015610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1990612399565b60405180910390fd5b610c2f8286868403611061565b60019250505092915050565b5f610c4e610c4761105a565b8484611224565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610c846115f3565b5f5b8251811015610d725781600c5f858481518110610ca657610ca56123b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550828181518110610d1057610d0f6123b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df783604051610d5d9190611dbd565b60405180910390a28080600101915050610c86565b505050565b610d7f6115f3565b6064811115610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba9061230b565b60405180910390fd5b80600b8190555050565b73d8da6bf26964af9d7eed9e03e53415d37aa9604581565b610ded6115f3565b5f5b8251811015610f4b5760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610e4357610e426123b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160315610f3e5781600d5f858481518110610e7e57610e7d6123b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550828181518110610ee857610ee76123b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fd31c700151312b600f1f92a612fd99493ee4bfede71bb43f9eef36556c56cf9783604051610f359190611dbd565b60405180910390a25b8080600101915050610def565b505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b610fe06115f3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361104e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104590612454565b60405180910390fd5b61105781611671565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c6906124e2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361113d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113490612570565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112179190611de5565b60405180910390a3505050565b600860149054906101000a900460ff16806112855750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806112d65750600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c906125d8565b60405180910390fd5b600f5f9054906101000a900460ff1615611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135b90612666565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806113ff5750600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806114515750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561146657611461838383611734565b6115ee565b5f6064600954836114779190612684565b61148191906126f2565b90505f81836114909190612722565b90505f6064600b54600a546114a5919061228e565b6064600b54866114b59190612684565b6114bf9190612684565b6114c991906126f2565b6114d391906126f2565b90505f6064600b54600a546114e8919061228e565b6064600a54876114f89190612684565b6115029190612684565b61150c91906126f2565b61151691906126f2565b9050611523873083611734565b6115428773d8da6bf26964af9d7eed9e03e53415d37aa9604584611734565b61154d878785611734565b80600e5f82825461155e919061228e565b9250508190555067016345785d8a0000600e54106115b2576001600f5f6101000a81548160ff0219169083151502179055506115986119a0565b5f600f5f6101000a81548160ff0219169083151502179055505b7f3a8252748ffa3c9535c6438799ce1f576f36a016ab530f354e1432db42713c79826040516115e19190611de5565b60405180910390a1505050505b505050565b6115fb61105a565b73ffffffffffffffffffffffffffffffffffffffff16611619610b0e565b73ffffffffffffffffffffffffffffffffffffffff161461166f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116669061279f565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117999061282d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611807906128bb565b60405180910390fd5b61181b838383611bd4565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561189e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189590612949565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119879190611de5565b60405180910390a361199a848484611bd9565b50505050565b6119a8611bde565b5f600e5490505f600e819055505f600267ffffffffffffffff8111156119d1576119d0611f78565b5b6040519080825280602002602001820160405280156119ff5781602001602082028036833780820191505090505b50905030815f81518110611a1657611a156123b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611a8557611a846123b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611aeb3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611061565b5f47905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401611b51959493929190612a57565b5f604051808303815f87803b158015611b68575f80fd5b505af1158015611b7a573d5f803e3d5ffd5b505050505f8147611b8b9190612722565b90507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868482604051611bbe929190612aaf565b60405180910390a150505050611bd2611c2d565b565b505050565b505050565b600260065403611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a90612b20565b60405180910390fd5b6002600681905550565b6001600681905550565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611c7982611c37565b611c838185611c41565b9350611c93818560208601611c51565b611c9c81611c5f565b840191505092915050565b5f6020820190508181035f830152611cbf8184611c6f565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d0182611cd8565b9050919050565b611d1181611cf7565b8114611d1b575f80fd5b50565b5f81359050611d2c81611d08565b92915050565b5f819050919050565b611d4481611d32565b8114611d4e575f80fd5b50565b5f81359050611d5f81611d3b565b92915050565b5f8060408385031215611d7b57611d7a611cd0565b5b5f611d8885828601611d1e565b9250506020611d9985828601611d51565b9150509250929050565b5f8115159050919050565b611db781611da3565b82525050565b5f602082019050611dd05f830184611dae565b92915050565b611ddf81611d32565b82525050565b5f602082019050611df85f830184611dd6565b92915050565b5f819050919050565b5f611e21611e1c611e1784611cd8565b611dfe565b611cd8565b9050919050565b5f611e3282611e07565b9050919050565b5f611e4382611e28565b9050919050565b611e5381611e39565b82525050565b5f602082019050611e6c5f830184611e4a565b92915050565b5f60208284031215611e8757611e86611cd0565b5b5f611e9484828501611d1e565b91505092915050565b5f805f60608486031215611eb457611eb3611cd0565b5b5f611ec186828701611d1e565b9350506020611ed286828701611d1e565b9250506040611ee386828701611d51565b9150509250925092565b611ef681611cf7565b82525050565b5f602082019050611f0f5f830184611eed565b92915050565b5f60ff82169050919050565b611f2a81611f15565b82525050565b5f602082019050611f435f830184611f21565b92915050565b5f60208284031215611f5e57611f5d611cd0565b5b5f611f6b84828501611d51565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611fae82611c5f565b810181811067ffffffffffffffff82111715611fcd57611fcc611f78565b5b80604052505050565b5f611fdf611cc7565b9050611feb8282611fa5565b919050565b5f67ffffffffffffffff82111561200a57612009611f78565b5b602082029050602081019050919050565b5f80fd5b5f61203161202c84611ff0565b611fd6565b905080838252602082019050602084028301858111156120545761205361201b565b5b835b8181101561207d57806120698882611d1e565b845260208401935050602081019050612056565b5050509392505050565b5f82601f83011261209b5761209a611f74565b5b81356120ab84826020860161201f565b91505092915050565b6120bd81611da3565b81146120c7575f80fd5b50565b5f813590506120d8816120b4565b92915050565b5f80604083850312156120f4576120f3611cd0565b5b5f83013567ffffffffffffffff81111561211157612110611cd4565b5b61211d85828601612087565b925050602061212e858286016120ca565b9150509250929050565b5f806040838503121561214e5761214d611cd0565b5b5f61215b85828601611d1e565b925050602061216c85828601611d1e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806121ba57607f821691505b6020821081036121cd576121cc612176565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61222d602883611c41565b9150612238826121d3565b604082019050919050565b5f6020820190508181035f83015261225a81612221565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61229882611d32565b91506122a383611d32565b92508282019050808211156122bb576122ba612261565b5b92915050565b7f5377617020706f7274696f6e2063616e6e6f74206578636565642031303000005f82015250565b5f6122f5601e83611c41565b9150612300826122c1565b602082019050919050565b5f6020820190508181035f830152612322816122e9565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612383602583611c41565b915061238e82612329565b604082019050919050565b5f6020820190508181035f8301526123b081612377565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61243e602683611c41565b9150612449826123e4565b604082019050919050565b5f6020820190508181035f83015261246b81612432565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6124cc602483611c41565b91506124d782612472565b604082019050919050565b5f6020820190508181035f8301526124f9816124c0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61255a602283611c41565b915061256582612500565b604082019050919050565b5f6020820190508181035f8301526125878161254e565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f6125c2601a83611c41565b91506125cd8261258e565b602082019050919050565b5f6020820190508181035f8301526125ef816125b6565b9050919050565b7f5472616e73666572206661696c65642064756520746f20696e7465726e616c205f8201527f7377617020696e2070726f677265737300000000000000000000000000000000602082015250565b5f612650603083611c41565b915061265b826125f6565b604082019050919050565b5f6020820190508181035f83015261267d81612644565b9050919050565b5f61268e82611d32565b915061269983611d32565b92508282026126a781611d32565b915082820484148315176126be576126bd612261565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126fc82611d32565b915061270783611d32565b925082612717576127166126c5565b5b828204905092915050565b5f61272c82611d32565b915061273783611d32565b925082820390508181111561274f5761274e612261565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612789602083611c41565b915061279482612755565b602082019050919050565b5f6020820190508181035f8301526127b68161277d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612817602583611c41565b9150612822826127bd565b604082019050919050565b5f6020820190508181035f8301526128448161280b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6128a5602383611c41565b91506128b08261284b565b604082019050919050565b5f6020820190508181035f8301526128d281612899565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612933602683611c41565b915061293e826128d9565b604082019050919050565b5f6020820190508181035f83015261296081612927565b9050919050565b5f819050919050565b5f61298a61298561298084612967565b611dfe565b611d32565b9050919050565b61299a81612970565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129d281611cf7565b82525050565b5f6129e383836129c9565b60208301905092915050565b5f602082019050919050565b5f612a05826129a0565b612a0f81856129aa565b9350612a1a836129ba565b805f5b83811015612a4a578151612a3188826129d8565b9750612a3c836129ef565b925050600181019050612a1d565b5085935050505092915050565b5f60a082019050612a6a5f830188611dd6565b612a776020830187612991565b8181036040830152612a8981866129fb565b9050612a986060830185611eed565b612aa56080830184611dd6565b9695505050505050565b5f604082019050612ac25f830185611dd6565b612acf6020830184611dd6565b9392505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612b0a601f83611c41565b9150612b1582612ad6565b602082019050919050565b5f6020820190508181035f830152612b3781612afe565b905091905056fea26469706673582212203f4fea340c511b31ea8ba666e0d464dd62d3d832e941f8bcb0baf9ddb501ba9d64736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106101e6575f3560e01c806370a0823111610101578063ad5c464811610094578063d2c7219111610063578063d2c72191146106eb578063dd62ed3e14610713578063e208a9391461074f578063f2fde38b14610779576101ed565b8063ad5c464814610647578063b6e8521614610671578063c2be2c9214610699578063d16f8de9146106c1576101ed565b80638da5cb5b116100d05780638da5cb5b1461057b57806395d89b41146105a5578063a457c2d7146105cf578063a9059cbb1461060b576101ed565b806370a08231146104e9578063715018a6146105255780637a65a3b81461053b5780638a8c523c14610565576101ed565b806327c8f8351161017957806349bd5a5e1161014857806349bd5a5e1461042f5780634ada218b146104595780634fbee19314610483578063587f5ed7146104bf576101ed565b806327c8f83514610377578063313ce567146103a157806339509351146103cb5780633aa646fe14610407576101ed565b806318160ddd116101b557806318160ddd146102ab578063186dbffb146102d55780631aae9b4f146102ff57806323b872dd1461033b576101ed565b806306fdde03146101f1578063095ea7b31461021b57806312ae15c6146102575780631694505e14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b506102056107a1565b6040516102129190611ca7565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190611d65565b610831565b60405161024e9190611dbd565b60405180910390f35b348015610262575f80fd5b5061026b610853565b6040516102789190611de5565b60405180910390f35b34801561028c575f80fd5b5061029561085f565b6040516102a29190611e59565b60405180910390f35b3480156102b6575f80fd5b506102bf610884565b6040516102cc9190611de5565b60405180910390f35b3480156102e0575f80fd5b506102e961088d565b6040516102f69190611de5565b60405180910390f35b34801561030a575f80fd5b5061032560048036038101906103209190611e72565b610893565b6040516103329190611dbd565b60405180910390f35b348015610346575f80fd5b50610361600480360381019061035c9190611e9d565b6108b0565b60405161036e9190611dbd565b60405180910390f35b348015610382575f80fd5b5061038b610933565b6040516103989190611efc565b60405180910390f35b3480156103ac575f80fd5b506103b5610939565b6040516103c29190611f30565b60405180910390f35b3480156103d6575f80fd5b506103f160048036038101906103ec9190611d65565b610941565b6040516103fe9190611dbd565b60405180910390f35b348015610412575f80fd5b5061042d60048036038101906104289190611f49565b610977565b005b34801561043a575f80fd5b50610443610a04565b6040516104509190611efc565b60405180910390f35b348015610464575f80fd5b5061046d610a29565b60405161047a9190611dbd565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a49190611e72565b610a3c565b6040516104b69190611dbd565b60405180910390f35b3480156104ca575f80fd5b506104d3610a59565b6040516104e09190611de5565b60405180910390f35b3480156104f4575f80fd5b5061050f600480360381019061050a9190611e72565b610a5f565b60405161051c9190611de5565b60405180910390f35b348015610530575f80fd5b50610539610aa4565b005b348015610546575f80fd5b5061054f610ab7565b60405161055c9190611de5565b60405180910390f35b348015610570575f80fd5b50610579610abd565b005b348015610586575f80fd5b5061058f610b0e565b60405161059c9190611efc565b60405180910390f35b3480156105b0575f80fd5b506105b9610b36565b6040516105c69190611ca7565b60405180910390f35b3480156105da575f80fd5b506105f560048036038101906105f09190611d65565b610bc6565b6040516106029190611dbd565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c9190611d65565b610c3b565b60405161063e9190611dbd565b60405180910390f35b348015610652575f80fd5b5061065b610c58565b6040516106689190611efc565b60405180910390f35b34801561067c575f80fd5b50610697600480360381019061069291906120de565b610c7c565b005b3480156106a4575f80fd5b506106bf60048036038101906106ba9190611f49565b610d77565b005b3480156106cc575f80fd5b506106d5610dcd565b6040516106e29190611efc565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c91906120de565b610de5565b005b34801561071e575f80fd5b5061073960048036038101906107349190612138565b610f50565b6040516107469190611de5565b60405180910390f35b34801561075a575f80fd5b50610763610fd2565b6040516107709190611de5565b60405180910390f35b348015610784575f80fd5b5061079f600480360381019061079a9190611e72565b610fd8565b005b6060600380546107b0906121a3565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc906121a3565b80156108275780601f106107fe57610100808354040283529160200191610827565b820191905f5260205f20905b81548152906001019060200180831161080a57829003601f168201915b5050505050905090565b5f8061083b61105a565b9050610848818585611061565b600191505092915050565b67016345785d8a000081565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b600b5481565b600d602052805f5260405f205f915054906101000a900460ff1681565b5f6108bc848484611224565b5f6108ce856108c961105a565b610f50565b905082811015610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90612243565b60405180910390fd5b6109278561091f61105a565b858403611061565b60019150509392505050565b61dead81565b5f6012905090565b5f8061094b61105a565b905061096c81858561095d8589610f50565b610967919061228e565b611061565b600191505092915050565b61097f6115f3565b60648111156109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba9061230b565b60405180910390fd5b80600a819055507feabd3b3b7a8ca5058b4778ca7daf516ebc6d5da7b6259714b32fc49ecdb110b1816040516109f99190611de5565b60405180910390a150565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860149054906101000a900460ff1681565b600c602052805f5260405f205f915054906101000a900460ff1681565b600e5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aac6115f3565b610ab55f611671565b565b600a5481565b610ac56115f3565b6001600860146101000a81548160ff0219169083151502179055507f1d97b7cdf6b6f3405cbe398b69512e5419a0ce78232b6e9c6ffbf1466774bd8d60405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b45906121a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b71906121a3565b8015610bbc5780601f10610b9357610100808354040283529160200191610bbc565b820191905f5260205f20905b815481529060010190602001808311610b9f57829003601f168201915b5050505050905090565b5f80610bd061105a565b90505f610bdd8286610f50565b905083811015610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1990612399565b60405180910390fd5b610c2f8286868403611061565b60019250505092915050565b5f610c4e610c4761105a565b8484611224565b6001905092915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b610c846115f3565b5f5b8251811015610d725781600c5f858481518110610ca657610ca56123b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550828181518110610d1057610d0f6123b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df783604051610d5d9190611dbd565b60405180910390a28080600101915050610c86565b505050565b610d7f6115f3565b6064811115610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba9061230b565b60405180910390fd5b80600b8190555050565b73d8da6bf26964af9d7eed9e03e53415d37aa9604581565b610ded6115f3565b5f5b8251811015610f4b5760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610e4357610e426123b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160315610f3e5781600d5f858481518110610e7e57610e7d6123b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550828181518110610ee857610ee76123b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fd31c700151312b600f1f92a612fd99493ee4bfede71bb43f9eef36556c56cf9783604051610f359190611dbd565b60405180910390a25b8080600101915050610def565b505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b610fe06115f3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361104e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104590612454565b60405180910390fd5b61105781611671565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c6906124e2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361113d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113490612570565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112179190611de5565b60405180910390a3505050565b600860149054906101000a900460ff16806112855750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806112d65750600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c906125d8565b60405180910390fd5b600f5f9054906101000a900460ff1615611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135b90612666565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806113ff5750600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806114515750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561146657611461838383611734565b6115ee565b5f6064600954836114779190612684565b61148191906126f2565b90505f81836114909190612722565b90505f6064600b54600a546114a5919061228e565b6064600b54866114b59190612684565b6114bf9190612684565b6114c991906126f2565b6114d391906126f2565b90505f6064600b54600a546114e8919061228e565b6064600a54876114f89190612684565b6115029190612684565b61150c91906126f2565b61151691906126f2565b9050611523873083611734565b6115428773d8da6bf26964af9d7eed9e03e53415d37aa9604584611734565b61154d878785611734565b80600e5f82825461155e919061228e565b9250508190555067016345785d8a0000600e54106115b2576001600f5f6101000a81548160ff0219169083151502179055506115986119a0565b5f600f5f6101000a81548160ff0219169083151502179055505b7f3a8252748ffa3c9535c6438799ce1f576f36a016ab530f354e1432db42713c79826040516115e19190611de5565b60405180910390a1505050505b505050565b6115fb61105a565b73ffffffffffffffffffffffffffffffffffffffff16611619610b0e565b73ffffffffffffffffffffffffffffffffffffffff161461166f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116669061279f565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117999061282d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611807906128bb565b60405180910390fd5b61181b838383611bd4565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561189e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189590612949565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119879190611de5565b60405180910390a361199a848484611bd9565b50505050565b6119a8611bde565b5f600e5490505f600e819055505f600267ffffffffffffffff8111156119d1576119d0611f78565b5b6040519080825280602002602001820160405280156119ff5781602001602082028036833780820191505090505b50905030815f81518110611a1657611a156123b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611a8557611a846123b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611aeb3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611061565b5f47905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401611b51959493929190612a57565b5f604051808303815f87803b158015611b68575f80fd5b505af1158015611b7a573d5f803e3d5ffd5b505050505f8147611b8b9190612722565b90507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868482604051611bbe929190612aaf565b60405180910390a150505050611bd2611c2d565b565b505050565b505050565b600260065403611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a90612b20565b60405180910390fd5b6002600681905550565b6001600681905550565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611c7982611c37565b611c838185611c41565b9350611c93818560208601611c51565b611c9c81611c5f565b840191505092915050565b5f6020820190508181035f830152611cbf8184611c6f565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d0182611cd8565b9050919050565b611d1181611cf7565b8114611d1b575f80fd5b50565b5f81359050611d2c81611d08565b92915050565b5f819050919050565b611d4481611d32565b8114611d4e575f80fd5b50565b5f81359050611d5f81611d3b565b92915050565b5f8060408385031215611d7b57611d7a611cd0565b5b5f611d8885828601611d1e565b9250506020611d9985828601611d51565b9150509250929050565b5f8115159050919050565b611db781611da3565b82525050565b5f602082019050611dd05f830184611dae565b92915050565b611ddf81611d32565b82525050565b5f602082019050611df85f830184611dd6565b92915050565b5f819050919050565b5f611e21611e1c611e1784611cd8565b611dfe565b611cd8565b9050919050565b5f611e3282611e07565b9050919050565b5f611e4382611e28565b9050919050565b611e5381611e39565b82525050565b5f602082019050611e6c5f830184611e4a565b92915050565b5f60208284031215611e8757611e86611cd0565b5b5f611e9484828501611d1e565b91505092915050565b5f805f60608486031215611eb457611eb3611cd0565b5b5f611ec186828701611d1e565b9350506020611ed286828701611d1e565b9250506040611ee386828701611d51565b9150509250925092565b611ef681611cf7565b82525050565b5f602082019050611f0f5f830184611eed565b92915050565b5f60ff82169050919050565b611f2a81611f15565b82525050565b5f602082019050611f435f830184611f21565b92915050565b5f60208284031215611f5e57611f5d611cd0565b5b5f611f6b84828501611d51565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611fae82611c5f565b810181811067ffffffffffffffff82111715611fcd57611fcc611f78565b5b80604052505050565b5f611fdf611cc7565b9050611feb8282611fa5565b919050565b5f67ffffffffffffffff82111561200a57612009611f78565b5b602082029050602081019050919050565b5f80fd5b5f61203161202c84611ff0565b611fd6565b905080838252602082019050602084028301858111156120545761205361201b565b5b835b8181101561207d57806120698882611d1e565b845260208401935050602081019050612056565b5050509392505050565b5f82601f83011261209b5761209a611f74565b5b81356120ab84826020860161201f565b91505092915050565b6120bd81611da3565b81146120c7575f80fd5b50565b5f813590506120d8816120b4565b92915050565b5f80604083850312156120f4576120f3611cd0565b5b5f83013567ffffffffffffffff81111561211157612110611cd4565b5b61211d85828601612087565b925050602061212e858286016120ca565b9150509250929050565b5f806040838503121561214e5761214d611cd0565b5b5f61215b85828601611d1e565b925050602061216c85828601611d1e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806121ba57607f821691505b6020821081036121cd576121cc612176565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61222d602883611c41565b9150612238826121d3565b604082019050919050565b5f6020820190508181035f83015261225a81612221565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61229882611d32565b91506122a383611d32565b92508282019050808211156122bb576122ba612261565b5b92915050565b7f5377617020706f7274696f6e2063616e6e6f74206578636565642031303000005f82015250565b5f6122f5601e83611c41565b9150612300826122c1565b602082019050919050565b5f6020820190508181035f830152612322816122e9565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612383602583611c41565b915061238e82612329565b604082019050919050565b5f6020820190508181035f8301526123b081612377565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61243e602683611c41565b9150612449826123e4565b604082019050919050565b5f6020820190508181035f83015261246b81612432565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6124cc602483611c41565b91506124d782612472565b604082019050919050565b5f6020820190508181035f8301526124f9816124c0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61255a602283611c41565b915061256582612500565b604082019050919050565b5f6020820190508181035f8301526125878161254e565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f6125c2601a83611c41565b91506125cd8261258e565b602082019050919050565b5f6020820190508181035f8301526125ef816125b6565b9050919050565b7f5472616e73666572206661696c65642064756520746f20696e7465726e616c205f8201527f7377617020696e2070726f677265737300000000000000000000000000000000602082015250565b5f612650603083611c41565b915061265b826125f6565b604082019050919050565b5f6020820190508181035f83015261267d81612644565b9050919050565b5f61268e82611d32565b915061269983611d32565b92508282026126a781611d32565b915082820484148315176126be576126bd612261565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126fc82611d32565b915061270783611d32565b925082612717576127166126c5565b5b828204905092915050565b5f61272c82611d32565b915061273783611d32565b925082820390508181111561274f5761274e612261565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612789602083611c41565b915061279482612755565b602082019050919050565b5f6020820190508181035f8301526127b68161277d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612817602583611c41565b9150612822826127bd565b604082019050919050565b5f6020820190508181035f8301526128448161280b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6128a5602383611c41565b91506128b08261284b565b604082019050919050565b5f6020820190508181035f8301526128d281612899565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612933602683611c41565b915061293e826128d9565b604082019050919050565b5f6020820190508181035f83015261296081612927565b9050919050565b5f819050919050565b5f61298a61298561298084612967565b611dfe565b611d32565b9050919050565b61299a81612970565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129d281611cf7565b82525050565b5f6129e383836129c9565b60208301905092915050565b5f602082019050919050565b5f612a05826129a0565b612a0f81856129aa565b9350612a1a836129ba565b805f5b83811015612a4a578151612a3188826129d8565b9750612a3c836129ef565b925050600181019050612a1d565b5085935050505092915050565b5f60a082019050612a6a5f830188611dd6565b612a776020830187612991565b8181036040830152612a8981866129fb565b9050612a986060830185611eed565b612aa56080830184611dd6565b9695505050505050565b5f604082019050612ac25f830185611dd6565b612acf6020830184611dd6565b9392505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612b0a601f83611c41565b9150612b1582612ad6565b602082019050919050565b5f6020820190508181035f830152612b3781612afe565b905091905056fea26469706673582212203f4fea340c511b31ea8ba666e0d464dd62d3d832e941f8bcb0baf9ddb501ba9d64736f6c634300081a0033
Deployed Bytecode Sourcemap
14890:5740:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1918:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2850:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15601:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14986:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2239:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15192:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15289:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16855:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15349:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2138:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3328:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20049:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15034:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15071:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15232:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15564:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2355:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7300:103;;;;;;;;;;;;;:::i;:::-;;15155:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20477:113;;;;;;;;;;;;;:::i;:::-;;7065:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2026:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3574:434;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16670:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15436:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19406:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20282:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15472:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19692:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2691:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15112:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7411:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1918:100;1972:13;2005:5;1998:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1918:100;:::o;2850:201::-;2933:4;2950:13;2966:12;:10;:12::i;:::-;2950:28;;2989:32;2998:5;3005:7;3014:6;2989:8;:32::i;:::-;3039:4;3032:11;;;2850:201;;;;:::o;15601:55::-;15647:9;15601:55;:::o;14986:41::-;;;;;;;;;;;;;:::o;2239:108::-;2300:7;2327:12;;2320:19;;2239:108;:::o;15192:33::-;;;;:::o;15289:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;16855:454::-;16961:4;16978:38;16990:6;16998:9;17009:6;16978:11;:38::i;:::-;17027:24;17054:31;17064:6;17072:12;:10;:12::i;:::-;17054:9;:31::i;:::-;17027:58;;17124:6;17104:16;:26;;17096:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17211:57;17220:6;17228:12;:10;:12::i;:::-;17261:6;17242:16;:25;17211:8;:57::i;:::-;17297:4;17290:11;;;16855:454;;;;;:::o;15349:80::-;15387:42;15349:80;:::o;2138:93::-;2196:5;2221:2;2214:9;;2138:93;:::o;3328:238::-;3416:4;3433:13;3449:12;:10;:12::i;:::-;3433:28;;3472:64;3481:5;3488:7;3525:10;3497:25;3507:5;3514:7;3497:9;:25::i;:::-;:38;;;;:::i;:::-;3472:8;:64::i;:::-;3554:4;3547:11;;;3328:238;;;;:::o;20049:225::-;7024:13;:11;:13::i;:::-;20147:3:::1;20131:12;:19;;20123:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20210:12;20196:11;:26;;;;20238:28;20253:12;20238:28;;;;;;:::i;:::-;;;;;;;;20049:225:::0;:::o;15034:28::-;;;;;;;;;;;;;:::o;15071:34::-;;;;;;;;;;;;;:::o;15232:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;15564:30::-;;;;:::o;2355:127::-;2429:7;2456:9;:18;2466:7;2456:18;;;;;;;;;;;;;;;;2449:25;;2355:127;;;:::o;7300:103::-;7024:13;:11;:13::i;:::-;7365:30:::1;7392:1;7365:18;:30::i;:::-;7300:103::o:0;15155:30::-;;;;:::o;20477:113::-;7024:13;:11;:13::i;:::-;20547:4:::1;20530:14;;:21;;;;;;;;;;;;;;;;;;20567:15;;;;;;;;;;20477:113::o:0;7065:87::-;7111:7;7138:6;;;;;;;;;;;7131:13;;7065:87;:::o;2026:104::-;2082:13;2115:7;2108:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:104;:::o;3574:434::-;3667:4;3684:13;3700:12;:10;:12::i;:::-;3684:28;;3723:24;3750:25;3760:5;3767:7;3750:9;:25::i;:::-;3723:52;;3814:15;3794:16;:35;;3786:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3907:60;3916:5;3923:7;3951:15;3932:16;:34;3907:8;:60::i;:::-;3996:4;3989:11;;;;3574:434;;;;:::o;16670:177::-;16756:4;16773:44;16785:12;:10;:12::i;:::-;16799:9;16810:6;16773:11;:44::i;:::-;16835:4;16828:11;;16670:177;;;;:::o;15436:29::-;;;:::o;19406:278::-;7024:13;:11;:13::i;:::-;19509:9:::1;19504:173;19528:8;:15;19524:1;:19;19504:173;;;19599:8;19565:18;:31;19584:8;19593:1;19584:11;;;;;;;;:::i;:::-;;;;;;;;19565:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;19643:8;19652:1;19643:11;;;;;;;;:::i;:::-;;;;;;;;19627:38;;;19656:8;19627:38;;;;;;:::i;:::-;;;;;;;;19545:3;;;;;;;19504:173;;;;19406:278:::0;;:::o;20282:187::-;7024:13;:11;:13::i;:::-;20383:3:::1;20367:12;:19;;20359:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20449:12;20432:14;:29;;;;20282:187:::0;:::o;15472:83::-;15513:42;15472:83;:::o;19692:347::-;7024:13;:11;:13::i;:::-;19806:9:::1;19801:231;19825:8;:15;19821:1;:19;19801:231;;;19880:13;;;;;;;;;;;19865:28;;:8;19874:1;19865:11;;;;;;;;:::i;:::-;;;;;;;;:28;;::::0;19862:41;19895:8:::1;19862:41;19949:10;19918:15;:28;19934:8;19943:1;19934:11;;;;;;;;:::i;:::-;;;;;;;;19918:28;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19996:8;20005:1;19996:11;;;;;;;;:::i;:::-;;;;;;;;19979:41;;;20009:10;19979:41;;;;;;:::i;:::-;;;;;;;;19801:231;19842:3;;;;;;;19801:231;;;;19692:347:::0;;:::o;2691:151::-;2780:7;2807:11;:18;2819:5;2807:18;;;;;;;;;;;;;;;:27;2826:7;2807:27;;;;;;;;;;;;;;;;2800:34;;2691:151;;;;:::o;15112:36::-;;;;:::o;7411:201::-;7024:13;:11;:13::i;:::-;7520:1:::1;7500:22;;:8;:22;;::::0;7492:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7576:28;7595:8;7576:18;:28::i;:::-;7411:201:::0;:::o;182:98::-;235:7;262:10;255:17;;182:98;:::o;5689:344::-;5808:1;5791:19;;:5;:19;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5889:1;5870:21;;:7;:21;;;5862:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5971:6;5941:11;:18;5953:5;5941:18;;;;;;;;;;;;;;;:27;5960:7;5941:27;;;;;;;;;;;;;;;:36;;;;6009:7;5993:32;;6002:5;5993:32;;;6018:6;5993:32;;;;;;:::i;:::-;;;;;;;;5689:344;;;:::o;17317:1347::-;17451:14;;;;;;;;;;;:44;;;;17469:18;:26;17488:6;17469:26;;;;;;;;;;;;;;;;;;;;;;;;;17451:44;:77;;;;17499:18;:29;17518:9;17499:29;;;;;;;;;;;;;;;;;;;;;;;;;17451:77;17443:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;17579:8;;;;;;;;;;;17578:9;17570:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17657:18;:26;17676:6;17657:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;17687:18;:29;17706:9;17687:29;;;;;;;;;;;;;;;;;;;;;;;;;17657:59;:87;;;;17721:15;:23;17737:6;17721:23;;;;;;;;;;;;;;;;;;;;;;;;;17720:24;17657:87;17653:1004;;;17761:36;17771:6;17779:9;17790:6;17761:9;:36::i;:::-;17653:1004;;;17830:17;17881:3;17860:17;;17851:6;:26;;;;:::i;:::-;17850:34;;;;:::i;:::-;17830:54;;17899:22;17933:9;17924:6;:18;;;;:::i;:::-;17899:43;;17973:21;18068:3;18050:14;;18036:11;;:28;;;;:::i;:::-;18027:3;18010:14;;17998:9;:26;;;;:::i;:::-;:32;;;;:::i;:::-;17997:68;;;;:::i;:::-;:74;;;;:::i;:::-;17973:98;;18087:18;18176:3;18158:14;;18144:11;;:28;;;;:::i;:::-;18135:3;18121:11;;18109:9;:23;;;;:::i;:::-;:29;;;;:::i;:::-;18108:65;;;;:::i;:::-;:71;;;;:::i;:::-;18087:92;;18194:44;18204:6;18220:4;18227:10;18194:9;:44::i;:::-;18253:48;18263:6;15513:42;18287:13;18253:9;:48::i;:::-;18316:44;18326:6;18334:9;18345:14;18316:9;:44::i;:::-;18396:10;18377:15;;:29;;;;;;;:::i;:::-;;;;;;;;15647:9;18427:15;;:38;18423:167;;18497:4;18486:8;;:15;;;;;;;;;;;;;;;;;;18520:19;:17;:19::i;:::-;18569:5;18558:8;;:16;;;;;;;;;;;;;;;;;;18423:167;18611:34;18631:13;18611:34;;;;;;:::i;:::-;;;;;;;;17815:842;;;;17653:1004;17317:1347;;;:::o;7160:132::-;7235:12;:10;:12::i;:::-;7224:23;;:7;:5;:7::i;:::-;:23;;;7216:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7160:132::o;7620:191::-;7694:16;7713:6;;;;;;;;;;;7694:25;;7739:8;7730:6;;:17;;;;;;;;;;;;;;;;;;7794:8;7763:40;;7784:8;7763:40;;;;;;;;;;;;7683:128;7620:191;:::o;4016:633::-;4129:1;4113:18;;:4;:18;;;4105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4206:1;4192:16;;:2;:16;;;4184:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4259:38;4280:4;4286:2;4290:6;4259:20;:38::i;:::-;4308:19;4330:9;:15;4340:4;4330:15;;;;;;;;;;;;;;;;4308:37;;4379:6;4364:11;:21;;4356:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4496:6;4482:11;:20;4464:9;:15;4474:4;4464:15;;;;;;;;;;;;;;;:38;;;;4534:6;4517:9;:13;4527:2;4517:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;4582:2;4567:26;;4576:4;4567:26;;;4586:6;4567:26;;;;;;:::i;:::-;;;;;;;;4604:37;4624:4;4630:2;4634:6;4604:19;:37::i;:::-;4094:555;4016:633;;;:::o;18672:726::-;8161:21;:19;:21::i;:::-;18733:19:::1;18755:15;;18733:37;;18799:1;18781:15;:19;;;;18813:21;18851:1;18837:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18813:40;;18882:4;18864;18869:1;18864:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18908:4;18898;18903:1;18898:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;18925:62;18942:4;18957:15;;;;;;;;;;;18975:11;18925:8;:62::i;:::-;19000:25;19028:21;19000:49;;19062:15;;;;;;;;;;;:66;;;19143:11;19169:1;19185:4;19212;19232:15;19062:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19271:19;19317:17;19293:21;:41;;;;:::i;:::-;19271:63;;19350:40;19365:11;19378;19350:40;;;;;;;:::i;:::-;;;;;;;;18722:676;;;;8205:20:::0;:18;:20::i;:::-;18672:726::o;6468:91::-;;;;:::o;6565:90::-;;;;:::o;8241:150::-;8023:1;8299:7;;:19;8291:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8023:1;8365:7;:18;;;;8241:150::o;8399:79::-;7979:1;8448:7;:22;;;;8399:79::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:60::-;3719:3;3740:5;3733:12;;3691:60;;;:::o;3757:142::-;3807:9;3840:53;3858:34;3867:24;3885:5;3867:24;:::i;:::-;3858:34;:::i;:::-;3840:53;:::i;:::-;3827:66;;3757:142;;;:::o;3905:126::-;3955:9;3988:37;4019:5;3988:37;:::i;:::-;3975:50;;3905:126;;;:::o;4037:153::-;4114:9;4147:37;4178:5;4147:37;:::i;:::-;4134:50;;4037:153;;;:::o;4196:185::-;4310:64;4368:5;4310:64;:::i;:::-;4305:3;4298:77;4196:185;;:::o;4387:276::-;4507:4;4545:2;4534:9;4530:18;4522:26;;4558:98;4653:1;4642:9;4638:17;4629:6;4558:98;:::i;:::-;4387:276;;;;:::o;4669:329::-;4728:6;4777:2;4765:9;4756:7;4752:23;4748:32;4745:119;;;4783:79;;:::i;:::-;4745:119;4903:1;4928:53;4973:7;4964:6;4953:9;4949:22;4928:53;:::i;:::-;4918:63;;4874:117;4669:329;;;;:::o;5004:619::-;5081:6;5089;5097;5146:2;5134:9;5125:7;5121:23;5117:32;5114:119;;;5152:79;;:::i;:::-;5114:119;5272:1;5297:53;5342:7;5333:6;5322:9;5318:22;5297:53;:::i;:::-;5287:63;;5243:117;5399:2;5425:53;5470:7;5461:6;5450:9;5446:22;5425:53;:::i;:::-;5415:63;;5370:118;5527:2;5553:53;5598:7;5589:6;5578:9;5574:22;5553:53;:::i;:::-;5543:63;;5498:118;5004:619;;;;;:::o;5629:118::-;5716:24;5734:5;5716:24;:::i;:::-;5711:3;5704:37;5629:118;;:::o;5753:222::-;5846:4;5884:2;5873:9;5869:18;5861:26;;5897:71;5965:1;5954:9;5950:17;5941:6;5897:71;:::i;:::-;5753:222;;;;:::o;5981:86::-;6016:7;6056:4;6049:5;6045:16;6034:27;;5981:86;;;:::o;6073:112::-;6156:22;6172:5;6156:22;:::i;:::-;6151:3;6144:35;6073:112;;:::o;6191:214::-;6280:4;6318:2;6307:9;6303:18;6295:26;;6331:67;6395:1;6384:9;6380:17;6371:6;6331:67;:::i;:::-;6191:214;;;;:::o;6411:329::-;6470:6;6519:2;6507:9;6498:7;6494:23;6490:32;6487:119;;;6525:79;;:::i;:::-;6487:119;6645:1;6670:53;6715:7;6706:6;6695:9;6691:22;6670:53;:::i;:::-;6660:63;;6616:117;6411:329;;;;:::o;6746:117::-;6855:1;6852;6845:12;6869:180;6917:77;6914:1;6907:88;7014:4;7011:1;7004:15;7038:4;7035:1;7028:15;7055:281;7138:27;7160:4;7138:27;:::i;:::-;7130:6;7126:40;7268:6;7256:10;7253:22;7232:18;7220:10;7217:34;7214:62;7211:88;;;7279:18;;:::i;:::-;7211:88;7319:10;7315:2;7308:22;7098:238;7055:281;;:::o;7342:129::-;7376:6;7403:20;;:::i;:::-;7393:30;;7432:33;7460:4;7452:6;7432:33;:::i;:::-;7342:129;;;:::o;7477:311::-;7554:4;7644:18;7636:6;7633:30;7630:56;;;7666:18;;:::i;:::-;7630:56;7716:4;7708:6;7704:17;7696:25;;7776:4;7770;7766:15;7758:23;;7477:311;;;:::o;7794:117::-;7903:1;7900;7893:12;7934:710;8030:5;8055:81;8071:64;8128:6;8071:64;:::i;:::-;8055:81;:::i;:::-;8046:90;;8156:5;8185:6;8178:5;8171:21;8219:4;8212:5;8208:16;8201:23;;8272:4;8264:6;8260:17;8252:6;8248:30;8301:3;8293:6;8290:15;8287:122;;;8320:79;;:::i;:::-;8287:122;8435:6;8418:220;8452:6;8447:3;8444:15;8418:220;;;8527:3;8556:37;8589:3;8577:10;8556:37;:::i;:::-;8551:3;8544:50;8623:4;8618:3;8614:14;8607:21;;8494:144;8478:4;8473:3;8469:14;8462:21;;8418:220;;;8422:21;8036:608;;7934:710;;;;;:::o;8667:370::-;8738:5;8787:3;8780:4;8772:6;8768:17;8764:27;8754:122;;8795:79;;:::i;:::-;8754:122;8912:6;8899:20;8937:94;9027:3;9019:6;9012:4;9004:6;9000:17;8937:94;:::i;:::-;8928:103;;8744:293;8667:370;;;;:::o;9043:116::-;9113:21;9128:5;9113:21;:::i;:::-;9106:5;9103:32;9093:60;;9149:1;9146;9139:12;9093:60;9043:116;:::o;9165:133::-;9208:5;9246:6;9233:20;9224:29;;9262:30;9286:5;9262:30;:::i;:::-;9165:133;;;;:::o;9304:678::-;9394:6;9402;9451:2;9439:9;9430:7;9426:23;9422:32;9419:119;;;9457:79;;:::i;:::-;9419:119;9605:1;9594:9;9590:17;9577:31;9635:18;9627:6;9624:30;9621:117;;;9657:79;;:::i;:::-;9621:117;9762:78;9832:7;9823:6;9812:9;9808:22;9762:78;:::i;:::-;9752:88;;9548:302;9889:2;9915:50;9957:7;9948:6;9937:9;9933:22;9915:50;:::i;:::-;9905:60;;9860:115;9304:678;;;;;:::o;9988:474::-;10056:6;10064;10113:2;10101:9;10092:7;10088:23;10084:32;10081:119;;;10119:79;;:::i;:::-;10081:119;10239:1;10264:53;10309:7;10300:6;10289:9;10285:22;10264:53;:::i;:::-;10254:63;;10210:117;10366:2;10392:53;10437:7;10428:6;10417:9;10413:22;10392:53;:::i;:::-;10382:63;;10337:118;9988:474;;;;;:::o;10468:180::-;10516:77;10513:1;10506:88;10613:4;10610:1;10603:15;10637:4;10634:1;10627:15;10654:320;10698:6;10735:1;10729:4;10725:12;10715:22;;10782:1;10776:4;10772:12;10803:18;10793:81;;10859:4;10851:6;10847:17;10837:27;;10793:81;10921:2;10913:6;10910:14;10890:18;10887:38;10884:84;;10940:18;;:::i;:::-;10884:84;10705:269;10654:320;;;:::o;10980:227::-;11120:34;11116:1;11108:6;11104:14;11097:58;11189:10;11184:2;11176:6;11172:15;11165:35;10980:227;:::o;11213:366::-;11355:3;11376:67;11440:2;11435:3;11376:67;:::i;:::-;11369:74;;11452:93;11541:3;11452:93;:::i;:::-;11570:2;11565:3;11561:12;11554:19;;11213:366;;;:::o;11585:419::-;11751:4;11789:2;11778:9;11774:18;11766:26;;11838:9;11832:4;11828:20;11824:1;11813:9;11809:17;11802:47;11866:131;11992:4;11866:131;:::i;:::-;11858:139;;11585:419;;;:::o;12010:180::-;12058:77;12055:1;12048:88;12155:4;12152:1;12145:15;12179:4;12176:1;12169:15;12196:191;12236:3;12255:20;12273:1;12255:20;:::i;:::-;12250:25;;12289:20;12307:1;12289:20;:::i;:::-;12284:25;;12332:1;12329;12325:9;12318:16;;12353:3;12350:1;12347:10;12344:36;;;12360:18;;:::i;:::-;12344:36;12196:191;;;;:::o;12393:180::-;12533:32;12529:1;12521:6;12517:14;12510:56;12393:180;:::o;12579:366::-;12721:3;12742:67;12806:2;12801:3;12742:67;:::i;:::-;12735:74;;12818:93;12907:3;12818:93;:::i;:::-;12936:2;12931:3;12927:12;12920:19;;12579:366;;;:::o;12951:419::-;13117:4;13155:2;13144:9;13140:18;13132:26;;13204:9;13198:4;13194:20;13190:1;13179:9;13175:17;13168:47;13232:131;13358:4;13232:131;:::i;:::-;13224:139;;12951:419;;;:::o;13376:224::-;13516:34;13512:1;13504:6;13500:14;13493:58;13585:7;13580:2;13572:6;13568:15;13561:32;13376:224;:::o;13606:366::-;13748:3;13769:67;13833:2;13828:3;13769:67;:::i;:::-;13762:74;;13845:93;13934:3;13845:93;:::i;:::-;13963:2;13958:3;13954:12;13947:19;;13606:366;;;:::o;13978:419::-;14144:4;14182:2;14171:9;14167:18;14159:26;;14231:9;14225:4;14221:20;14217:1;14206:9;14202:17;14195:47;14259:131;14385:4;14259:131;:::i;:::-;14251:139;;13978:419;;;:::o;14403:180::-;14451:77;14448:1;14441:88;14548:4;14545:1;14538:15;14572:4;14569:1;14562:15;14589:225;14729:34;14725:1;14717:6;14713:14;14706:58;14798:8;14793:2;14785:6;14781:15;14774:33;14589:225;:::o;14820:366::-;14962:3;14983:67;15047:2;15042:3;14983:67;:::i;:::-;14976:74;;15059:93;15148:3;15059:93;:::i;:::-;15177:2;15172:3;15168:12;15161:19;;14820:366;;;:::o;15192:419::-;15358:4;15396:2;15385:9;15381:18;15373:26;;15445:9;15439:4;15435:20;15431:1;15420:9;15416:17;15409:47;15473:131;15599:4;15473:131;:::i;:::-;15465:139;;15192:419;;;:::o;15617:223::-;15757:34;15753:1;15745:6;15741:14;15734:58;15826:6;15821:2;15813:6;15809:15;15802:31;15617:223;:::o;15846:366::-;15988:3;16009:67;16073:2;16068:3;16009:67;:::i;:::-;16002:74;;16085:93;16174:3;16085:93;:::i;:::-;16203:2;16198:3;16194:12;16187:19;;15846:366;;;:::o;16218:419::-;16384:4;16422:2;16411:9;16407:18;16399:26;;16471:9;16465:4;16461:20;16457:1;16446:9;16442:17;16435:47;16499:131;16625:4;16499:131;:::i;:::-;16491:139;;16218:419;;;:::o;16643:221::-;16783:34;16779:1;16771:6;16767:14;16760:58;16852:4;16847:2;16839:6;16835:15;16828:29;16643:221;:::o;16870:366::-;17012:3;17033:67;17097:2;17092:3;17033:67;:::i;:::-;17026:74;;17109:93;17198:3;17109:93;:::i;:::-;17227:2;17222:3;17218:12;17211:19;;16870:366;;;:::o;17242:419::-;17408:4;17446:2;17435:9;17431:18;17423:26;;17495:9;17489:4;17485:20;17481:1;17470:9;17466:17;17459:47;17523:131;17649:4;17523:131;:::i;:::-;17515:139;;17242:419;;;:::o;17667:176::-;17807:28;17803:1;17795:6;17791:14;17784:52;17667:176;:::o;17849:366::-;17991:3;18012:67;18076:2;18071:3;18012:67;:::i;:::-;18005:74;;18088:93;18177:3;18088:93;:::i;:::-;18206:2;18201:3;18197:12;18190:19;;17849:366;;;:::o;18221:419::-;18387:4;18425:2;18414:9;18410:18;18402:26;;18474:9;18468:4;18464:20;18460:1;18449:9;18445:17;18438:47;18502:131;18628:4;18502:131;:::i;:::-;18494:139;;18221:419;;;:::o;18646:235::-;18786:34;18782:1;18774:6;18770:14;18763:58;18855:18;18850:2;18842:6;18838:15;18831:43;18646:235;:::o;18887:366::-;19029:3;19050:67;19114:2;19109:3;19050:67;:::i;:::-;19043:74;;19126:93;19215:3;19126:93;:::i;:::-;19244:2;19239:3;19235:12;19228:19;;18887:366;;;:::o;19259:419::-;19425:4;19463:2;19452:9;19448:18;19440:26;;19512:9;19506:4;19502:20;19498:1;19487:9;19483:17;19476:47;19540:131;19666:4;19540:131;:::i;:::-;19532:139;;19259:419;;;:::o;19684:410::-;19724:7;19747:20;19765:1;19747:20;:::i;:::-;19742:25;;19781:20;19799:1;19781:20;:::i;:::-;19776:25;;19836:1;19833;19829:9;19858:30;19876:11;19858:30;:::i;:::-;19847:41;;20037:1;20028:7;20024:15;20021:1;20018:22;19998:1;19991:9;19971:83;19948:139;;20067:18;;:::i;:::-;19948:139;19732:362;19684:410;;;;:::o;20100:180::-;20148:77;20145:1;20138:88;20245:4;20242:1;20235:15;20269:4;20266:1;20259:15;20286:185;20326:1;20343:20;20361:1;20343:20;:::i;:::-;20338:25;;20377:20;20395:1;20377:20;:::i;:::-;20372:25;;20416:1;20406:35;;20421:18;;:::i;:::-;20406:35;20463:1;20460;20456:9;20451:14;;20286:185;;;;:::o;20477:194::-;20517:4;20537:20;20555:1;20537:20;:::i;:::-;20532:25;;20571:20;20589:1;20571:20;:::i;:::-;20566:25;;20615:1;20612;20608:9;20600:17;;20639:1;20633:4;20630:11;20627:37;;;20644:18;;:::i;:::-;20627:37;20477:194;;;;:::o;20677:182::-;20817:34;20813:1;20805:6;20801:14;20794:58;20677:182;:::o;20865:366::-;21007:3;21028:67;21092:2;21087:3;21028:67;:::i;:::-;21021:74;;21104:93;21193:3;21104:93;:::i;:::-;21222:2;21217:3;21213:12;21206:19;;20865:366;;;:::o;21237:419::-;21403:4;21441:2;21430:9;21426:18;21418:26;;21490:9;21484:4;21480:20;21476:1;21465:9;21461:17;21454:47;21518:131;21644:4;21518:131;:::i;:::-;21510:139;;21237:419;;;:::o;21662:224::-;21802:34;21798:1;21790:6;21786:14;21779:58;21871:7;21866:2;21858:6;21854:15;21847:32;21662:224;:::o;21892:366::-;22034:3;22055:67;22119:2;22114:3;22055:67;:::i;:::-;22048:74;;22131:93;22220:3;22131:93;:::i;:::-;22249:2;22244:3;22240:12;22233:19;;21892:366;;;:::o;22264:419::-;22430:4;22468:2;22457:9;22453:18;22445:26;;22517:9;22511:4;22507:20;22503:1;22492:9;22488:17;22481:47;22545:131;22671:4;22545:131;:::i;:::-;22537:139;;22264:419;;;:::o;22689:222::-;22829:34;22825:1;22817:6;22813:14;22806:58;22898:5;22893:2;22885:6;22881:15;22874:30;22689:222;:::o;22917:366::-;23059:3;23080:67;23144:2;23139:3;23080:67;:::i;:::-;23073:74;;23156:93;23245:3;23156:93;:::i;:::-;23274:2;23269:3;23265:12;23258:19;;22917:366;;;:::o;23289:419::-;23455:4;23493:2;23482:9;23478:18;23470:26;;23542:9;23536:4;23532:20;23528:1;23517:9;23513:17;23506:47;23570:131;23696:4;23570:131;:::i;:::-;23562:139;;23289:419;;;:::o;23714:225::-;23854:34;23850:1;23842:6;23838:14;23831:58;23923:8;23918:2;23910:6;23906:15;23899:33;23714:225;:::o;23945:366::-;24087:3;24108:67;24172:2;24167:3;24108:67;:::i;:::-;24101:74;;24184:93;24273:3;24184:93;:::i;:::-;24302:2;24297:3;24293:12;24286:19;;23945:366;;;:::o;24317:419::-;24483:4;24521:2;24510:9;24506:18;24498:26;;24570:9;24564:4;24560:20;24556:1;24545:9;24541:17;24534:47;24598:131;24724:4;24598:131;:::i;:::-;24590:139;;24317:419;;;:::o;24742:85::-;24787:7;24816:5;24805:16;;24742:85;;;:::o;24833:158::-;24891:9;24924:61;24942:42;24951:32;24977:5;24951:32;:::i;:::-;24942:42;:::i;:::-;24924:61;:::i;:::-;24911:74;;24833:158;;;:::o;24997:147::-;25092:45;25131:5;25092:45;:::i;:::-;25087:3;25080:58;24997:147;;:::o;25150:114::-;25217:6;25251:5;25245:12;25235:22;;25150:114;;;:::o;25270:184::-;25369:11;25403:6;25398:3;25391:19;25443:4;25438:3;25434:14;25419:29;;25270:184;;;;:::o;25460:132::-;25527:4;25550:3;25542:11;;25580:4;25575:3;25571:14;25563:22;;25460:132;;;:::o;25598:108::-;25675:24;25693:5;25675:24;:::i;:::-;25670:3;25663:37;25598:108;;:::o;25712:179::-;25781:10;25802:46;25844:3;25836:6;25802:46;:::i;:::-;25880:4;25875:3;25871:14;25857:28;;25712:179;;;;:::o;25897:113::-;25967:4;25999;25994:3;25990:14;25982:22;;25897:113;;;:::o;26046:732::-;26165:3;26194:54;26242:5;26194:54;:::i;:::-;26264:86;26343:6;26338:3;26264:86;:::i;:::-;26257:93;;26374:56;26424:5;26374:56;:::i;:::-;26453:7;26484:1;26469:284;26494:6;26491:1;26488:13;26469:284;;;26570:6;26564:13;26597:63;26656:3;26641:13;26597:63;:::i;:::-;26590:70;;26683:60;26736:6;26683:60;:::i;:::-;26673:70;;26529:224;26516:1;26513;26509:9;26504:14;;26469:284;;;26473:14;26769:3;26762:10;;26170:608;;;26046:732;;;;:::o;26784:831::-;27047:4;27085:3;27074:9;27070:19;27062:27;;27099:71;27167:1;27156:9;27152:17;27143:6;27099:71;:::i;:::-;27180:80;27256:2;27245:9;27241:18;27232:6;27180:80;:::i;:::-;27307:9;27301:4;27297:20;27292:2;27281:9;27277:18;27270:48;27335:108;27438:4;27429:6;27335:108;:::i;:::-;27327:116;;27453:72;27521:2;27510:9;27506:18;27497:6;27453:72;:::i;:::-;27535:73;27603:3;27592:9;27588:19;27579:6;27535:73;:::i;:::-;26784:831;;;;;;;;:::o;27621:332::-;27742:4;27780:2;27769:9;27765:18;27757:26;;27793:71;27861:1;27850:9;27846:17;27837:6;27793:71;:::i;:::-;27874:72;27942:2;27931:9;27927:18;27918:6;27874:72;:::i;:::-;27621:332;;;;;:::o;27959:181::-;28099:33;28095:1;28087:6;28083:14;28076:57;27959:181;:::o;28146:366::-;28288:3;28309:67;28373:2;28368:3;28309:67;:::i;:::-;28302:74;;28385:93;28474:3;28385:93;:::i;:::-;28503:2;28498:3;28494:12;28487:19;;28146:366;;;:::o;28518:419::-;28684:4;28722:2;28711:9;28707:18;28699:26;;28771:9;28765:4;28761:20;28757:1;28746:9;28742:17;28735:47;28799:131;28925:4;28799:131;:::i;:::-;28791:139;;28518:419;;;:::o
Swarm Source
ipfs://3f4fea340c511b31ea8ba666e0d464dd62d3d832e941f8bcb0baf9ddb501ba9d
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.