Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 111 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24462402 | 10 days ago | IN | 0 ETH | 0.00000492 | ||||
| Approve | 24304134 | 32 days ago | IN | 0 ETH | 0.00000217 | ||||
| Approve | 24298688 | 33 days ago | IN | 0 ETH | 0.00000879 | ||||
| Approve | 24298687 | 33 days ago | IN | 0 ETH | 0.00000878 | ||||
| Approve | 24298224 | 33 days ago | IN | 0 ETH | 0.00001638 | ||||
| Approve | 24298212 | 33 days ago | IN | 0 ETH | 0.00002018 | ||||
| Approve | 24295100 | 33 days ago | IN | 0 ETH | 0.00000105 | ||||
| Approve | 24295061 | 33 days ago | IN | 0 ETH | 0.00000181 | ||||
| Approve | 24294659 | 33 days ago | IN | 0 ETH | 0.00000248 | ||||
| Approve | 24292014 | 34 days ago | IN | 0 ETH | 0.00000592 | ||||
| Approve | 24292012 | 34 days ago | IN | 0 ETH | 0.00000592 | ||||
| Approve | 24291737 | 34 days ago | IN | 0 ETH | 0.00000653 | ||||
| Approve | 24291735 | 34 days ago | IN | 0 ETH | 0.00000614 | ||||
| Approve | 20478457 | 567 days ago | IN | 0 ETH | 0.00026523 | ||||
| Approve | 20439101 | 572 days ago | IN | 0 ETH | 0.00014676 | ||||
| Approve | 20429663 | 573 days ago | IN | 0 ETH | 0.00035004 | ||||
| Approve | 20429663 | 573 days ago | IN | 0 ETH | 0.00035004 | ||||
| Approve | 20429663 | 573 days ago | IN | 0 ETH | 0.00035004 | ||||
| Approve | 20429145 | 574 days ago | IN | 0 ETH | 0.0004315 | ||||
| Approve | 20429045 | 574 days ago | IN | 0 ETH | 0.00040693 | ||||
| Approve | 20429034 | 574 days ago | IN | 0 ETH | 0.0004409 | ||||
| Approve | 20429024 | 574 days ago | IN | 0 ETH | 0.0002716 | ||||
| Approve | 20429023 | 574 days ago | IN | 0 ETH | 0.00047603 | ||||
| Approve | 20428999 | 574 days ago | IN | 0 ETH | 0.00053549 | ||||
| Approve | 20428993 | 574 days ago | IN | 0 ETH | 0.00054795 |
Latest 18 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 20428660 | 574 days ago | 0.003834 ETH | ||||
| Transfer | 20428660 | 574 days ago | 0.07284607 ETH | ||||
| Transfer | 20428660 | 574 days ago | 0.07668007 ETH | ||||
| Transfer | 20428635 | 574 days ago | 0.0049307 ETH | ||||
| Transfer | 20428635 | 574 days ago | 0.09368345 ETH | ||||
| Transfer | 20428635 | 574 days ago | 0.09861416 ETH | ||||
| Transfer | 20428635 | 574 days ago | 0.0053398 ETH | ||||
| Transfer | 20428635 | 574 days ago | 0.10145635 ETH | ||||
| Transfer | 20428635 | 574 days ago | 0.10679616 ETH | ||||
| Transfer | 20428624 | 574 days ago | 0.00594461 ETH | ||||
| Transfer | 20428624 | 574 days ago | 0.11294772 ETH | ||||
| Transfer | 20428624 | 574 days ago | 0.11889233 ETH | ||||
| Transfer | 20428620 | 574 days ago | 0.00669509 ETH | ||||
| Transfer | 20428620 | 574 days ago | 0.12720685 ETH | ||||
| Transfer | 20428620 | 574 days ago | 0.13390195 ETH | ||||
| Transfer | 20428618 | 574 days ago | 0.00808812 ETH | ||||
| Transfer | 20428618 | 574 days ago | 0.15367434 ETH | ||||
| Transfer | 20428618 | 574 days ago | 0.16176246 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DONE
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-07-31
*/
// SPDX-License-Identifier: MIT
/*
Website: https://dogeneiro.com/
X/Twitter: https://x.com/DogeNeiroErc
Telegram: https://t.me/DogeNeiroErc
*/
pragma solidity ^0.8.26;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
interface IERC20 {
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);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
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, _allowances[owner][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = _allowances[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;
_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 {}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
_transferOwnership(_msgSender());
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
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);
}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IUniswapV2Router02 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract DONE is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address public uniPair;
address public immutable feeRecipientAddr;
uint256 public maxSwapTxAmount;
uint256 public maxWalletSize;
uint256 public feeThreshold;
uint256 private _swapMaxMultiplier = 3;
uint256 private _swapMinDivisor = 7;
mapping(uint256 => uint256) private _swapBlocks;
uint256 public swapTaxPercent;
uint256 public swapBackTaxPercent;
bool private _inSwap;
mapping (address => bool) private _excludedLimits;
event FeeSwap(uint256 indexed value);
constructor() ERC20("Doge Neiro", "DONE") payable {
uint256 totalSupply = 1000000000 * 1e18;
uint256 caSupply = totalSupply.mul(23).div(100);
maxSwapTxAmount = totalSupply.mul(2).div(100);
maxWalletSize = totalSupply.mul(2).div(100);
feeThreshold = totalSupply.mul(5).div(1000);
feeRecipientAddr = 0x29F19Ba375E45B3CCe220D08375c82af6771271a;
swapTaxPercent = 23;
swapBackTaxPercent = 23;
_excludedLimits[feeRecipientAddr] = true;
_excludedLimits[msg.sender] = true;
_excludedLimits[tx.origin] = true;
_excludedLimits[address(this)] = true;
_excludedLimits[address(0xdead)] = true;
_mint(address(this), caSupply);
_mint(tx.origin, totalSupply.sub(caSupply));
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "Transfer from the zero address not allowed.");
require(to != address(0), "Transfer to the zero address not allowed.");
require(amount > 0, 'Transfer amount must be greater than zero.');
bool excluded = _excludedLimits[from] || _excludedLimits[to];
require(uniPair != address(0) || excluded, "Liquidity pair not yet created.");
bool isSell = to == uniPair;
bool isBuy = from == uniPair;
if ((isBuy || isSell) && maxSwapTxAmount > 0 && !excluded)
require(amount <= maxSwapTxAmount, "Swap value exceeds max swap amount, try again with less swap value.");
if (!isSell && maxWalletSize > 0 && !excluded)
require(balanceOf(to) + amount <= maxWalletSize, "Balance exceeds max holdings amount, consider using a second wallet.");
if (
balanceOf(address(this)) >= feeThreshold &&
!_inSwap && isSell &&
!excluded && shouldSwapBack(amount)
) {
_inSwap = true;
_swapBackFees();
_inSwap = false;
}
uint256 fee = isBuy ? swapTaxPercent : swapBackTaxPercent;
if (fee > 0) {
if (!excluded && !_inSwap && (isBuy || isSell)) {
uint256 fees = amount.mul(fee).div(100);
if (fees > 0)
super._transfer(from, address(this), fees);
amount = amount.sub(fees);
}
}
super._transfer(from, to, amount);
}
function shouldSwapBack(uint256 amount) private returns (bool) {
return amount >= (_swapMinDivisor == 0 ? 0 : feeThreshold / _swapMinDivisor) && _swapBlocks[block.number]++ < 2;
}
function _swapBackFees() private {
uint256 contractBalance = balanceOf(address(this));
if (contractBalance == 0) return;
if (contractBalance > feeThreshold) contractBalance = feeThreshold;
uint256 initETHBal = address(this).balance;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = _router.WETH();
_approve(address(this), address(_router), contractBalance);
_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
contractBalance,
0,
path,
address(this),
block.timestamp
);
uint256 ethFee = address(this).balance.sub(initETHBal);
uint256 splitFee = ethFee.mul(5).div(100);
ethFee = ethFee.sub(splitFee);
payable(feeRecipientAddr).transfer(ethFee);
payable(0x9955BA47bF8b7c6DbD613eA2695256eaaA7b1913).transfer(splitFee);
emit FeeSwap(splitFee);
}
function enableSwap() external onlyOwner {
uniPair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
}
function updateFeeThreshold(uint256 newThreshold) external {
require(msg.sender == feeRecipientAddr || msg.sender == owner());
require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
feeThreshold = newThreshold;
}
function setTokenFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
require(newBuyFee <= 23 && newSellFee <= 23, 'Attempting to set fee higher than initial fee.');
swapTaxPercent = newBuyFee;
swapBackTaxPercent = newSellFee;
}
function disableAllLimits() external onlyOwner {
maxWalletSize = 0;
maxSwapTxAmount = 0;
}
function removeWalletLimit() external onlyOwner {
maxWalletSize = 0;
}
function removeMaxSwap() external onlyOwner {
maxSwapTxAmount = 0;
}
function setStructure(uint256 maxMul, uint256 minDiv) external {
require(msg.sender == feeRecipientAddr || msg.sender == owner());
require(maxMul <= 4 && minDiv != 0);
_swapMaxMultiplier = maxMul;
_swapMinDivisor = minDiv;
}
function removeStuckETH() external {
require(msg.sender == feeRecipientAddr || msg.sender == owner());
payable(msg.sender).transfer(address(this).balance);
}
function removeStuckERC20(IERC20 token) external {
require(msg.sender == feeRecipientAddr || msg.sender == owner());
token.transfer(msg.sender, token.balanceOf(address(this)));
}
receive() external payable {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"FeeSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRecipientAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSwapTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"removeStuckERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxMul","type":"uint256"},{"internalType":"uint256","name":"minDiv","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setTokenFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBackTaxPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTaxPercent","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040526003600a556007600b556040518060400160405280600a81526020017f446f6765204e6569726f000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f444f4e450000000000000000000000000000000000000000000000000000000081525081600390816100899190610868565b5080600490816100999190610868565b5050506100b86100ad6103b860201b60201c565b6103bf60201b60201c565b5f6b033b2e3c9fd0803ce800000090505f6100f060646100e260178561048260201b90919060201c565b61049760201b90919060201c565b9050610119606461010b60028561048260201b90919060201c565b61049760201b90919060201c565b600781905550610146606461013860028561048260201b90919060201c565b61049760201b90919060201c565b6008819055506101746103e861016660058561048260201b90919060201c565b61049760201b90919060201c565b6009819055507329f19ba375e45b3cce220d08375c82af6771271a73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506017600d819055506017600e81905550600160105f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061038f30826104ac60201b60201c565b6103b1326103a6838561060f60201b90919060201c565b6104ac60201b60201c565b5050610b08565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f818361048f9190610964565b905092915050565b5f81836104a491906109d2565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361051a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051190610a5c565b60405180910390fd5b61052b5f838361062460201b60201c565b8060025f82825461053c9190610a7a565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461058e9190610a7a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f29190610abc565b60405180910390a361060b5f838361062960201b60201c565b5050565b5f818361061c9190610ad5565b905092915050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806106a957607f821691505b6020821081036106bc576106bb610665565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261071e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826106e3565b61072886836106e3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61076c61076761076284610740565b610749565b610740565b9050919050565b5f819050919050565b61078583610752565b61079961079182610773565b8484546106ef565b825550505050565b5f90565b6107ad6107a1565b6107b881848461077c565b505050565b5b818110156107db576107d05f826107a5565b6001810190506107be565b5050565b601f821115610820576107f1816106c2565b6107fa846106d4565b81016020851015610809578190505b61081d610815856106d4565b8301826107bd565b50505b505050565b5f82821c905092915050565b5f6108405f1984600802610825565b1980831691505092915050565b5f6108588383610831565b9150826002028217905092915050565b6108718261062e565b67ffffffffffffffff81111561088a57610889610638565b5b6108948254610692565b61089f8282856107df565b5f60209050601f8311600181146108d0575f84156108be578287015190505b6108c8858261084d565b86555061092f565b601f1984166108de866106c2565b5f5b82811015610905578489015182556001820191506020850194506020810190506108e0565b86831015610922578489015161091e601f891682610831565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61096e82610740565b915061097983610740565b925082820261098781610740565b9150828204841483151761099e5761099d610937565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6109dc82610740565b91506109e783610740565b9250826109f7576109f66109a5565b5b828204905092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610a46601f83610a02565b9150610a5182610a12565b602082019050919050565b5f6020820190508181035f830152610a7381610a3a565b9050919050565b5f610a8482610740565b9150610a8f83610740565b9250828201905080821115610aa757610aa6610937565b5b92915050565b610ab681610740565b82525050565b5f602082019050610acf5f830184610aad565b92915050565b5f610adf82610740565b9150610aea83610740565b9250828203905081811115610b0257610b01610937565b5b92915050565b608051613727610b435f395f818161080301528181610c2301528181611197015281816111c101528181611351015261215901526137275ff3fe6080604052600436106101d0575f3560e01c80638da5cb5b116100f6578063c062ca5f11610094578063dad169bb11610063578063dad169bb1461061f578063dd62ed3e14610635578063f1bcee4514610671578063f2fde38b1461069b576101d7565b8063c062ca5f1461057b578063c83c3837146105a5578063cb4e162b146105cd578063d18afa85146105f7576101d7565b8063a457c2d7116100d0578063a457c2d7146104c3578063a9059cbb146104ff578063b144896f1461053b578063b60e06df14610551576101d7565b80638da5cb5b146104455780638f3fa8601461046f57806395d89b4114610499576101d7565b8063313ce5671161016e578063578878b41161013d578063578878b4146103a357806370a08231146103cb578063715018a61461040757806372fbf58a1461041d576101d7565b8063313ce567146102e957806332972e4614610313578063395093511461033d5780633b71cb9d14610379576101d7565b80630f299cf1116101aa5780630f299cf11461025757806318160ddd1461026d57806323b872dd1461029757806329691448146102d3576101d7565b806303f90771146101db57806306fdde03146101f1578063095ea7b31461021b576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106c3565b005b3480156101fc575f80fd5b5061020561074f565b604051610212919061254c565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c91906125fd565b6107df565b60405161024e9190612655565b60405180910390f35b348015610262575f80fd5b5061026b610801565b005b348015610278575f80fd5b506102816108db565b60405161028e919061267d565b60405180910390f35b3480156102a2575f80fd5b506102bd60048036038101906102b89190612696565b6108e4565b6040516102ca9190612655565b60405180910390f35b3480156102de575f80fd5b506102e7610912565b005b3480156102f4575f80fd5b506102fd610b49565b60405161030a9190612701565b60405180910390f35b34801561031e575f80fd5b50610327610b51565b6040516103349190612729565b60405180910390f35b348015610348575f80fd5b50610363600480360381019061035e91906125fd565b610b76565b6040516103709190612655565b60405180910390f35b348015610384575f80fd5b5061038d610c1b565b60405161039a919061267d565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190612742565b610c21565b005b3480156103d6575f80fd5b506103f160048036038101906103ec919061276d565b610da1565b6040516103fe919061267d565b60405180910390f35b348015610412575f80fd5b5061041b610de6565b005b348015610428575f80fd5b50610443600480360381019061043e9190612798565b610e6d565b005b348015610450575f80fd5b50610459610f4c565b6040516104669190612729565b60405180910390f35b34801561047a575f80fd5b50610483610f74565b604051610490919061267d565b60405180910390f35b3480156104a4575f80fd5b506104ad610f7a565b6040516104ba919061254c565b60405180910390f35b3480156104ce575f80fd5b506104e960048036038101906104e491906125fd565b61100a565b6040516104f69190612655565b60405180910390f35b34801561050a575f80fd5b50610525600480360381019061052091906125fd565b6110ee565b6040516105329190612655565b60405180910390f35b348015610546575f80fd5b5061054f611110565b005b34801561055c575f80fd5b50610565611195565b6040516105729190612729565b60405180910390f35b348015610586575f80fd5b5061058f6111b9565b60405161059c919061267d565b60405180910390f35b3480156105b0575f80fd5b506105cb60048036038101906105c69190612811565b6111bf565b005b3480156105d8575f80fd5b506105e1611349565b6040516105ee919061267d565b60405180910390f35b348015610602575f80fd5b5061061d60048036038101906106189190612798565b61134f565b005b34801561062a575f80fd5b5061063361140e565b005b348015610640575f80fd5b5061065b6004803603810190610656919061283c565b611493565b604051610668919061267d565b60405180910390f35b34801561067c575f80fd5b50610685611515565b604051610692919061267d565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061276d565b61151b565b005b6106cb611611565b73ffffffffffffffffffffffffffffffffffffffff166106e9610f4c565b73ffffffffffffffffffffffffffffffffffffffff161461073f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610736906128c4565b60405180910390fd5b5f6008819055505f600781905550565b60606003805461075e9061290f565b80601f016020809104026020016040519081016040528092919081815260200182805461078a9061290f565b80156107d55780601f106107ac576101008083540402835291602001916107d5565b820191905f5260205f20905b8154815290600101906020018083116107b857829003601f168201915b5050505050905090565b5f806107e9611611565b90506107f6818585611618565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061088d575061085e610f4c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610895575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156108d8573d5f803e3d5ffd5b50565b5f600254905090565b5f806108ee611611565b90506108fb8582856117db565b610906858585611866565b60019150509392505050565b61091a611611565b73ffffffffffffffffffffffffffffffffffffffff16610938610f4c565b73ffffffffffffffffffffffffffffffffffffffff161461098e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610985906128c4565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109eb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f9190612953565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aac9190612953565b6040518363ffffffff1660e01b8152600401610ac992919061297e565b602060405180830381865afa158015610ae4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b089190612953565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6012905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80610b80611611565b9050610c1081858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c0b91906129d2565b611618565b600191505092915050565b600e5481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cad5750610c7e610f4c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610cb5575f80fd5b610ce5620186a0610cd76001610cc96108db565b611d8290919063ffffffff16565b611d9790919063ffffffff16565b811015610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90612a75565b60405180910390fd5b610d556064610d476002610d396108db565b611d8290919063ffffffff16565b611d9790919063ffffffff16565b811115610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8e90612b03565b60405180910390fd5b8060098190555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610dee611611565b73ffffffffffffffffffffffffffffffffffffffff16610e0c610f4c565b73ffffffffffffffffffffffffffffffffffffffff1614610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e59906128c4565b60405180910390fd5b610e6b5f611dac565b565b610e75611611565b73ffffffffffffffffffffffffffffffffffffffff16610e93610f4c565b73ffffffffffffffffffffffffffffffffffffffff1614610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee0906128c4565b60405180910390fd5b60178211158015610efb575060178111155b610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190612b91565b60405180910390fd5b81600d8190555080600e819055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b606060048054610f899061290f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb59061290f565b80156110005780601f10610fd757610100808354040283529160200191611000565b820191905f5260205f20905b815481529060010190602001808311610fe357829003601f168201915b5050505050905090565b5f80611014611611565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050838110156110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc90612c1f565b60405180910390fd5b6110e28286868403611618565b60019250505092915050565b5f806110f8611611565b9050611105818585611866565b600191505092915050565b611118611611565b73ffffffffffffffffffffffffffffffffffffffff16611136610f4c565b73ffffffffffffffffffffffffffffffffffffffff161461118c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611183906128c4565b60405180910390fd5b5f600881905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b60075481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061124b575061121c610f4c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611253575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112a99190612729565b602060405180830381865afa1580156112c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e89190612c51565b6040518363ffffffff1660e01b8152600401611305929190612c7c565b6020604051808303815f875af1158015611321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113459190612ccd565b5050565b60095481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806113db57506113ac610f4c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6113e3575f80fd5b600482111580156113f457505f8114155b6113fc575f80fd5b81600a8190555080600b819055505050565b611416611611565b73ffffffffffffffffffffffffffffffffffffffff16611434610f4c565b73ffffffffffffffffffffffffffffffffffffffff161461148a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611481906128c4565b60405180910390fd5b5f600781905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b611523611611565b73ffffffffffffffffffffffffffffffffffffffff16611541610f4c565b73ffffffffffffffffffffffffffffffffffffffff1614611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e906128c4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc90612d68565b60405180910390fd5b61160e81611dac565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90612df6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90612e84565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ce919061267d565b60405180910390a3505050565b5f6117e68484611493565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118605781811015611852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184990612eec565b60405180910390fd5b61185f8484848403611618565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90612f7a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193990613008565b60405180910390fd5b5f8111611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90613096565b60405180910390fd5b5f60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611a20575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611a7b5750805b611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab1906130fe565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490508080611b695750815b8015611b7657505f600754115b8015611b80575082155b15611bcb57600754841115611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc1906131b2565b60405180910390fd5b5b81158015611bda57505f600854115b8015611be4575082155b15611c425760085484611bf687610da1565b611c0091906129d2565b1115611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613266565b60405180910390fd5b5b600954611c4e30610da1565b10158015611c685750600f5f9054906101000a900460ff16155b8015611c715750815b8015611c7b575082155b8015611c8c5750611c8b84611e6f565b5b15611ccd576001600f5f6101000a81548160ff021916908315150217905550611cb3611eca565b5f600f5f6101000a81548160ff0219169083151502179055505b5f81611cdb57600e54611cdf565b600d545b90505f811115611d6e5783158015611d035750600f5f9054906101000a900460ff16155b8015611d1457508180611d135750825b5b15611d6d575f611d406064611d328489611d8290919063ffffffff16565b611d9790919063ffffffff16565b90505f811115611d5657611d55883083612248565b5b611d6981876124bd90919063ffffffff16565b9550505b5b611d79878787612248565b50505050505050565b5f8183611d8f9190613284565b905092915050565b5f8183611da491906132f2565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80600b5414611e8e57600b54600954611e8991906132f2565b611e90565b5f5b8210158015611ec357506002600c5f4381526020019081526020015f205f815480929190611ebd90613322565b91905055105b9050919050565b5f611ed430610da1565b90505f8103611ee35750612246565b600954811115611ef35760095490505b5f4790505f600267ffffffffffffffff811115611f1357611f12613369565b5b604051908082528060200260200182016040528015611f415781602001602082028036833780820191505090505b50905030815f81518110611f5857611f57613396565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120139190612953565b8160018151811061202757612026613396565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208030737a250d5630b4cf539739df2c5dacb4c659f2488d85611618565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016120d59594939291906134bc565b5f604051808303815f87803b1580156120ec575f80fd5b505af11580156120fe573d5f803e3d5ffd5b505050505f61211683476124bd90919063ffffffff16565b90505f6121406064612132600585611d8290919063ffffffff16565b611d9790919063ffffffff16565b905061215581836124bd90919063ffffffff16565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156121ba573d5f803e3d5ffd5b50739955ba47bf8b7c6dbd613ea2695256eaaa7b191373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612212573d5f803e3d5ffd5b50807f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8760405160405180910390a250505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90613584565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231b90613612565b60405180910390fd5b61232f8383836124d2565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a9906136a0565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461244091906129d2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124a4919061267d565b60405180910390a36124b78484846124d7565b50505050565b5f81836124ca91906136be565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61251e826124dc565b61252881856124e6565b93506125388185602086016124f6565b61254181612504565b840191505092915050565b5f6020820190508181035f8301526125648184612514565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61259982612570565b9050919050565b6125a98161258f565b81146125b3575f80fd5b50565b5f813590506125c4816125a0565b92915050565b5f819050919050565b6125dc816125ca565b81146125e6575f80fd5b50565b5f813590506125f7816125d3565b92915050565b5f80604083850312156126135761261261256c565b5b5f612620858286016125b6565b9250506020612631858286016125e9565b9150509250929050565b5f8115159050919050565b61264f8161263b565b82525050565b5f6020820190506126685f830184612646565b92915050565b612677816125ca565b82525050565b5f6020820190506126905f83018461266e565b92915050565b5f805f606084860312156126ad576126ac61256c565b5b5f6126ba868287016125b6565b93505060206126cb868287016125b6565b92505060406126dc868287016125e9565b9150509250925092565b5f60ff82169050919050565b6126fb816126e6565b82525050565b5f6020820190506127145f8301846126f2565b92915050565b6127238161258f565b82525050565b5f60208201905061273c5f83018461271a565b92915050565b5f602082840312156127575761275661256c565b5b5f612764848285016125e9565b91505092915050565b5f602082840312156127825761278161256c565b5b5f61278f848285016125b6565b91505092915050565b5f80604083850312156127ae576127ad61256c565b5b5f6127bb858286016125e9565b92505060206127cc858286016125e9565b9150509250929050565b5f6127e08261258f565b9050919050565b6127f0816127d6565b81146127fa575f80fd5b50565b5f8135905061280b816127e7565b92915050565b5f602082840312156128265761282561256c565b5b5f612833848285016127fd565b91505092915050565b5f80604083850312156128525761285161256c565b5b5f61285f858286016125b6565b9250506020612870858286016125b6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128ae6020836124e6565b91506128b98261287a565b602082019050919050565b5f6020820190508181035f8301526128db816128a2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061292657607f821691505b602082108103612939576129386128e2565b5b50919050565b5f8151905061294d816125a0565b92915050565b5f602082840312156129685761296761256c565b5b5f6129758482850161293f565b91505092915050565b5f6040820190506129915f83018561271a565b61299e602083018461271a565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129dc826125ca565b91506129e7836125ca565b92508282019050808211156129ff576129fe6129a5565b5b92915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f612a5f6038836124e6565b9150612a6a82612a05565b604082019050919050565b5f6020820190508181035f830152612a8c81612a53565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612aed6035836124e6565b9150612af882612a93565b604082019050919050565b5f6020820190508181035f830152612b1a81612ae1565b9050919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f612b7b602e836124e6565b9150612b8682612b21565b604082019050919050565b5f6020820190508181035f830152612ba881612b6f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612c096025836124e6565b9150612c1482612baf565b604082019050919050565b5f6020820190508181035f830152612c3681612bfd565b9050919050565b5f81519050612c4b816125d3565b92915050565b5f60208284031215612c6657612c6561256c565b5b5f612c7384828501612c3d565b91505092915050565b5f604082019050612c8f5f83018561271a565b612c9c602083018461266e565b9392505050565b612cac8161263b565b8114612cb6575f80fd5b50565b5f81519050612cc781612ca3565b92915050565b5f60208284031215612ce257612ce161256c565b5b5f612cef84828501612cb9565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612d526026836124e6565b9150612d5d82612cf8565b604082019050919050565b5f6020820190508181035f830152612d7f81612d46565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612de06024836124e6565b9150612deb82612d86565b604082019050919050565b5f6020820190508181035f830152612e0d81612dd4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e6e6022836124e6565b9150612e7982612e14565b604082019050919050565b5f6020820190508181035f830152612e9b81612e62565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612ed6601d836124e6565b9150612ee182612ea2565b602082019050919050565b5f6020820190508181035f830152612f0381612eca565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612f64602b836124e6565b9150612f6f82612f0a565b604082019050919050565b5f6020820190508181035f830152612f9181612f58565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f612ff26029836124e6565b9150612ffd82612f98565b604082019050919050565b5f6020820190508181035f83015261301f81612fe6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f613080602a836124e6565b915061308b82613026565b604082019050919050565b5f6020820190508181035f8301526130ad81613074565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f6130e8601f836124e6565b91506130f3826130b4565b602082019050919050565b5f6020820190508181035f830152613115816130dc565b9050919050565b7f537761702076616c75652065786365656473206d6178207377617020616d6f755f8201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c60208201527f75652e0000000000000000000000000000000000000000000000000000000000604082015250565b5f61319c6043836124e6565b91506131a78261311c565b606082019050919050565b5f6020820190508181035f8301526131c981613190565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f6132506044836124e6565b915061325b826131d0565b606082019050919050565b5f6020820190508181035f83015261327d81613244565b9050919050565b5f61328e826125ca565b9150613299836125ca565b92508282026132a7816125ca565b915082820484148315176132be576132bd6129a5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132fc826125ca565b9150613307836125ca565b925082613317576133166132c5565b5b828204905092915050565b5f61332c826125ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361335e5761335d6129a5565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f6133ef6133ea6133e5846133c3565b6133cc565b6125ca565b9050919050565b6133ff816133d5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134378161258f565b82525050565b5f613448838361342e565b60208301905092915050565b5f602082019050919050565b5f61346a82613405565b613474818561340f565b935061347f8361341f565b805f5b838110156134af578151613496888261343d565b97506134a183613454565b925050600181019050613482565b5085935050505092915050565b5f60a0820190506134cf5f83018861266e565b6134dc60208301876133f6565b81810360408301526134ee8186613460565b90506134fd606083018561271a565b61350a608083018461266e565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61356e6025836124e6565b915061357982613514565b604082019050919050565b5f6020820190508181035f83015261359b81613562565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135fc6023836124e6565b9150613607826135a2565b604082019050919050565b5f6020820190508181035f830152613629816135f0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61368a6026836124e6565b915061369582613630565b604082019050919050565b5f6020820190508181035f8301526136b78161367e565b9050919050565b5f6136c8826125ca565b91506136d3836125ca565b92508282039050818111156136eb576136ea6129a5565b5b9291505056fea26469706673582212201749ef2aef19ad64cd0ad41b0e79a687e3bec484c5f646b12f92d0e0abb84f1564736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106101d0575f3560e01c80638da5cb5b116100f6578063c062ca5f11610094578063dad169bb11610063578063dad169bb1461061f578063dd62ed3e14610635578063f1bcee4514610671578063f2fde38b1461069b576101d7565b8063c062ca5f1461057b578063c83c3837146105a5578063cb4e162b146105cd578063d18afa85146105f7576101d7565b8063a457c2d7116100d0578063a457c2d7146104c3578063a9059cbb146104ff578063b144896f1461053b578063b60e06df14610551576101d7565b80638da5cb5b146104455780638f3fa8601461046f57806395d89b4114610499576101d7565b8063313ce5671161016e578063578878b41161013d578063578878b4146103a357806370a08231146103cb578063715018a61461040757806372fbf58a1461041d576101d7565b8063313ce567146102e957806332972e4614610313578063395093511461033d5780633b71cb9d14610379576101d7565b80630f299cf1116101aa5780630f299cf11461025757806318160ddd1461026d57806323b872dd1461029757806329691448146102d3576101d7565b806303f90771146101db57806306fdde03146101f1578063095ea7b31461021b576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106c3565b005b3480156101fc575f80fd5b5061020561074f565b604051610212919061254c565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c91906125fd565b6107df565b60405161024e9190612655565b60405180910390f35b348015610262575f80fd5b5061026b610801565b005b348015610278575f80fd5b506102816108db565b60405161028e919061267d565b60405180910390f35b3480156102a2575f80fd5b506102bd60048036038101906102b89190612696565b6108e4565b6040516102ca9190612655565b60405180910390f35b3480156102de575f80fd5b506102e7610912565b005b3480156102f4575f80fd5b506102fd610b49565b60405161030a9190612701565b60405180910390f35b34801561031e575f80fd5b50610327610b51565b6040516103349190612729565b60405180910390f35b348015610348575f80fd5b50610363600480360381019061035e91906125fd565b610b76565b6040516103709190612655565b60405180910390f35b348015610384575f80fd5b5061038d610c1b565b60405161039a919061267d565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190612742565b610c21565b005b3480156103d6575f80fd5b506103f160048036038101906103ec919061276d565b610da1565b6040516103fe919061267d565b60405180910390f35b348015610412575f80fd5b5061041b610de6565b005b348015610428575f80fd5b50610443600480360381019061043e9190612798565b610e6d565b005b348015610450575f80fd5b50610459610f4c565b6040516104669190612729565b60405180910390f35b34801561047a575f80fd5b50610483610f74565b604051610490919061267d565b60405180910390f35b3480156104a4575f80fd5b506104ad610f7a565b6040516104ba919061254c565b60405180910390f35b3480156104ce575f80fd5b506104e960048036038101906104e491906125fd565b61100a565b6040516104f69190612655565b60405180910390f35b34801561050a575f80fd5b50610525600480360381019061052091906125fd565b6110ee565b6040516105329190612655565b60405180910390f35b348015610546575f80fd5b5061054f611110565b005b34801561055c575f80fd5b50610565611195565b6040516105729190612729565b60405180910390f35b348015610586575f80fd5b5061058f6111b9565b60405161059c919061267d565b60405180910390f35b3480156105b0575f80fd5b506105cb60048036038101906105c69190612811565b6111bf565b005b3480156105d8575f80fd5b506105e1611349565b6040516105ee919061267d565b60405180910390f35b348015610602575f80fd5b5061061d60048036038101906106189190612798565b61134f565b005b34801561062a575f80fd5b5061063361140e565b005b348015610640575f80fd5b5061065b6004803603810190610656919061283c565b611493565b604051610668919061267d565b60405180910390f35b34801561067c575f80fd5b50610685611515565b604051610692919061267d565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061276d565b61151b565b005b6106cb611611565b73ffffffffffffffffffffffffffffffffffffffff166106e9610f4c565b73ffffffffffffffffffffffffffffffffffffffff161461073f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610736906128c4565b60405180910390fd5b5f6008819055505f600781905550565b60606003805461075e9061290f565b80601f016020809104026020016040519081016040528092919081815260200182805461078a9061290f565b80156107d55780601f106107ac576101008083540402835291602001916107d5565b820191905f5260205f20905b8154815290600101906020018083116107b857829003601f168201915b5050505050905090565b5f806107e9611611565b90506107f6818585611618565b600191505092915050565b7f00000000000000000000000029f19ba375e45b3cce220d08375c82af6771271a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061088d575061085e610f4c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610895575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156108d8573d5f803e3d5ffd5b50565b5f600254905090565b5f806108ee611611565b90506108fb8582856117db565b610906858585611866565b60019150509392505050565b61091a611611565b73ffffffffffffffffffffffffffffffffffffffff16610938610f4c565b73ffffffffffffffffffffffffffffffffffffffff161461098e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610985906128c4565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109eb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f9190612953565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aac9190612953565b6040518363ffffffff1660e01b8152600401610ac992919061297e565b602060405180830381865afa158015610ae4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b089190612953565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6012905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80610b80611611565b9050610c1081858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c0b91906129d2565b611618565b600191505092915050565b600e5481565b7f00000000000000000000000029f19ba375e45b3cce220d08375c82af6771271a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cad5750610c7e610f4c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610cb5575f80fd5b610ce5620186a0610cd76001610cc96108db565b611d8290919063ffffffff16565b611d9790919063ffffffff16565b811015610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90612a75565b60405180910390fd5b610d556064610d476002610d396108db565b611d8290919063ffffffff16565b611d9790919063ffffffff16565b811115610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8e90612b03565b60405180910390fd5b8060098190555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610dee611611565b73ffffffffffffffffffffffffffffffffffffffff16610e0c610f4c565b73ffffffffffffffffffffffffffffffffffffffff1614610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e59906128c4565b60405180910390fd5b610e6b5f611dac565b565b610e75611611565b73ffffffffffffffffffffffffffffffffffffffff16610e93610f4c565b73ffffffffffffffffffffffffffffffffffffffff1614610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee0906128c4565b60405180910390fd5b60178211158015610efb575060178111155b610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190612b91565b60405180910390fd5b81600d8190555080600e819055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b606060048054610f899061290f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb59061290f565b80156110005780601f10610fd757610100808354040283529160200191611000565b820191905f5260205f20905b815481529060010190602001808311610fe357829003601f168201915b5050505050905090565b5f80611014611611565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050838110156110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc90612c1f565b60405180910390fd5b6110e28286868403611618565b60019250505092915050565b5f806110f8611611565b9050611105818585611866565b600191505092915050565b611118611611565b73ffffffffffffffffffffffffffffffffffffffff16611136610f4c565b73ffffffffffffffffffffffffffffffffffffffff161461118c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611183906128c4565b60405180910390fd5b5f600881905550565b7f00000000000000000000000029f19ba375e45b3cce220d08375c82af6771271a81565b60075481565b7f00000000000000000000000029f19ba375e45b3cce220d08375c82af6771271a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061124b575061121c610f4c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611253575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112a99190612729565b602060405180830381865afa1580156112c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e89190612c51565b6040518363ffffffff1660e01b8152600401611305929190612c7c565b6020604051808303815f875af1158015611321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113459190612ccd565b5050565b60095481565b7f00000000000000000000000029f19ba375e45b3cce220d08375c82af6771271a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806113db57506113ac610f4c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6113e3575f80fd5b600482111580156113f457505f8114155b6113fc575f80fd5b81600a8190555080600b819055505050565b611416611611565b73ffffffffffffffffffffffffffffffffffffffff16611434610f4c565b73ffffffffffffffffffffffffffffffffffffffff161461148a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611481906128c4565b60405180910390fd5b5f600781905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b611523611611565b73ffffffffffffffffffffffffffffffffffffffff16611541610f4c565b73ffffffffffffffffffffffffffffffffffffffff1614611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e906128c4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc90612d68565b60405180910390fd5b61160e81611dac565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90612df6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90612e84565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ce919061267d565b60405180910390a3505050565b5f6117e68484611493565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118605781811015611852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184990612eec565b60405180910390fd5b61185f8484848403611618565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90612f7a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193990613008565b60405180910390fd5b5f8111611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90613096565b60405180910390fd5b5f60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611a20575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611a7b5750805b611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab1906130fe565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490508080611b695750815b8015611b7657505f600754115b8015611b80575082155b15611bcb57600754841115611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc1906131b2565b60405180910390fd5b5b81158015611bda57505f600854115b8015611be4575082155b15611c425760085484611bf687610da1565b611c0091906129d2565b1115611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613266565b60405180910390fd5b5b600954611c4e30610da1565b10158015611c685750600f5f9054906101000a900460ff16155b8015611c715750815b8015611c7b575082155b8015611c8c5750611c8b84611e6f565b5b15611ccd576001600f5f6101000a81548160ff021916908315150217905550611cb3611eca565b5f600f5f6101000a81548160ff0219169083151502179055505b5f81611cdb57600e54611cdf565b600d545b90505f811115611d6e5783158015611d035750600f5f9054906101000a900460ff16155b8015611d1457508180611d135750825b5b15611d6d575f611d406064611d328489611d8290919063ffffffff16565b611d9790919063ffffffff16565b90505f811115611d5657611d55883083612248565b5b611d6981876124bd90919063ffffffff16565b9550505b5b611d79878787612248565b50505050505050565b5f8183611d8f9190613284565b905092915050565b5f8183611da491906132f2565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80600b5414611e8e57600b54600954611e8991906132f2565b611e90565b5f5b8210158015611ec357506002600c5f4381526020019081526020015f205f815480929190611ebd90613322565b91905055105b9050919050565b5f611ed430610da1565b90505f8103611ee35750612246565b600954811115611ef35760095490505b5f4790505f600267ffffffffffffffff811115611f1357611f12613369565b5b604051908082528060200260200182016040528015611f415781602001602082028036833780820191505090505b50905030815f81518110611f5857611f57613396565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120139190612953565b8160018151811061202757612026613396565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208030737a250d5630b4cf539739df2c5dacb4c659f2488d85611618565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016120d59594939291906134bc565b5f604051808303815f87803b1580156120ec575f80fd5b505af11580156120fe573d5f803e3d5ffd5b505050505f61211683476124bd90919063ffffffff16565b90505f6121406064612132600585611d8290919063ffffffff16565b611d9790919063ffffffff16565b905061215581836124bd90919063ffffffff16565b91507f00000000000000000000000029f19ba375e45b3cce220d08375c82af6771271a73ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156121ba573d5f803e3d5ffd5b50739955ba47bf8b7c6dbd613ea2695256eaaa7b191373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612212573d5f803e3d5ffd5b50807f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8760405160405180910390a250505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90613584565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231b90613612565b60405180910390fd5b61232f8383836124d2565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a9906136a0565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461244091906129d2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124a4919061267d565b60405180910390a36124b78484846124d7565b50505050565b5f81836124ca91906136be565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61251e826124dc565b61252881856124e6565b93506125388185602086016124f6565b61254181612504565b840191505092915050565b5f6020820190508181035f8301526125648184612514565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61259982612570565b9050919050565b6125a98161258f565b81146125b3575f80fd5b50565b5f813590506125c4816125a0565b92915050565b5f819050919050565b6125dc816125ca565b81146125e6575f80fd5b50565b5f813590506125f7816125d3565b92915050565b5f80604083850312156126135761261261256c565b5b5f612620858286016125b6565b9250506020612631858286016125e9565b9150509250929050565b5f8115159050919050565b61264f8161263b565b82525050565b5f6020820190506126685f830184612646565b92915050565b612677816125ca565b82525050565b5f6020820190506126905f83018461266e565b92915050565b5f805f606084860312156126ad576126ac61256c565b5b5f6126ba868287016125b6565b93505060206126cb868287016125b6565b92505060406126dc868287016125e9565b9150509250925092565b5f60ff82169050919050565b6126fb816126e6565b82525050565b5f6020820190506127145f8301846126f2565b92915050565b6127238161258f565b82525050565b5f60208201905061273c5f83018461271a565b92915050565b5f602082840312156127575761275661256c565b5b5f612764848285016125e9565b91505092915050565b5f602082840312156127825761278161256c565b5b5f61278f848285016125b6565b91505092915050565b5f80604083850312156127ae576127ad61256c565b5b5f6127bb858286016125e9565b92505060206127cc858286016125e9565b9150509250929050565b5f6127e08261258f565b9050919050565b6127f0816127d6565b81146127fa575f80fd5b50565b5f8135905061280b816127e7565b92915050565b5f602082840312156128265761282561256c565b5b5f612833848285016127fd565b91505092915050565b5f80604083850312156128525761285161256c565b5b5f61285f858286016125b6565b9250506020612870858286016125b6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128ae6020836124e6565b91506128b98261287a565b602082019050919050565b5f6020820190508181035f8301526128db816128a2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061292657607f821691505b602082108103612939576129386128e2565b5b50919050565b5f8151905061294d816125a0565b92915050565b5f602082840312156129685761296761256c565b5b5f6129758482850161293f565b91505092915050565b5f6040820190506129915f83018561271a565b61299e602083018461271a565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129dc826125ca565b91506129e7836125ca565b92508282019050808211156129ff576129fe6129a5565b5b92915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f612a5f6038836124e6565b9150612a6a82612a05565b604082019050919050565b5f6020820190508181035f830152612a8c81612a53565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612aed6035836124e6565b9150612af882612a93565b604082019050919050565b5f6020820190508181035f830152612b1a81612ae1565b9050919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f612b7b602e836124e6565b9150612b8682612b21565b604082019050919050565b5f6020820190508181035f830152612ba881612b6f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612c096025836124e6565b9150612c1482612baf565b604082019050919050565b5f6020820190508181035f830152612c3681612bfd565b9050919050565b5f81519050612c4b816125d3565b92915050565b5f60208284031215612c6657612c6561256c565b5b5f612c7384828501612c3d565b91505092915050565b5f604082019050612c8f5f83018561271a565b612c9c602083018461266e565b9392505050565b612cac8161263b565b8114612cb6575f80fd5b50565b5f81519050612cc781612ca3565b92915050565b5f60208284031215612ce257612ce161256c565b5b5f612cef84828501612cb9565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612d526026836124e6565b9150612d5d82612cf8565b604082019050919050565b5f6020820190508181035f830152612d7f81612d46565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612de06024836124e6565b9150612deb82612d86565b604082019050919050565b5f6020820190508181035f830152612e0d81612dd4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e6e6022836124e6565b9150612e7982612e14565b604082019050919050565b5f6020820190508181035f830152612e9b81612e62565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612ed6601d836124e6565b9150612ee182612ea2565b602082019050919050565b5f6020820190508181035f830152612f0381612eca565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612f64602b836124e6565b9150612f6f82612f0a565b604082019050919050565b5f6020820190508181035f830152612f9181612f58565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f612ff26029836124e6565b9150612ffd82612f98565b604082019050919050565b5f6020820190508181035f83015261301f81612fe6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f613080602a836124e6565b915061308b82613026565b604082019050919050565b5f6020820190508181035f8301526130ad81613074565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f6130e8601f836124e6565b91506130f3826130b4565b602082019050919050565b5f6020820190508181035f830152613115816130dc565b9050919050565b7f537761702076616c75652065786365656473206d6178207377617020616d6f755f8201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c60208201527f75652e0000000000000000000000000000000000000000000000000000000000604082015250565b5f61319c6043836124e6565b91506131a78261311c565b606082019050919050565b5f6020820190508181035f8301526131c981613190565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f6132506044836124e6565b915061325b826131d0565b606082019050919050565b5f6020820190508181035f83015261327d81613244565b9050919050565b5f61328e826125ca565b9150613299836125ca565b92508282026132a7816125ca565b915082820484148315176132be576132bd6129a5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132fc826125ca565b9150613307836125ca565b925082613317576133166132c5565b5b828204905092915050565b5f61332c826125ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361335e5761335d6129a5565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f6133ef6133ea6133e5846133c3565b6133cc565b6125ca565b9050919050565b6133ff816133d5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134378161258f565b82525050565b5f613448838361342e565b60208301905092915050565b5f602082019050919050565b5f61346a82613405565b613474818561340f565b935061347f8361341f565b805f5b838110156134af578151613496888261343d565b97506134a183613454565b925050600181019050613482565b5085935050505092915050565b5f60a0820190506134cf5f83018861266e565b6134dc60208301876133f6565b81810360408301526134ee8186613460565b90506134fd606083018561271a565b61350a608083018461266e565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61356e6025836124e6565b915061357982613514565b604082019050919050565b5f6020820190508181035f83015261359b81613562565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135fc6023836124e6565b9150613607826135a2565b604082019050919050565b5f6020820190508181035f830152613629816135f0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61368a6026836124e6565b915061369582613630565b604082019050919050565b5f6020820190508181035f8301526136b78161367e565b9050919050565b5f6136c8826125ca565b91506136d3836125ca565b92508282039050818111156136eb576136ea6129a5565b5b9291505056fea26469706673582212201749ef2aef19ad64cd0ad41b0e79a687e3bec484c5f646b12f92d0e0abb84f1564736f6c634300081a0033
Deployed Bytecode Sourcemap
9976:6335:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15304:113;;;;;;;;;;;;;:::i;:::-;;1849:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2827:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15880:181;;;;;;;;;;;;;:::i;:::-;;2188:112;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3046:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14433:145;;;;;;;;;;;;;:::i;:::-;;2081:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10167:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3369:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10531:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14586:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2310:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7520:107;;;;;;;;;;;;;:::i;:::-;;15024:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7283:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10283:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1963:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3627:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2451:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15425:84;;;;;;;;;;;;;:::i;:::-;;10196:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10246:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16069:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10318:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15607:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15517:82;;;;;;;;;;;;;:::i;:::-;;2662:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10495:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7637:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15304:113;7437:12;:10;:12::i;:::-;7426:23;;:7;:5;:7::i;:::-;:23;;;7418:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15378:1:::1;15362:13;:17;;;;15408:1;15390:15;:19;;;;15304:113::o:0;1849:104::-;1903:13;1938:5;1931:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1849:104;:::o;2827:209::-;2910:4;2929:13;2945:12;:10;:12::i;:::-;2929:28;;2970:32;2979:5;2986:7;2995:6;2970:8;:32::i;:::-;3022:4;3015:11;;;2827:209;;;;:::o;15880:181::-;15949:16;15935:30;;:10;:30;;;:55;;;;15983:7;:5;:7::i;:::-;15969:21;;:10;:21;;;15935:55;15927:64;;;;;;16010:10;16002:28;;:51;16031:21;16002:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15880:181::o;2188:112::-;2249:7;2278:12;;2271:19;;2188:112;:::o;3046:313::-;3185:4;3204:15;3222:12;:10;:12::i;:::-;3204:30;;3247:38;3263:4;3269:7;3278:6;3247:15;:38::i;:::-;3298:27;3308:4;3314:2;3318:6;3298:9;:27::i;:::-;3345:4;3338:11;;;3046:313;;;;;:::o;14433:145::-;7437:12;:10;:12::i;:::-;7426:23;;:7;:5;:7::i;:::-;:23;;;7418:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10115:42:::1;14513:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14495:44;;;14548:4;10115:42;14555:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14495:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14485:7;;:85;;;;;;;;;;;;;;;;;;14433:145::o:0;2081:97::-;2139:5;2166:2;2159:9;;2081:97;:::o;10167:22::-;;;;;;;;;;;;;:::o;3369:248::-;3457:4;3476:13;3492:12;:10;:12::i;:::-;3476:28;;3517:66;3526:5;3533:7;3572:10;3542:11;:18;3554:5;3542:18;;;;;;;;;;;;;;;:27;3561:7;3542:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3517:8;:66::i;:::-;3603:4;3596:11;;;3369:248;;;;:::o;10531:33::-;;;;:::o;14586:430::-;14678:16;14664:30;;:10;:30;;;:55;;;;14712:7;:5;:7::i;:::-;14698:21;;:10;:21;;;14664:55;14656:64;;;;;;14755:32;14780:6;14755:20;14773:1;14755:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:32;;;;:::i;:::-;14739:12;:48;;14731:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;14883:29;14908:3;14883:20;14901:1;14883:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14867:12;:45;;14859:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;14996:12;14981;:27;;;;14586:430;:::o;2310:131::-;2384:7;2413:9;:18;2423:7;2413:18;;;;;;;;;;;;;;;;2406:25;;2310:131;;;:::o;7520:107::-;7437:12;:10;:12::i;:::-;7426:23;;:7;:5;:7::i;:::-;:23;;;7418:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7587:30:::1;7614:1;7587:18;:30::i;:::-;7520:107::o:0;15024:272::-;7437:12;:10;:12::i;:::-;7426:23;;:7;:5;:7::i;:::-;:23;;;7418:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15136:2:::1;15123:9;:15;;:35;;;;;15156:2;15142:10;:16;;15123:35;15115:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15237:9;15220:14;:26;;;;15278:10;15257:18;:31;;;;15024:272:::0;;:::o;7283:91::-;7329:7;7358:6;;;;;;;;;;;7351:13;;7283:91;:::o;10283:28::-;;;;:::o;1963:108::-;2019:13;2054:7;2047:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1963:108;:::o;3627:454::-;3720:4;3739:13;3755:12;:10;:12::i;:::-;3739:28;;3780:24;3807:11;:18;3819:5;3807:18;;;;;;;;;;;;;;;:27;3826:7;3807:27;;;;;;;;;;;;;;;;3780:54;;3875:15;3855:16;:35;;3847:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3972:60;3981:5;3988:7;4016:15;3997:16;:34;3972:8;:60::i;:::-;4067:4;4060:11;;;;3627:454;;;;:::o;2451:201::-;2530:4;2549:13;2565:12;:10;:12::i;:::-;2549:28;;2590;2600:5;2607:2;2611:6;2590:9;:28::i;:::-;2638:4;2631:11;;;2451:201;;;;:::o;15425:84::-;7437:12;:10;:12::i;:::-;7426:23;;:7;:5;:7::i;:::-;:23;;;7418:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15500:1:::1;15484:13;:17;;;;15425:84::o:0;10196:41::-;;;:::o;10246:30::-;;;;:::o;16069:200::-;16150:16;16136:30;;:10;:30;;;:55;;;;16184:7;:5;:7::i;:::-;16170:21;;:10;:21;;;16136:55;16128:64;;;;;;16203:5;:14;;;16218:10;16230:5;:15;;;16254:4;16230:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16203:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16069:200;:::o;10318:27::-;;;;:::o;15607:265::-;15703:16;15689:30;;:10;:30;;;:55;;;;15737:7;:5;:7::i;:::-;15723:21;;:10;:21;;;15689:55;15681:64;;;;;;15774:1;15764:6;:11;;:26;;;;;15789:1;15779:6;:11;;15764:26;15756:35;;;;;;15823:6;15802:18;:27;;;;15858:6;15840:15;:24;;;;15607:265;;:::o;15517:82::-;7437:12;:10;:12::i;:::-;7426:23;;:7;:5;:7::i;:::-;:23;;;7418:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15590:1:::1;15572:15;:19;;;;15517:82::o:0;2662:155::-;2751:7;2780:11;:18;2792:5;2780:18;;;;;;;;;;;;;;;:27;2799:7;2780:27;;;;;;;;;;;;;;;;2773:34;;2662:155;;;;:::o;10495:29::-;;;;:::o;7637:207::-;7437:12;:10;:12::i;:::-;7426:23;;:7;:5;:7::i;:::-;:23;;;7418:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7748:1:::1;7728:22;;:8;:22;;::::0;7720:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7806:28;7825:8;7806:18;:28::i;:::-;7637:207:::0;:::o;241:102::-;294:7;323:10;316:17;;241:102;:::o;5850:398::-;6013:1;5996:19;;:5;:19;;;5988:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6096:1;6077:21;;:7;:21;;;6069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6182:6;6152:11;:18;6164:5;6152:18;;;;;;;;;;;;;;;:27;6171:7;6152:27;;;;;;;;;;;;;;;:36;;;;6222:7;6206:32;;6215:5;6206:32;;;6231:6;6206:32;;;;;;:::i;:::-;;;;;;;;5850:398;;;:::o;6258:477::-;6403:24;6430:25;6440:5;6447:7;6430:9;:25::i;:::-;6403:52;;6492:17;6472:16;:37;6468:258;;6556:6;6536:16;:26;;6528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6644:51;6653:5;6660:7;6688:6;6669:16;:25;6644:8;:51::i;:::-;6468:258;6390:345;6258:477;;;:::o;11526:1683::-;11674:1;11658:18;;:4;:18;;;11650:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11757:1;11743:16;;:2;:16;;;11735:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11833:1;11824:6;:10;11816:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11894:13;11910:15;:21;11926:4;11910:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;11935:15;:19;11951:2;11935:19;;;;;;;;;;;;;;;;;;;;;;;;;11910:44;11894:60;;11992:1;11973:21;;:7;;;;;;;;;;;:21;;;;:33;;;;11998:8;11973:33;11965:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;12055:11;12075:7;;;;;;;;;;;12069:13;;:2;:13;;;12055:27;;12093:10;12114:7;;;;;;;;;;;12106:15;;:4;:15;;;12093:28;;12139:5;:15;;;;12148:6;12139:15;12138:40;;;;;12177:1;12159:15;;:19;12138:40;:53;;;;;12183:8;12182:9;12138:53;12134:177;;;12224:15;;12214:6;:25;;12206:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;12134:177;12329:6;12328:7;:28;;;;;12355:1;12339:13;;:17;12328:28;:41;;;;;12361:8;12360:9;12328:41;12324:180;;;12418:13;;12408:6;12392:13;12402:2;12392:9;:13::i;:::-;:22;;;;:::i;:::-;:39;;12384:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;12324:180;12561:12;;12533:24;12551:4;12533:9;:24::i;:::-;:40;;:63;;;;;12589:7;;;;;;;;;;;12588:8;12533:63;:73;;;;;12600:6;12533:73;:97;;;;;12622:8;12621:9;12533:97;:123;;;;;12634:22;12649:6;12634:14;:22::i;:::-;12533:123;12517:252;;;12693:4;12683:7;;:14;;;;;;;;;;;;;;;;;;12712:15;:13;:15::i;:::-;12752:5;12742:7;;:15;;;;;;;;;;;;;;;;;;12517:252;12781:11;12795:5;:43;;12820:18;;12795:43;;;12803:14;;12795:43;12781:57;;12861:1;12855:3;:7;12851:305;;;12884:8;12883:9;:21;;;;;12897:7;;;;;;;;;;;12896:8;12883:21;:42;;;;;12909:5;:15;;;;12918:6;12909:15;12883:42;12879:266;;;12946:12;12961:24;12981:3;12961:15;12972:3;12961:6;:10;;:15;;;;:::i;:::-;:19;;:24;;;;:::i;:::-;12946:39;;13017:1;13010:4;:8;13006:77;;;13041:42;13057:4;13071;13078;13041:15;:42::i;:::-;13006:77;13113:16;13124:4;13113:6;:10;;:16;;;;:::i;:::-;13104:25;;12927:218;12879:266;12851:305;13168:33;13184:4;13190:2;13194:6;13168:15;:33::i;:::-;11639:1570;;;;11526:1683;;;:::o;8314:102::-;8372:7;8405:1;8401;:5;;;;:::i;:::-;8394:12;;8314:102;;;;:::o;8426:::-;8484:7;8517:1;8513;:5;;;;:::i;:::-;8506:12;;8426:102;;;;:::o;7854:199::-;7930:16;7949:6;;;;;;;;;;;7930:25;;7977:8;7968:6;;:17;;;;;;;;;;;;;;;;;;8034:8;8003:40;;8024:8;8003:40;;;;;;;;;;;;7917:136;7854:199;:::o;13217:195::-;13274:4;13328:1;13309:15;;:20;:57;;13351:15;;13336:12;;:30;;;;:::i;:::-;13309:57;;;13332:1;13309:57;13298:6;:69;;:104;;;;;13401:1;13371:11;:25;13383:12;13371:25;;;;;;;;;;;;:27;;;;;;;;;:::i;:::-;;;;;:31;13298:104;13291:111;;13217:195;;;:::o;13420:1005::-;13464:23;13490:24;13508:4;13490:9;:24::i;:::-;13464:50;;13548:1;13529:15;:20;13525:33;;13551:7;;;13525:33;13590:12;;13572:15;:30;13568:66;;;13622:12;;13604:30;;13568:66;13647:18;13668:21;13647:42;;13702:21;13740:1;13726:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13702:40;;13771:4;13753;13758:1;13753:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10115:42;13797:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13787:4;13792:1;13787:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;13824:58;13841:4;10115:42;13866:15;13824:8;:58::i;:::-;10115:42;13895:58;;;13968:15;13998:1;14014:4;14041;14061:15;13895:192;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14100:14;14117:37;14143:10;14117:21;:25;;:37;;;;:::i;:::-;14100:54;;14165:16;14184:22;14202:3;14184:13;14195:1;14184:6;:10;;:13;;;;:::i;:::-;:17;;:22;;;;:::i;:::-;14165:41;;14228:20;14239:8;14228:6;:10;;:20;;;;:::i;:::-;14219:29;;14267:16;14259:34;;:42;14294:6;14259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14320;14312:60;;:70;14373:8;14312:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14408:8;14400:17;;;;;;;;;;13453:972;;;;;13420:1005;:::o;4091:703::-;4248:1;4232:18;;:4;:18;;;4224:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4327:1;4313:16;;:2;:16;;;4305:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4384:38;4405:4;4411:2;4415:6;4384:20;:38::i;:::-;4437:19;4459:9;:15;4469:4;4459:15;;;;;;;;;;;;;;;;4437:37;;4510:6;4495:11;:21;;4487:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4631:6;4617:11;:20;4599:9;:15;4609:4;4599:15;;;;;;;;;;;;;;;:38;;;;4680:6;4663:9;:13;4673:2;4663:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4721:2;4706:26;;4715:4;4706:26;;;4725:6;4706:26;;;;;;:::i;:::-;;;;;;;;4747:37;4767:4;4773:2;4777:6;4747:19;:37::i;:::-;4211:583;4091:703;;;:::o;8202:102::-;8260:7;8293:1;8289;:5;;;;:::i;:::-;8282:12;;8202:102;;;;:::o;6745:133::-;;;;:::o;6888:132::-;;;;:::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;1323:117::-;1432:1;1429;1422: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:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:118::-;4833:24;4851:5;4833:24;:::i;:::-;4828:3;4821:37;4746:118;;:::o;4870:222::-;4963:4;5001:2;4990:9;4986:18;4978:26;;5014:71;5082:1;5071:9;5067:17;5058:6;5014:71;:::i;:::-;4870:222;;;;:::o;5098:329::-;5157:6;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5098:329;;;;:::o;5433:::-;5492:6;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5433:329;;;;:::o;5768:474::-;5836:6;5844;5893:2;5881:9;5872:7;5868:23;5864:32;5861:119;;;5899:79;;:::i;:::-;5861:119;6019:1;6044:53;6089:7;6080:6;6069:9;6065:22;6044:53;:::i;:::-;6034:63;;5990:117;6146:2;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6117:118;5768:474;;;;;:::o;6248:109::-;6298:7;6327:24;6345:5;6327:24;:::i;:::-;6316:35;;6248:109;;;:::o;6363:148::-;6449:37;6480:5;6449:37;:::i;:::-;6442:5;6439:48;6429:76;;6501:1;6498;6491:12;6429:76;6363:148;:::o;6517:165::-;6576:5;6614:6;6601:20;6592:29;;6630:46;6670:5;6630:46;:::i;:::-;6517:165;;;;:::o;6688:355::-;6760:6;6809:2;6797:9;6788:7;6784:23;6780:32;6777:119;;;6815:79;;:::i;:::-;6777:119;6935:1;6960:66;7018:7;7009:6;6998:9;6994:22;6960:66;:::i;:::-;6950:76;;6906:130;6688:355;;;;:::o;7049:474::-;7117:6;7125;7174:2;7162:9;7153:7;7149:23;7145:32;7142:119;;;7180:79;;:::i;:::-;7142:119;7300:1;7325:53;7370:7;7361:6;7350:9;7346:22;7325:53;:::i;:::-;7315:63;;7271:117;7427:2;7453:53;7498:7;7489:6;7478:9;7474:22;7453:53;:::i;:::-;7443:63;;7398:118;7049:474;;;;;:::o;7529:182::-;7669:34;7665:1;7657:6;7653:14;7646:58;7529:182;:::o;7717:366::-;7859:3;7880:67;7944:2;7939:3;7880:67;:::i;:::-;7873:74;;7956:93;8045:3;7956:93;:::i;:::-;8074:2;8069:3;8065:12;8058:19;;7717:366;;;:::o;8089:419::-;8255:4;8293:2;8282:9;8278:18;8270:26;;8342:9;8336:4;8332:20;8328:1;8317:9;8313:17;8306:47;8370:131;8496:4;8370:131;:::i;:::-;8362:139;;8089:419;;;:::o;8514:180::-;8562:77;8559:1;8552:88;8659:4;8656:1;8649:15;8683:4;8680:1;8673:15;8700:320;8744:6;8781:1;8775:4;8771:12;8761:22;;8828:1;8822:4;8818:12;8849:18;8839:81;;8905:4;8897:6;8893:17;8883:27;;8839:81;8967:2;8959:6;8956:14;8936:18;8933:38;8930:84;;8986:18;;:::i;:::-;8930:84;8751:269;8700:320;;;:::o;9026:143::-;9083:5;9114:6;9108:13;9099:22;;9130:33;9157:5;9130:33;:::i;:::-;9026:143;;;;:::o;9175:351::-;9245:6;9294:2;9282:9;9273:7;9269:23;9265:32;9262:119;;;9300:79;;:::i;:::-;9262:119;9420:1;9445:64;9501:7;9492:6;9481:9;9477:22;9445:64;:::i;:::-;9435:74;;9391:128;9175:351;;;;:::o;9532:332::-;9653:4;9691:2;9680:9;9676:18;9668:26;;9704:71;9772:1;9761:9;9757:17;9748:6;9704:71;:::i;:::-;9785:72;9853:2;9842:9;9838:18;9829:6;9785:72;:::i;:::-;9532:332;;;;;:::o;9870:180::-;9918:77;9915:1;9908:88;10015:4;10012:1;10005:15;10039:4;10036:1;10029:15;10056:191;10096:3;10115:20;10133:1;10115:20;:::i;:::-;10110:25;;10149:20;10167:1;10149:20;:::i;:::-;10144:25;;10192:1;10189;10185:9;10178:16;;10213:3;10210:1;10207:10;10204:36;;;10220:18;;:::i;:::-;10204:36;10056:191;;;;:::o;10253:243::-;10393:34;10389:1;10381:6;10377:14;10370:58;10462:26;10457:2;10449:6;10445:15;10438:51;10253:243;:::o;10502:366::-;10644:3;10665:67;10729:2;10724:3;10665:67;:::i;:::-;10658:74;;10741:93;10830:3;10741:93;:::i;:::-;10859:2;10854:3;10850:12;10843:19;;10502:366;;;:::o;10874:419::-;11040:4;11078:2;11067:9;11063:18;11055:26;;11127:9;11121:4;11117:20;11113:1;11102:9;11098:17;11091:47;11155:131;11281:4;11155:131;:::i;:::-;11147:139;;10874:419;;;:::o;11299:240::-;11439:34;11435:1;11427:6;11423:14;11416:58;11508:23;11503:2;11495:6;11491:15;11484:48;11299:240;:::o;11545:366::-;11687:3;11708:67;11772:2;11767:3;11708:67;:::i;:::-;11701:74;;11784:93;11873:3;11784:93;:::i;:::-;11902:2;11897:3;11893:12;11886:19;;11545:366;;;:::o;11917:419::-;12083:4;12121:2;12110:9;12106:18;12098:26;;12170:9;12164:4;12160:20;12156:1;12145:9;12141:17;12134:47;12198:131;12324:4;12198:131;:::i;:::-;12190:139;;11917:419;;;:::o;12342:233::-;12482:34;12478:1;12470:6;12466:14;12459:58;12551:16;12546:2;12538:6;12534:15;12527:41;12342:233;:::o;12581:366::-;12723:3;12744:67;12808:2;12803:3;12744:67;:::i;:::-;12737:74;;12820:93;12909:3;12820:93;:::i;:::-;12938:2;12933:3;12929:12;12922:19;;12581:366;;;:::o;12953:419::-;13119:4;13157:2;13146:9;13142:18;13134:26;;13206:9;13200:4;13196:20;13192:1;13181:9;13177:17;13170:47;13234:131;13360:4;13234:131;:::i;:::-;13226:139;;12953:419;;;:::o;13378:224::-;13518:34;13514:1;13506:6;13502:14;13495:58;13587:7;13582:2;13574:6;13570:15;13563:32;13378:224;:::o;13608:366::-;13750:3;13771:67;13835:2;13830:3;13771:67;:::i;:::-;13764:74;;13847:93;13936:3;13847:93;:::i;:::-;13965:2;13960:3;13956:12;13949:19;;13608:366;;;:::o;13980:419::-;14146:4;14184:2;14173:9;14169:18;14161:26;;14233:9;14227:4;14223:20;14219:1;14208:9;14204:17;14197:47;14261:131;14387:4;14261:131;:::i;:::-;14253:139;;13980:419;;;:::o;14405:143::-;14462:5;14493:6;14487:13;14478:22;;14509:33;14536:5;14509:33;:::i;:::-;14405:143;;;;:::o;14554:351::-;14624:6;14673:2;14661:9;14652:7;14648:23;14644:32;14641:119;;;14679:79;;:::i;:::-;14641:119;14799:1;14824:64;14880:7;14871:6;14860:9;14856:22;14824:64;:::i;:::-;14814:74;;14770:128;14554:351;;;;:::o;14911:332::-;15032:4;15070:2;15059:9;15055:18;15047:26;;15083:71;15151:1;15140:9;15136:17;15127:6;15083:71;:::i;:::-;15164:72;15232:2;15221:9;15217:18;15208:6;15164:72;:::i;:::-;14911:332;;;;;:::o;15249:116::-;15319:21;15334:5;15319:21;:::i;:::-;15312:5;15309:32;15299:60;;15355:1;15352;15345:12;15299:60;15249:116;:::o;15371:137::-;15425:5;15456:6;15450:13;15441:22;;15472:30;15496:5;15472:30;:::i;:::-;15371:137;;;;:::o;15514:345::-;15581:6;15630:2;15618:9;15609:7;15605:23;15601:32;15598:119;;;15636:79;;:::i;:::-;15598:119;15756:1;15781:61;15834:7;15825:6;15814:9;15810:22;15781:61;:::i;:::-;15771:71;;15727:125;15514:345;;;;:::o;15865:225::-;16005:34;16001:1;15993:6;15989:14;15982:58;16074:8;16069:2;16061:6;16057:15;16050:33;15865:225;:::o;16096:366::-;16238:3;16259:67;16323:2;16318:3;16259:67;:::i;:::-;16252:74;;16335:93;16424:3;16335:93;:::i;:::-;16453:2;16448:3;16444:12;16437:19;;16096:366;;;:::o;16468:419::-;16634:4;16672:2;16661:9;16657:18;16649:26;;16721:9;16715:4;16711:20;16707:1;16696:9;16692:17;16685:47;16749:131;16875:4;16749:131;:::i;:::-;16741:139;;16468:419;;;:::o;16893:223::-;17033:34;17029:1;17021:6;17017:14;17010:58;17102:6;17097:2;17089:6;17085:15;17078:31;16893:223;:::o;17122:366::-;17264:3;17285:67;17349:2;17344:3;17285:67;:::i;:::-;17278:74;;17361:93;17450:3;17361:93;:::i;:::-;17479:2;17474:3;17470:12;17463:19;;17122:366;;;:::o;17494:419::-;17660:4;17698:2;17687:9;17683:18;17675:26;;17747:9;17741:4;17737:20;17733:1;17722:9;17718:17;17711:47;17775:131;17901:4;17775:131;:::i;:::-;17767:139;;17494:419;;;:::o;17919:221::-;18059:34;18055:1;18047:6;18043:14;18036:58;18128:4;18123:2;18115:6;18111:15;18104:29;17919:221;:::o;18146:366::-;18288:3;18309:67;18373:2;18368:3;18309:67;:::i;:::-;18302:74;;18385:93;18474:3;18385:93;:::i;:::-;18503:2;18498:3;18494:12;18487:19;;18146:366;;;:::o;18518:419::-;18684:4;18722:2;18711:9;18707:18;18699:26;;18771:9;18765:4;18761:20;18757:1;18746:9;18742:17;18735:47;18799:131;18925:4;18799:131;:::i;:::-;18791:139;;18518:419;;;:::o;18943:179::-;19083:31;19079:1;19071:6;19067:14;19060:55;18943:179;:::o;19128:366::-;19270:3;19291:67;19355:2;19350:3;19291:67;:::i;:::-;19284:74;;19367:93;19456:3;19367:93;:::i;:::-;19485:2;19480:3;19476:12;19469:19;;19128:366;;;:::o;19500:419::-;19666:4;19704:2;19693:9;19689:18;19681:26;;19753:9;19747:4;19743:20;19739:1;19728:9;19724:17;19717:47;19781:131;19907:4;19781:131;:::i;:::-;19773:139;;19500:419;;;:::o;19925:230::-;20065:34;20061:1;20053:6;20049:14;20042:58;20134:13;20129:2;20121:6;20117:15;20110:38;19925:230;:::o;20161:366::-;20303:3;20324:67;20388:2;20383:3;20324:67;:::i;:::-;20317:74;;20400:93;20489:3;20400:93;:::i;:::-;20518:2;20513:3;20509:12;20502:19;;20161:366;;;:::o;20533:419::-;20699:4;20737:2;20726:9;20722:18;20714:26;;20786:9;20780:4;20776:20;20772:1;20761:9;20757:17;20750:47;20814:131;20940:4;20814:131;:::i;:::-;20806:139;;20533:419;;;:::o;20958:228::-;21098:34;21094:1;21086:6;21082:14;21075:58;21167:11;21162:2;21154:6;21150:15;21143:36;20958:228;:::o;21192:366::-;21334:3;21355:67;21419:2;21414:3;21355:67;:::i;:::-;21348:74;;21431:93;21520:3;21431:93;:::i;:::-;21549:2;21544:3;21540:12;21533:19;;21192:366;;;:::o;21564:419::-;21730:4;21768:2;21757:9;21753:18;21745:26;;21817:9;21811:4;21807:20;21803:1;21792:9;21788:17;21781:47;21845:131;21971:4;21845:131;:::i;:::-;21837:139;;21564:419;;;:::o;21989:229::-;22129:34;22125:1;22117:6;22113:14;22106:58;22198:12;22193:2;22185:6;22181:15;22174:37;21989:229;:::o;22224:366::-;22366:3;22387:67;22451:2;22446:3;22387:67;:::i;:::-;22380:74;;22463:93;22552:3;22463:93;:::i;:::-;22581:2;22576:3;22572:12;22565:19;;22224:366;;;:::o;22596:419::-;22762:4;22800:2;22789:9;22785:18;22777:26;;22849:9;22843:4;22839:20;22835:1;22824:9;22820:17;22813:47;22877:131;23003:4;22877:131;:::i;:::-;22869:139;;22596:419;;;:::o;23021:181::-;23161:33;23157:1;23149:6;23145:14;23138:57;23021:181;:::o;23208:366::-;23350:3;23371:67;23435:2;23430:3;23371:67;:::i;:::-;23364:74;;23447:93;23536:3;23447:93;:::i;:::-;23565:2;23560:3;23556:12;23549:19;;23208:366;;;:::o;23580:419::-;23746:4;23784:2;23773:9;23769:18;23761:26;;23833:9;23827:4;23823:20;23819:1;23808:9;23804:17;23797:47;23861:131;23987:4;23861:131;:::i;:::-;23853:139;;23580:419;;;:::o;24005:291::-;24145:34;24141:1;24133:6;24129:14;24122:58;24214:34;24209:2;24201:6;24197:15;24190:59;24283:5;24278:2;24270:6;24266:15;24259:30;24005:291;:::o;24302:366::-;24444:3;24465:67;24529:2;24524:3;24465:67;:::i;:::-;24458:74;;24541:93;24630:3;24541:93;:::i;:::-;24659:2;24654:3;24650:12;24643:19;;24302:366;;;:::o;24674:419::-;24840:4;24878:2;24867:9;24863:18;24855:26;;24927:9;24921:4;24917:20;24913:1;24902:9;24898:17;24891:47;24955:131;25081:4;24955:131;:::i;:::-;24947:139;;24674:419;;;:::o;25099:292::-;25239:34;25235:1;25227:6;25223:14;25216:58;25308:34;25303:2;25295:6;25291:15;25284:59;25377:6;25372:2;25364:6;25360:15;25353:31;25099:292;:::o;25397:366::-;25539:3;25560:67;25624:2;25619:3;25560:67;:::i;:::-;25553:74;;25636:93;25725:3;25636:93;:::i;:::-;25754:2;25749:3;25745:12;25738:19;;25397:366;;;:::o;25769:419::-;25935:4;25973:2;25962:9;25958:18;25950:26;;26022:9;26016:4;26012:20;26008:1;25997:9;25993:17;25986:47;26050:131;26176:4;26050:131;:::i;:::-;26042:139;;25769:419;;;:::o;26194:410::-;26234:7;26257:20;26275:1;26257:20;:::i;:::-;26252:25;;26291:20;26309:1;26291:20;:::i;:::-;26286:25;;26346:1;26343;26339:9;26368:30;26386:11;26368:30;:::i;:::-;26357:41;;26547:1;26538:7;26534:15;26531:1;26528:22;26508:1;26501:9;26481:83;26458:139;;26577:18;;:::i;:::-;26458:139;26242:362;26194:410;;;;:::o;26610:180::-;26658:77;26655:1;26648:88;26755:4;26752:1;26745:15;26779:4;26776:1;26769:15;26796:185;26836:1;26853:20;26871:1;26853:20;:::i;:::-;26848:25;;26887:20;26905:1;26887:20;:::i;:::-;26882:25;;26926:1;26916:35;;26931:18;;:::i;:::-;26916:35;26973:1;26970;26966:9;26961:14;;26796:185;;;;:::o;26987:233::-;27026:3;27049:24;27067:5;27049:24;:::i;:::-;27040:33;;27095:66;27088:5;27085:77;27082:103;;27165:18;;:::i;:::-;27082:103;27212:1;27205:5;27201:13;27194:20;;26987:233;;;:::o;27226:180::-;27274:77;27271:1;27264:88;27371:4;27368:1;27361:15;27395:4;27392:1;27385:15;27412:180;27460:77;27457:1;27450:88;27557:4;27554:1;27547:15;27581:4;27578:1;27571:15;27598:85;27643:7;27672:5;27661:16;;27598:85;;;:::o;27689:60::-;27717:3;27738:5;27731:12;;27689:60;;;:::o;27755:158::-;27813:9;27846:61;27864:42;27873:32;27899:5;27873:32;:::i;:::-;27864:42;:::i;:::-;27846:61;:::i;:::-;27833:74;;27755:158;;;:::o;27919:147::-;28014:45;28053:5;28014:45;:::i;:::-;28009:3;28002:58;27919:147;;:::o;28072:114::-;28139:6;28173:5;28167:12;28157:22;;28072:114;;;:::o;28192:184::-;28291:11;28325:6;28320:3;28313:19;28365:4;28360:3;28356:14;28341:29;;28192:184;;;;:::o;28382:132::-;28449:4;28472:3;28464:11;;28502:4;28497:3;28493:14;28485:22;;28382:132;;;:::o;28520:108::-;28597:24;28615:5;28597:24;:::i;:::-;28592:3;28585:37;28520:108;;:::o;28634:179::-;28703:10;28724:46;28766:3;28758:6;28724:46;:::i;:::-;28802:4;28797:3;28793:14;28779:28;;28634:179;;;;:::o;28819:113::-;28889:4;28921;28916:3;28912:14;28904:22;;28819:113;;;:::o;28968:732::-;29087:3;29116:54;29164:5;29116:54;:::i;:::-;29186:86;29265:6;29260:3;29186:86;:::i;:::-;29179:93;;29296:56;29346:5;29296:56;:::i;:::-;29375:7;29406:1;29391:284;29416:6;29413:1;29410:13;29391:284;;;29492:6;29486:13;29519:63;29578:3;29563:13;29519:63;:::i;:::-;29512:70;;29605:60;29658:6;29605:60;:::i;:::-;29595:70;;29451:224;29438:1;29435;29431:9;29426:14;;29391:284;;;29395:14;29691:3;29684:10;;29092:608;;;28968:732;;;;:::o;29706:831::-;29969:4;30007:3;29996:9;29992:19;29984:27;;30021:71;30089:1;30078:9;30074:17;30065:6;30021:71;:::i;:::-;30102:80;30178:2;30167:9;30163:18;30154:6;30102:80;:::i;:::-;30229:9;30223:4;30219:20;30214:2;30203:9;30199:18;30192:48;30257:108;30360:4;30351:6;30257:108;:::i;:::-;30249:116;;30375:72;30443:2;30432:9;30428:18;30419:6;30375:72;:::i;:::-;30457:73;30525:3;30514:9;30510:19;30501:6;30457:73;:::i;:::-;29706:831;;;;;;;;:::o;30543:224::-;30683:34;30679:1;30671:6;30667:14;30660:58;30752:7;30747:2;30739:6;30735:15;30728:32;30543:224;:::o;30773:366::-;30915:3;30936:67;31000:2;30995:3;30936:67;:::i;:::-;30929:74;;31012:93;31101:3;31012:93;:::i;:::-;31130:2;31125:3;31121:12;31114:19;;30773:366;;;:::o;31145:419::-;31311:4;31349:2;31338:9;31334:18;31326:26;;31398:9;31392:4;31388:20;31384:1;31373:9;31369:17;31362:47;31426:131;31552:4;31426:131;:::i;:::-;31418:139;;31145:419;;;:::o;31570:222::-;31710:34;31706:1;31698:6;31694:14;31687:58;31779:5;31774:2;31766:6;31762:15;31755:30;31570:222;:::o;31798:366::-;31940:3;31961:67;32025:2;32020:3;31961:67;:::i;:::-;31954:74;;32037:93;32126:3;32037:93;:::i;:::-;32155:2;32150:3;32146:12;32139:19;;31798:366;;;:::o;32170:419::-;32336:4;32374:2;32363:9;32359:18;32351:26;;32423:9;32417:4;32413:20;32409:1;32398:9;32394:17;32387:47;32451:131;32577:4;32451:131;:::i;:::-;32443:139;;32170:419;;;:::o;32595:225::-;32735:34;32731:1;32723:6;32719:14;32712:58;32804:8;32799:2;32791:6;32787:15;32780:33;32595:225;:::o;32826:366::-;32968:3;32989:67;33053:2;33048:3;32989:67;:::i;:::-;32982:74;;33065:93;33154:3;33065:93;:::i;:::-;33183:2;33178:3;33174:12;33167:19;;32826:366;;;:::o;33198:419::-;33364:4;33402:2;33391:9;33387:18;33379:26;;33451:9;33445:4;33441:20;33437:1;33426:9;33422:17;33415:47;33479:131;33605:4;33479:131;:::i;:::-;33471:139;;33198:419;;;:::o;33623:194::-;33663:4;33683:20;33701:1;33683:20;:::i;:::-;33678:25;;33717:20;33735:1;33717:20;:::i;:::-;33712:25;;33761:1;33758;33754:9;33746:17;;33785:1;33779:4;33776:11;33773:37;;;33790:18;;:::i;:::-;33773:37;33623:194;;;;:::o
Swarm Source
ipfs://1749ef2aef19ad64cd0ad41b0e79a687e3bec484c5f646b12f92d0e0abb84f15
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.