Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 507 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24121626 | 7 hrs ago | IN | 0 ETH | 0.0000043 | ||||
| Approve | 24121202 | 8 hrs ago | IN | 0 ETH | 0.00001304 | ||||
| Approve | 24120626 | 10 hrs ago | IN | 0 ETH | 0.00000716 | ||||
| Approve | 24120447 | 11 hrs ago | IN | 0 ETH | 0.0000079 | ||||
| Approve | 24120021 | 12 hrs ago | IN | 0 ETH | 0.00000322 | ||||
| Approve | 24120014 | 12 hrs ago | IN | 0 ETH | 0.00002615 | ||||
| Approve | 24120003 | 12 hrs ago | IN | 0 ETH | 0.00001643 | ||||
| Approve | 24119955 | 12 hrs ago | IN | 0 ETH | 0.00000745 | ||||
| Approve | 24119777 | 13 hrs ago | IN | 0 ETH | 0.00000822 | ||||
| Approve | 24119586 | 13 hrs ago | IN | 0 ETH | 0.00000798 | ||||
| Approve | 24119549 | 14 hrs ago | IN | 0 ETH | 0.00000373 | ||||
| Approve | 24119542 | 14 hrs ago | IN | 0 ETH | 0.00000661 | ||||
| Approve | 24119006 | 15 hrs ago | IN | 0 ETH | 0.00000678 | ||||
| Approve | 24118989 | 16 hrs ago | IN | 0 ETH | 0.00000741 | ||||
| Approve | 24118695 | 16 hrs ago | IN | 0 ETH | 0.00023529 | ||||
| Transfer | 24118619 | 17 hrs ago | IN | 0 ETH | 0.00003839 | ||||
| Approve | 24118261 | 18 hrs ago | IN | 0 ETH | 0.00005682 | ||||
| Approve | 24118184 | 18 hrs ago | IN | 0 ETH | 0.00009598 | ||||
| Approve | 24118157 | 18 hrs ago | IN | 0 ETH | 0.00006018 | ||||
| Approve | 24118109 | 18 hrs ago | IN | 0 ETH | 0.00001217 | ||||
| Approve | 24118085 | 19 hrs ago | IN | 0 ETH | 0.00000632 | ||||
| Approve | 24117988 | 19 hrs ago | IN | 0 ETH | 0.00002674 | ||||
| Approve | 24117012 | 22 hrs ago | IN | 0 ETH | 0.00002553 | ||||
| Approve | 24116981 | 22 hrs ago | IN | 0 ETH | 0.00000218 | ||||
| Approve | 24116296 | 25 hrs ago | IN | 0 ETH | 0.00000548 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Add Liquidity ET... | 24121630 | 7 hrs ago | 0.00186548 ETH | ||||
| Transfer | 24121630 | 7 hrs ago | 0.00186548 ETH | ||||
| Swap Exact ETH F... | 24121630 | 7 hrs ago | 0.00620452 ETH | ||||
| Transfer | 24121630 | 7 hrs ago | 0.00620452 ETH | ||||
| Add Liquidity ET... | 24121044 | 9 hrs ago | 0.00229873 ETH | ||||
| Transfer | 24121044 | 9 hrs ago | 0.00229873 ETH | ||||
| Swap Exact ETH F... | 24121044 | 9 hrs ago | 0.00764359 ETH | ||||
| Transfer | 24121044 | 9 hrs ago | 0.00764359 ETH | ||||
| Add Liquidity ET... | 24120988 | 9 hrs ago | 0.00172065 ETH | ||||
| Transfer | 24120988 | 9 hrs ago | 0.00172065 ETH | ||||
| Swap Exact ETH F... | 24120988 | 9 hrs ago | 0.00572329 ETH | ||||
| Transfer | 24120988 | 9 hrs ago | 0.00572329 ETH | ||||
| Add Liquidity ET... | 24120075 | 12 hrs ago | 0.00224767 ETH | ||||
| Transfer | 24120075 | 12 hrs ago | 0.00224767 ETH | ||||
| Swap Exact ETH F... | 24120075 | 12 hrs ago | 0.00747397 ETH | ||||
| Transfer | 24120075 | 12 hrs ago | 0.00747397 ETH | ||||
| Swap Exact ETH F... | 24120074 | 12 hrs ago | 0.00254432 ETH | ||||
| Transfer | 24120074 | 12 hrs ago | 0.00254432 ETH | ||||
| Swap Exact ETH F... | 24120071 | 12 hrs ago | 0.00254432 ETH | ||||
| Transfer | 24120071 | 12 hrs ago | 0.00254432 ETH | ||||
| Swap Exact ETH F... | 24120071 | 12 hrs ago | 0.00747397 ETH | ||||
| Transfer | 24120071 | 12 hrs ago | 0.00747397 ETH | ||||
| Add Liquidity ET... | 24119958 | 12 hrs ago | 0.00345491 ETH | ||||
| Transfer | 24119958 | 12 hrs ago | 0.00345491 ETH | ||||
| Swap Exact ETH F... | 24119958 | 12 hrs ago | 0.01148153 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EtherBall
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-12-25
*/
/*
EtherBall ❄️⚪️
A snowball-powered token on Ethereum.
3% buy / 3% sell tax.
Every sell fuels the system:
• Buyback & burn
• Auto-liquidity added
• LP tokens burned forever
Volume compounds the ball.
https://t.me/EtherBall_ERC
https://x.com/EtherBall_ERC
*/
// SPDX-License-Identifier: UNLICENSE
pragma solidity 0.8.30;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, 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 sender, address recipient, 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);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
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);
}
contract EtherBall is Context, IERC20, Ownable {
using SafeMath for uint256;
// ERC20 mappings
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
// Fee exemptions and protections
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private _isExcludedFromMaxTx;
mapping (address => bool) private bots;
mapping (address => bool) private _blockedAddresses;
address payable private _taxWallet;
address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
// Tax configuration - FIXED 3/3
uint256 public buyTax = 3; // 3% fixed
uint256 public sellTax = 3; // 3% fixed
// Tax splits (in basis points - 10000 = 100%)
uint256 public buybackBps = 5000; // 50%
uint256 public burnBps = 2000; // 20%
uint256 public lpBps = 3000; // 30% LP
// Token configuration
uint8 private constant _decimals = 9;
uint256 private constant _tTotal = 420690000000 * 10**_decimals;
string private constant _name = unicode"EtherBall";
string private constant _symbol = unicode"ETHERBALL";
// Trading limits
uint256 public _maxTxAmount = 8400000000 * 10**_decimals;
uint256 public _maxWalletSize = 8400000000 * 10**_decimals;
uint256 public _taxSwapThreshold = 1051725000 * 10**_decimals;
uint256 public _maxTaxSwap = 1051725000 * 10**_decimals;
// Uniswap
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
// State variables
bool private tradingOpen = false;
bool private inSwap = false;
bool private swapEnabled = false;
bool private _initialDistributionDone = false;
// Anti-dump protection
uint256 private sellCount = 0;
uint256 private lastSellBlock = 0;
// Events
event MaxTxAmountUpdated(uint _maxTxAmount);
event TaxUpdated(uint256 buyTax, uint256 sellTax);
event SplitsUpdated(uint256 buybackBps, uint256 burnBps, uint256 lpBps);
event BuybackExecuted(uint256 ethAmount, uint256 tokensBurned);
event TradingEnabled();
event InitialDistributionDone(uint256 contractTokens, uint256 ownerTokens);
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor () payable {
_taxWallet = payable(_msgSender());
// Tokens Owner
_balances[_msgSender()] = _tTotal;
// Exclude Fees
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_taxWallet] = true;
// Exclude TX
_isExcludedFromMaxTx[owner()] = true;
_isExcludedFromMaxTx[address(this)] = true;
_isExcludedFromMaxTx[_taxWallet] = true;
emit Transfer(address(0), _msgSender(), _tTotal);
}
// ========== DISTRIBUTION ==========
function initialDistribution() external onlyOwner {
require(!_initialDistributionDone, "Distribution already done");
uint256 ownerAmount = _tTotal.mul(15).div(100);
uint256 contractAmount = _tTotal.sub(ownerAmount);
// Transfer tokens owner to contract
_balances[_msgSender()] = _balances[_msgSender()].sub(contractAmount);
_balances[address(this)] = _balances[address(this)].add(contractAmount);
emit Transfer(_msgSender(), address(this), contractAmount);
_initialDistributionDone = true;
emit InitialDistributionDone(contractAmount, ownerAmount);
}
// ========== ERC20 Functions ==========
function name() public pure returns (string memory) {
return _name;
}
function symbol() public pure returns (string memory) {
return _symbol;
}
function decimals() public pure returns (uint8) {
return _decimals;
}
function totalSupply() public pure override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from zero address");
require(spender != address(0), "ERC20: approve to zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
// ========== Core Transfer Logic ==========
function _transfer(address from, address to, uint256 amount) private {
require(from != address(0), "ERC20: transfer from zero address");
require(to != address(0), "ERC20: transfer to zero address");
require(amount > 0, "Transfer amount must be > 0");
require(!_blockedAddresses[from], "Sender address is blocked");
require(!_blockedAddresses[to], "Recipient address is blocked");
// Check trading status
if (from != owner() && to != owner() && from != address(this) && to != address(this)) {
require(tradingOpen, "Trading not open yet");
}
uint256 taxAmount = 0;
// Check for bots
if (from != owner() && to != owner()) {
require(!bots[from] && !bots[to], "Bot detected");
// Apply max transaction limit (exclude owner and contract)
if (!_isExcludedFromMaxTx[from] && !_isExcludedFromMaxTx[to]) {
require(amount <= _maxTxAmount, "Exceeds max transaction amount");
}
// BUY - 3% tax
if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds max wallet size");
taxAmount = amount.mul(buyTax).div(100);
}
// SELL - 3% tax
if (to == uniswapV2Pair && from != address(this) && !_isExcludedFromFee[from]) {
taxAmount = amount.mul(sellTax).div(100);
}
// Swap trigger on sells (anti-dump: max 3 per block)
uint256 contractTokenBalance = balanceOf(address(this));
if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance >= _taxSwapThreshold) {
if (block.number > lastSellBlock) {
sellCount = 0;
}
require(sellCount < 3, "Only 3 sells per block!");
uint256 tokensToProcess = min(amount, min(contractTokenBalance, _maxTaxSwap));
if (tokensToProcess > 0) {
processTaxes(tokensToProcess);
}
sellCount++;
lastSellBlock = block.number;
}
}
// Apply tax
if (taxAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(taxAmount);
emit Transfer(from, address(this), taxAmount);
}
// Transfer net amount
uint256 transferAmount = amount.sub(taxAmount);
_balances[from] = _balances[from].sub(amount);
_balances[to] = _balances[to].add(transferAmount);
emit Transfer(from, to, transferAmount);
}
function min(uint256 a, uint256 b) private pure returns (uint256) {
return a < b ? a : b;
}
// ========== Tax Processing: Buyback + Burn + LP Burn ==========
function processTaxes(uint256 tokenAmount) private lockTheSwap {
require(tokenAmount > 0, "No tokens to process");
uint256 contractBal = balanceOf(address(this));
require(contractBal >= tokenAmount, "Insufficient contract balance");
// Verify splits sum to 10000 (100%)
require(buybackBps.add(burnBps).add(lpBps) == 10000, "Invalid tax splits");
// 1) Direct burn (30%)
uint256 tokensToBurn = tokenAmount.mul(burnBps).div(10000);
if (tokensToBurn > 0) {
_burnTokens(tokensToBurn);
}
uint256 remaining = tokenAmount.sub(tokensToBurn);
if (remaining == 0) return;
// 2) Split remaining between buyback (50%) and LP (20%)
uint256 totalBuybackAndLP = buybackBps.add(lpBps);
require(totalBuybackAndLP > 0, "No allocation for buyback/LP");
uint256 tokensForBuyback = remaining.mul(buybackBps).div(totalBuybackAndLP);
uint256 tokensForLP = remaining.sub(tokensForBuyback);
// 3) Process buyback (swap tokens -> ETH -> tokens -> DEAD)
if (tokensForBuyback > 0) {
uint256 ethForBuyback = _swapTokensForEth(tokensForBuyback);
if (ethForBuyback > 0) {
_buybackAndBurn(ethForBuyback);
}
}
// 4) Process LP (swap half for ETH, add liquidity to DEAD)
if (tokensForLP > 0) {
_processLP(tokensForLP);
}
}
function _burnTokens(uint256 amount) private {
require(amount > 0, "Burn amount must be > 0");
_balances[address(this)] = _balances[address(this)].sub(amount);
_balances[DEAD] = _balances[DEAD].add(amount);
emit Transfer(address(this), DEAD, amount);
}
function _swapTokensForEth(uint256 tokenAmount) private returns (uint256) {
require(tokenAmount > 0, "Token amount must be > 0");
uint256 initialEthBalance = address(this).balance;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
) {
return address(this).balance.sub(initialEthBalance);
} catch {
return 0;
}
}
function _buybackAndBurn(uint256 ethAmount) private {
require(ethAmount > 0, "ETH amount must be > 0");
require(ethAmount <= address(this).balance, "Insufficient ETH balance");
address[] memory path = new address[](2);
path[0] = uniswapV2Router.WETH();
path[1] = address(this);
uint256 initialTokenBalance = balanceOf(DEAD);
try uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
0,
path,
DEAD,
block.timestamp
) {
uint256 tokensBurned = balanceOf(DEAD).sub(initialTokenBalance);
emit BuybackExecuted(ethAmount, tokensBurned);
} catch {
// If buyback fails, keep ETH in contract for next attempt
}
}
function _processLP(uint256 tokenAmount) private {
require(tokenAmount > 0, "Token amount must be > 0");
// Swap half for ETH
uint256 tokensToSwap = tokenAmount.div(2);
uint256 tokensForLiquidity = tokenAmount.sub(tokensToSwap);
uint256 ethFromSwap = _swapTokensForEth(tokensToSwap);
if (ethFromSwap > 0 && tokensForLiquidity > 0) {
_approve(address(this), address(uniswapV2Router), tokensForLiquidity);
try uniswapV2Router.addLiquidityETH{value: ethFromSwap}(
address(this),
tokensForLiquidity,
0,
0,
DEAD, // LP tokens van a DEAD (quemados)
block.timestamp
) {
// Liquidity added successfully
} catch {
// If LP addition fails, tokens and ETH remain in contract
}
}
}
// ========== Owner Functions ==========
function removeLimits() external onlyOwner {
_maxTxAmount = _tTotal;
_maxWalletSize = _tTotal;
emit MaxTxAmountUpdated(_tTotal);
}
function setMaxTxAmount(uint256 maxTx) external onlyOwner {
require(maxTx >= _tTotal.div(1000), "Max TX too low"); // Min 0.1%
_maxTxAmount = maxTx;
}
function setMaxWalletSize(uint256 maxWallet) external onlyOwner {
require(maxWallet >= _tTotal.div(1000), "Max wallet too low"); // Min 0.1%
_maxWalletSize = maxWallet;
}
function setTax(uint256 _buy, uint256 _sell) external onlyOwner {
require(_buy <= 10 && _sell <= 10, "Tax too high (max 10%)");
buyTax = _buy;
sellTax = _sell;
emit TaxUpdated(_buy, _sell);
}
function setSplits(uint256 _buybackBps, uint256 _burnBps, uint256 _lpBps) external onlyOwner {
require(_buybackBps.add(_burnBps).add(_lpBps) == 10000, "Splits must sum to 10000");
buybackBps = _buybackBps;
burnBps = _burnBps;
lpBps = _lpBps;
emit SplitsUpdated(_buybackBps, _burnBps, _lpBps);
}
function setSwapThresholds(uint256 threshold, uint256 maxSwap) external onlyOwner {
require(threshold <= _tTotal.div(100), "Threshold too high (max 1%)");
require(maxSwap <= _tTotal.div(100), "Max swap too high (max 1%)");
_taxSwapThreshold = threshold;
_maxTaxSwap = maxSwap;
}
// ========== Bot and Address Management ==========
function addBots(address[] memory bots_) public onlyOwner {
for (uint i = 0; i < bots_.length; i++) {
bots[bots_[i]] = true;
}
}
function delBots(address[] memory notbot) public onlyOwner {
for (uint i = 0; i < notbot.length; i++) {
bots[notbot[i]] = false;
}
}
function isBot(address a) public view returns (bool) {
return bots[a];
}
function blockAddress(address a, bool blocked) external onlyOwner {
_blockedAddresses[a] = blocked;
}
function isAddressBlocked(address a) public view returns (bool) {
return _blockedAddresses[a];
}
function excludeFromFee(address account, bool excluded) external onlyOwner {
_isExcludedFromFee[account] = excluded;
}
function excludeFromMaxTx(address account, bool excluded) external onlyOwner {
_isExcludedFromMaxTx[account] = excluded;
}
function isExcludedFromFee(address account) public view returns (bool) {
return _isExcludedFromFee[account];
}
function isExcludedFromMaxTx(address account) public view returns (bool) {
return _isExcludedFromMaxTx[account];
}
// ========== Trading Enable ==========
function enableTrading() external onlyOwner {
require(!tradingOpen, "Trading already open");
require(_initialDistributionDone, "Initial distribution not done");
require(balanceOf(address(this)) > 0, "Contract has no tokens for liquidity");
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
//
_isExcludedFromFee[address(uniswapV2Router)] = true;
//
_approve(address(this), address(uniswapV2Router), balanceOf(address(this)));
//
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
.createPair(address(this), uniswapV2Router.WETH());
//
_isExcludedFromFee[uniswapV2Pair] = true;
_isExcludedFromMaxTx[uniswapV2Pair] = true;
//
uint256 contractTokenBalance = balanceOf(address(this));
uint256 ethForLiquidity = address(this).balance;
require(ethForLiquidity > 0, "No ETH for liquidity");
uniswapV2Router.addLiquidityETH{value: ethForLiquidity}(
address(this),
contractTokenBalance,
0,
0,
owner(),
block.timestamp
);
//
_isExcludedFromFee[uniswapV2Pair] = false;
_isExcludedFromMaxTx[uniswapV2Pair] = false;
//
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
swapEnabled = true;
tradingOpen = true;
emit TradingEnabled();
}
// ========== View Functions ==========
function getContractInfo() external view returns (
uint256 contractTokenBalance,
uint256 contractEthBalance,
uint256 deadBalance,
uint256 totalBurned
) {
return (
balanceOf(address(this)),
address(this).balance,
balanceOf(DEAD),
balanceOf(DEAD)
);
}
function getTaxInfo() external view returns (
uint256 buyTaxPercent,
uint256 sellTaxPercent,
uint256 buybackPercent,
uint256 burnPercent,
uint256 lpPercent
) {
return (
buyTax,
sellTax,
buybackBps.div(100),
burnBps.div(100),
lpBps.div(100)
);
}
function getTradingInfo() external view returns (
bool isTradingOpen,
bool isSwapEnabled,
uint256 maxTxAmount,
uint256 maxWalletSize
) {
return (
tradingOpen,
swapEnabled,
_maxTxAmount,
_maxWalletSize
);
}
// ========== Manual Functions ==========
receive() external payable {}
function manualProcess() external {
require(_msgSender() == _taxWallet || _msgSender() == owner(), "Not authorized");
uint256 tokenBalance = balanceOf(address(this));
if (tokenBalance > 0) {
processTaxes(min(tokenBalance, _maxTaxSwap));
}
}
function manualBuyback(uint256 ethAmount) external {
require(_msgSender() == _taxWallet, "Not tax wallet");
require(ethAmount <= address(this).balance, "Insufficient ETH");
require(ethAmount > 0, "ETH amount must be > 0");
_buybackAndBurn(ethAmount);
}
function manualBurn(uint256 tokenAmount) external {
require(_msgSender() == _taxWallet, "Not tax wallet");
require(tokenAmount <= balanceOf(address(this)), "Insufficient tokens");
require(tokenAmount > 0, "Token amount must be > 0");
_burnTokens(tokenAmount);
}
function withdrawStuckETH() external {
require(_msgSender() == _taxWallet, "Not tax wallet");
uint256 contractETHBalance = address(this).balance;
require(contractETHBalance > 0, "No ETH to withdraw");
payable(_taxWallet).transfer(contractETHBalance);
}
function withdrawStuckTokens(address tokenAddress) external {
require(_msgSender() == _taxWallet, "Not tax wallet");
require(tokenAddress != address(this), "Cannot withdraw own token");
IERC20 token = IERC20(tokenAddress);
uint256 balance = token.balanceOf(address(this));
require(balance > 0, "No tokens to withdraw");
token.transfer(_taxWallet, balance);
}
// Emergency function to rescue tokens sent by mistake
function rescueToken(address tokenAddress, uint256 amount) external {
require(_msgSender() == _taxWallet, "Not tax wallet");
require(tokenAddress != address(this), "Cannot rescue own token");
IERC20(tokenAddress).transfer(_taxWallet, amount);
}
}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":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensBurned","type":"uint256"}],"name":"BuybackExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"contractTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ownerTokens","type":"uint256"}],"name":"InitialDistributionDone","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":false,"internalType":"uint256","name":"buybackBps","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnBps","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lpBps","type":"uint256"}],"name":"SplitsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","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":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"blockAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContractInfo","outputs":[{"internalType":"uint256","name":"contractTokenBalance","type":"uint256"},{"internalType":"uint256","name":"contractEthBalance","type":"uint256"},{"internalType":"uint256","name":"deadBalance","type":"uint256"},{"internalType":"uint256","name":"totalBurned","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxInfo","outputs":[{"internalType":"uint256","name":"buyTaxPercent","type":"uint256"},{"internalType":"uint256","name":"sellTaxPercent","type":"uint256"},{"internalType":"uint256","name":"buybackPercent","type":"uint256"},{"internalType":"uint256","name":"burnPercent","type":"uint256"},{"internalType":"uint256","name":"lpPercent","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTradingInfo","outputs":[{"internalType":"bool","name":"isTradingOpen","type":"bool"},{"internalType":"bool","name":"isSwapEnabled","type":"bool"},{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isAddressBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"manualBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"manualBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualProcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buybackBps","type":"uint256"},{"internalType":"uint256","name":"_burnBps","type":"uint256"},{"internalType":"uint256","name":"_lpBps","type":"uint256"}],"name":"setSplits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"maxSwap","type":"uint256"}],"name":"setSwapThresholds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405260036008556003600955611388600a556107d0600b55610bb8600c556009600a61002e9190610366565b61003d906401f4add40061037b565b600d5561004c6009600a610366565b61005b906401f4add40061037b565b600e5561006a6009600a610366565b61007890633eb00cc861037b565b600f556100876009600a610366565b61009590633eb00cc861037b565b6010556012805463ffffffff60a01b191690555f6013819055601481905580546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600780546001600160a01b031916331790556101106009600a610366565b61011f906461f313f88061037b565b335f9081526001602081905260408220929092556003906101475f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556007549091168352908220805490931681179092556004906101b45f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260049093528183208054851660019081179091556007549091168352912080549092161790556102113390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6102486009600a610366565b610257906461f313f88061037b565b60405190815260200160405180910390a3610392565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156102bc578085048111156102a0576102a061026d565b60018416156102ae57908102905b60019390931c928002610285565b935093915050565b5f826102d257506001610360565b816102de57505f610360565b81600181146102f457600281146102fe5761031a565b6001915050610360565b60ff84111561030f5761030f61026d565b50506001821b610360565b5060208310610133831016604e8410600b841016171561033d575081810a610360565b6103495f198484610281565b805f190482111561035c5761035c61026d565b0290505b92915050565b5f61037460ff8416836102c4565b9392505050565b80820281158282048414176103605761036061026d565b6136448061039f5f395ff3fe6080604052600436106102a8575f3560e01c8063715018a61161016f578063bf474bed116100d8578063dd62ed3e11610092578063ea1644d51161006d578063ea1644d5146108cd578063ec0d4982146108ec578063ec28438a1461090b578063f5648a4f1461092a575f5ffd5b8063dd62ed3e14610833578063df8408fe14610877578063e7dad4f914610896575f5ffd5b8063bf474bed1461078d578063c480512e146107a2578063cb963728146107c1578063cc1776d3146107e0578063d34628cc146107f5578063d4c989d314610814575f5ffd5b80638f9a55c0116101295780638f9a55c0146106e057806395645e34146106f557806395d89b4114610709578063a9059cbb1461073a578063baa9f0fa14610759578063bbfad5b51461076e575f5ffd5b8063715018a61461063f578063751039fc146106535780637cc1f867146106675780637d1db4a51461069b5780638a8c523c146106b05780638da5cb5b146106c4575f5ffd5b806333f3d6281161021157806353deb3d6116101cb57806353deb3d6146105815780635d41f8e414610596578063658c27a9146105ab578063667f6526146105e2578063700cd48e1461060157806370a0823114610620575f5ffd5b806333f3d628146104ac5780633bbac579146104cb57806349bd5a5e146105025780634b2c8998146105215780634f7041a5146105355780635342acb41461054a575f5ffd5b806322a62e1e1161026257806322a62e1e146103a457806323b63585146103e057806323b872dd14610401578063276ef78914610420578063313ce5671461047257806331c2d8471461048d575f5ffd5b806303fd2a45146102b357806306fdde03146102e5578063095ea7b31461031f5780630faee56f1461034e5780631694505e1461037157806318160ddd14610390575f5ffd5b366102af57005b5f5ffd5b3480156102be575f5ffd5b506102c861dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f0575f5ffd5b50604080518082019091526009815268115d1a195c90985b1b60ba1b60208201525b6040516102dc9190612fb5565b34801561032a575f5ffd5b5061033e61033936600461300e565b61093e565b60405190151581526020016102dc565b348015610359575f5ffd5b5061036360105481565b6040519081526020016102dc565b34801561037c575f5ffd5b506011546102c8906001600160a01b031681565b34801561039b575f5ffd5b50610363610954565b3480156103af575f5ffd5b506103b8610975565b604080519586526020860194909452928401919091526060830152608082015260a0016102dc565b3480156103eb575f5ffd5b506103ff6103fa366004613038565b6109c3565b005b34801561040c575f5ffd5b5061033e61041b36600461304f565b610a78565b34801561042b575f5ffd5b50610450601254600d54600e5460ff600160a01b8404811693600160b01b9004169293565b60408051941515855292151560208501529183015260608201526080016102dc565b34801561047d575f5ffd5b50604051600981526020016102dc565b348015610498575f5ffd5b506103ff6104a73660046130a1565b610adf565b3480156104b7575f5ffd5b506103ff6104c636600461300e565b610b66565b3480156104d6575f5ffd5b5061033e6104e536600461316c565b6001600160a01b03165f9081526005602052604090205460ff1690565b34801561050d575f5ffd5b506012546102c8906001600160a01b031681565b34801561052c575f5ffd5b506103ff610c6a565b348015610540575f5ffd5b5061036360085481565b348015610555575f5ffd5b5061033e61056436600461316c565b6001600160a01b03165f9081526003602052604090205460ff1690565b34801561058c575f5ffd5b50610363600b5481565b3480156105a1575f5ffd5b50610363600c5481565b3480156105b6575f5ffd5b5061033e6105c536600461316c565b6001600160a01b03165f9081526004602052604090205460ff1690565b3480156105ed575f5ffd5b506103ff6105fc366004613187565b610cf8565b34801561060c575f5ffd5b506103ff61061b3660046131a7565b610dc0565b34801561062b575f5ffd5b5061036361063a36600461316c565b610ea2565b34801561064a575f5ffd5b506103ff610ebc565b34801561065e575f5ffd5b506103ff610f2d565b348015610672575f5ffd5b5061067b610fe1565b6040805194855260208501939093529183015260608201526080016102dc565b3480156106a6575f5ffd5b50610363600d5481565b3480156106bb575f5ffd5b506103ff611013565b3480156106cf575f5ffd5b505f546001600160a01b03166102c8565b3480156106eb575f5ffd5b50610363600e5481565b348015610700575f5ffd5b506103ff611542565b348015610714575f5ffd5b5060408051808201909152600981526811551211549090531360ba1b6020820152610312565b348015610745575f5ffd5b5061033e61075436600461300e565b6116e8565b348015610764575f5ffd5b50610363600a5481565b348015610779575f5ffd5b506103ff610788366004613187565b6116f4565b348015610798575f5ffd5b50610363600f5481565b3480156107ad575f5ffd5b506103ff6107bc366004613038565b6117f7565b3480156107cc575f5ffd5b506103ff6107db36600461316c565b6118be565b3480156107eb575f5ffd5b5061036360095481565b348015610800575f5ffd5b506103ff61080f3660046130a1565b611a76565b34801561081f575f5ffd5b506103ff61082e3660046131dd565b611afa565b34801561083e575f5ffd5b5061036361084d366004613214565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610882575f5ffd5b506103ff6108913660046131dd565b611b4d565b3480156108a1575f5ffd5b5061033e6108b036600461316c565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156108d8575f5ffd5b506103ff6108e7366004613038565b611ba0565b3480156108f7575f5ffd5b506103ff6109063660046131dd565b611c24565b348015610916575f5ffd5b506103ff610925366004613038565b611c77565b348015610935575f5ffd5b506103ff611cf7565b5f61094a338484611da4565b5060015b92915050565b5f6109616009600a613337565b610970906461f313f880613345565b905090565b5f5f5f5f5f6008546009546109966064600a54611eb090919063ffffffff16565b600b546109a4906064611eb0565b600c546109b2906064611eb0565b945094509450945094509091929394565b6007546001600160a01b0316336001600160a01b0316146109ff5760405162461bcd60e51b81526004016109f69061335c565b60405180910390fd5b610a0830610ea2565b811115610a4d5760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e7420746f6b656e7360681b60448201526064016109f6565b5f8111610a6c5760405162461bcd60e51b81526004016109f690613384565b610a7581611ef8565b50565b5f610a84848484612000565b610ad58433610ad0856040518060600160405280602881526020016135c7602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190612714565b611da4565b5060019392505050565b5f546001600160a01b03163314610b085760405162461bcd60e51b81526004016109f6906133bb565b5f5b8151811015610b62575f60055f848481518110610b2957610b296133f0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610b0a565b5050565b6007546001600160a01b0316336001600160a01b031614610b995760405162461bcd60e51b81526004016109f69061335c565b306001600160a01b03831603610bf15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420726573637565206f776e20746f6b656e00000000000000000060448201526064016109f6565b60075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610c41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c659190613404565b505050565b6007546001600160a01b0316336001600160a01b03161480610c9557505f546001600160a01b031633145b610cd25760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016109f6565b5f610cdc30610ea2565b90508015610a7557610a75610cf38260105461274c565b612761565b5f546001600160a01b03163314610d215760405162461bcd60e51b81526004016109f6906133bb565b600a8211158015610d335750600a8111155b610d785760405162461bcd60e51b815260206004820152601660248201527554617820746f6f206869676820286d6178203130252960501b60448201526064016109f6565b6008829055600981905560408051838152602081018390527fb841faf0d1b32571f4ef966a2f35e3ae51f3cdda45318c3da5570a5b2ad8560591015b60405180910390a15050565b5f546001600160a01b03163314610de95760405162461bcd60e51b81526004016109f6906133bb565b610dfd81610df7858561299a565b9061299a565b61271014610e4d5760405162461bcd60e51b815260206004820152601860248201527f53706c697473206d7573742073756d20746f203130303030000000000000000060448201526064016109f6565b600a839055600b829055600c81905560408051848152602081018490529081018290527ffdb98b6e295610bf2419ce2012cacd127f8547e833929f29cc19e3d52aa9b62b9060600160405180910390a1505050565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b03163314610ee55760405162461bcd60e51b81526004016109f6906133bb565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610f565760405162461bcd60e51b81526004016109f6906133bb565b610f626009600a613337565b610f71906461f313f880613345565b600d55610f806009600a613337565b610f8f906461f313f880613345565b600e557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610fbf6009600a613337565b610fce906461f313f880613345565b60405190815260200160405180910390a1565b5f5f5f5f610fee30610ea2565b47610ffa61dead610ea2565b61100561dead610ea2565b935093509350935090919293565b5f546001600160a01b0316331461103c5760405162461bcd60e51b81526004016109f6906133bb565b601254600160a01b900460ff161561108d5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b60448201526064016109f6565b601254600160b81b900460ff166110e65760405162461bcd60e51b815260206004820152601d60248201527f496e697469616c20646973747269627574696f6e206e6f7420646f6e6500000060448201526064016109f6565b5f6110f030610ea2565b116111495760405162461bcd60e51b8152602060048201526024808201527f436f6e747261637420686173206e6f20746f6b656e7320666f72206c697175696044820152636469747960e01b60648201526084016109f6565b601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091555f81905260036020527ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff191660011790556111b6903090610ad082610ea2565b60115f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611206573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122a919061341f565b6001600160a01b031663c9c653963060115f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611289573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ad919061341f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156112f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131b919061341f565b601280546001600160a01b0319166001600160a01b0392831690811782555f908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915281208054909216909217905561137a30610ea2565b905047806113c15760405162461bcd60e51b81526020600482015260146024820152734e6f2045544820666f72206c697175696469747960601b60448201526064016109f6565b6011546001600160a01b031663f305d7198230855f806113e85f546001600160a01b031690565b426040518863ffffffff1660e01b815260040161140a9695949392919061343a565b60606040518083038185885af1158015611426573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061144b9190613475565b5050601280546001600160a01b039081165f908152600360209081526040808320805460ff199081169091558554851684526004928390529281902080549093169092559254601154915163095ea7b360e01b8152918316938201939093525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156114da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fe9190613404565b506012805462ff00ff60a01b19166201000160a01b1790556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c7905f90a15050565b5f546001600160a01b0316331461156b5760405162461bcd60e51b81526004016109f6906133bb565b601254600160b81b900460ff16156115c55760405162461bcd60e51b815260206004820152601960248201527f446973747269627574696f6e20616c726561647920646f6e650000000000000060448201526064016109f6565b5f6115f760646115f1600f6115dc6009600a613337565b6115eb906461f313f880613345565b906129f8565b90611eb0565b90505f61161f8261160a6009600a613337565b611619906461f313f880613345565b90612a76565b335f9081526001602052604090205490915061163b9082612a76565b335f9081526001602052604080822092909255308152205461165d908261299a565b305f81815260016020526040902091909155336001600160a01b03165f5160206135ef5f395f51905f528360405161169791815260200190565b60405180910390a36012805460ff60b81b1916600160b81b17905560408051828152602081018490527fd0a76e57a0c59827ca6055dc2b1cfeb94a2344b07b20b2db14ad1961aa9475589101610db4565b5f61094a338484612000565b5f546001600160a01b0316331461171d5760405162461bcd60e51b81526004016109f6906133bb565b61173d606461172e6009600a613337565b6115f1906461f313f880613345565b82111561178c5760405162461bcd60e51b815260206004820152601b60248201527f5468726573686f6c6420746f6f206869676820286d617820312529000000000060448201526064016109f6565b61179d606461172e6009600a613337565b8111156117ec5760405162461bcd60e51b815260206004820152601a60248201527f4d6178207377617020746f6f206869676820286d61782031252900000000000060448201526064016109f6565b600f91909155601055565b6007546001600160a01b0316336001600160a01b03161461182a5760405162461bcd60e51b81526004016109f69061335c565b4781111561186d5760405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b60448201526064016109f6565b5f81116118b55760405162461bcd60e51b8152602060048201526016602482015275045544820616d6f756e74206d757374206265203e20360541b60448201526064016109f6565b610a7581612ab7565b6007546001600160a01b0316336001600160a01b0316146118f15760405162461bcd60e51b81526004016109f69061335c565b306001600160a01b038216036119495760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207769746864726177206f776e20746f6b656e0000000000000060448201526064016109f6565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561198f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b391906134a0565b90505f81116119fc5760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b60448201526064016109f6565b60075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015611a4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a709190613404565b50505050565b5f546001600160a01b03163314611a9f5760405162461bcd60e51b81526004016109f6906133bb565b5f5b8151811015610b6257600160055f848481518110611ac157611ac16133f0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611aa1565b5f546001600160a01b03163314611b235760405162461bcd60e51b81526004016109f6906133bb565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611b765760405162461bcd60e51b81526004016109f6906133bb565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611bc95760405162461bcd60e51b81526004016109f6906133bb565b611bdb6103e861172e6009600a613337565b811015611c1f5760405162461bcd60e51b81526020600482015260126024820152714d61782077616c6c657420746f6f206c6f7760701b60448201526064016109f6565b600e55565b5f546001600160a01b03163314611c4d5760405162461bcd60e51b81526004016109f6906133bb565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611ca05760405162461bcd60e51b81526004016109f6906133bb565b611cb26103e861172e6009600a613337565b811015611cf25760405162461bcd60e51b815260206004820152600e60248201526d4d617820545820746f6f206c6f7760901b60448201526064016109f6565b600d55565b6007546001600160a01b0316336001600160a01b031614611d2a5760405162461bcd60e51b81526004016109f69061335c565b4780611d6d5760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b60448201526064016109f6565b6007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610b62573d5f5f3e3d5ffd5b6001600160a01b038316611dfa5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f206164647265737360448201526064016109f6565b6001600160a01b038216611e505760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f2061646472657373000060448201526064016109f6565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611ef183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d07565b9392505050565b5f8111611f475760405162461bcd60e51b815260206004820152601760248201527f4275726e20616d6f756e74206d757374206265203e203000000000000000000060448201526064016109f6565b305f90815260016020526040902054611f609082612a76565b305f9081526001602052604081209190915561dead90527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54611fa3908261299a565b61dead5f81905260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d9190915560405130905f5160206135ef5f395f51905f5290611ff59085815260200190565b60405180910390a350565b6001600160a01b0383166120605760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b60648201526084016109f6565b6001600160a01b0382166120b65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f20616464726573730060448201526064016109f6565b5f81116121055760405162461bcd60e51b815260206004820152601b60248201527f5472616e7366657220616d6f756e74206d757374206265203e2030000000000060448201526064016109f6565b6001600160a01b0383165f9081526006602052604090205460ff161561216d5760405162461bcd60e51b815260206004820152601960248201527f53656e646572206164647265737320697320626c6f636b65640000000000000060448201526064016109f6565b6001600160a01b0382165f9081526006602052604090205460ff16156121d55760405162461bcd60e51b815260206004820152601c60248201527f526563697069656e74206164647265737320697320626c6f636b65640000000060448201526064016109f6565b5f546001600160a01b038481169116148015906121ff57505f546001600160a01b03838116911614155b801561221457506001600160a01b0383163014155b801561222957506001600160a01b0382163014155b1561227e57601254600160a01b900460ff1661227e5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109f6565b5f80546001600160a01b038581169116148015906122a957505f546001600160a01b03848116911614155b15612602576001600160a01b0384165f9081526005602052604090205460ff161580156122ee57506001600160a01b0383165f9081526005602052604090205460ff16155b6123295760405162461bcd60e51b815260206004820152600c60248201526b109bdd0819195d1958dd195960a21b60448201526064016109f6565b6001600160a01b0384165f9081526004602052604090205460ff1615801561236957506001600160a01b0383165f9081526004602052604090205460ff16155b156123c057600d548211156123c05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178207472616e73616374696f6e20616d6f756e74000060448201526064016109f6565b6012546001600160a01b0385811691161480156123eb57506011546001600160a01b03848116911614155b801561240f57506001600160a01b0383165f9081526003602052604090205460ff16155b1561249657600e548261242185610ea2565b61242b91906134b7565b11156124795760405162461bcd60e51b815260206004820152601760248201527f45786365656473206d61782077616c6c65742073697a6500000000000000000060448201526064016109f6565b61249360646115f1600854856129f890919063ffffffff16565b90505b6012546001600160a01b0384811691161480156124bc57506001600160a01b0384163014155b80156124e057506001600160a01b0384165f9081526003602052604090205460ff16155b15612502576124ff60646115f1600954856129f890919063ffffffff16565b90505b5f61250c30610ea2565b601254909150600160a81b900460ff1615801561253657506012546001600160a01b038581169116145b801561254b5750601254600160b01b900460ff165b80156125595750600f548110155b156126005760145443111561256d575f6013555b6003601354106125bf5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b2100000000000000000060448201526064016109f6565b5f6125d5846125d08460105461274c565b61274c565b905080156125e6576125e681612761565b60138054905f6125f5836134ca565b909155505043601455505b505b801561266757305f90815260016020526040902054612621908261299a565b305f81815260016020526040908190209290925590516001600160a01b038616905f5160206135ef5f395f51905f529061265e9085815260200190565b60405180910390a35b5f6126728383612a76565b6001600160a01b0386165f908152600160205260409020549091506126979084612a76565b6001600160a01b038087165f9081526001602052604080822093909355908616815220546126c5908261299a565b6001600160a01b038086165f8181526001602052604090819020939093559151908716905f5160206135ef5f395f51905f52906127059085815260200190565b60405180910390a35050505050565b5f81848411156127375760405162461bcd60e51b81526004016109f69190612fb5565b505f61274384866134e2565b95945050505050565b5f81831061275a5781611ef1565b5090919050565b6012805460ff60a81b1916600160a81b179055806127b85760405162461bcd60e51b81526020600482015260146024820152734e6f20746f6b656e7320746f2070726f6365737360601b60448201526064016109f6565b5f6127c230610ea2565b9050818110156128145760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e636500000060448201526064016109f6565b612831600c54610df7600b54600a5461299a90919063ffffffff16565b612710146128765760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964207461782073706c69747360701b60448201526064016109f6565b5f6128926127106115f1600b54866129f890919063ffffffff16565b905080156128a3576128a381611ef8565b5f6128ae8483612a76565b9050805f036128bf5750505061298a565b5f6128d7600c54600a5461299a90919063ffffffff16565b90505f81116129285760405162461bcd60e51b815260206004820152601c60248201527f4e6f20616c6c6f636174696f6e20666f72206275796261636b2f4c500000000060448201526064016109f6565b5f612942826115f1600a54866129f890919063ffffffff16565b90505f61294f8483612a76565b90508115612974575f61296183612d33565b905080156129725761297281612ab7565b505b80156129835761298381612ebd565b5050505050505b506012805460ff60a81b19169055565b5f806129a683856134b7565b905083811015611ef15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109f6565b5f825f03612a0757505f61094e565b5f612a128385613345565b905082612a1f85836134f5565b14611ef15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109f6565b5f611ef183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612714565b5f8111612aff5760405162461bcd60e51b8152602060048201526016602482015275045544820616d6f756e74206d757374206265203e20360541b60448201526064016109f6565b47811115612b4f5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016109f6565b6040805160028082526060820183525f926020830190803683375050601154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612bb6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bda919061341f565b815f81518110612bec57612bec6133f0565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612c2057612c206133f0565b60200260200101906001600160a01b031690816001600160a01b0316815250505f612c4c61dead610ea2565b60115460405163b6f9de9560e01b81529192506001600160a01b03169063b6f9de95908590612c87905f90879061dead904290600401613557565b5f604051808303818588803b158015612c9e575f5ffd5b505af193505050508015612cb0575060015b15610c65575f612cc58261161961dead610ea2565b60408051868152602081018390529192507f8e8412cac6b961b95ef832e2bac486977bbd29eb9725f9eddd97f3380c31f649910160405180910390a150505050565b5f8183612d275760405162461bcd60e51b81526004016109f69190612fb5565b505f61274384866134f5565b5f5f8211612d535760405162461bcd60e51b81526004016109f690613384565b60408051600280825260608201835247925f92919060208301908036833701905050905030815f81518110612d8a57612d8a6133f0565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612de1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e05919061341f565b81600181518110612e1857612e186133f0565b6001600160a01b039283166020918202929092010152601154612e3e9130911686611da4565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790612e769087905f9086903090429060040161358b565b5f604051808303815f87803b158015612e8d575f5ffd5b505af1925050508015612e9e575060015b612eab57505f9392505050565b612eb54783612a76565b949350505050565b5f8111612edc5760405162461bcd60e51b81526004016109f690613384565b5f612ee8826002611eb0565b90505f612ef58383612a76565b90505f612f0183612d33565b90505f81118015612f1157505f82115b15611a7057601154612f2e9030906001600160a01b031684611da4565b60115460405163f305d71960e01b81526001600160a01b039091169063f305d719908390612f6c90309087905f90819061dead90429060040161343a565b60606040518083038185885af193505050508015612fa7575060408051601f3d908101601f19168201909252612fa491810190613475565b60015b15611a705750505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610a75575f5ffd5b803561300981612fea565b919050565b5f5f6040838503121561301f575f5ffd5b823561302a81612fea565b946020939093013593505050565b5f60208284031215613048575f5ffd5b5035919050565b5f5f5f60608486031215613061575f5ffd5b833561306c81612fea565b9250602084013561307c81612fea565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156130b1575f5ffd5b813567ffffffffffffffff8111156130c7575f5ffd5b8201601f810184136130d7575f5ffd5b803567ffffffffffffffff8111156130f1576130f161308d565b8060051b604051601f19603f830116810181811067ffffffffffffffff8211171561311e5761311e61308d565b60405291825260208184018101929081018784111561313b575f5ffd5b6020850194505b838510156131615761315385612ffe565b815260209485019401613142565b509695505050505050565b5f6020828403121561317c575f5ffd5b8135611ef181612fea565b5f5f60408385031215613198575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156131b9575f5ffd5b505081359360208301359350604090920135919050565b8015158114610a75575f5ffd5b5f5f604083850312156131ee575f5ffd5b82356131f981612fea565b91506020830135613209816131d0565b809150509250929050565b5f5f60408385031215613225575f5ffd5b823561323081612fea565b9150602083013561320981612fea565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561328f5780850481111561327357613273613240565b600184161561328157908102905b60019390931c928002613258565b935093915050565b5f826132a55750600161094e565b816132b157505f61094e565b81600181146132c757600281146132d1576132ed565b600191505061094e565b60ff8411156132e2576132e2613240565b50506001821b61094e565b5060208310610133831016604e8410600b8410161715613310575081810a61094e565b61331c5f198484613254565b805f190482111561332f5761332f613240565b029392505050565b5f611ef160ff841683613297565b808202811582820484141761094e5761094e613240565b6020808252600e908201526d139bdd081d185e081dd85b1b195d60921b604082015260600190565b60208082526018908201527f546f6b656e20616d6f756e74206d757374206265203e20300000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613414575f5ffd5b8151611ef1816131d0565b5f6020828403121561342f575f5ffd5b8151611ef181612fea565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f5f5f60608486031215613487575f5ffd5b5050815160208301516040909301519094929350919050565b5f602082840312156134b0575f5ffd5b5051919050565b8082018082111561094e5761094e613240565b5f600182016134db576134db613240565b5060010190565b8181038181111561094e5761094e613240565b5f8261350f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602084019350602083015f5b8281101561354d5781516001600160a01b0316865260209586019590910190600101613526565b5093949350505050565b848152608060208201525f61356f6080830186613514565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a060408201525f6135a960a0830186613514565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122053ebdaad6eeb1d47689b9761004be1ce41b323e15e140223ee5fb835623ef34e64736f6c634300081e0033
Deployed Bytecode
0x6080604052600436106102a8575f3560e01c8063715018a61161016f578063bf474bed116100d8578063dd62ed3e11610092578063ea1644d51161006d578063ea1644d5146108cd578063ec0d4982146108ec578063ec28438a1461090b578063f5648a4f1461092a575f5ffd5b8063dd62ed3e14610833578063df8408fe14610877578063e7dad4f914610896575f5ffd5b8063bf474bed1461078d578063c480512e146107a2578063cb963728146107c1578063cc1776d3146107e0578063d34628cc146107f5578063d4c989d314610814575f5ffd5b80638f9a55c0116101295780638f9a55c0146106e057806395645e34146106f557806395d89b4114610709578063a9059cbb1461073a578063baa9f0fa14610759578063bbfad5b51461076e575f5ffd5b8063715018a61461063f578063751039fc146106535780637cc1f867146106675780637d1db4a51461069b5780638a8c523c146106b05780638da5cb5b146106c4575f5ffd5b806333f3d6281161021157806353deb3d6116101cb57806353deb3d6146105815780635d41f8e414610596578063658c27a9146105ab578063667f6526146105e2578063700cd48e1461060157806370a0823114610620575f5ffd5b806333f3d628146104ac5780633bbac579146104cb57806349bd5a5e146105025780634b2c8998146105215780634f7041a5146105355780635342acb41461054a575f5ffd5b806322a62e1e1161026257806322a62e1e146103a457806323b63585146103e057806323b872dd14610401578063276ef78914610420578063313ce5671461047257806331c2d8471461048d575f5ffd5b806303fd2a45146102b357806306fdde03146102e5578063095ea7b31461031f5780630faee56f1461034e5780631694505e1461037157806318160ddd14610390575f5ffd5b366102af57005b5f5ffd5b3480156102be575f5ffd5b506102c861dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f0575f5ffd5b50604080518082019091526009815268115d1a195c90985b1b60ba1b60208201525b6040516102dc9190612fb5565b34801561032a575f5ffd5b5061033e61033936600461300e565b61093e565b60405190151581526020016102dc565b348015610359575f5ffd5b5061036360105481565b6040519081526020016102dc565b34801561037c575f5ffd5b506011546102c8906001600160a01b031681565b34801561039b575f5ffd5b50610363610954565b3480156103af575f5ffd5b506103b8610975565b604080519586526020860194909452928401919091526060830152608082015260a0016102dc565b3480156103eb575f5ffd5b506103ff6103fa366004613038565b6109c3565b005b34801561040c575f5ffd5b5061033e61041b36600461304f565b610a78565b34801561042b575f5ffd5b50610450601254600d54600e5460ff600160a01b8404811693600160b01b9004169293565b60408051941515855292151560208501529183015260608201526080016102dc565b34801561047d575f5ffd5b50604051600981526020016102dc565b348015610498575f5ffd5b506103ff6104a73660046130a1565b610adf565b3480156104b7575f5ffd5b506103ff6104c636600461300e565b610b66565b3480156104d6575f5ffd5b5061033e6104e536600461316c565b6001600160a01b03165f9081526005602052604090205460ff1690565b34801561050d575f5ffd5b506012546102c8906001600160a01b031681565b34801561052c575f5ffd5b506103ff610c6a565b348015610540575f5ffd5b5061036360085481565b348015610555575f5ffd5b5061033e61056436600461316c565b6001600160a01b03165f9081526003602052604090205460ff1690565b34801561058c575f5ffd5b50610363600b5481565b3480156105a1575f5ffd5b50610363600c5481565b3480156105b6575f5ffd5b5061033e6105c536600461316c565b6001600160a01b03165f9081526004602052604090205460ff1690565b3480156105ed575f5ffd5b506103ff6105fc366004613187565b610cf8565b34801561060c575f5ffd5b506103ff61061b3660046131a7565b610dc0565b34801561062b575f5ffd5b5061036361063a36600461316c565b610ea2565b34801561064a575f5ffd5b506103ff610ebc565b34801561065e575f5ffd5b506103ff610f2d565b348015610672575f5ffd5b5061067b610fe1565b6040805194855260208501939093529183015260608201526080016102dc565b3480156106a6575f5ffd5b50610363600d5481565b3480156106bb575f5ffd5b506103ff611013565b3480156106cf575f5ffd5b505f546001600160a01b03166102c8565b3480156106eb575f5ffd5b50610363600e5481565b348015610700575f5ffd5b506103ff611542565b348015610714575f5ffd5b5060408051808201909152600981526811551211549090531360ba1b6020820152610312565b348015610745575f5ffd5b5061033e61075436600461300e565b6116e8565b348015610764575f5ffd5b50610363600a5481565b348015610779575f5ffd5b506103ff610788366004613187565b6116f4565b348015610798575f5ffd5b50610363600f5481565b3480156107ad575f5ffd5b506103ff6107bc366004613038565b6117f7565b3480156107cc575f5ffd5b506103ff6107db36600461316c565b6118be565b3480156107eb575f5ffd5b5061036360095481565b348015610800575f5ffd5b506103ff61080f3660046130a1565b611a76565b34801561081f575f5ffd5b506103ff61082e3660046131dd565b611afa565b34801561083e575f5ffd5b5061036361084d366004613214565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610882575f5ffd5b506103ff6108913660046131dd565b611b4d565b3480156108a1575f5ffd5b5061033e6108b036600461316c565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156108d8575f5ffd5b506103ff6108e7366004613038565b611ba0565b3480156108f7575f5ffd5b506103ff6109063660046131dd565b611c24565b348015610916575f5ffd5b506103ff610925366004613038565b611c77565b348015610935575f5ffd5b506103ff611cf7565b5f61094a338484611da4565b5060015b92915050565b5f6109616009600a613337565b610970906461f313f880613345565b905090565b5f5f5f5f5f6008546009546109966064600a54611eb090919063ffffffff16565b600b546109a4906064611eb0565b600c546109b2906064611eb0565b945094509450945094509091929394565b6007546001600160a01b0316336001600160a01b0316146109ff5760405162461bcd60e51b81526004016109f69061335c565b60405180910390fd5b610a0830610ea2565b811115610a4d5760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e7420746f6b656e7360681b60448201526064016109f6565b5f8111610a6c5760405162461bcd60e51b81526004016109f690613384565b610a7581611ef8565b50565b5f610a84848484612000565b610ad58433610ad0856040518060600160405280602881526020016135c7602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190612714565b611da4565b5060019392505050565b5f546001600160a01b03163314610b085760405162461bcd60e51b81526004016109f6906133bb565b5f5b8151811015610b62575f60055f848481518110610b2957610b296133f0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610b0a565b5050565b6007546001600160a01b0316336001600160a01b031614610b995760405162461bcd60e51b81526004016109f69061335c565b306001600160a01b03831603610bf15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420726573637565206f776e20746f6b656e00000000000000000060448201526064016109f6565b60075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610c41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c659190613404565b505050565b6007546001600160a01b0316336001600160a01b03161480610c9557505f546001600160a01b031633145b610cd25760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016109f6565b5f610cdc30610ea2565b90508015610a7557610a75610cf38260105461274c565b612761565b5f546001600160a01b03163314610d215760405162461bcd60e51b81526004016109f6906133bb565b600a8211158015610d335750600a8111155b610d785760405162461bcd60e51b815260206004820152601660248201527554617820746f6f206869676820286d6178203130252960501b60448201526064016109f6565b6008829055600981905560408051838152602081018390527fb841faf0d1b32571f4ef966a2f35e3ae51f3cdda45318c3da5570a5b2ad8560591015b60405180910390a15050565b5f546001600160a01b03163314610de95760405162461bcd60e51b81526004016109f6906133bb565b610dfd81610df7858561299a565b9061299a565b61271014610e4d5760405162461bcd60e51b815260206004820152601860248201527f53706c697473206d7573742073756d20746f203130303030000000000000000060448201526064016109f6565b600a839055600b829055600c81905560408051848152602081018490529081018290527ffdb98b6e295610bf2419ce2012cacd127f8547e833929f29cc19e3d52aa9b62b9060600160405180910390a1505050565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b03163314610ee55760405162461bcd60e51b81526004016109f6906133bb565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610f565760405162461bcd60e51b81526004016109f6906133bb565b610f626009600a613337565b610f71906461f313f880613345565b600d55610f806009600a613337565b610f8f906461f313f880613345565b600e557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610fbf6009600a613337565b610fce906461f313f880613345565b60405190815260200160405180910390a1565b5f5f5f5f610fee30610ea2565b47610ffa61dead610ea2565b61100561dead610ea2565b935093509350935090919293565b5f546001600160a01b0316331461103c5760405162461bcd60e51b81526004016109f6906133bb565b601254600160a01b900460ff161561108d5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b60448201526064016109f6565b601254600160b81b900460ff166110e65760405162461bcd60e51b815260206004820152601d60248201527f496e697469616c20646973747269627574696f6e206e6f7420646f6e6500000060448201526064016109f6565b5f6110f030610ea2565b116111495760405162461bcd60e51b8152602060048201526024808201527f436f6e747261637420686173206e6f20746f6b656e7320666f72206c697175696044820152636469747960e01b60648201526084016109f6565b601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091555f81905260036020527ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff191660011790556111b6903090610ad082610ea2565b60115f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611206573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122a919061341f565b6001600160a01b031663c9c653963060115f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611289573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ad919061341f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156112f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131b919061341f565b601280546001600160a01b0319166001600160a01b0392831690811782555f908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915281208054909216909217905561137a30610ea2565b905047806113c15760405162461bcd60e51b81526020600482015260146024820152734e6f2045544820666f72206c697175696469747960601b60448201526064016109f6565b6011546001600160a01b031663f305d7198230855f806113e85f546001600160a01b031690565b426040518863ffffffff1660e01b815260040161140a9695949392919061343a565b60606040518083038185885af1158015611426573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061144b9190613475565b5050601280546001600160a01b039081165f908152600360209081526040808320805460ff199081169091558554851684526004928390529281902080549093169092559254601154915163095ea7b360e01b8152918316938201939093525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156114da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fe9190613404565b506012805462ff00ff60a01b19166201000160a01b1790556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c7905f90a15050565b5f546001600160a01b0316331461156b5760405162461bcd60e51b81526004016109f6906133bb565b601254600160b81b900460ff16156115c55760405162461bcd60e51b815260206004820152601960248201527f446973747269627574696f6e20616c726561647920646f6e650000000000000060448201526064016109f6565b5f6115f760646115f1600f6115dc6009600a613337565b6115eb906461f313f880613345565b906129f8565b90611eb0565b90505f61161f8261160a6009600a613337565b611619906461f313f880613345565b90612a76565b335f9081526001602052604090205490915061163b9082612a76565b335f9081526001602052604080822092909255308152205461165d908261299a565b305f81815260016020526040902091909155336001600160a01b03165f5160206135ef5f395f51905f528360405161169791815260200190565b60405180910390a36012805460ff60b81b1916600160b81b17905560408051828152602081018490527fd0a76e57a0c59827ca6055dc2b1cfeb94a2344b07b20b2db14ad1961aa9475589101610db4565b5f61094a338484612000565b5f546001600160a01b0316331461171d5760405162461bcd60e51b81526004016109f6906133bb565b61173d606461172e6009600a613337565b6115f1906461f313f880613345565b82111561178c5760405162461bcd60e51b815260206004820152601b60248201527f5468726573686f6c6420746f6f206869676820286d617820312529000000000060448201526064016109f6565b61179d606461172e6009600a613337565b8111156117ec5760405162461bcd60e51b815260206004820152601a60248201527f4d6178207377617020746f6f206869676820286d61782031252900000000000060448201526064016109f6565b600f91909155601055565b6007546001600160a01b0316336001600160a01b03161461182a5760405162461bcd60e51b81526004016109f69061335c565b4781111561186d5760405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b60448201526064016109f6565b5f81116118b55760405162461bcd60e51b8152602060048201526016602482015275045544820616d6f756e74206d757374206265203e20360541b60448201526064016109f6565b610a7581612ab7565b6007546001600160a01b0316336001600160a01b0316146118f15760405162461bcd60e51b81526004016109f69061335c565b306001600160a01b038216036119495760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207769746864726177206f776e20746f6b656e0000000000000060448201526064016109f6565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561198f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b391906134a0565b90505f81116119fc5760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b60448201526064016109f6565b60075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015611a4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a709190613404565b50505050565b5f546001600160a01b03163314611a9f5760405162461bcd60e51b81526004016109f6906133bb565b5f5b8151811015610b6257600160055f848481518110611ac157611ac16133f0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611aa1565b5f546001600160a01b03163314611b235760405162461bcd60e51b81526004016109f6906133bb565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611b765760405162461bcd60e51b81526004016109f6906133bb565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611bc95760405162461bcd60e51b81526004016109f6906133bb565b611bdb6103e861172e6009600a613337565b811015611c1f5760405162461bcd60e51b81526020600482015260126024820152714d61782077616c6c657420746f6f206c6f7760701b60448201526064016109f6565b600e55565b5f546001600160a01b03163314611c4d5760405162461bcd60e51b81526004016109f6906133bb565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611ca05760405162461bcd60e51b81526004016109f6906133bb565b611cb26103e861172e6009600a613337565b811015611cf25760405162461bcd60e51b815260206004820152600e60248201526d4d617820545820746f6f206c6f7760901b60448201526064016109f6565b600d55565b6007546001600160a01b0316336001600160a01b031614611d2a5760405162461bcd60e51b81526004016109f69061335c565b4780611d6d5760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b60448201526064016109f6565b6007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610b62573d5f5f3e3d5ffd5b6001600160a01b038316611dfa5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f206164647265737360448201526064016109f6565b6001600160a01b038216611e505760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f2061646472657373000060448201526064016109f6565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611ef183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d07565b9392505050565b5f8111611f475760405162461bcd60e51b815260206004820152601760248201527f4275726e20616d6f756e74206d757374206265203e203000000000000000000060448201526064016109f6565b305f90815260016020526040902054611f609082612a76565b305f9081526001602052604081209190915561dead90527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54611fa3908261299a565b61dead5f81905260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d9190915560405130905f5160206135ef5f395f51905f5290611ff59085815260200190565b60405180910390a350565b6001600160a01b0383166120605760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b60648201526084016109f6565b6001600160a01b0382166120b65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f20616464726573730060448201526064016109f6565b5f81116121055760405162461bcd60e51b815260206004820152601b60248201527f5472616e7366657220616d6f756e74206d757374206265203e2030000000000060448201526064016109f6565b6001600160a01b0383165f9081526006602052604090205460ff161561216d5760405162461bcd60e51b815260206004820152601960248201527f53656e646572206164647265737320697320626c6f636b65640000000000000060448201526064016109f6565b6001600160a01b0382165f9081526006602052604090205460ff16156121d55760405162461bcd60e51b815260206004820152601c60248201527f526563697069656e74206164647265737320697320626c6f636b65640000000060448201526064016109f6565b5f546001600160a01b038481169116148015906121ff57505f546001600160a01b03838116911614155b801561221457506001600160a01b0383163014155b801561222957506001600160a01b0382163014155b1561227e57601254600160a01b900460ff1661227e5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109f6565b5f80546001600160a01b038581169116148015906122a957505f546001600160a01b03848116911614155b15612602576001600160a01b0384165f9081526005602052604090205460ff161580156122ee57506001600160a01b0383165f9081526005602052604090205460ff16155b6123295760405162461bcd60e51b815260206004820152600c60248201526b109bdd0819195d1958dd195960a21b60448201526064016109f6565b6001600160a01b0384165f9081526004602052604090205460ff1615801561236957506001600160a01b0383165f9081526004602052604090205460ff16155b156123c057600d548211156123c05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178207472616e73616374696f6e20616d6f756e74000060448201526064016109f6565b6012546001600160a01b0385811691161480156123eb57506011546001600160a01b03848116911614155b801561240f57506001600160a01b0383165f9081526003602052604090205460ff16155b1561249657600e548261242185610ea2565b61242b91906134b7565b11156124795760405162461bcd60e51b815260206004820152601760248201527f45786365656473206d61782077616c6c65742073697a6500000000000000000060448201526064016109f6565b61249360646115f1600854856129f890919063ffffffff16565b90505b6012546001600160a01b0384811691161480156124bc57506001600160a01b0384163014155b80156124e057506001600160a01b0384165f9081526003602052604090205460ff16155b15612502576124ff60646115f1600954856129f890919063ffffffff16565b90505b5f61250c30610ea2565b601254909150600160a81b900460ff1615801561253657506012546001600160a01b038581169116145b801561254b5750601254600160b01b900460ff165b80156125595750600f548110155b156126005760145443111561256d575f6013555b6003601354106125bf5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b2100000000000000000060448201526064016109f6565b5f6125d5846125d08460105461274c565b61274c565b905080156125e6576125e681612761565b60138054905f6125f5836134ca565b909155505043601455505b505b801561266757305f90815260016020526040902054612621908261299a565b305f81815260016020526040908190209290925590516001600160a01b038616905f5160206135ef5f395f51905f529061265e9085815260200190565b60405180910390a35b5f6126728383612a76565b6001600160a01b0386165f908152600160205260409020549091506126979084612a76565b6001600160a01b038087165f9081526001602052604080822093909355908616815220546126c5908261299a565b6001600160a01b038086165f8181526001602052604090819020939093559151908716905f5160206135ef5f395f51905f52906127059085815260200190565b60405180910390a35050505050565b5f81848411156127375760405162461bcd60e51b81526004016109f69190612fb5565b505f61274384866134e2565b95945050505050565b5f81831061275a5781611ef1565b5090919050565b6012805460ff60a81b1916600160a81b179055806127b85760405162461bcd60e51b81526020600482015260146024820152734e6f20746f6b656e7320746f2070726f6365737360601b60448201526064016109f6565b5f6127c230610ea2565b9050818110156128145760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e636500000060448201526064016109f6565b612831600c54610df7600b54600a5461299a90919063ffffffff16565b612710146128765760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964207461782073706c69747360701b60448201526064016109f6565b5f6128926127106115f1600b54866129f890919063ffffffff16565b905080156128a3576128a381611ef8565b5f6128ae8483612a76565b9050805f036128bf5750505061298a565b5f6128d7600c54600a5461299a90919063ffffffff16565b90505f81116129285760405162461bcd60e51b815260206004820152601c60248201527f4e6f20616c6c6f636174696f6e20666f72206275796261636b2f4c500000000060448201526064016109f6565b5f612942826115f1600a54866129f890919063ffffffff16565b90505f61294f8483612a76565b90508115612974575f61296183612d33565b905080156129725761297281612ab7565b505b80156129835761298381612ebd565b5050505050505b506012805460ff60a81b19169055565b5f806129a683856134b7565b905083811015611ef15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109f6565b5f825f03612a0757505f61094e565b5f612a128385613345565b905082612a1f85836134f5565b14611ef15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109f6565b5f611ef183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612714565b5f8111612aff5760405162461bcd60e51b8152602060048201526016602482015275045544820616d6f756e74206d757374206265203e20360541b60448201526064016109f6565b47811115612b4f5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016109f6565b6040805160028082526060820183525f926020830190803683375050601154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612bb6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bda919061341f565b815f81518110612bec57612bec6133f0565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612c2057612c206133f0565b60200260200101906001600160a01b031690816001600160a01b0316815250505f612c4c61dead610ea2565b60115460405163b6f9de9560e01b81529192506001600160a01b03169063b6f9de95908590612c87905f90879061dead904290600401613557565b5f604051808303818588803b158015612c9e575f5ffd5b505af193505050508015612cb0575060015b15610c65575f612cc58261161961dead610ea2565b60408051868152602081018390529192507f8e8412cac6b961b95ef832e2bac486977bbd29eb9725f9eddd97f3380c31f649910160405180910390a150505050565b5f8183612d275760405162461bcd60e51b81526004016109f69190612fb5565b505f61274384866134f5565b5f5f8211612d535760405162461bcd60e51b81526004016109f690613384565b60408051600280825260608201835247925f92919060208301908036833701905050905030815f81518110612d8a57612d8a6133f0565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612de1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e05919061341f565b81600181518110612e1857612e186133f0565b6001600160a01b039283166020918202929092010152601154612e3e9130911686611da4565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790612e769087905f9086903090429060040161358b565b5f604051808303815f87803b158015612e8d575f5ffd5b505af1925050508015612e9e575060015b612eab57505f9392505050565b612eb54783612a76565b949350505050565b5f8111612edc5760405162461bcd60e51b81526004016109f690613384565b5f612ee8826002611eb0565b90505f612ef58383612a76565b90505f612f0183612d33565b90505f81118015612f1157505f82115b15611a7057601154612f2e9030906001600160a01b031684611da4565b60115460405163f305d71960e01b81526001600160a01b039091169063f305d719908390612f6c90309087905f90819061dead90429060040161343a565b60606040518083038185885af193505050508015612fa7575060408051601f3d908101601f19168201909252612fa491810190613475565b60015b15611a705750505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610a75575f5ffd5b803561300981612fea565b919050565b5f5f6040838503121561301f575f5ffd5b823561302a81612fea565b946020939093013593505050565b5f60208284031215613048575f5ffd5b5035919050565b5f5f5f60608486031215613061575f5ffd5b833561306c81612fea565b9250602084013561307c81612fea565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156130b1575f5ffd5b813567ffffffffffffffff8111156130c7575f5ffd5b8201601f810184136130d7575f5ffd5b803567ffffffffffffffff8111156130f1576130f161308d565b8060051b604051601f19603f830116810181811067ffffffffffffffff8211171561311e5761311e61308d565b60405291825260208184018101929081018784111561313b575f5ffd5b6020850194505b838510156131615761315385612ffe565b815260209485019401613142565b509695505050505050565b5f6020828403121561317c575f5ffd5b8135611ef181612fea565b5f5f60408385031215613198575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156131b9575f5ffd5b505081359360208301359350604090920135919050565b8015158114610a75575f5ffd5b5f5f604083850312156131ee575f5ffd5b82356131f981612fea565b91506020830135613209816131d0565b809150509250929050565b5f5f60408385031215613225575f5ffd5b823561323081612fea565b9150602083013561320981612fea565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561328f5780850481111561327357613273613240565b600184161561328157908102905b60019390931c928002613258565b935093915050565b5f826132a55750600161094e565b816132b157505f61094e565b81600181146132c757600281146132d1576132ed565b600191505061094e565b60ff8411156132e2576132e2613240565b50506001821b61094e565b5060208310610133831016604e8410600b8410161715613310575081810a61094e565b61331c5f198484613254565b805f190482111561332f5761332f613240565b029392505050565b5f611ef160ff841683613297565b808202811582820484141761094e5761094e613240565b6020808252600e908201526d139bdd081d185e081dd85b1b195d60921b604082015260600190565b60208082526018908201527f546f6b656e20616d6f756e74206d757374206265203e20300000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613414575f5ffd5b8151611ef1816131d0565b5f6020828403121561342f575f5ffd5b8151611ef181612fea565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f5f5f60608486031215613487575f5ffd5b5050815160208301516040909301519094929350919050565b5f602082840312156134b0575f5ffd5b5051919050565b8082018082111561094e5761094e613240565b5f600182016134db576134db613240565b5060010190565b8181038181111561094e5761094e613240565b5f8261350f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602084019350602083015f5b8281101561354d5781516001600160a01b0316865260209586019590910190600101613526565b5093949350505050565b848152608060208201525f61356f6080830186613514565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a060408201525f6135a960a0830186613514565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122053ebdaad6eeb1d47689b9761004be1ce41b323e15e140223ee5fb835623ef34e64736f6c634300081e0033
Deployed Bytecode Sourcemap
3987:20885:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4547:73;;;;;;;;;;;;4578:42;4547:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;4547:73:0;;;;;;;;7788:83;;;;;;;;;;-1:-1:-1;7858:5:0;;;;;;;;;;;;-1:-1:-1;;;7858:5:0;;;;7788:83;;;;;;;:::i;8621:161::-;;;;;;;;;;-1:-1:-1;8621:161:0;;;;;:::i;:::-;;:::i;:::-;;;1457:14:1;;1450:22;1432:41;;1420:2;1405:18;8621:161:0;1292:187:1;5460:55:0;;;;;;;;;;;;;;;;;;;1630:25:1;;;1618:2;1603:18;5460:55:0;1484:177:1;5544:41:0;;;;;;;;;;-1:-1:-1;5544:41:0;;;;-1:-1:-1;;;;;5544:41:0;;;8065:95;;;;;;;;;;;;;:::i;22071:382::-;;;;;;;;;;;;;:::i;:::-;;;;2159:25:1;;;2215:2;2200:18;;2193:34;;;;2243:18;;;2236:34;;;;2301:2;2286:18;;2279:34;2344:3;2329:19;;2322:35;2146:3;2131:19;22071:382:0;1900:463:1;23489:302:0;;;;;;;;;;-1:-1:-1;23489:302:0;;;;;:::i;:::-;;:::i;:::-;;8790:313;;;;;;;;;;-1:-1:-1;8790:313:0;;;;;:::i;:::-;;:::i;22465:321::-;;;;;;;;;;;;22674:11;;22726:12;;22753:14;;22674:11;-1:-1:-1;;;22674:11:0;;;;;-1:-1:-1;;;22700:11:0;;;22465:321;;;;;;;3356:14:1;;3349:22;3331:41;;3415:14;;3408:22;3403:2;3388:18;;3381:50;3447:18;;;3440:34;3505:2;3490:18;;3483:34;3318:3;3303:19;22465:321:0;3112:411:1;7974:83:0;;;;;;;;;;-1:-1:-1;7974:83:0;;5041:1;3670:36:1;;3658:2;3643:18;7974:83:0;3528:184:1;18858:168:0;;;;;;;;;;-1:-1:-1;18858:168:0;;;;;:::i;:::-;;:::i;24593:276::-;;;;;;;;;;-1:-1:-1;24593:276:0;;;;;:::i;:::-;;:::i;19034:86::-;;;;;;;;;;-1:-1:-1;19034:86:0;;;;;:::i;:::-;-1:-1:-1;;;;;19105:7:0;19081:4;19105:7;;;:4;:7;;;;;;;;;19034:86;5592:28;;;;;;;;;;-1:-1:-1;5592:28:0;;;;-1:-1:-1;;;;;5592:28:0;;;22878:294;;;;;;;;;;;;;:::i;4671:25::-;;;;;;;;;;;;;;;;19673:124;;;;;;;;;;-1:-1:-1;19673:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;19762:27:0;19738:4;19762:27;;;:18;:27;;;;;;;;;19673:124;4870:29;;;;;;;;;;;;;;;;4919:27;;;;;;;;;;;;;;;;19809:128;;;;;;;;;;-1:-1:-1;19809:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;19900:29:0;19876:4;19900:29;;;:20;:29;;;;;;;;;19809:128;17698:232;;;;;;;;;;-1:-1:-1;17698:232:0;;;;;:::i;:::-;;:::i;17942:344::-;;;;;;;;;;-1:-1:-1;17942:344:0;;;;;:::i;:::-;;:::i;8168:119::-;;;;;;;;;;-1:-1:-1;8168:119:0;;;;;:::i;:::-;;:::i;2855:148::-;;;;;;;;;;;;;:::i;17134:162::-;;;;;;;;;;;;;:::i;21694:365::-;;;;;;;;;;;;;:::i;:::-;;;;6286:25:1;;;6342:2;6327:18;;6320:34;;;;6370:18;;;6363:34;6428:2;6413:18;;6406:34;6273:3;6258:19;21694:365:0;6055:391:1;5264:56:0;;;;;;;;;;;;;;;;19990:1651;;;;;;;;;;;;;:::i;2641:79::-;;;;;;;;;;-1:-1:-1;2679:7:0;2706:6;-1:-1:-1;;;;;2706:6:0;2641:79;;5327:58;;;;;;;;;;;;;;;;7057:677;;;;;;;;;;;;;:::i;7879:87::-;;;;;;;;;;-1:-1:-1;7951:7:0;;;;;;;;;;;;-1:-1:-1;;;7951:7:0;;;;7879:87;;8295:167;;;;;;;;;;-1:-1:-1;8295:167:0;;;;;:::i;:::-;;:::i;4821:32::-;;;;;;;;;;;;;;;;18298:319;;;;;;;;;;-1:-1:-1;18298:319:0;;;;;:::i;:::-;;:::i;5392:61::-;;;;;;;;;;;;;;;;23184:293;;;;;;;;;;-1:-1:-1;23184:293:0;;;;;:::i;:::-;;:::i;24104:417::-;;;;;;;;;;-1:-1:-1;24104:417:0;;;;;:::i;:::-;;:::i;4717:26::-;;;;;;;;;;;;;;;;18686:164;;;;;;;;;;-1:-1:-1;18686:164:0;;;;;:::i;:::-;;:::i;19525:136::-;;;;;;;;;;-1:-1:-1;19525:136:0;;;;;:::i;:::-;;:::i;8470:143::-;;;;;;;;;;-1:-1:-1;8470:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8578:18:0;;;8551:7;8578:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8470:143;19381:132;;;;;;;;;;-1:-1:-1;19381:132:0;;;;;:::i;:::-;;:::i;19259:110::-;;;;;;;;;;-1:-1:-1;19259:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;19341:20:0;19317:4;19341:20;;;:17;:20;;;;;;;;;19259:110;17493:193;;;;;;;;;;-1:-1:-1;17493:193:0;;;;;:::i;:::-;;:::i;19132:115::-;;;;;;;;;;-1:-1:-1;19132:115:0;;;;;:::i;:::-;;:::i;17308:173::-;;;;;;;;;;-1:-1:-1;17308:173:0;;;;;:::i;:::-;;:::i;23799:293::-;;;;;;;;;;;;;:::i;8621:161::-;8696:4;8713:39;478:10;8736:7;8745:6;8713:8;:39::i;:::-;-1:-1:-1;8770:4:0;8621:161;;;;;:::o;8065:95::-;8118:7;5099:13;5041:1;5099:2;:13;:::i;:::-;5084:28;;:12;:28;:::i;:::-;8138:14;;8065:95;:::o;22071:382::-;22126:21;22158:22;22191;22224:19;22254:17;22312:6;;22333:7;;22355:19;22370:3;22355:10;;:14;;:19;;;;:::i;:::-;22389:7;;:16;;22401:3;22389:11;:16::i;:::-;22420:5;;:14;;22430:3;22420:9;:14::i;:::-;22290:155;;;;;;;;;;22071:382;;;;;:::o;23489:302::-;23574:10;;-1:-1:-1;;;;;23574:10:0;478;-1:-1:-1;;;;;23558:26:0;;23550:53;;;;-1:-1:-1;;;23550:53:0;;;;;;;:::i;:::-;;;;;;;;;23637:24;23655:4;23637:9;:24::i;:::-;23622:11;:39;;23614:71;;;;-1:-1:-1;;;23614:71:0;;9636:2:1;23614:71:0;;;9618:21:1;9675:2;9655:18;;;9648:30;-1:-1:-1;;;9694:18:1;;;9687:49;9753:18;;23614:71:0;9434:343:1;23614:71:0;23718:1;23704:11;:15;23696:52;;;;-1:-1:-1;;;23696:52:0;;;;;;;:::i;:::-;23759:24;23771:11;23759;:24::i;:::-;23489:302;:::o;8790:313::-;8888:4;8905:36;8915:6;8923:9;8934:6;8905:9;:36::i;:::-;8952:121;8961:6;478:10;8983:89;9021:6;8983:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8983:19:0;;;;;;:11;:19;;;;;;;;478:10;8983:33;;;;;;;;;;:37;:89::i;:::-;8952:8;:121::i;:::-;-1:-1:-1;9091:4:0;8790:313;;;;;:::o;18858:168::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;18933:6:::1;18928:91;18949:6;:13;18945:1;:17;18928:91;;;19002:5;18984:4;:15;18989:6;18996:1;18989:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18984:15:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18984:15:0;:23;;-1:-1:-1;;18984:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;18964:3:0::1;18928:91;;;;18858:168:::0;:::o;24593:276::-;24696:10;;-1:-1:-1;;;;;24696:10:0;478;-1:-1:-1;;;;;24680:26:0;;24672:53;;;;-1:-1:-1;;;24672:53:0;;;;;;;:::i;:::-;24768:4;-1:-1:-1;;;;;24744:29:0;;;24736:65;;;;-1:-1:-1;;;24736:65:0;;10830:2:1;24736:65:0;;;10812:21:1;10869:2;10849:18;;;10842:30;10908:25;10888:18;;;10881:53;10951:18;;24736:65:0;10628:347:1;24736:65:0;24842:10;;24812:49;;-1:-1:-1;;;24812:49:0;;-1:-1:-1;;;;;24842:10:0;;;24812:49;;;11162:51:1;11229:18;;;11222:34;;;24812:29:0;;;;;;11135:18:1;;24812:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24593:276;;:::o;22878:294::-;22947:10;;-1:-1:-1;;;;;22947:10:0;478;-1:-1:-1;;;;;22931:26:0;;:53;;;-1:-1:-1;2679:7:0;2706:6;-1:-1:-1;;;;;2706:6:0;478:10;22961:23;22931:53;22923:80;;;;-1:-1:-1;;;22923:80:0;;11719:2:1;22923:80:0;;;11701:21:1;11758:2;11738:18;;;11731:30;-1:-1:-1;;;11777:18:1;;;11770:44;11831:18;;22923:80:0;11517:338:1;22923:80:0;23014:20;23037:24;23055:4;23037:9;:24::i;:::-;23014:47;-1:-1:-1;23076:16:0;;23072:93;;23109:44;23122:30;23126:12;23140:11;;23122:3;:30::i;:::-;23109:12;:44::i;17698:232::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;17789:2:::1;17781:4;:10;;:25;;;;;17804:2;17795:5;:11;;17781:25;17773:60;;;::::0;-1:-1:-1;;;17773:60:0;;12062:2:1;17773:60:0::1;::::0;::::1;12044:21:1::0;12101:2;12081:18;;;12074:30;-1:-1:-1;;;12120:18:1;;;12113:52;12182:18;;17773:60:0::1;11860:346:1::0;17773:60:0::1;17844:6;:13:::0;;;17868:7:::1;:15:::0;;;17899:23:::1;::::0;;12385:25:1;;;12441:2;12426:18;;12419:34;;;17899:23:0::1;::::0;12358:18:1;17899:23:0::1;;;;;;;;17698:232:::0;;:::o;17942:344::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;18054:37:::1;18084:6:::0;18054:25:::1;:11:::0;18070:8;18054:15:::1;:25::i;:::-;:29:::0;::::1;:37::i;:::-;18095:5;18054:46;18046:83;;;::::0;-1:-1:-1;;;18046:83:0;;12666:2:1;18046:83:0::1;::::0;::::1;12648:21:1::0;12705:2;12685:18;;;12678:30;12744:26;12724:18;;;12717:54;12788:18;;18046:83:0::1;12464:348:1::0;18046:83:0::1;18140:10;:24:::0;;;18175:7:::1;:18:::0;;;18204:5:::1;:14:::0;;;18234:44:::1;::::0;;13019:25:1;;;13075:2;13060:18;;13053:34;;;13103:18;;;13096:34;;;18234:44:0::1;::::0;13007:2:1;12992:18;18234:44:0::1;;;;;;;17942:344:::0;;;:::o;8168:119::-;-1:-1:-1;;;;;8261:18:0;8234:7;8261:18;;;:9;:18;;;;;;;8168:119::o;2855:148::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;2962:1:::1;2946:6:::0;;2925:40:::1;::::0;-1:-1:-1;;;;;2946:6:0;;::::1;::::0;2925:40:::1;::::0;2962:1;;2925:40:::1;2993:1;2976:19:::0;;-1:-1:-1;;;;;;2976:19:0::1;::::0;;2855:148::o;17134:162::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;5099:13:::1;5041:1;5099:2;:13;:::i;:::-;5084:28;::::0;:12:::1;:28;:::i;:::-;17188:12;:22:::0;5099:13:::1;5041:1;5099:2;:13;:::i;:::-;5084:28;::::0;:12:::1;:28;:::i;:::-;17221:14;:24:::0;17261:27:::1;5099:13;5041:1;5099:2;:13;:::i;:::-;5084:28;::::0;:12:::1;:28;:::i;:::-;17261:27;::::0;1630:25:1;;;1618:2;1603:18;17261:27:0::1;;;;;;;17134:162::o:0;21694:365::-;21754:28;21793:26;21830:19;21860;21920:24;21938:4;21920:9;:24::i;:::-;21959:21;21995:15;4578:42;21995:9;:15::i;:::-;22025;4578:42;22025:9;:15::i;:::-;21898:153;;;;;;;;21694:365;;;;:::o;19990:1651::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;20054:11:::1;::::0;-1:-1:-1;;;20054:11:0;::::1;;;20053:12;20045:45;;;::::0;-1:-1:-1;;;20045:45:0;;13343:2:1;20045:45:0::1;::::0;::::1;13325:21:1::0;13382:2;13362:18;;;13355:30;-1:-1:-1;;;13401:18:1;;;13394:50;13461:18;;20045:45:0::1;13141:344:1::0;20045:45:0::1;20109:24;::::0;-1:-1:-1;;;20109:24:0;::::1;;;20101:66;;;::::0;-1:-1:-1;;;20101:66:0;;13692:2:1;20101:66:0::1;::::0;::::1;13674:21:1::0;13731:2;13711:18;;;13704:30;13770:31;13750:18;;;13743:59;13819:18;;20101:66:0::1;13490:353:1::0;20101:66:0::1;20213:1;20186:24;20204:4;20186:9;:24::i;:::-;:28;20178:77;;;::::0;-1:-1:-1;;;20178:77:0;;14050:2:1;20178:77:0::1;::::0;::::1;14032:21:1::0;14089:2;14069:18;;;14062:30;14128:34;14108:18;;;14101:62;-1:-1:-1;;;14179:18:1;;;14172:34;14223:19;;20178:77:0::1;13848:400:1::0;20178:77:0::1;20276:15;:80:::0;;-1:-1:-1;;;;;;20276:80:0::1;20313:42;20276:80:::0;;::::1;::::0;;;:15:::1;20390:44:::0;;;:18:::1;:44;::::0;;:51;;-1:-1:-1;;20390:51:0::1;20276:80:::0;20390:51:::1;::::0;;20475:75:::1;::::0;20492:4:::1;::::0;20525:24:::1;20492:4:::0;20525:9:::1;:24::i;20475:75::-;20618:15;;;;;;;;;-1:-1:-1::0;;;;;20618:15:0::1;-1:-1:-1::0;;;;;20618:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20600:69:0::1;;20678:4;20685:15;;;;;;;;;-1:-1:-1::0;;;;;20685:15:0::1;-1:-1:-1::0;;;;;20685:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20600:108;::::0;-1:-1:-1;;;;;;20600:108:0::1;::::0;;;;;;-1:-1:-1;;;;;14701:32:1;;;20600:108:0::1;::::0;::::1;14683:51:1::0;14770:32;;14750:18;;;14743:60;14656:18;;20600:108:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20584:13;:124:::0;;-1:-1:-1;;;;;;20584:124:0::1;-1:-1:-1::0;;;;;20584:124:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;20742:33:0;;;:18:::1;:33;::::0;;;;;;;:40;;-1:-1:-1;;20742:40:0;;::::1;-1:-1:-1::0;20742:40:0;;::::1;::::0;;;20814:13;;;;::::1;20793:35:::0;;:20:::1;:35:::0;;;;;:42;;;;::::1;::::0;;::::1;::::0;;20900:24:::1;20918:4;20900:9;:24::i;:::-;20869:55:::0;-1:-1:-1;20961:21:0::1;21011:19:::0;21003:52:::1;;;::::0;-1:-1:-1;;;21003:52:0;;15016:2:1;21003:52:0::1;::::0;::::1;14998:21:1::0;15055:2;15035:18;;;15028:30;-1:-1:-1;;;15074:18:1;;;15067:50;15134:18;;21003:52:0::1;14814:344:1::0;21003:52:0::1;21076:15;::::0;-1:-1:-1;;;;;21076:15:0::1;:31;21115:15:::0;21154:4:::1;21174:20:::0;21076:15:::1;::::0;21241:7:::1;2679::::0;2706:6;-1:-1:-1;;;;;2706:6:0;;2641:79;21241:7:::1;21263:15;21076:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;21342:13:0::1;::::0;;-1:-1:-1;;;;;21342:13:0;;::::1;21359:5;21323:33:::0;;;:18:::1;:33;::::0;;;;;;;:41;;-1:-1:-1;;21323:41:0;;::::1;::::0;;;21396:13;;;::::1;21375:35:::0;;:20:::1;:35:::0;;;;;;;;:43;;;;::::1;::::0;;;21459:13;;21490:15:::1;::::0;21452:71;;-1:-1:-1;;;21452:71:0;;21490:15;;::::1;21452:71:::0;;::::1;11162:51:1::0;;;;-1:-1:-1;;11229:18:1;;;11222:34;21459:13:0;::::1;::::0;-1:-1:-1;21452:29:0::1;::::0;11135:18:1;;21452:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;21544:11:0::1;:18:::0;;-1:-1:-1;;;;21573:18:0;-1:-1:-1;;;21573:18:0;;;21617:16:::1;::::0;::::1;::::0;-1:-1:-1;;21617:16:0::1;20034:1607;;19990:1651::o:0;7057:677::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;7127:24:::1;::::0;-1:-1:-1;;;7127:24:0;::::1;;;7126:25;7118:63;;;::::0;-1:-1:-1;;;7118:63:0;;16713:2:1;7118:63:0::1;::::0;::::1;16695:21:1::0;16752:2;16732:18;;;16725:30;16791:27;16771:18;;;16764:55;16836:18;;7118:63:0::1;16511:349:1::0;7118:63:0::1;7202:19;7224:24;7244:3;7224:15;7236:2;5099:13;5041:1;5099:2;:13;:::i;:::-;5084:28;::::0;:12:::1;:28;:::i;:::-;7224:11:::0;::::1;:15::i;:::-;:19:::0;::::1;:24::i;:::-;7202:46:::0;-1:-1:-1;7259:22:0::1;7284:24;7202:46:::0;5099:13:::1;5041:1;5099:2;:13;:::i;:::-;5084:28;::::0;:12:::1;:28;:::i;:::-;7284:11:::0;::::1;:24::i;:::-;478:10:::0;7402:23:::1;::::0;;;:9:::1;:23;::::0;;;;;7259:49;;-1:-1:-1;7402:43:0::1;::::0;7259:49;7402:27:::1;:43::i;:::-;478:10:::0;7376:23:::1;::::0;;;:9:::1;:23;::::0;;;;;:69;;;;7501:4:::1;7483:24:::0;;;;:44:::1;::::0;7512:14;7483:28:::1;:44::i;:::-;7474:4;7456:24;::::0;;;:9:::1;:24;::::0;;;;:71;;;;478:10;-1:-1:-1;;;;;7553:53:0::1;-1:-1:-1::0;;;;;;;;;;;7591:14:0::1;7553:53;;;;1630:25:1::0;;1618:2;1603:18;;1484:177;7553:53:0::1;;;;;;;;7617:24;:31:::0;;-1:-1:-1;;;;7617:31:0::1;-1:-1:-1::0;;;7617:31:0::1;::::0;;7674:52:::1;::::0;;12385:25:1;;;12441:2;12426:18;;12419:34;;;7674:52:0::1;::::0;12358:18:1;7674:52:0::1;12211:248:1::0;8295:167:0;8373:4;8390:42;478:10;8414:9;8425:6;8390:9;:42::i;18298:319::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;18412:16:::1;18424:3;5099:13;5041:1;5099:2;:13;:::i;:::-;5084:28;::::0;:12:::1;:28;:::i;18412:16::-;18399:9;:29;;18391:69;;;::::0;-1:-1:-1;;;18391:69:0;;17067:2:1;18391:69:0::1;::::0;::::1;17049:21:1::0;17106:2;17086:18;;;17079:30;17145:29;17125:18;;;17118:57;17192:18;;18391:69:0::1;16865:351:1::0;18391:69:0::1;18490:16;18502:3;5099:13;5041:1;5099:2;:13;:::i;18490:16::-;18479:7;:27;;18471:66;;;::::0;-1:-1:-1;;;18471:66:0;;17423:2:1;18471:66:0::1;::::0;::::1;17405:21:1::0;17462:2;17442:18;;;17435:30;17501:28;17481:18;;;17474:56;17547:18;;18471:66:0::1;17221:350:1::0;18471:66:0::1;18548:17;:29:::0;;;;18588:11:::1;:21:::0;18298:319::o;23184:293::-;23270:10;;-1:-1:-1;;;;;23270:10:0;478;-1:-1:-1;;;;;23254:26:0;;23246:53;;;;-1:-1:-1;;;23246:53:0;;;;;;;:::i;:::-;23331:21;23318:9;:34;;23310:63;;;;-1:-1:-1;;;23310:63:0;;17778:2:1;23310:63:0;;;17760:21:1;17817:2;17797:18;;;17790:30;-1:-1:-1;;;17836:18:1;;;17829:46;17892:18;;23310:63:0;17576:340:1;23310:63:0;23404:1;23392:9;:13;23384:48;;;;-1:-1:-1;;;23384:48:0;;18123:2:1;23384:48:0;;;18105:21:1;18162:2;18142:18;;;18135:30;-1:-1:-1;;;18181:18:1;;;18174:52;18243:18;;23384:48:0;17921:346:1;23384:48:0;23443:26;23459:9;23443:15;:26::i;24104:417::-;24199:10;;-1:-1:-1;;;;;24199:10:0;478;-1:-1:-1;;;;;24183:26:0;;24175:53;;;;-1:-1:-1;;;24175:53:0;;;;;;;:::i;:::-;24271:4;-1:-1:-1;;;;;24247:29:0;;;24239:67;;;;-1:-1:-1;;;24239:67:0;;18474:2:1;24239:67:0;;;18456:21:1;18513:2;18493:18;;;18486:30;18552:27;18532:18;;;18525:55;18597:18;;24239:67:0;18272:349:1;24239:67:0;24381:30;;-1:-1:-1;;;24381:30:0;;24405:4;24381:30;;;160:51:1;24339:12:0;;24317;;-1:-1:-1;;;;;24381:15:0;;;;;133:18:1;;24381:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24363:48;;24440:1;24430:7;:11;24422:45;;;;-1:-1:-1;;;24422:45:0;;19063:2:1;24422:45:0;;;19045:21:1;19102:2;19082:18;;;19075:30;-1:-1:-1;;;19121:18:1;;;19114:51;19182:18;;24422:45:0;18861:345:1;24422:45:0;24493:10;;24478:35;;-1:-1:-1;;;24478:35:0;;-1:-1:-1;;;;;24493:10:0;;;24478:35;;;11162:51:1;11229:18;;;11222:34;;;24478:14:0;;;;;;11135:18:1;;24478:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24164:357;;24104:417;:::o;18686:164::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;18760:6:::1;18755:88;18776:5;:12;18772:1;:16;18755:88;;;18827:4;18810;:14;18815:5;18821:1;18815:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18810:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18810:14:0;:21;;-1:-1:-1;;18810:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;18790:3:0::1;18755:88;;19525:136:::0;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19613:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:40;;-1:-1:-1;;19613:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19525:136::o;19381:132::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19467:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;19467:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19381:132::o;17493:193::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;17589:17:::1;17601:4;5099:13;5041:1;5099:2;:13;:::i;17589:17::-;17576:9;:30;;17568:61;;;::::0;-1:-1:-1;;;17568:61:0;;19413:2:1;17568:61:0::1;::::0;::::1;19395:21:1::0;19452:2;19432:18;;;19425:30;-1:-1:-1;;;19471:18:1;;;19464:48;19529:18;;17568:61:0::1;19211:342:1::0;17568:61:0::1;17652:14;:26:::0;17493:193::o;19132:115::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19209:20:0;;;::::1;;::::0;;;:17:::1;:20;::::0;;;;:30;;-1:-1:-1;;19209:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19132:115::o;17308:173::-;2768:6;;-1:-1:-1;;;;;2768:6:0;478:10;2768:22;2760:67;;;;-1:-1:-1;;;2760:67:0;;;;;;;:::i;:::-;17394:17:::1;17406:4;5099:13;5041:1;5099:2;:13;:::i;17394:17::-;17385:5;:26;;17377:53;;;::::0;-1:-1:-1;;;17377:53:0;;19760:2:1;17377:53:0::1;::::0;::::1;19742:21:1::0;19799:2;19779:18;;;19772:30;-1:-1:-1;;;19818:18:1;;;19811:44;19872:18;;17377:53:0::1;19558:338:1::0;17377:53:0::1;17453:12;:20:::0;17308:173::o;23799:293::-;23871:10;;-1:-1:-1;;;;;23871:10:0;478;-1:-1:-1;;;;;23855:26:0;;23847:53;;;;-1:-1:-1;;;23847:53:0;;;;;;;:::i;:::-;23940:21;23980:22;23972:53;;;;-1:-1:-1;;;23972:53:0;;20103:2:1;23972:53:0;;;20085:21:1;20142:2;20122:18;;;20115:30;-1:-1:-1;;;20161:18:1;;;20154:48;20219:18;;23972:53:0;19901:342:1;23972:53:0;24044:10;;24036:48;;-1:-1:-1;;;;;24044:10:0;;;;24036:48;;;;;24065:18;;24044:10;24036:48;24044:10;24036:48;24065:18;24044:10;24036:48;;;;;;;;;;;;;;;;;;;9111:327;-1:-1:-1;;;;;9204:19:0;;9196:64;;;;-1:-1:-1;;;9196:64:0;;20450:2:1;9196:64:0;;;20432:21:1;;;20469:18;;;20462:30;20528:34;20508:18;;;20501:62;20580:18;;9196:64:0;20248:356:1;9196:64:0;-1:-1:-1;;;;;9279:21:0;;9271:64;;;;-1:-1:-1;;;9271:64:0;;20811:2:1;9271:64:0;;;20793:21:1;20850:2;20830:18;;;20823:30;20889:32;20869:18;;;20862:60;20939:18;;9271:64:0;20609:354:1;9271:64:0;-1:-1:-1;;;;;9346:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9398:32;;1630:25:1;;;9398:32:0;;1603:18:1;9398:32:0;;;;;;;9111:327;;;:::o;1987:132::-;2045:7;2072:39;2076:1;2079;2072:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2065:46;1987:132;-1:-1:-1;;;1987:132:0:o;14142:293::-;14215:1;14206:6;:10;14198:46;;;;-1:-1:-1;;;14198:46:0;;21170:2:1;14198:46:0;;;21152:21:1;21209:2;21189:18;;;21182:30;21248:25;21228:18;;;21221:53;21291:18;;14198:46:0;20968:347:1;14198:46:0;14300:4;14282:24;;;;:9;:24;;;;;;:36;;14311:6;14282:28;:36::i;:::-;14273:4;14255:24;;;;:9;:24;;;;;:63;;;;4578:42;14347:15;;;;:27;;14367:6;14347:19;:27::i;:::-;4578:42;14329:15;;;;:9;:15;;;:45;;;;:15;14390:37;14407:4;;-1:-1:-1;;;;;;;;;;;14390:37:0;;;14420:6;1630:25:1;;1618:2;1603:18;;1484:177;14390:37:0;;;;;;;;14142:293;:::o;9496:2889::-;-1:-1:-1;;;;;9584:18:0;;9576:64;;;;-1:-1:-1;;;9576:64:0;;21522:2:1;9576:64:0;;;21504:21:1;21561:2;21541:18;;;21534:30;21600:34;21580:18;;;21573:62;-1:-1:-1;;;21651:18:1;;;21644:31;21692:19;;9576:64:0;21320:397:1;9576:64:0;-1:-1:-1;;;;;9659:16:0;;9651:60;;;;-1:-1:-1;;;9651:60:0;;21924:2:1;9651:60:0;;;21906:21:1;21963:2;21943:18;;;21936:30;22002:33;21982:18;;;21975:61;22053:18;;9651:60:0;21722:355:1;9651:60:0;9739:1;9730:6;:10;9722:50;;;;-1:-1:-1;;;9722:50:0;;22284:2:1;9722:50:0;;;22266:21:1;22323:2;22303:18;;;22296:30;22362:29;22342:18;;;22335:57;22409:18;;9722:50:0;22082:351:1;9722:50:0;-1:-1:-1;;;;;9792:23:0;;;;;;:17;:23;;;;;;;;9791:24;9783:62;;;;-1:-1:-1;;;9783:62:0;;22640:2:1;9783:62:0;;;22622:21:1;22679:2;22659:18;;;22652:30;22718:27;22698:18;;;22691:55;22763:18;;9783:62:0;22438:349:1;9783:62:0;-1:-1:-1;;;;;9865:21:0;;;;;;:17;:21;;;;;;;;9864:22;9856:63;;;;-1:-1:-1;;;9856:63:0;;22994:2:1;9856:63:0;;;22976:21:1;23033:2;23013:18;;;23006:30;23072;23052:18;;;23045:58;23120:18;;9856:63:0;22792:352:1;9856:63:0;2679:7;2706:6;-1:-1:-1;;;;;9977:15:0;;;2706:6;;9977:15;;;;:32;;-1:-1:-1;2679:7:0;2706:6;-1:-1:-1;;;;;9996:13:0;;;2706:6;;9996:13;;9977:32;:57;;;;-1:-1:-1;;;;;;10013:21:0;;10029:4;10013:21;;9977:57;:80;;;;-1:-1:-1;;;;;;10038:19:0;;10052:4;10038:19;;9977:80;9973:157;;;10082:11;;-1:-1:-1;;;10082:11:0;;;;10074:44;;;;-1:-1:-1;;;10074:44:0;;23351:2:1;10074:44:0;;;23333:21:1;23390:2;23370:18;;;23363:30;-1:-1:-1;;;23409:18:1;;;23402:50;23469:18;;10074:44:0;23149:344:1;10074:44:0;10150:17;2706:6;;-1:-1:-1;;;;;10223:15:0;;;2706:6;;10223:15;;;;:32;;-1:-1:-1;2679:7:0;2706:6;-1:-1:-1;;;;;10242:13:0;;;2706:6;;10242:13;;10223:32;10219:1680;;;-1:-1:-1;;;;;10281:10:0;;;;;;:4;:10;;;;;;;;10280:11;:24;;;;-1:-1:-1;;;;;;10296:8:0;;;;;;:4;:8;;;;;;;;10295:9;10280:24;10272:49;;;;-1:-1:-1;;;10272:49:0;;23700:2:1;10272:49:0;;;23682:21:1;23739:2;23719:18;;;23712:30;-1:-1:-1;;;23758:18:1;;;23751:42;23810:18;;10272:49:0;23498:336:1;10272:49:0;-1:-1:-1;;;;;10428:26:0;;;;;;:20;:26;;;;;;;;10427:27;:56;;;;-1:-1:-1;;;;;;10459:24:0;;;;;;:20;:24;;;;;;;;10458:25;10427:56;10423:162;;;10522:12;;10512:6;:22;;10504:65;;;;-1:-1:-1;;;10504:65:0;;24041:2:1;10504:65:0;;;24023:21:1;24080:2;24060:18;;;24053:30;24119:32;24099:18;;;24092:60;24169:18;;10504:65:0;23839:354:1;10504:65:0;10654:13;;-1:-1:-1;;;;;10646:21:0;;;10654:13;;10646:21;:55;;;;-1:-1:-1;10685:15:0;;-1:-1:-1;;;;;10671:30:0;;;10685:15;;10671:30;;10646:55;:82;;;;-1:-1:-1;;;;;;10706:22:0;;;;;;:18;:22;;;;;;;;10705:23;10646:82;10642:257;;;10783:14;;10773:6;10757:13;10767:2;10757:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10749:76;;;;-1:-1:-1;;;10749:76:0;;24530:2:1;10749:76:0;;;24512:21:1;24569:2;24549:18;;;24542:30;24608:25;24588:18;;;24581:53;24651:18;;10749:76:0;24328:347:1;10749:76:0;10856:27;10879:3;10856:18;10867:6;;10856;:10;;:18;;;;:::i;:27::-;10844:39;;10642:257;10967:13;;-1:-1:-1;;;;;10961:19:0;;;10967:13;;10961:19;:44;;;;-1:-1:-1;;;;;;10984:21:0;;11000:4;10984:21;;10961:44;:73;;;;-1:-1:-1;;;;;;11010:24:0;;;;;;:18;:24;;;;;;;;11009:25;10961:73;10957:154;;;11067:28;11091:3;11067:19;11078:7;;11067:6;:10;;:19;;;;:::i;:28::-;11055:40;;10957:154;11206:28;11237:24;11255:4;11237:9;:24::i;:::-;11281:6;;11206:55;;-1:-1:-1;;;;11281:6:0;;;;11280:7;:30;;;;-1:-1:-1;11297:13:0;;-1:-1:-1;;;;;11291:19:0;;;11297:13;;11291:19;11280:30;:45;;;;-1:-1:-1;11314:11:0;;-1:-1:-1;;;11314:11:0;;;;11280:45;:90;;;;;11353:17;;11329:20;:41;;11280:90;11276:612;;;11410:13;;11395:12;:28;11391:90;;;11460:1;11448:9;:13;11391:90;11519:1;11507:9;;:13;11499:49;;;;-1:-1:-1;;;11499:49:0;;24882:2:1;11499:49:0;;;24864:21:1;24921:2;24901:18;;;24894:30;24960:25;24940:18;;;24933:53;25003:18;;11499:49:0;24680:347:1;11499:49:0;11585:23;11611:51;11615:6;11623:38;11627:20;11649:11;;11623:3;:38::i;:::-;11611:3;:51::i;:::-;11585:77;-1:-1:-1;11685:19:0;;11681:97;;11729:29;11742:15;11729:12;:29::i;:::-;11814:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;11860:12:0;11844:13;:28;-1:-1:-1;11276:612:0;10257:1642;10219:1680;11945:13;;11941:172;;12020:4;12002:24;;;;:9;:24;;;;;;:39;;12031:9;12002:28;:39::i;:::-;11993:4;11975:24;;;;:9;:24;;;;;;;:66;;;;12061:40;;-1:-1:-1;;;;;12061:40:0;;;-1:-1:-1;;;;;;;;;;;12061:40:0;;;12091:9;1630:25:1;;1618:2;1603:18;;1484:177;12061:40:0;;;;;;;;11941:172;12165:22;12190:21;:6;12201:9;12190:10;:21::i;:::-;-1:-1:-1;;;;;12240:15:0;;;;;;:9;:15;;;;;;12165:46;;-1:-1:-1;12240:27:0;;12260:6;12240:19;:27::i;:::-;-1:-1:-1;;;;;12222:15:0;;;;;;;:9;:15;;;;;;:45;;;;12294:13;;;;;;;:33;;12312:14;12294:17;:33::i;:::-;-1:-1:-1;;;;;12278:13:0;;;;;;;:9;:13;;;;;;;:49;;;;12343:34;;;;;;-1:-1:-1;;;;;;;;;;;12343:34:0;;;12362:14;1630:25:1;;1618:2;1603:18;;1484:177;12343:34:0;;;;;;;;9565:2820;;9496:2889;;;:::o;1535:190::-;1621:7;1657:12;1649:6;;;;1641:29;;;;-1:-1:-1;;;1641:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1681:9:0;1693:5;1697:1;1693;:5;:::i;:::-;1681:17;1535:190;-1:-1:-1;;;;;1535:190:0:o;12393:105::-;12450:7;12481:1;12477;:5;:13;;12489:1;12477:13;;;-1:-1:-1;12485:1:0;;12393:105;-1:-1:-1;12393:105:0:o;12577:1553::-;6354:6;:13;;-1:-1:-1;;;;6354:13:0;-1:-1:-1;;;6354:13:0;;;12659:15;12651:48:::1;;;::::0;-1:-1:-1;;;12651:48:0;;25507:2:1;12651:48:0::1;::::0;::::1;25489:21:1::0;25546:2;25526:18;;;25519:30;-1:-1:-1;;;25565:18:1;;;25558:50;25625:18;;12651:48:0::1;25305:344:1::0;12651:48:0::1;12720:19;12742:24;12760:4;12742:9;:24::i;:::-;12720:46;;12800:11;12785;:26;;12777:68;;;::::0;-1:-1:-1;;;12777:68:0;;25856:2:1;12777:68:0::1;::::0;::::1;25838:21:1::0;25895:2;25875:18;;;25868:30;25934:31;25914:18;;;25907:59;25983:18;;12777:68:0::1;25654:353:1::0;12777:68:0::1;12920:34;12948:5;;12920:23;12935:7;;12920:10;;:14;;:23;;;;:::i;:34::-;12958:5;12920:43;12912:74;;;::::0;-1:-1:-1;;;12912:74:0;;26214:2:1;12912:74:0::1;::::0;::::1;26196:21:1::0;26253:2;26233:18;;;26226:30;-1:-1:-1;;;26272:18:1;;;26265:48;26330:18;;12912:74:0::1;26012:342:1::0;12912:74:0::1;13040:20;13063:35;13092:5;13063:24;13079:7;;13063:11;:15;;:24;;;;:::i;:35::-;13040:58:::0;-1:-1:-1;13113:16:0;;13109:74:::1;;13146:25;13158:12;13146:11;:25::i;:::-;13203:17;13223:29;:11:::0;13239:12;13223:15:::1;:29::i;:::-;13203:49;;13267:9;13280:1;13267:14:::0;13263:27:::1;;13283:7;;;;;13263:27;13376:25;13404:21;13419:5;;13404:10;;:14;;:21;;;;:::i;:::-;13376:49;;13464:1;13444:17;:21;13436:62;;;::::0;-1:-1:-1;;;13436:62:0;;26561:2:1;13436:62:0::1;::::0;::::1;26543:21:1::0;26600:2;26580:18;;;26573:30;26639;26619:18;;;26612:58;26687:18;;13436:62:0::1;26359:352:1::0;13436:62:0::1;13519:24;13546:48;13576:17;13546:25;13560:10;;13546:9;:13;;:25;;;;:::i;:48::-;13519:75:::0;-1:-1:-1;13605:19:0::1;13627:31;:9:::0;13519:75;13627:13:::1;:31::i;:::-;13605:53:::0;-1:-1:-1;13753:20:0;;13749:214:::1;;13790:21;13814:35;13832:16;13814:17;:35::i;:::-;13790:59:::0;-1:-1:-1;13868:17:0;;13864:88:::1;;13906:30;13922:13;13906:15;:30::i;:::-;13775:188;13749:214;14056:15:::0;;14052:71:::1;;14088:23;14099:11;14088:10;:23::i;:::-;12640:1490;;;;;;6378:1;-1:-1:-1::0;6390:6:0;:14;;-1:-1:-1;;;;6390:14:0;;;12577:1553::o;1204:179::-;1262:7;;1294:5;1298:1;1294;:5;:::i;:::-;1282:17;;1323:1;1318;:6;;1310:46;;;;-1:-1:-1;;;1310:46:0;;26918:2:1;1310:46:0;;;26900:21:1;26957:2;26937:18;;;26930:30;26996:29;26976:18;;;26969:57;27043:18;;1310:46:0;26716:351:1;1733:246:0;1791:7;1815:1;1820;1815:6;1811:47;;-1:-1:-1;1845:1:0;1838:8;;1811:47;1868:9;1880:5;1884:1;1880;:5;:::i;:::-;1868:17;-1:-1:-1;1913:1:0;1904:5;1908:1;1868:17;1904:5;:::i;:::-;:10;1896:56;;;;-1:-1:-1;;;1896:56:0;;27496:2:1;1896:56:0;;;27478:21:1;27535:2;27515:18;;;27508:30;27574:34;27554:18;;;27547:62;-1:-1:-1;;;27625:18:1;;;27618:31;27666:19;;1896:56:0;27294:397:1;1391:136:0;1449:7;1476:43;1480:1;1483;1476:43;;;;;;;;;;;;;;;;;:3;:43::i;15236:850::-;15319:1;15307:9;:13;15299:48;;;;-1:-1:-1;;;15299:48:0;;18123:2:1;15299:48:0;;;18105:21:1;18162:2;18142:18;;;18135:30;-1:-1:-1;;;18181:18:1;;;18174:52;18243:18;;15299:48:0;17921:346:1;15299:48:0;15379:21;15366:9;:34;;15358:71;;;;-1:-1:-1;;;15358:71:0;;27898:2:1;15358:71:0;;;27880:21:1;27937:2;27917:18;;;27910:30;27976:26;27956:18;;;27949:54;28020:18;;15358:71:0;27696:348:1;15358:71:0;15474:16;;;15488:1;15474:16;;;;;;;;15450:21;;15474:16;;;;;;;;-1:-1:-1;;15511:15:0;;:22;;;-1:-1:-1;;;15511:22:0;;;;15450:40;;-1:-1:-1;;;;;;15511:15:0;;;;:20;;-1:-1:-1;15511:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15501:4;15506:1;15501:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;15501:32:0;;;-1:-1:-1;;;;;15501:32:0;;;;;15562:4;15544;15549:1;15544:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15544:23:0;;;-1:-1:-1;;;;;15544:23:0;;;;;15588:27;15618:15;4578:42;15618:9;:15::i;:::-;15658;;:179;;-1:-1:-1;;;15658:179:0;;15588:45;;-1:-1:-1;;;;;;15658:15:0;;:66;;15732:9;;15658:179;;:15;;15773:4;;4578:42;;15811:15;;15658:179;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15654:425;;;15853:20;15876:40;15896:19;15876:15;4578:42;15876:9;:15::i;:40::-;15936;;;12385:25:1;;;12441:2;12426:18;;12419:34;;;15853:63:0;;-1:-1:-1;15936:40:0;;12358:18:1;15936:40:0;;;;;;;15838:150;15288:798;;15236:850;:::o;2127:189::-;2213:7;2248:12;2241:5;2233:28;;;;-1:-1:-1;;;2233:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2272:9:0;2284:5;2288:1;2284;:5;:::i;14447:777::-;14512:7;14554:1;14540:11;:15;14532:52;;;;-1:-1:-1;;;14532:52:0;;;;;;;:::i;:::-;14699:16;;;14713:1;14699:16;;;;;;;;14633:21;;14605:25;;14699:16;14713:1;14699:16;;;;;;;;;;-1:-1:-1;14699:16:0;14675:40;;14744:4;14726;14731:1;14726:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14726:23:0;;;:7;;;;;;;;;;:23;;;;14770:15;;:22;;;-1:-1:-1;;;14770:22:0;;;;:15;;;;;:20;;:22;;;;;14726:7;;14770:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14760:4;14765:1;14760:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14760:32:0;;;:7;;;;;;;;;:32;14845:15;;14813:62;;14830:4;;14845:15;14863:11;14813:8;:62::i;:::-;14900:15;;:196;;-1:-1:-1;;;14900:196:0;;-1:-1:-1;;;;;14900:15:0;;;;:66;;:196;;14981:11;;14900:15;;15023:4;;15050;;15070:15;;14900:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14896:321;;-1:-1:-1;15204:1:0;;14447:777;-1:-1:-1;;;14447:777:0:o;14896:321::-;15119:44;:21;15145:17;15119:25;:44::i;:::-;15112:51;14447:777;-1:-1:-1;;;;14447:777:0:o;16098:982::-;16180:1;16166:11;:15;16158:52;;;;-1:-1:-1;;;16158:52:0;;;;;;;:::i;:::-;16261:20;16284:18;:11;16300:1;16284:15;:18::i;:::-;16261:41;-1:-1:-1;16313:26:0;16342:29;:11;16261:41;16342:15;:29::i;:::-;16313:58;;16392:19;16414:31;16432:12;16414:17;:31::i;:::-;16392:53;;16484:1;16470:11;:15;:41;;;;;16510:1;16489:18;:22;16470:41;16466:607;;;16560:15;;16528:69;;16545:4;;-1:-1:-1;;;;;16560:15:0;16578:18;16528:8;:69::i;:::-;16630:15;;:267;;-1:-1:-1;;;16630:267:0;;-1:-1:-1;;;;;16630:15:0;;;;:31;;16669:11;;16630:267;;16708:4;;16732:18;;16630:15;;;;4578:42;;16867:15;;16630:267;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16630:267:0;;;;;;;;-1:-1:-1;;16630:267:0;;;;;;;;;;;;:::i;:::-;;;16626:436;;;;;;16147:933;;;16098:982;:::o;222:418:1:-;371:2;360:9;353:21;334:4;403:6;397:13;446:6;441:2;430:9;426:18;419:34;505:6;500:2;492:6;488:15;483:2;472:9;468:18;462:50;561:1;556:2;547:6;536:9;532:22;528:31;521:42;631:2;624;620:7;615:2;607:6;603:15;599:29;588:9;584:45;580:54;572:62;;;222:418;;;;:::o;645:131::-;-1:-1:-1;;;;;720:31:1;;710:42;;700:70;;766:1;763;756:12;781:134;849:20;;878:31;849:20;878:31;:::i;:::-;781:134;;;:::o;920:367::-;988:6;996;1049:2;1037:9;1028:7;1024:23;1020:32;1017:52;;;1065:1;1062;1055:12;1017:52;1104:9;1091:23;1123:31;1148:5;1123:31;:::i;:::-;1173:5;1251:2;1236:18;;;;1223:32;;-1:-1:-1;;;920:367:1:o;2368:226::-;2427:6;2480:2;2468:9;2459:7;2455:23;2451:32;2448:52;;;2496:1;2493;2486:12;2448:52;-1:-1:-1;2541:23:1;;2368:226;-1:-1:-1;2368:226:1:o;2599:508::-;2676:6;2684;2692;2745:2;2733:9;2724:7;2720:23;2716:32;2713:52;;;2761:1;2758;2751:12;2713:52;2800:9;2787:23;2819:31;2844:5;2819:31;:::i;:::-;2869:5;-1:-1:-1;2926:2:1;2911:18;;2898:32;2939:33;2898:32;2939:33;:::i;:::-;2599:508;;2991:7;;-1:-1:-1;;;3071:2:1;3056:18;;;;3043:32;;2599:508::o;3717:127::-;3778:10;3773:3;3769:20;3766:1;3759:31;3809:4;3806:1;3799:15;3833:4;3830:1;3823:15;3849:1127;3933:6;3986:2;3974:9;3965:7;3961:23;3957:32;3954:52;;;4002:1;3999;3992:12;3954:52;4042:9;4029:23;4075:18;4067:6;4064:30;4061:50;;;4107:1;4104;4097:12;4061:50;4130:22;;4183:4;4175:13;;4171:27;-1:-1:-1;4161:55:1;;4212:1;4209;4202:12;4161:55;4252:2;4239:16;4278:18;4270:6;4267:30;4264:56;;;4300:18;;:::i;:::-;4346:6;4343:1;4339:14;4382:2;4376:9;4445:2;4441:7;4436:2;4432;4428:11;4424:25;4416:6;4412:38;4516:6;4504:10;4501:22;4480:18;4468:10;4465:34;4462:62;4459:88;;;4527:18;;:::i;:::-;4563:2;4556:22;4613;;;4663:2;4693:11;;;4689:20;;;4613:22;4651:15;;4721:19;;;4718:39;;;4753:1;4750;4743:12;4718:39;4785:2;4781;4777:11;4766:22;;4797:148;4813:6;4808:3;4805:15;4797:148;;;4879:23;4898:3;4879:23;:::i;:::-;4867:36;;4932:2;4830:12;;;;4923;4797:148;;;-1:-1:-1;4964:6:1;3849:1127;-1:-1:-1;;;;;;3849:1127:1:o;4981:247::-;5040:6;5093:2;5081:9;5072:7;5068:23;5064:32;5061:52;;;5109:1;5106;5099:12;5061:52;5148:9;5135:23;5167:31;5192:5;5167:31;:::i;5233:346::-;5301:6;5309;5362:2;5350:9;5341:7;5337:23;5333:32;5330:52;;;5378:1;5375;5368:12;5330:52;-1:-1:-1;;5423:23:1;;;5543:2;5528:18;;;5515:32;;-1:-1:-1;5233:346:1:o;5584:466::-;5661:6;5669;5677;5730:2;5718:9;5709:7;5705:23;5701:32;5698:52;;;5746:1;5743;5736:12;5698:52;-1:-1:-1;;5791:23:1;;;5911:2;5896:18;;5883:32;;-1:-1:-1;6014:2:1;5999:18;;;5986:32;;5584:466;-1:-1:-1;5584:466:1:o;6451:118::-;6537:5;6530:13;6523:21;6516:5;6513:32;6503:60;;6559:1;6556;6549:12;6574:382;6639:6;6647;6700:2;6688:9;6679:7;6675:23;6671:32;6668:52;;;6716:1;6713;6706:12;6668:52;6755:9;6742:23;6774:31;6799:5;6774:31;:::i;:::-;6824:5;-1:-1:-1;6881:2:1;6866:18;;6853:32;6894:30;6853:32;6894:30;:::i;:::-;6943:7;6933:17;;;6574:382;;;;;:::o;6961:388::-;7029:6;7037;7090:2;7078:9;7069:7;7065:23;7061:32;7058:52;;;7106:1;7103;7096:12;7058:52;7145:9;7132:23;7164:31;7189:5;7164:31;:::i;:::-;7214:5;-1:-1:-1;7271:2:1;7256:18;;7243:32;7284:33;7243:32;7284:33;:::i;7354:127::-;7415:10;7410:3;7406:20;7403:1;7396:31;7446:4;7443:1;7436:15;7470:4;7467:1;7460:15;7486:375;7574:1;7592:5;7606:249;7627:1;7617:8;7614:15;7606:249;;;7677:4;7672:3;7668:14;7662:4;7659:24;7656:50;;;7686:18;;:::i;:::-;7736:1;7726:8;7722:16;7719:49;;;7750:16;;;;7719:49;7833:1;7829:16;;;;;7789:15;;7606:249;;;7486:375;;;;;;:::o;7866:902::-;7915:5;7945:8;7935:80;;-1:-1:-1;7986:1:1;8000:5;;7935:80;8034:4;8024:76;;-1:-1:-1;8071:1:1;8085:5;;8024:76;8116:4;8134:1;8129:59;;;;8202:1;8197:174;;;;8109:262;;8129:59;8159:1;8150:10;;8173:5;;;8197:174;8234:3;8224:8;8221:17;8218:43;;;8241:18;;:::i;:::-;-1:-1:-1;;8297:1:1;8283:16;;8356:5;;8109:262;;8455:2;8445:8;8442:16;8436:3;8430:4;8427:13;8423:36;8417:2;8407:8;8404:16;8399:2;8393:4;8390:12;8386:35;8383:77;8380:203;;;-1:-1:-1;8492:19:1;;;8568:5;;8380:203;8615:42;-1:-1:-1;;8640:8:1;8634:4;8615:42;:::i;:::-;8693:6;8689:1;8685:6;8681:19;8672:7;8669:32;8666:58;;;8704:18;;:::i;:::-;8742:20;;7866:902;-1:-1:-1;;;7866:902:1:o;8773:140::-;8831:5;8860:47;8901:4;8891:8;8887:19;8881:4;8860:47;:::i;8918:168::-;8991:9;;;9022;;9039:15;;;9033:22;;9019:37;9009:71;;9060:18;;:::i;9091:338::-;9293:2;9275:21;;;9332:2;9312:18;;;9305:30;-1:-1:-1;;;9366:2:1;9351:18;;9344:44;9420:2;9405:18;;9091:338::o;9782:348::-;9984:2;9966:21;;;10023:2;10003:18;;;9996:30;10062:26;10057:2;10042:18;;10035:54;10121:2;10106:18;;9782:348::o;10135:356::-;10337:2;10319:21;;;10356:18;;;10349:30;10415:34;10410:2;10395:18;;10388:62;10482:2;10467:18;;10135:356::o;10496:127::-;10557:10;10552:3;10548:20;10545:1;10538:31;10588:4;10585:1;10578:15;10612:4;10609:1;10602:15;11267:245;11334:6;11387:2;11375:9;11366:7;11362:23;11358:32;11355:52;;;11403:1;11400;11393:12;11355:52;11435:9;11429:16;11454:28;11476:5;11454:28;:::i;14253:251::-;14323:6;14376:2;14364:9;14355:7;14351:23;14347:32;14344:52;;;14392:1;14389;14382:12;14344:52;14424:9;14418:16;14443:31;14468:5;14443:31;:::i;15163:603::-;-1:-1:-1;;;;;15484:32:1;;;15466:51;;15548:2;15533:18;;15526:34;;;;15591:2;15576:18;;15569:34;;;;15634:2;15619:18;;15612:34;;;;15683:32;;;15677:3;15662:19;;15655:61;15504:3;15732:19;;15725:35;;;;15453:3;15438:19;;15163:603::o;15771:456::-;15859:6;15867;15875;15928:2;15916:9;15907:7;15903:23;15899:32;15896:52;;;15944:1;15941;15934:12;15896:52;-1:-1:-1;;15989:16:1;;16095:2;16080:18;;16074:25;16191:2;16176:18;;;16170:25;15989:16;;16074:25;;-1:-1:-1;16170:25:1;15771:456;-1:-1:-1;15771:456:1:o;18626:230::-;18696:6;18749:2;18737:9;18728:7;18724:23;18720:32;18717:52;;;18765:1;18762;18755:12;18717:52;-1:-1:-1;18810:16:1;;18626:230;-1:-1:-1;18626:230:1:o;24198:125::-;24263:9;;;24284:10;;;24281:36;;;24297:18;;:::i;25032:135::-;25071:3;25092:17;;;25089:43;;25112:18;;:::i;:::-;-1:-1:-1;25159:1:1;25148:13;;25032:135::o;25172:128::-;25239:9;;;25260:11;;;25257:37;;;25274:18;;:::i;27072:217::-;27112:1;27138;27128:132;;27182:10;27177:3;27173:20;27170:1;27163:31;27217:4;27214:1;27207:15;27245:4;27242:1;27235:15;27128:132;-1:-1:-1;27274:9:1;;27072:217::o;28049:446::-;28102:3;28140:5;28134:12;28167:6;28162:3;28155:19;28199:4;28194:3;28190:14;28183:21;;28238:4;28231:5;28227:16;28261:1;28271:199;28285:6;28282:1;28279:13;28271:199;;;28350:13;;-1:-1:-1;;;;;28346:39:1;28334:52;;28415:4;28406:14;;;;28443:17;;;;28382:1;28300:9;28271:199;;;-1:-1:-1;28486:3:1;;28049:446;-1:-1:-1;;;;28049:446:1:o;28500:510::-;28771:6;28760:9;28753:25;28814:3;28809:2;28798:9;28794:18;28787:31;28734:4;28835:57;28887:3;28876:9;28872:19;28864:6;28835:57;:::i;:::-;-1:-1:-1;;;;;28928:32:1;;;;28923:2;28908:18;;28901:60;-1:-1:-1;28992:2:1;28977:18;28970:34;28827:65;28500:510;-1:-1:-1;;28500:510:1:o;29015:582::-;29314:6;29303:9;29296:25;29357:6;29352:2;29341:9;29337:18;29330:34;29400:3;29395:2;29384:9;29380:18;29373:31;29277:4;29421:57;29473:3;29462:9;29458:19;29450:6;29421:57;:::i;:::-;-1:-1:-1;;;;;29514:32:1;;;;29509:2;29494:18;;29487:60;-1:-1:-1;29578:3:1;29563:19;29556:35;29413:65;29015:582;-1:-1:-1;;;29015:582:1:o
Swarm Source
ipfs://53ebdaad6eeb1d47689b9761004be1ce41b323e15e140223ee5fb835623ef34e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 36 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,944.7 | 0.00001648 | $0.048524 |
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.