Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 123 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 15301358 | 1310 days ago | IN | 0 ETH | 0.00024773 | ||||
| Transfer | 15293419 | 1312 days ago | IN | 0 ETH | 0.00102645 | ||||
| Approve | 15228345 | 1322 days ago | IN | 0 ETH | 0.000236 | ||||
| Approve | 15228345 | 1322 days ago | IN | 0 ETH | 0.00019163 | ||||
| Transfer | 15228345 | 1322 days ago | IN | 0 ETH | 0.00093115 | ||||
| Approve | 15228345 | 1322 days ago | IN | 0 ETH | 0.000236 | ||||
| Approve | 15228345 | 1322 days ago | IN | 0 ETH | 0.00021901 | ||||
| Approve | 15228345 | 1322 days ago | IN | 0 ETH | 0.00021901 | ||||
| Approve | 15228345 | 1322 days ago | IN | 0 ETH | 0.000236 | ||||
| Approve | 15228345 | 1322 days ago | IN | 0 ETH | 0.00033093 | ||||
| Approve | 15225220 | 1322 days ago | IN | 0 ETH | 0.00107949 | ||||
| Approve | 15225140 | 1322 days ago | IN | 0 ETH | 0.00083066 | ||||
| Approve | 15225115 | 1322 days ago | IN | 0 ETH | 0.00099373 | ||||
| Approve | 15224980 | 1322 days ago | IN | 0 ETH | 0.00097514 | ||||
| Transfer Admin | 15224855 | 1322 days ago | IN | 0 ETH | 0.00117404 | ||||
| Approve | 15224468 | 1322 days ago | IN | 0 ETH | 0.00061318 | ||||
| Approve | 15224463 | 1322 days ago | IN | 0 ETH | 0.00066964 | ||||
| Approve | 15224460 | 1322 days ago | IN | 0 ETH | 0.00057885 | ||||
| Approve | 15224442 | 1322 days ago | IN | 0 ETH | 0.00060591 | ||||
| Approve | 15224396 | 1322 days ago | IN | 0 ETH | 0.00033485 | ||||
| Approve | 15224395 | 1322 days ago | IN | 0 ETH | 0.00030555 | ||||
| Update Fees | 15224395 | 1322 days ago | IN | 0 ETH | 0.00039825 | ||||
| Approve | 15224364 | 1322 days ago | IN | 0 ETH | 0.00039026 | ||||
| Approve | 15224348 | 1322 days ago | IN | 0 ETH | 0.00046647 | ||||
| Approve | 15224339 | 1322 days ago | IN | 0 ETH | 0.00021836 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 15225027 | 1322 days ago | 0.00509133 ETH | ||||
| Transfer | 15225027 | 1322 days ago | 0.01272833 ETH | ||||
| Transfer | 15225027 | 1322 days ago | 0.01781966 ETH | ||||
| Transfer | 15224426 | 1322 days ago | 0.00700263 ETH | ||||
| Transfer | 15224426 | 1322 days ago | 0.01750659 ETH | ||||
| Transfer | 15224426 | 1322 days ago | 0.02450923 ETH | ||||
| Transfer | 15224397 | 1322 days ago | 0.01241284 ETH | ||||
| Transfer | 15224397 | 1322 days ago | 0.03103211 ETH | ||||
| Transfer | 15224397 | 1322 days ago | 0.04344495 ETH | ||||
| Transfer | 15224370 | 1322 days ago | 0.01531849 ETH | ||||
| Transfer | 15224370 | 1322 days ago | 0.04595549 ETH | ||||
| Transfer | 15224370 | 1322 days ago | 0.06127399 ETH | ||||
| Transfer | 15224358 | 1322 days ago | 0.02416626 ETH | ||||
| Transfer | 15224358 | 1322 days ago | 0.0724988 ETH | ||||
| Transfer | 15224358 | 1322 days ago | 0.09666507 ETH | ||||
| Transfer | 15224339 | 1322 days ago | 0.02745236 ETH | ||||
| Transfer | 15224339 | 1322 days ago | 0.0823571 ETH | ||||
| Transfer | 15224339 | 1322 days ago | 0.10980947 ETH | ||||
| Transfer | 15224315 | 1322 days ago | 0.0361897 ETH | ||||
| Transfer | 15224315 | 1322 days ago | 0.10856911 ETH | ||||
| Transfer | 15224315 | 1322 days ago | 0.14475882 ETH | ||||
| Transfer | 15224292 | 1322 days ago | 0.04105902 ETH | ||||
| Transfer | 15224292 | 1322 days ago | 0.12317707 ETH | ||||
| Transfer | 15224292 | 1322 days ago | 0.1642361 ETH | ||||
| Transfer | 15224279 | 1322 days ago | 0.06106954 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
HTWF
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-07-27
*/
/*
HeatWave
based devs with previous projects
callers organised at launch
Get in and bring the heat!
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
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;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
interface IBEP20 {
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);
}
interface IBEP20Metadata is IBEP20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract BEP20 is Context, IBEP20, IBEP20Metadata {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 internal _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,
"BEP20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue,
"BEP20: decreased allowance below zero"));
return true;
}
function _transfer(address sender, address recipient, uint256 amount) internal virtual {
require(sender != address(0), "BEP20: transfer from the zero address");
require(recipient != address(0), "BEP20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount,"BEP20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "BEP20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "BEP20: approve from the zero address");
require(spender != address(0), "BEP20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
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);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint256 value);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint256);
function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r,
bytes32 s) external;
event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out,
uint256 amount1Out, address indexed to);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1,
uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired,
uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline)
external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin,
uint256 amountETHMin, address to, uint256 deadline)
external payable returns (uint256 amountToken, uint256 amountETH,
uint256 liquidity);
function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin,
uint256 amountBMin, address to, uint256 deadline)
external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin,
uint256 amountETHMin, address to, uint256 deadline)
external returns (uint256 amountToken, uint256 amountETH);
function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity,
uint256 amountAMin, uint256 amountBMin, address to,
uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s)
external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin,
uint256 amountETHMin, address to, uint256 deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s)
external returns (uint256 amountToken, uint256 amountETH);
function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path,
address to, uint256 deadline)
external returns (uint256[] memory amounts);
function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path,
address to, uint256 deadline)
external returns (uint256[] memory amounts);
function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to,
uint256 deadline)
external payable returns (uint256[] memory amounts);
function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path,
address to, uint256 deadline)
external returns (uint256[] memory amounts);
function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path,
address to, uint256 deadline)
external returns (uint256[] memory amounts);
function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to,
uint256 deadline)
external payable returns (uint256[] memory amounts);
function quote(uint256 amountA, uint256 reserveA, uint256 reserveB)
external pure returns (uint256 amountB);
function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut)
external pure returns (uint256 amountOut);
function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut)
external pure returns (uint256 amountIn);
function getAmountsOut(uint256 amountIn, address[] calldata path)
external view returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] calldata path)
external view returns (uint256[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity,
uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline)
external returns (uint256 amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity,
uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax,
uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin,
address[] calldata path, address to, uint256 deadline) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin,
address[] calldata path, address to, uint256 deadline) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin,
address[] calldata path, address to, uint256 deadline) external;
}
contract HTWF is BEP20, Ownable { // CONTRACT NAME FOR YOUR CUSTOM CONTRACT
using SafeMath for uint256;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
bool private swapping;
bool public tradingEnabled = false;
uint256 public sellAmount = 0;
uint256 public buyAmount = 0;
uint256 private totalSellFees;
uint256 private totalBuyFees;
address payable public marketingWallet;
address payable public devWallet;
uint256 public maxWallet;
bool public maxWalletEnabled = true;
uint256 public swapTokensAtAmount;
uint256 public sellMarketingFees;
uint256 public sellLiquidityFee;
uint256 public buyMarketingFees;
uint256 public buyLiquidityFee;
uint256 public buyDevFee;
uint256 public sellDevFee;
bool public swapAndLiquifyEnabled = true;
mapping(address => bool) private _isExcludedFromFees;
mapping(address => bool) public automatedMarketMakerPairs;
mapping(address => bool) private canTransferBeforeTradingIsEnabled;
bool public limitsInEffect = true;
uint256 private gasPriceLimit = 7 * 1 gwei; // MAX GWEI
mapping(address => uint256) private _holderLastTransferBlock; // FOR 1TX PER BLOCK
mapping(address => uint256) private _holderLastTransferTimestamp; // FOR COOLDOWN
uint256 public launchblock; // FOR DEADBLOCKS
uint256 public launchtimestamp; // FOR LAUNCH TIMESTAMP
uint256 public cooldowntimer = 30; // DEFAULT COOLDOWN TIMER
event EnableSwapAndLiquify(bool enabled);
event SetPreSaleWallet(address wallet);
event updateMarketingWallet(address wallet);
event updateDevWallet(address wallet);
event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
event TradingEnabled();
event UpdateFees(uint256 sellMarketingFees, uint256 sellLiquidityFee, uint256 buyMarketingFees,
uint256 buyLiquidityFee, uint256 buyDevFee, uint256 sellDevFee);
event Airdrop(address holder, uint256 amount);
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);
event SendDividends(uint256 opAmount, bool success);
constructor() BEP20("HTW", "HTW") { // PROJECTNAME AND TICKER GO HERE
marketingWallet = payable(0x51E1C1E7977353eAcE34fDC3745795EC415B112c); // CHANGE THIS TO YOURS
devWallet = payable(0x9772818176922aBc5e9027D2B80eb7F4A5B04A4F); // CHANGE THIS TO YOURS
address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
//INITIAL FEE VALUES HERE
buyMarketingFees = 2;
sellMarketingFees = 7;
buyLiquidityFee = 0;
sellLiquidityFee = 1;
buyDevFee = 0;
sellDevFee = 2;
// TOTAL BUY AND TOTAL SELL FEE CALCS
totalBuyFees = buyMarketingFees.add(buyLiquidityFee).add(buyDevFee);
totalSellFees = sellMarketingFees.add(sellLiquidityFee).add(sellDevFee);
uniswapV2Router = IUniswapV2Router02(router);
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
address(this), uniswapV2Router.WETH());
_setAutomatedMarketMakerPair(uniswapV2Pair, true);
_isExcludedFromFees[address(this)] = true;
_isExcludedFromFees[msg.sender] = true;
_isExcludedFromFees[marketingWallet] = true;
uint256 _totalSupply = (1_000_000_000_000) * (10**18); // TOTAL SUPPLY IS SET HERE
_mint(owner(), _totalSupply); // only time internal mint function is ever called is to create supply
maxWallet = _totalSupply / 50; // 2%
swapTokensAtAmount = _totalSupply / 100; // 1%;
canTransferBeforeTradingIsEnabled[owner()] = true;
canTransferBeforeTradingIsEnabled[address(this)] = true;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
receive() external payable {}
function enableTrading() external onlyOwner {
require(!tradingEnabled);
tradingEnabled = true;
launchblock = block.number;
launchtimestamp = block.timestamp;
emit TradingEnabled();
}
function setMarketingWallet(address wallet) external onlyOwner {
_isExcludedFromFees[wallet] = true;
marketingWallet = payable(wallet);
emit updateMarketingWallet(wallet);
}
function setDevWallet(address wallet) external onlyOwner {
_isExcludedFromFees[wallet] = true;
devWallet = payable(wallet);
emit updateDevWallet(wallet);
}
function setExcludeFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setCanTransferBefore(address wallet, bool enable) external onlyOwner {
canTransferBeforeTradingIsEnabled[wallet] = enable;
}
function setLimitsInEffect(bool value) external onlyOwner {
limitsInEffect = value;
}
function setMaxWalletEnabled(bool value) external onlyOwner {
maxWalletEnabled = value;
}
function setcooldowntimer(uint256 value) external onlyOwner {
require(value <= 300, "cooldown timer cannot exceed 5 minutes");
cooldowntimer = value;
}
function setmaxWallet(uint256 value) external onlyOwner {
value = value * (10**18);
require(value >= _totalSupply / 100, "max wallet cannot be set to less than 1%");
maxWallet = value;
}
// TAKES ALL BNB FROM THE CONTRACT ADDRESS AND SENDS IT TO OWNERS WALLET
function Sweep() external onlyOwner {
uint256 amountBNB = address(this).balance;
payable(msg.sender).transfer(amountBNB);
}
function setSwapTriggerAmount(uint256 amount) public onlyOwner {
swapTokensAtAmount = amount * (10**18);
}
function enableSwapAndLiquify(bool enabled) public onlyOwner {
require(swapAndLiquifyEnabled != enabled);
swapAndLiquifyEnabled = enabled;
emit EnableSwapAndLiquify(enabled);
}
function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
// THIS IS THE ONE YOU USE TO TRASNFER OWNER IF U EVER DO
function transferAdmin(address newOwner) public onlyOwner {
_isExcludedFromFees[newOwner] = true;
canTransferBeforeTradingIsEnabled[newOwner] = true;
transferOwnership(newOwner);
}
function updateFees(uint256 marketingBuy, uint256 marketingSell, uint256 liquidityBuy,
uint256 liquiditySell, uint256 devBuy, uint256 devSell) public onlyOwner {
buyMarketingFees = marketingBuy;
buyLiquidityFee = liquidityBuy;
sellMarketingFees = marketingSell;
sellLiquidityFee = liquiditySell;
buyDevFee = devBuy;
sellDevFee = devSell;
totalSellFees = sellMarketingFees.add(sellLiquidityFee).add(sellDevFee);
totalBuyFees = buyMarketingFees.add(buyLiquidityFee).add(buyDevFee);
// ABSOLUTE TAX LIMITS GO HERE
require(totalSellFees <= 15 && totalBuyFees <= 15, "total fees cannot be higher than 15%");
emit UpdateFees(sellMarketingFees, sellLiquidityFee, sellDevFee, buyMarketingFees,
buyLiquidityFee, buyDevFee);
}
function isExcludedFromFees(address account) public view returns (bool) {
return _isExcludedFromFees[account];
}
function _transfer(address from, address to, uint256 amount) internal override {
require(from != address(0), "IBEP20: transfer from the zero address");
require(to != address(0), "IBEP20: transfer to the zero address");
uint256 marketingFees;
uint256 liquidityFee;
uint256 devFee;
if (!canTransferBeforeTradingIsEnabled[from]) {
require(tradingEnabled, "Trading has not yet been enabled");
}
if (amount == 0) {
super._transfer(from, to, 0);
return;
}
else if (
!swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]
) {
bool isSelling = automatedMarketMakerPairs[to];
if (isSelling) {
marketingFees = sellMarketingFees;
liquidityFee = sellLiquidityFee;
devFee = sellDevFee;
if (limitsInEffect) {
require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer,
"cooldown period active");
_holderLastTransferTimestamp[tx.origin] = block.timestamp;
}
}
else {
marketingFees = buyMarketingFees;
liquidityFee = buyLiquidityFee;
devFee = buyDevFee;
if (limitsInEffect) {
require(block.number > launchblock + 2,"you shall not pass");
require(tx.gasprice <= gasPriceLimit,"Gas price exceeds limit.");
require(_holderLastTransferBlock[tx.origin] != block.number,"Too many TX in block");
require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer,
"cooldown period active");
_holderLastTransferBlock[tx.origin] = block.number;
_holderLastTransferTimestamp[tx.origin] = block.timestamp;
}
if (maxWalletEnabled) {
uint256 contractBalanceRecipient = balanceOf(to);
require(contractBalanceRecipient + amount <= maxWallet,
"Exceeds maximum wallet token amount." );
}
}
uint256 totalFees = marketingFees.add(liquidityFee).add(devFee);
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if (canSwap && !automatedMarketMakerPairs[from]) {
swapping = true;
uint256 swapTokens;
if (swapAndLiquifyEnabled && liquidityFee > 0) {
uint256 totalBuySell = buyAmount.add(sellAmount);
uint256 swapAmountBought = contractTokenBalance
.mul(buyAmount)
.div(totalBuySell);
uint256 swapAmountSold = contractTokenBalance
.mul(sellAmount)
.div(totalBuySell);
uint256 swapBuyTokens = swapAmountBought
.mul(liquidityFee)
.div(totalBuyFees);
uint256 swapSellTokens = swapAmountSold
.mul(liquidityFee)
.div(totalSellFees);
swapTokens = swapSellTokens.add(swapBuyTokens);
swapAndLiquify(swapTokens);
}
uint256 remainingBalance = swapTokensAtAmount.sub(swapTokens);
swapAndSendDividends(remainingBalance);
buyAmount = 0;
sellAmount = 0;
swapping = false;
}
uint256 fees = amount.mul(totalFees).div(100);
amount = amount.sub(fees);
if (isSelling) {
sellAmount = sellAmount.add(fees);
} else {
buyAmount = buyAmount.add(fees);
}
super._transfer(from, address(this), fees);
}
super._transfer(from, to, amount);
}
function swapAndLiquify(uint256 tokens) private {
uint256 half = tokens.div(2);
uint256 otherHalf = tokens.sub(half);
uint256 initialBalance = address(this).balance;
swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered
uint256 newBalance = address(this).balance.sub(initialBalance);
addLiquidity(otherHalf, newBalance);
emit SwapAndLiquify(half, newBalance, otherHalf);
}
function swapTokensForEth(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function forceSwapAndSendDividends(uint256 tokens) public onlyOwner {
tokens = tokens * (10**18);
uint256 totalAmount = buyAmount.add(sellAmount);
uint256 fromBuy = tokens.mul(buyAmount).div(totalAmount);
uint256 fromSell = tokens.mul(sellAmount).div(totalAmount);
swapAndSendDividends(tokens);
buyAmount = buyAmount.sub(fromBuy);
sellAmount = sellAmount.sub(fromSell);
}
// TAX PAYOUT CODE
function swapAndSendDividends(uint256 tokens) private {
if (tokens == 0) {
return;
}
swapTokensForEth(tokens);
bool success = true;
bool successOp1 = true;
uint256 _marketDevTotal = sellMarketingFees.add(sellDevFee) + buyMarketingFees.add(buyDevFee);
uint256 feePortions;
if (_marketDevTotal > 0) {
feePortions = address(this).balance.div(_marketDevTotal);
}
uint256 marketingPayout = buyMarketingFees.add(sellMarketingFees) * feePortions;
uint256 devPayout = buyDevFee.add(sellDevFee) * feePortions;
if (marketingPayout > 0) {
(success, ) = address(marketingWallet).call{value: marketingPayout}("");
}
if (devPayout > 0) {
(successOp1, ) = address(devWallet).call{value: devPayout}("");
}
emit SendDividends(
marketingPayout,
success && successOp1
);
}
function airdropToWallets(
address[] memory airdropWallets,
uint256[] memory amount
) external onlyOwner {
require(airdropWallets.length == amount.length, "Arrays must be the same length");
require(airdropWallets.length <= 200, "Wallets list length must be <= 200");
for (uint256 i = 0; i < airdropWallets.length; i++) {
address wallet = airdropWallets[i];
uint256 airdropAmount = amount[i] * (10**18);
super._transfer(msg.sender, wallet, airdropAmount);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Airdrop","type":"event"},{"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":"bool","name":"enabled","type":"bool"}],"name":"EnableSwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"opAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"SetPreSaleWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyDevFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellDevFee","type":"uint256"}],"name":"UpdateFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateDevWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateMarketingWallet","type":"event"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdropToWallets","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldowntimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"forceSwapAndSendDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchblock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchtimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setCanTransferBefore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setLimitsInEffect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxWalletEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTriggerAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setcooldowntimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setmaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"liquiditySell","type":"uint256"},{"internalType":"uint256","name":"devBuy","type":"uint256"},{"internalType":"uint256","name":"devSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526000600760156101000a81548160ff021916908315150217905550600060085560006009556001600f60006101000a81548160ff0219169083151502179055506001601760006101000a81548160ff0219169083151502179055506001601b60006101000a81548160ff0219169083151502179055506401a13b8600601c55601e6021553480156200009557600080fd5b506040518060400160405280600381526020017f48545700000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f485457000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200011a92919062000aee565b5080600490805190602001906200013392919062000aee565b5050506000620001486200080560201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507351e1c1e7977353eace34fdc3745795ec415b112c600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739772818176922abc5e9027d2b80eb7f4a5b04a4f600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060026013819055506007601181905550600060148190555060016012819055506000601581905550600260168190555062000313601554620002ff6014546013546200080d60201b620028fa1790919060201c565b6200080d60201b620028fa1790919060201c565b600b81905550620003526016546200033e6012546011546200080d60201b620028fa1790919060201c565b6200080d60201b620028fa1790919060201c565b600a8190555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000407573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042d919062000c08565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004dd919062000c08565b6040518363ffffffff1660e01b8152600401620004fc92919062000c4b565b6020604051808303816000875af11580156200051c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000542919062000c08565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005b7600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200087060201b60201c565b6001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006c0c9f2c9cd04674edea40000000905062000714620007076200091160201b60201c565b826200093b60201b60201c565b60328162000723919062000ce0565b600e8190555060648162000738919062000ce0565b6010819055506001601a6000620007546200091160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000efc565b600033905090565b60008082846200081e919062000d18565b90508381101562000866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200085d9062000dd6565b60405180910390fd5b8091505092915050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a49062000e48565b60405180910390fd5b620009c16000838362000ae960201b60201c565b620009dd816002546200080d60201b620028fa1790919060201c565b60028190555062000a3b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200080d60201b620028fa1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000add919062000e7b565b60405180910390a35050565b505050565b82805462000afc9062000ec7565b90600052602060002090601f01602090048101928262000b20576000855562000b6c565b82601f1062000b3b57805160ff191683800117855562000b6c565b8280016001018555821562000b6c579182015b8281111562000b6b57825182559160200191906001019062000b4e565b5b50905062000b7b919062000b7f565b5090565b5b8082111562000b9a57600081600090555060010162000b80565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bd08262000ba3565b9050919050565b62000be28162000bc3565b811462000bee57600080fd5b50565b60008151905062000c028162000bd7565b92915050565b60006020828403121562000c215762000c2062000b9e565b5b600062000c318482850162000bf1565b91505092915050565b62000c458162000bc3565b82525050565b600060408201905062000c62600083018562000c3a565b62000c71602083018462000c3a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ced8262000c78565b915062000cfa8362000c78565b92508262000d0d5762000d0c62000c82565b5b828204905092915050565b600062000d258262000c78565b915062000d328362000c78565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d6a5762000d6962000cb1565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000dbe601b8362000d75565b915062000dcb8262000d86565b602082019050919050565b6000602082019050818103600083015262000df18162000daf565b9050919050565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e30601f8362000d75565b915062000e3d8262000df8565b602082019050919050565b6000602082019050818103600083015262000e638162000e21565b9050919050565b62000e758162000c78565b82525050565b600060208201905062000e92600083018462000e6a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ee057607f821691505b60208210810362000ef65762000ef562000e98565b5b50919050565b61584b8062000f0c6000396000f3fe6080604052600436106103395760003560e01c806375f0a874116101ab578063a614ff75116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610bf5578063f637434214610c1e578063f8b45b0514610c49578063fc6b151c14610c7457610340565b8063dd62ed3e14610b62578063e2f4560514610b9f578063f11a24d314610bca57610340565b8063b62496f5116100d1578063b62496f514610aa8578063b74e3b1114610ae5578063d045a32914610b0e578063d5e3725114610b3957610340565b8063a614ff7514610a17578063a9059cbb14610a40578063b494298814610a7d57610340565b806395451c29116101645780639a7a23d61161013e5780639a7a23d61461095b5780639c3b4fdc14610984578063a0d82dc5146109af578063a457c2d7146109da57610340565b806395451c29146108dc57806395d89b4114610907578063992c58e41461093257610340565b806375f0a874146107f05780637fdde05c1461081b5780638a8c523c146108445780638c3c82b21461085b5780638da5cb5b146108865780638ea5220f146108b157610340565b80633f407b84116102855780635d098b38116102235780637088fb7f116101fd5780637088fb7f1461075c57806370a0823114610773578063715018a6146107b057806375829def146107c757610340565b80635d098b38146106e15780635eee4bae1461070a578063679ca6e91461073357610340565b80634a74bb021161025f5780634a74bb02146106235780634ada218b1461064e5780634fbee193146106795780635124f874146106b657610340565b80633f407b84146105a257806349bd5a5e146105cd5780634a62bb65146105f857610340565b80631d7b1fb4116102f25780632307b441116102cc5780632307b441146104d457806323b872dd146104fd578063313ce5671461053a578063395093511461056557610340565b80631d7b1fb4146104555780631f53ac02146104805780631fa70531146104a957610340565b806305ca5f081461034557806306fdde031461036e57806308dfe8a514610399578063095ea7b3146103c25780631694505e146103ff57806318160ddd1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061036c60048036038101906103679190613fc3565b610c9d565b005b34801561037a57600080fd5b50610383610e00565b6040516103909190614089565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190614141565b610e92565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190614181565b610fd2565b6040516103f691906141d0565b60405180910390f35b34801561040b57600080fd5b50610414610ff0565b604051610421919061424a565b60405180910390f35b34801561043657600080fd5b5061043f611016565b60405161044c9190614274565b60405180910390f35b34801561046157600080fd5b5061046a611020565b6040516104779190614274565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a2919061428f565b611026565b005b3480156104b557600080fd5b506104be611190565b6040516104cb9190614274565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f691906144c7565b611196565b005b34801561050957600080fd5b50610524600480360381019061051f919061453f565b611338565b60405161053191906141d0565b60405180910390f35b34801561054657600080fd5b5061054f611411565b60405161055c91906145ae565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190614181565b61141a565b60405161059991906141d0565b60405180910390f35b3480156105ae57600080fd5b506105b76114cd565b6040516105c49190614274565b60405180910390f35b3480156105d957600080fd5b506105e26114d3565b6040516105ef91906145d8565b60405180910390f35b34801561060457600080fd5b5061060d6114f9565b60405161061a91906141d0565b60405180910390f35b34801561062f57600080fd5b5061063861150c565b60405161064591906141d0565b60405180910390f35b34801561065a57600080fd5b5061066361151f565b60405161067091906141d0565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b919061428f565b611532565b6040516106ad91906141d0565b60405180910390f35b3480156106c257600080fd5b506106cb611588565b6040516106d89190614274565b60405180910390f35b3480156106ed57600080fd5b506107086004803603810190610703919061428f565b61158e565b005b34801561071657600080fd5b50610731600480360381019061072c9190613fc3565b6116f8565b005b34801561073f57600080fd5b5061075a600480360381019061075591906145f3565b6117ac565b005b34801561076857600080fd5b50610771611860565b005b34801561077f57600080fd5b5061079a6004803603810190610795919061428f565b611946565b6040516107a79190614274565b60405180910390f35b3480156107bc57600080fd5b506107c561198e565b005b3480156107d357600080fd5b506107ee60048036038101906107e9919061428f565b611ae6565b005b3480156107fc57600080fd5b50610805611c39565b6040516108129190614641565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190614141565b611c5f565b005b34801561085057600080fd5b50610859611d51565b005b34801561086757600080fd5b50610870611e59565b60405161087d9190614274565b60405180910390f35b34801561089257600080fd5b5061089b611e5f565b6040516108a891906145d8565b60405180910390f35b3480156108bd57600080fd5b506108c6611e89565b6040516108d39190614641565b60405180910390f35b3480156108e857600080fd5b506108f1611eaf565b6040516108fe9190614274565b60405180910390f35b34801561091357600080fd5b5061091c611eb5565b6040516109299190614089565b60405180910390f35b34801561093e57600080fd5b506109596004803603810190610954919061465c565b611f47565b005b34801561096757600080fd5b50610982600480360381019061097d9190614141565b612114565b005b34801561099057600080fd5b506109996121b9565b6040516109a69190614274565b60405180910390f35b3480156109bb57600080fd5b506109c46121bf565b6040516109d19190614274565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190614181565b6121c5565b604051610a0e91906141d0565b60405180910390f35b348015610a2357600080fd5b50610a3e6004803603810190610a3991906145f3565b612292565b005b348015610a4c57600080fd5b50610a676004803603810190610a629190614181565b612346565b604051610a7491906141d0565b60405180910390f35b348015610a8957600080fd5b50610a92612364565b604051610a9f9190614274565b60405180910390f35b348015610ab457600080fd5b50610acf6004803603810190610aca919061428f565b61236a565b604051610adc91906141d0565b60405180910390f35b348015610af157600080fd5b50610b0c6004803603810190610b079190613fc3565b61238a565b005b348015610b1a57600080fd5b50610b23612470565b604051610b3091906141d0565b60405180910390f35b348015610b4557600080fd5b50610b606004803603810190610b5b91906145f3565b612483565b005b348015610b6e57600080fd5b50610b896004803603810190610b8491906146e9565b61258d565b604051610b969190614274565b60405180910390f35b348015610bab57600080fd5b50610bb4612614565b604051610bc19190614274565b60405180910390f35b348015610bd657600080fd5b50610bdf61261a565b604051610bec9190614274565b60405180910390f35b348015610c0157600080fd5b50610c1c6004803603810190610c17919061428f565b612620565b005b348015610c2a57600080fd5b50610c336127e6565b604051610c409190614274565b60405180910390f35b348015610c5557600080fd5b50610c5e6127ec565b604051610c6b9190614274565b60405180910390f35b348015610c8057600080fd5b50610c9b6004803603810190610c969190613fc3565b6127f2565b005b610ca5612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90614775565b60405180910390fd5b670de0b6b3a764000081610d4891906147c4565b90506000610d636008546009546128fa90919063ffffffff16565b90506000610d8e82610d806009548661296090919063ffffffff16565b6129da90919063ffffffff16565b90506000610db983610dab6008548761296090919063ffffffff16565b6129da90919063ffffffff16565b9050610dc484612a24565b610dd982600954612c6690919063ffffffff16565b600981905550610df481600854612c6690919063ffffffff16565b60088190555050505050565b606060038054610e0f9061484d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3b9061484d565b8015610e885780601f10610e5d57610100808354040283529160200191610e88565b820191906000526020600020905b815481529060010190602001808311610e6b57829003601f168201915b5050505050905090565b610e9a612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090614775565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fc691906141d0565b60405180910390a25050565b6000610fe6610fdf612958565b8484612cb0565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60215481565b61102e612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa8160405161118591906145d8565b60405180910390a150565b60095481565b61119e612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490614775565b60405180910390fd5b8051825114611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906148ca565b60405180910390fd5b60c8825111156112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad9061495c565b60405180910390fd5b60005b82518110156113335760008382815181106112d7576112d661497c565b5b602002602001015190506000670de0b6b3a76400008484815181106112ff576112fe61497c565b5b602002602001015161131191906147c4565b905061131e338383612e79565b5050808061132b906149ab565b9150506112b9565b505050565b600061134584848461310c565b61140684611351612958565b611401856040518060600160405280602881526020016157a360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b7612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b612cb0565b600190509392505050565b60006012905090565b60006114c3611427612958565b846114be8560016000611438612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fa90919063ffffffff16565b612cb0565b6001905092915050565b60085481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900460ff1681565b601760009054906101000a900460ff1681565b600760159054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b611596612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c224433816040516116ed91906145d8565b60405180910390a150565b611700612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690614775565b60405180910390fd5b670de0b6b3a7640000816117a391906147c4565b60108190555050565b6117b4612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a90614775565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b611868612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee90614775565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611942573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611996612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90614775565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611aee612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7490614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c3681612620565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c67612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90614775565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d59612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90614775565b60405180910390fd5b600760159054906101000a900460ff1615611e0257600080fd5b6001600760156101000a81548160ff02191690831515021790555043601f81905550426020819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b60205481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b606060048054611ec49061484d565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef09061484d565b8015611f3d5780601f10611f1257610100808354040283529160200191611f3d565b820191906000526020600020905b815481529060010190602001808311611f2057829003601f168201915b5050505050905090565b611f4f612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd590614775565b60405180910390fd5b8560138190555083601481905550846011819055508260128190555081601581905550806016819055506120336016546120256012546011546128fa90919063ffffffff16565b6128fa90919063ffffffff16565b600a819055506120646015546120566014546013546128fa90919063ffffffff16565b6128fa90919063ffffffff16565b600b81905550600f600a54111580156120805750600f600b5411155b6120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b690614a65565b60405180910390fd5b7ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff60115460125460165460135460145460155460405161210496959493929190614a85565b60405180910390a1505050505050565b61211c612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a290614775565b60405180910390fd5b6121b58282613aa8565b5050565b60155481565b60165481565b60006122886121d2612958565b84612283856040518060600160405280602581526020016157f160259139600160006121fc612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b612cb0565b6001905092915050565b61229a612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232090614775565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b600061235a612353612958565b848461310c565b6001905092915050565b601f5481565b60196020528060005260406000206000915054906101000a900460ff1681565b612392612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241890614775565b60405180910390fd5b61012c811115612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614b58565b60405180910390fd5b8060218190555050565b600f60009054906101000a900460ff1681565b61248b612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251190614775565b60405180910390fd5b801515601760009054906101000a900460ff1615150361253957600080fd5b80601760006101000a81548160ff0219169083151502179055507fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef8160405161258291906141d0565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b60145481565b612628612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae90614775565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271d90614bea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600e5481565b6127fa612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288090614775565b60405180910390fd5b670de0b6b3a76400008161289d91906147c4565b905060646002546128ae9190614c39565b8110156128f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e790614cdc565b60405180910390fd5b80600e8190555050565b60008082846129099190614cfc565b90508381101561294e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294590614d9e565b60405180910390fd5b8091505092915050565b600033905090565b600080830361297257600090506129d4565b6000828461298091906147c4565b905082848261298f9190614c39565b146129cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c690614e30565b60405180910390fd5b809150505b92915050565b6000612a1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b49565b905092915050565b6000810315612c6357612a3681613bac565b6000600190506000600190506000612a5b6015546013546128fa90919063ffffffff16565b612a726016546011546128fa90919063ffffffff16565b612a7c9190614cfc565b9050600080821115612a9e57612a9b82476129da90919063ffffffff16565b90505b600081612ab86011546013546128fa90919063ffffffff16565b612ac291906147c4565b9050600082612ade6016546015546128fa90919063ffffffff16565b612ae891906147c4565b90506000821115612b8257600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612b3990614e81565b60006040518083038185875af1925050503d8060008114612b76576040519150601f19603f3d011682016040523d82523d6000602084013e612b7b565b606091505b5050809650505b6000811115612c1a57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612bd190614e81565b60006040518083038185875af1925050503d8060008114612c0e576040519150601f19603f3d011682016040523d82523d6000602084013e612c13565b606091505b5050809550505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea982878015612c465750865b604051612c54929190614e96565b60405180910390a15050505050505b50565b6000612ca883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a44565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1690614f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8590614fc3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e6c9190614274565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf90615055565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e906150e7565b60405180910390fd5b612f62838383613def565b612fcd816040518060600160405280602681526020016157cb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613060816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fa90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130ff9190614274565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361317b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317290615179565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e19061520b565b60405180910390fd5b6000806000601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661329057600760159054906101000a900460ff1661328f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328690615277565b60405180910390fd5b5b600084036132ac576132a486866000612e79565b505050613a3f565b600760149054906101000a900460ff161580156133135750601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133695750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a30576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905080156134c257601154935060125492506016549150601b60009054906101000a900460ff16156134bd57602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134369190614cfc565b421015613478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346f906152e3565b60405180910390fd5b42601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613789565b601354935060145492506015549150601b60009054906101000a900460ff1615613714576002601f546134f59190614cfc565b4311613536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352d9061534f565b60405180910390fd5b601c543a111561357b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613572906153bb565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036135fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f390615427565b60405180910390fd5b602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136499190614cfc565b42101561368b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613682906152e3565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900460ff161561378857600061373487611946565b9050600e5486826137459190614cfc565b1115613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d906154b9565b60405180910390fd5b505b5b60006137b0836137a286886128fa90919063ffffffff16565b6128fa90919063ffffffff16565b905060006137bd30611946565b9050600060105482101590508080156138205750601960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561399e576001600760146101000a81548160ff0219169083151502179055506000601760009054906101000a900460ff16801561385e5750600087115b1561394e57600061387c6008546009546128fa90919063ffffffff16565b905060006138a7826138996009548861296090919063ffffffff16565b6129da90919063ffffffff16565b905060006138d2836138c46008548961296090919063ffffffff16565b6129da90919063ffffffff16565b905060006138fd600b546138ef8d8661296090919063ffffffff16565b6129da90919063ffffffff16565b90506000613928600a5461391a8e8661296090919063ffffffff16565b6129da90919063ffffffff16565b905061393d82826128fa90919063ffffffff16565b955061394886613df4565b50505050505b600061396582601054612c6690919063ffffffff16565b905061397081612a24565b600060098190555060006008819055506000600760146101000a81548160ff02191690831515021790555050505b60006139c660646139b8868c61296090919063ffffffff16565b6129da90919063ffffffff16565b90506139db818a612c6690919063ffffffff16565b98508415613a03576139f8816008546128fa90919063ffffffff16565b600881905550613a1f565b613a18816009546128fa90919063ffffffff16565b6009819055505b613a2a8b3083612e79565b50505050505b613a3b868686612e79565b5050505b505050565b6000838311158290613a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a839190614089565b60405180910390fd5b5060008385613a9b91906154d9565b9050809150509392505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083118290613b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b879190614089565b60405180910390fd5b5060008385613b9f9190614c39565b9050809150509392505050565b6000600267ffffffffffffffff811115613bc957613bc86142c1565b5b604051908082528060200260200182016040528015613bf75781602001602082028036833780820191505090505b5090503081600081518110613c0f57613c0e61497c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cda9190615522565b81600181518110613cee57613ced61497c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cb0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613db9959493929190615648565b600060405180830381600087803b158015613dd357600080fd5b505af1158015613de7573d6000803e3d6000fd5b505050505050565b505050565b6000613e0a6002836129da90919063ffffffff16565b90506000613e218284612c6690919063ffffffff16565b90506000479050613e3183613bac565b6000613e468247612c6690919063ffffffff16565b9050613e528382613e94565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051613e85939291906156a2565b60405180910390a15050505050565b613ec130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cb0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613f0d611e5f565b426040518863ffffffff1660e01b8152600401613f2f969594939291906156d9565b60606040518083038185885af1158015613f4d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f72919061574f565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613fa081613f8d565b8114613fab57600080fd5b50565b600081359050613fbd81613f97565b92915050565b600060208284031215613fd957613fd8613f83565b5b6000613fe784828501613fae565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561402a57808201518184015260208101905061400f565b83811115614039576000848401525b50505050565b6000601f19601f8301169050919050565b600061405b82613ff0565b6140658185613ffb565b935061407581856020860161400c565b61407e8161403f565b840191505092915050565b600060208201905081810360008301526140a38184614050565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140d6826140ab565b9050919050565b6140e6816140cb565b81146140f157600080fd5b50565b600081359050614103816140dd565b92915050565b60008115159050919050565b61411e81614109565b811461412957600080fd5b50565b60008135905061413b81614115565b92915050565b6000806040838503121561415857614157613f83565b5b6000614166858286016140f4565b92505060206141778582860161412c565b9150509250929050565b6000806040838503121561419857614197613f83565b5b60006141a6858286016140f4565b92505060206141b785828601613fae565b9150509250929050565b6141ca81614109565b82525050565b60006020820190506141e560008301846141c1565b92915050565b6000819050919050565b600061421061420b614206846140ab565b6141eb565b6140ab565b9050919050565b6000614222826141f5565b9050919050565b600061423482614217565b9050919050565b61424481614229565b82525050565b600060208201905061425f600083018461423b565b92915050565b61426e81613f8d565b82525050565b60006020820190506142896000830184614265565b92915050565b6000602082840312156142a5576142a4613f83565b5b60006142b3848285016140f4565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6142f98261403f565b810181811067ffffffffffffffff82111715614318576143176142c1565b5b80604052505050565b600061432b613f79565b905061433782826142f0565b919050565b600067ffffffffffffffff821115614357576143566142c1565b5b602082029050602081019050919050565b600080fd5b600061438061437b8461433c565b614321565b905080838252602082019050602084028301858111156143a3576143a2614368565b5b835b818110156143cc57806143b888826140f4565b8452602084019350506020810190506143a5565b5050509392505050565b600082601f8301126143eb576143ea6142bc565b5b81356143fb84826020860161436d565b91505092915050565b600067ffffffffffffffff82111561441f5761441e6142c1565b5b602082029050602081019050919050565b600061444361443e84614404565b614321565b9050808382526020820190506020840283018581111561446657614465614368565b5b835b8181101561448f578061447b8882613fae565b845260208401935050602081019050614468565b5050509392505050565b600082601f8301126144ae576144ad6142bc565b5b81356144be848260208601614430565b91505092915050565b600080604083850312156144de576144dd613f83565b5b600083013567ffffffffffffffff8111156144fc576144fb613f88565b5b614508858286016143d6565b925050602083013567ffffffffffffffff81111561452957614528613f88565b5b61453585828601614499565b9150509250929050565b60008060006060848603121561455857614557613f83565b5b6000614566868287016140f4565b9350506020614577868287016140f4565b925050604061458886828701613fae565b9150509250925092565b600060ff82169050919050565b6145a881614592565b82525050565b60006020820190506145c3600083018461459f565b92915050565b6145d2816140cb565b82525050565b60006020820190506145ed60008301846145c9565b92915050565b60006020828403121561460957614608613f83565b5b60006146178482850161412c565b91505092915050565b600061462b826140ab565b9050919050565b61463b81614620565b82525050565b60006020820190506146566000830184614632565b92915050565b60008060008060008060c0878903121561467957614678613f83565b5b600061468789828a01613fae565b965050602061469889828a01613fae565b95505060406146a989828a01613fae565b94505060606146ba89828a01613fae565b93505060806146cb89828a01613fae565b92505060a06146dc89828a01613fae565b9150509295509295509295565b60008060408385031215614700576146ff613f83565b5b600061470e858286016140f4565b925050602061471f858286016140f4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061475f602083613ffb565b915061476a82614729565b602082019050919050565b6000602082019050818103600083015261478e81614752565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147cf82613f8d565b91506147da83613f8d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561481357614812614795565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061486557607f821691505b6020821081036148785761487761481e565b5b50919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006148b4601e83613ffb565b91506148bf8261487e565b602082019050919050565b600060208201905081810360008301526148e3816148a7565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b6000614946602283613ffb565b9150614951826148ea565b604082019050919050565b6000602082019050818103600083015261497581614939565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006149b682613f8d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149e8576149e7614795565b5b600182019050919050565b7f746f74616c20666565732063616e6e6f7420626520686967686572207468616e60008201527f2031352500000000000000000000000000000000000000000000000000000000602082015250565b6000614a4f602483613ffb565b9150614a5a826149f3565b604082019050919050565b60006020820190508181036000830152614a7e81614a42565b9050919050565b600060c082019050614a9a6000830189614265565b614aa76020830188614265565b614ab46040830187614265565b614ac16060830186614265565b614ace6080830185614265565b614adb60a0830184614265565b979650505050505050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614b42602683613ffb565b9150614b4d82614ae6565b604082019050919050565b60006020820190508181036000830152614b7181614b35565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bd4602683613ffb565b9150614bdf82614b78565b604082019050919050565b60006020820190508181036000830152614c0381614bc7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c4482613f8d565b9150614c4f83613f8d565b925082614c5f57614c5e614c0a565b5b828204905092915050565b7f6d61782077616c6c65742063616e6e6f742062652073657420746f206c65737360008201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b6000614cc6602883613ffb565b9150614cd182614c6a565b604082019050919050565b60006020820190508181036000830152614cf581614cb9565b9050919050565b6000614d0782613f8d565b9150614d1283613f8d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4757614d46614795565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d88601b83613ffb565b9150614d9382614d52565b602082019050919050565b60006020820190508181036000830152614db781614d7b565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e1a602183613ffb565b9150614e2582614dbe565b604082019050919050565b60006020820190508181036000830152614e4981614e0d565b9050919050565b600081905092915050565b50565b6000614e6b600083614e50565b9150614e7682614e5b565b600082019050919050565b6000614e8c82614e5e565b9150819050919050565b6000604082019050614eab6000830185614265565b614eb860208301846141c1565b9392505050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f1b602483613ffb565b9150614f2682614ebf565b604082019050919050565b60006020820190508181036000830152614f4a81614f0e565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fad602283613ffb565b9150614fb882614f51565b604082019050919050565b60006020820190508181036000830152614fdc81614fa0565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061503f602583613ffb565b915061504a82614fe3565b604082019050919050565b6000602082019050818103600083015261506e81615032565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150d1602383613ffb565b91506150dc82615075565b604082019050919050565b60006020820190508181036000830152615100816150c4565b9050919050565b7f4942455032303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615163602683613ffb565b915061516e82615107565b604082019050919050565b6000602082019050818103600083015261519281615156565b9050919050565b7f4942455032303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006151f5602483613ffb565b915061520082615199565b604082019050919050565b60006020820190508181036000830152615224816151e8565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e20656e61626c6564600082015250565b6000615261602083613ffb565b915061526c8261522b565b602082019050919050565b6000602082019050818103600083015261529081615254565b9050919050565b7f636f6f6c646f776e20706572696f642061637469766500000000000000000000600082015250565b60006152cd601683613ffb565b91506152d882615297565b602082019050919050565b600060208201905081810360008301526152fc816152c0565b9050919050565b7f796f75207368616c6c206e6f7420706173730000000000000000000000000000600082015250565b6000615339601283613ffb565b915061534482615303565b602082019050919050565b600060208201905081810360008301526153688161532c565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b60006153a5601883613ffb565b91506153b08261536f565b602082019050919050565b600060208201905081810360008301526153d481615398565b9050919050565b7f546f6f206d616e7920545820696e20626c6f636b000000000000000000000000600082015250565b6000615411601483613ffb565b915061541c826153db565b602082019050919050565b6000602082019050818103600083015261544081615404565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b60006154a3602483613ffb565b91506154ae82615447565b604082019050919050565b600060208201905081810360008301526154d281615496565b9050919050565b60006154e482613f8d565b91506154ef83613f8d565b92508282101561550257615501614795565b5b828203905092915050565b60008151905061551c816140dd565b92915050565b60006020828403121561553857615537613f83565b5b60006155468482850161550d565b91505092915050565b6000819050919050565b600061557461556f61556a8461554f565b6141eb565b613f8d565b9050919050565b61558481615559565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155bf816140cb565b82525050565b60006155d183836155b6565b60208301905092915050565b6000602082019050919050565b60006155f58261558a565b6155ff8185615595565b935061560a836155a6565b8060005b8381101561563b57815161562288826155c5565b975061562d836155dd565b92505060018101905061560e565b5085935050505092915050565b600060a08201905061565d6000830188614265565b61566a602083018761557b565b818103604083015261567c81866155ea565b905061568b60608301856145c9565b6156986080830184614265565b9695505050505050565b60006060820190506156b76000830186614265565b6156c46020830185614265565b6156d16040830184614265565b949350505050565b600060c0820190506156ee60008301896145c9565b6156fb6020830188614265565b615708604083018761557b565b615715606083018661557b565b61572260808301856145c9565b61572f60a0830184614265565b979650505050505050565b60008151905061574981613f97565b92915050565b60008060006060848603121561576857615767613f83565b5b60006157768682870161573a565b93505060206157878682870161573a565b92505060406157988682870161573a565b915050925092509256fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122062b03ab291e2be4615d45a5bfe6ec1f6c5598a662cbba78228a32c73bb18d78664736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106103395760003560e01c806375f0a874116101ab578063a614ff75116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610bf5578063f637434214610c1e578063f8b45b0514610c49578063fc6b151c14610c7457610340565b8063dd62ed3e14610b62578063e2f4560514610b9f578063f11a24d314610bca57610340565b8063b62496f5116100d1578063b62496f514610aa8578063b74e3b1114610ae5578063d045a32914610b0e578063d5e3725114610b3957610340565b8063a614ff7514610a17578063a9059cbb14610a40578063b494298814610a7d57610340565b806395451c29116101645780639a7a23d61161013e5780639a7a23d61461095b5780639c3b4fdc14610984578063a0d82dc5146109af578063a457c2d7146109da57610340565b806395451c29146108dc57806395d89b4114610907578063992c58e41461093257610340565b806375f0a874146107f05780637fdde05c1461081b5780638a8c523c146108445780638c3c82b21461085b5780638da5cb5b146108865780638ea5220f146108b157610340565b80633f407b84116102855780635d098b38116102235780637088fb7f116101fd5780637088fb7f1461075c57806370a0823114610773578063715018a6146107b057806375829def146107c757610340565b80635d098b38146106e15780635eee4bae1461070a578063679ca6e91461073357610340565b80634a74bb021161025f5780634a74bb02146106235780634ada218b1461064e5780634fbee193146106795780635124f874146106b657610340565b80633f407b84146105a257806349bd5a5e146105cd5780634a62bb65146105f857610340565b80631d7b1fb4116102f25780632307b441116102cc5780632307b441146104d457806323b872dd146104fd578063313ce5671461053a578063395093511461056557610340565b80631d7b1fb4146104555780631f53ac02146104805780631fa70531146104a957610340565b806305ca5f081461034557806306fdde031461036e57806308dfe8a514610399578063095ea7b3146103c25780631694505e146103ff57806318160ddd1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061036c60048036038101906103679190613fc3565b610c9d565b005b34801561037a57600080fd5b50610383610e00565b6040516103909190614089565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190614141565b610e92565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190614181565b610fd2565b6040516103f691906141d0565b60405180910390f35b34801561040b57600080fd5b50610414610ff0565b604051610421919061424a565b60405180910390f35b34801561043657600080fd5b5061043f611016565b60405161044c9190614274565b60405180910390f35b34801561046157600080fd5b5061046a611020565b6040516104779190614274565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a2919061428f565b611026565b005b3480156104b557600080fd5b506104be611190565b6040516104cb9190614274565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f691906144c7565b611196565b005b34801561050957600080fd5b50610524600480360381019061051f919061453f565b611338565b60405161053191906141d0565b60405180910390f35b34801561054657600080fd5b5061054f611411565b60405161055c91906145ae565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190614181565b61141a565b60405161059991906141d0565b60405180910390f35b3480156105ae57600080fd5b506105b76114cd565b6040516105c49190614274565b60405180910390f35b3480156105d957600080fd5b506105e26114d3565b6040516105ef91906145d8565b60405180910390f35b34801561060457600080fd5b5061060d6114f9565b60405161061a91906141d0565b60405180910390f35b34801561062f57600080fd5b5061063861150c565b60405161064591906141d0565b60405180910390f35b34801561065a57600080fd5b5061066361151f565b60405161067091906141d0565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b919061428f565b611532565b6040516106ad91906141d0565b60405180910390f35b3480156106c257600080fd5b506106cb611588565b6040516106d89190614274565b60405180910390f35b3480156106ed57600080fd5b506107086004803603810190610703919061428f565b61158e565b005b34801561071657600080fd5b50610731600480360381019061072c9190613fc3565b6116f8565b005b34801561073f57600080fd5b5061075a600480360381019061075591906145f3565b6117ac565b005b34801561076857600080fd5b50610771611860565b005b34801561077f57600080fd5b5061079a6004803603810190610795919061428f565b611946565b6040516107a79190614274565b60405180910390f35b3480156107bc57600080fd5b506107c561198e565b005b3480156107d357600080fd5b506107ee60048036038101906107e9919061428f565b611ae6565b005b3480156107fc57600080fd5b50610805611c39565b6040516108129190614641565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190614141565b611c5f565b005b34801561085057600080fd5b50610859611d51565b005b34801561086757600080fd5b50610870611e59565b60405161087d9190614274565b60405180910390f35b34801561089257600080fd5b5061089b611e5f565b6040516108a891906145d8565b60405180910390f35b3480156108bd57600080fd5b506108c6611e89565b6040516108d39190614641565b60405180910390f35b3480156108e857600080fd5b506108f1611eaf565b6040516108fe9190614274565b60405180910390f35b34801561091357600080fd5b5061091c611eb5565b6040516109299190614089565b60405180910390f35b34801561093e57600080fd5b506109596004803603810190610954919061465c565b611f47565b005b34801561096757600080fd5b50610982600480360381019061097d9190614141565b612114565b005b34801561099057600080fd5b506109996121b9565b6040516109a69190614274565b60405180910390f35b3480156109bb57600080fd5b506109c46121bf565b6040516109d19190614274565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190614181565b6121c5565b604051610a0e91906141d0565b60405180910390f35b348015610a2357600080fd5b50610a3e6004803603810190610a3991906145f3565b612292565b005b348015610a4c57600080fd5b50610a676004803603810190610a629190614181565b612346565b604051610a7491906141d0565b60405180910390f35b348015610a8957600080fd5b50610a92612364565b604051610a9f9190614274565b60405180910390f35b348015610ab457600080fd5b50610acf6004803603810190610aca919061428f565b61236a565b604051610adc91906141d0565b60405180910390f35b348015610af157600080fd5b50610b0c6004803603810190610b079190613fc3565b61238a565b005b348015610b1a57600080fd5b50610b23612470565b604051610b3091906141d0565b60405180910390f35b348015610b4557600080fd5b50610b606004803603810190610b5b91906145f3565b612483565b005b348015610b6e57600080fd5b50610b896004803603810190610b8491906146e9565b61258d565b604051610b969190614274565b60405180910390f35b348015610bab57600080fd5b50610bb4612614565b604051610bc19190614274565b60405180910390f35b348015610bd657600080fd5b50610bdf61261a565b604051610bec9190614274565b60405180910390f35b348015610c0157600080fd5b50610c1c6004803603810190610c17919061428f565b612620565b005b348015610c2a57600080fd5b50610c336127e6565b604051610c409190614274565b60405180910390f35b348015610c5557600080fd5b50610c5e6127ec565b604051610c6b9190614274565b60405180910390f35b348015610c8057600080fd5b50610c9b6004803603810190610c969190613fc3565b6127f2565b005b610ca5612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90614775565b60405180910390fd5b670de0b6b3a764000081610d4891906147c4565b90506000610d636008546009546128fa90919063ffffffff16565b90506000610d8e82610d806009548661296090919063ffffffff16565b6129da90919063ffffffff16565b90506000610db983610dab6008548761296090919063ffffffff16565b6129da90919063ffffffff16565b9050610dc484612a24565b610dd982600954612c6690919063ffffffff16565b600981905550610df481600854612c6690919063ffffffff16565b60088190555050505050565b606060038054610e0f9061484d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3b9061484d565b8015610e885780601f10610e5d57610100808354040283529160200191610e88565b820191906000526020600020905b815481529060010190602001808311610e6b57829003601f168201915b5050505050905090565b610e9a612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090614775565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fc691906141d0565b60405180910390a25050565b6000610fe6610fdf612958565b8484612cb0565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60215481565b61102e612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa8160405161118591906145d8565b60405180910390a150565b60095481565b61119e612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490614775565b60405180910390fd5b8051825114611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906148ca565b60405180910390fd5b60c8825111156112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad9061495c565b60405180910390fd5b60005b82518110156113335760008382815181106112d7576112d661497c565b5b602002602001015190506000670de0b6b3a76400008484815181106112ff576112fe61497c565b5b602002602001015161131191906147c4565b905061131e338383612e79565b5050808061132b906149ab565b9150506112b9565b505050565b600061134584848461310c565b61140684611351612958565b611401856040518060600160405280602881526020016157a360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b7612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b612cb0565b600190509392505050565b60006012905090565b60006114c3611427612958565b846114be8560016000611438612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fa90919063ffffffff16565b612cb0565b6001905092915050565b60085481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900460ff1681565b601760009054906101000a900460ff1681565b600760159054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b611596612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c224433816040516116ed91906145d8565b60405180910390a150565b611700612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690614775565b60405180910390fd5b670de0b6b3a7640000816117a391906147c4565b60108190555050565b6117b4612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a90614775565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b611868612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee90614775565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611942573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611996612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90614775565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611aee612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7490614775565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c3681612620565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c67612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90614775565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d59612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90614775565b60405180910390fd5b600760159054906101000a900460ff1615611e0257600080fd5b6001600760156101000a81548160ff02191690831515021790555043601f81905550426020819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b60205481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b606060048054611ec49061484d565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef09061484d565b8015611f3d5780601f10611f1257610100808354040283529160200191611f3d565b820191906000526020600020905b815481529060010190602001808311611f2057829003601f168201915b5050505050905090565b611f4f612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd590614775565b60405180910390fd5b8560138190555083601481905550846011819055508260128190555081601581905550806016819055506120336016546120256012546011546128fa90919063ffffffff16565b6128fa90919063ffffffff16565b600a819055506120646015546120566014546013546128fa90919063ffffffff16565b6128fa90919063ffffffff16565b600b81905550600f600a54111580156120805750600f600b5411155b6120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b690614a65565b60405180910390fd5b7ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff60115460125460165460135460145460155460405161210496959493929190614a85565b60405180910390a1505050505050565b61211c612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a290614775565b60405180910390fd5b6121b58282613aa8565b5050565b60155481565b60165481565b60006122886121d2612958565b84612283856040518060600160405280602581526020016157f160259139600160006121fc612958565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b612cb0565b6001905092915050565b61229a612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232090614775565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b600061235a612353612958565b848461310c565b6001905092915050565b601f5481565b60196020528060005260406000206000915054906101000a900460ff1681565b612392612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241890614775565b60405180910390fd5b61012c811115612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614b58565b60405180910390fd5b8060218190555050565b600f60009054906101000a900460ff1681565b61248b612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251190614775565b60405180910390fd5b801515601760009054906101000a900460ff1615150361253957600080fd5b80601760006101000a81548160ff0219169083151502179055507fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef8160405161258291906141d0565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b60145481565b612628612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae90614775565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271d90614bea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600e5481565b6127fa612958565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288090614775565b60405180910390fd5b670de0b6b3a76400008161289d91906147c4565b905060646002546128ae9190614c39565b8110156128f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e790614cdc565b60405180910390fd5b80600e8190555050565b60008082846129099190614cfc565b90508381101561294e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294590614d9e565b60405180910390fd5b8091505092915050565b600033905090565b600080830361297257600090506129d4565b6000828461298091906147c4565b905082848261298f9190614c39565b146129cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c690614e30565b60405180910390fd5b809150505b92915050565b6000612a1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b49565b905092915050565b6000810315612c6357612a3681613bac565b6000600190506000600190506000612a5b6015546013546128fa90919063ffffffff16565b612a726016546011546128fa90919063ffffffff16565b612a7c9190614cfc565b9050600080821115612a9e57612a9b82476129da90919063ffffffff16565b90505b600081612ab86011546013546128fa90919063ffffffff16565b612ac291906147c4565b9050600082612ade6016546015546128fa90919063ffffffff16565b612ae891906147c4565b90506000821115612b8257600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612b3990614e81565b60006040518083038185875af1925050503d8060008114612b76576040519150601f19603f3d011682016040523d82523d6000602084013e612b7b565b606091505b5050809650505b6000811115612c1a57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612bd190614e81565b60006040518083038185875af1925050503d8060008114612c0e576040519150601f19603f3d011682016040523d82523d6000602084013e612c13565b606091505b5050809550505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea982878015612c465750865b604051612c54929190614e96565b60405180910390a15050505050505b50565b6000612ca883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a44565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1690614f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8590614fc3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e6c9190614274565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf90615055565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e906150e7565b60405180910390fd5b612f62838383613def565b612fcd816040518060600160405280602681526020016157cb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a449092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613060816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fa90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130ff9190614274565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361317b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317290615179565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e19061520b565b60405180910390fd5b6000806000601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661329057600760159054906101000a900460ff1661328f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328690615277565b60405180910390fd5b5b600084036132ac576132a486866000612e79565b505050613a3f565b600760149054906101000a900460ff161580156133135750601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133695750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a30576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905080156134c257601154935060125492506016549150601b60009054906101000a900460ff16156134bd57602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134369190614cfc565b421015613478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346f906152e3565b60405180910390fd5b42601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613789565b601354935060145492506015549150601b60009054906101000a900460ff1615613714576002601f546134f59190614cfc565b4311613536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352d9061534f565b60405180910390fd5b601c543a111561357b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613572906153bb565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036135fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f390615427565b60405180910390fd5b602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136499190614cfc565b42101561368b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613682906152e3565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900460ff161561378857600061373487611946565b9050600e5486826137459190614cfc565b1115613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d906154b9565b60405180910390fd5b505b5b60006137b0836137a286886128fa90919063ffffffff16565b6128fa90919063ffffffff16565b905060006137bd30611946565b9050600060105482101590508080156138205750601960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561399e576001600760146101000a81548160ff0219169083151502179055506000601760009054906101000a900460ff16801561385e5750600087115b1561394e57600061387c6008546009546128fa90919063ffffffff16565b905060006138a7826138996009548861296090919063ffffffff16565b6129da90919063ffffffff16565b905060006138d2836138c46008548961296090919063ffffffff16565b6129da90919063ffffffff16565b905060006138fd600b546138ef8d8661296090919063ffffffff16565b6129da90919063ffffffff16565b90506000613928600a5461391a8e8661296090919063ffffffff16565b6129da90919063ffffffff16565b905061393d82826128fa90919063ffffffff16565b955061394886613df4565b50505050505b600061396582601054612c6690919063ffffffff16565b905061397081612a24565b600060098190555060006008819055506000600760146101000a81548160ff02191690831515021790555050505b60006139c660646139b8868c61296090919063ffffffff16565b6129da90919063ffffffff16565b90506139db818a612c6690919063ffffffff16565b98508415613a03576139f8816008546128fa90919063ffffffff16565b600881905550613a1f565b613a18816009546128fa90919063ffffffff16565b6009819055505b613a2a8b3083612e79565b50505050505b613a3b868686612e79565b5050505b505050565b6000838311158290613a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a839190614089565b60405180910390fd5b5060008385613a9b91906154d9565b9050809150509392505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083118290613b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b879190614089565b60405180910390fd5b5060008385613b9f9190614c39565b9050809150509392505050565b6000600267ffffffffffffffff811115613bc957613bc86142c1565b5b604051908082528060200260200182016040528015613bf75781602001602082028036833780820191505090505b5090503081600081518110613c0f57613c0e61497c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cda9190615522565b81600181518110613cee57613ced61497c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cb0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613db9959493929190615648565b600060405180830381600087803b158015613dd357600080fd5b505af1158015613de7573d6000803e3d6000fd5b505050505050565b505050565b6000613e0a6002836129da90919063ffffffff16565b90506000613e218284612c6690919063ffffffff16565b90506000479050613e3183613bac565b6000613e468247612c6690919063ffffffff16565b9050613e528382613e94565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051613e85939291906156a2565b60405180910390a15050505050565b613ec130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cb0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613f0d611e5f565b426040518863ffffffff1660e01b8152600401613f2f969594939291906156d9565b60606040518083038185885af1158015613f4d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f72919061574f565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613fa081613f8d565b8114613fab57600080fd5b50565b600081359050613fbd81613f97565b92915050565b600060208284031215613fd957613fd8613f83565b5b6000613fe784828501613fae565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561402a57808201518184015260208101905061400f565b83811115614039576000848401525b50505050565b6000601f19601f8301169050919050565b600061405b82613ff0565b6140658185613ffb565b935061407581856020860161400c565b61407e8161403f565b840191505092915050565b600060208201905081810360008301526140a38184614050565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140d6826140ab565b9050919050565b6140e6816140cb565b81146140f157600080fd5b50565b600081359050614103816140dd565b92915050565b60008115159050919050565b61411e81614109565b811461412957600080fd5b50565b60008135905061413b81614115565b92915050565b6000806040838503121561415857614157613f83565b5b6000614166858286016140f4565b92505060206141778582860161412c565b9150509250929050565b6000806040838503121561419857614197613f83565b5b60006141a6858286016140f4565b92505060206141b785828601613fae565b9150509250929050565b6141ca81614109565b82525050565b60006020820190506141e560008301846141c1565b92915050565b6000819050919050565b600061421061420b614206846140ab565b6141eb565b6140ab565b9050919050565b6000614222826141f5565b9050919050565b600061423482614217565b9050919050565b61424481614229565b82525050565b600060208201905061425f600083018461423b565b92915050565b61426e81613f8d565b82525050565b60006020820190506142896000830184614265565b92915050565b6000602082840312156142a5576142a4613f83565b5b60006142b3848285016140f4565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6142f98261403f565b810181811067ffffffffffffffff82111715614318576143176142c1565b5b80604052505050565b600061432b613f79565b905061433782826142f0565b919050565b600067ffffffffffffffff821115614357576143566142c1565b5b602082029050602081019050919050565b600080fd5b600061438061437b8461433c565b614321565b905080838252602082019050602084028301858111156143a3576143a2614368565b5b835b818110156143cc57806143b888826140f4565b8452602084019350506020810190506143a5565b5050509392505050565b600082601f8301126143eb576143ea6142bc565b5b81356143fb84826020860161436d565b91505092915050565b600067ffffffffffffffff82111561441f5761441e6142c1565b5b602082029050602081019050919050565b600061444361443e84614404565b614321565b9050808382526020820190506020840283018581111561446657614465614368565b5b835b8181101561448f578061447b8882613fae565b845260208401935050602081019050614468565b5050509392505050565b600082601f8301126144ae576144ad6142bc565b5b81356144be848260208601614430565b91505092915050565b600080604083850312156144de576144dd613f83565b5b600083013567ffffffffffffffff8111156144fc576144fb613f88565b5b614508858286016143d6565b925050602083013567ffffffffffffffff81111561452957614528613f88565b5b61453585828601614499565b9150509250929050565b60008060006060848603121561455857614557613f83565b5b6000614566868287016140f4565b9350506020614577868287016140f4565b925050604061458886828701613fae565b9150509250925092565b600060ff82169050919050565b6145a881614592565b82525050565b60006020820190506145c3600083018461459f565b92915050565b6145d2816140cb565b82525050565b60006020820190506145ed60008301846145c9565b92915050565b60006020828403121561460957614608613f83565b5b60006146178482850161412c565b91505092915050565b600061462b826140ab565b9050919050565b61463b81614620565b82525050565b60006020820190506146566000830184614632565b92915050565b60008060008060008060c0878903121561467957614678613f83565b5b600061468789828a01613fae565b965050602061469889828a01613fae565b95505060406146a989828a01613fae565b94505060606146ba89828a01613fae565b93505060806146cb89828a01613fae565b92505060a06146dc89828a01613fae565b9150509295509295509295565b60008060408385031215614700576146ff613f83565b5b600061470e858286016140f4565b925050602061471f858286016140f4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061475f602083613ffb565b915061476a82614729565b602082019050919050565b6000602082019050818103600083015261478e81614752565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147cf82613f8d565b91506147da83613f8d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561481357614812614795565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061486557607f821691505b6020821081036148785761487761481e565b5b50919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006148b4601e83613ffb565b91506148bf8261487e565b602082019050919050565b600060208201905081810360008301526148e3816148a7565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b6000614946602283613ffb565b9150614951826148ea565b604082019050919050565b6000602082019050818103600083015261497581614939565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006149b682613f8d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149e8576149e7614795565b5b600182019050919050565b7f746f74616c20666565732063616e6e6f7420626520686967686572207468616e60008201527f2031352500000000000000000000000000000000000000000000000000000000602082015250565b6000614a4f602483613ffb565b9150614a5a826149f3565b604082019050919050565b60006020820190508181036000830152614a7e81614a42565b9050919050565b600060c082019050614a9a6000830189614265565b614aa76020830188614265565b614ab46040830187614265565b614ac16060830186614265565b614ace6080830185614265565b614adb60a0830184614265565b979650505050505050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614b42602683613ffb565b9150614b4d82614ae6565b604082019050919050565b60006020820190508181036000830152614b7181614b35565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bd4602683613ffb565b9150614bdf82614b78565b604082019050919050565b60006020820190508181036000830152614c0381614bc7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c4482613f8d565b9150614c4f83613f8d565b925082614c5f57614c5e614c0a565b5b828204905092915050565b7f6d61782077616c6c65742063616e6e6f742062652073657420746f206c65737360008201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b6000614cc6602883613ffb565b9150614cd182614c6a565b604082019050919050565b60006020820190508181036000830152614cf581614cb9565b9050919050565b6000614d0782613f8d565b9150614d1283613f8d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4757614d46614795565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d88601b83613ffb565b9150614d9382614d52565b602082019050919050565b60006020820190508181036000830152614db781614d7b565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e1a602183613ffb565b9150614e2582614dbe565b604082019050919050565b60006020820190508181036000830152614e4981614e0d565b9050919050565b600081905092915050565b50565b6000614e6b600083614e50565b9150614e7682614e5b565b600082019050919050565b6000614e8c82614e5e565b9150819050919050565b6000604082019050614eab6000830185614265565b614eb860208301846141c1565b9392505050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f1b602483613ffb565b9150614f2682614ebf565b604082019050919050565b60006020820190508181036000830152614f4a81614f0e565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fad602283613ffb565b9150614fb882614f51565b604082019050919050565b60006020820190508181036000830152614fdc81614fa0565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061503f602583613ffb565b915061504a82614fe3565b604082019050919050565b6000602082019050818103600083015261506e81615032565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150d1602383613ffb565b91506150dc82615075565b604082019050919050565b60006020820190508181036000830152615100816150c4565b9050919050565b7f4942455032303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615163602683613ffb565b915061516e82615107565b604082019050919050565b6000602082019050818103600083015261519281615156565b9050919050565b7f4942455032303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006151f5602483613ffb565b915061520082615199565b604082019050919050565b60006020820190508181036000830152615224816151e8565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e20656e61626c6564600082015250565b6000615261602083613ffb565b915061526c8261522b565b602082019050919050565b6000602082019050818103600083015261529081615254565b9050919050565b7f636f6f6c646f776e20706572696f642061637469766500000000000000000000600082015250565b60006152cd601683613ffb565b91506152d882615297565b602082019050919050565b600060208201905081810360008301526152fc816152c0565b9050919050565b7f796f75207368616c6c206e6f7420706173730000000000000000000000000000600082015250565b6000615339601283613ffb565b915061534482615303565b602082019050919050565b600060208201905081810360008301526153688161532c565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b60006153a5601883613ffb565b91506153b08261536f565b602082019050919050565b600060208201905081810360008301526153d481615398565b9050919050565b7f546f6f206d616e7920545820696e20626c6f636b000000000000000000000000600082015250565b6000615411601483613ffb565b915061541c826153db565b602082019050919050565b6000602082019050818103600083015261544081615404565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b60006154a3602483613ffb565b91506154ae82615447565b604082019050919050565b600060208201905081810360008301526154d281615496565b9050919050565b60006154e482613f8d565b91506154ef83613f8d565b92508282101561550257615501614795565b5b828203905092915050565b60008151905061551c816140dd565b92915050565b60006020828403121561553857615537613f83565b5b60006155468482850161550d565b91505092915050565b6000819050919050565b600061557461556f61556a8461554f565b6141eb565b613f8d565b9050919050565b61558481615559565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155bf816140cb565b82525050565b60006155d183836155b6565b60208301905092915050565b6000602082019050919050565b60006155f58261558a565b6155ff8185615595565b935061560a836155a6565b8060005b8381101561563b57815161562288826155c5565b975061562d836155dd565b92505060018101905061560e565b5085935050505092915050565b600060a08201905061565d6000830188614265565b61566a602083018761557b565b818103604083015261567c81866155ea565b905061568b60608301856145c9565b6156986080830184614265565b9695505050505050565b60006060820190506156b76000830186614265565b6156c46020830185614265565b6156d16040830184614265565b949350505050565b600060c0820190506156ee60008301896145c9565b6156fb6020830188614265565b615708604083018761557b565b615715606083018661557b565b61572260808301856145c9565b61572f60a0830184614265565b979650505050505050565b60008151905061574981613f97565b92915050565b60008060006060848603121561576857615767613f83565b5b60006157768682870161573a565b93505060206157878682870161573a565b92505060406157988682870161573a565b915050925092509256fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122062b03ab291e2be4615d45a5bfe6ec1f6c5598a662cbba78228a32c73bb18d78664736f6c634300080d0033
Deployed Bytecode Sourcemap
15480:15849:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29256:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3363:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20296:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4277:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15596:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3684:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16951:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20097:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15788:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30765:561;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4454:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19502:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4807:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15752:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15646:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16561:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16314:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15709:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23361:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16174:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19884:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21504:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20640:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21350:146;;;;;;;;;;;;;:::i;:::-;;3800:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7255:148;;;;;;;;;;;;;:::i;:::-;;22255:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15898:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20485:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19640:232;;;;;;;;;;;;;:::i;:::-;;16889:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7041:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15943:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16097;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3471:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22475:878;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21848:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16249:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16280:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5033:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20747:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3935:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16838:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16422:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20858:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16015:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21632:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4118:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16057:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16212:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7411:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16136:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15984:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21046:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29256:443;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29354:6:::1;29344;:17;;;;:::i;:::-;29335:26;;29372:19;29394:25;29408:10;;29394:9;;:13;;:25;;;;:::i;:::-;29372:47;;29430:15;29448:38;29474:11;29448:21;29459:9;;29448:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;29430:56;;29497:16;29516:39;29543:11;29516:22;29527:10;;29516:6;:10;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;29497:58;;29568:28;29589:6;29568:20;:28::i;:::-;29621:22;29635:7;29621:9;;:13;;:22;;;;:::i;:::-;29609:9;:34;;;;29667:24;29682:8;29667:10;;:14;;:24;;;;:::i;:::-;29654:10;:37;;;;29324:375;;;29256:443:::0;:::o;3363:100::-;3417:13;3450:5;3443:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3363:100;:::o;20296:181::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20411:8:::1;20380:19;:28;20400:7;20380:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20451:7;20435:34;;;20460:8;20435:34;;;;;;:::i;:::-;;;;;;;;20296:181:::0;;:::o;4277:169::-;4360:4;4377:39;4386:12;:10;:12::i;:::-;4400:7;4409:6;4377:8;:39::i;:::-;4434:4;4427:11;;4277:169;;;;:::o;15596:41::-;;;;;;;;;;;;;:::o;3684:108::-;3745:7;3772:12;;3765:19;;3684:108;:::o;16951:33::-;;;;:::o;20097:187::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20195:4:::1;20165:19;:27;20185:6;20165:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20230:6;20210:9;;:27;;;;;;;;;;;;;;;;;;20253:23;20269:6;20253:23;;;;;;:::i;:::-;;;;;;;;20097:187:::0;:::o;15788:28::-;;;;:::o;30765:561::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30937:6:::1;:13;30912:14;:21;:38;30904:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;31029:3;31004:14;:21;:28;;30996:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;31087:9;31082:237;31106:14;:21;31102:1;:25;31082:237;;;31149:14;31166;31181:1;31166:17;;;;;;;;:::i;:::-;;;;;;;;31149:34;;31198:21;31235:6;31222;31229:1;31222:9;;;;;;;;:::i;:::-;;;;;;;;:20;;;;:::i;:::-;31198:44;;31257:50;31273:10;31285:6;31293:13;31257:15;:50::i;:::-;31134:185;;31129:3;;;;;:::i;:::-;;;;31082:237;;;;30765:561:::0;;:::o;4454:345::-;4567:4;4584:36;4594:6;4602:9;4613:6;4584:9;:36::i;:::-;4631:138;4640:6;4648:12;:10;:12::i;:::-;4662:106;4700:6;4662:106;;;;;;;;;;;;;;;;;:11;:19;4674:6;4662:19;;;;;;;;;;;;;;;:33;4682:12;:10;:12::i;:::-;4662:33;;;;;;;;;;;;;;;;:37;;:106;;;;;:::i;:::-;4631:8;:138::i;:::-;4787:4;4780:11;;4454:345;;;;;:::o;19502:93::-;19560:5;19585:2;19578:9;;19502:93;:::o;4807:218::-;4895:4;4912:83;4921:12;:10;:12::i;:::-;4935:7;4944:50;4983:10;4944:11;:25;4956:12;:10;:12::i;:::-;4944:25;;;;;;;;;;;;;;;:34;4970:7;4944:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4912:8;:83::i;:::-;5013:4;5006:11;;4807:218;;;;:::o;15752:29::-;;;;:::o;15646:28::-;;;;;;;;;;;;;:::o;16561:33::-;;;;;;;;;;;;;:::o;16314:40::-;;;;;;;;;;;;;:::o;15709:34::-;;;;;;;;;;;;;:::o;23361:126::-;23427:4;23451:19;:28;23471:7;23451:28;;;;;;;;;;;;;;;;;;;;;;;;;23444:35;;23361:126;;;:::o;16174:31::-;;;;:::o;19884:205::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19988:4:::1;19958:19;:27;19978:6;19958:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20029:6;20003:15;;:33;;;;;;;;;;;;;;;;;;20052:29;20074:6;20052:29;;;;;;:::i;:::-;;;;;;;;19884:205:::0;:::o;21504:120::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21609:6:::1;21599;:17;;;;:::i;:::-;21578:18;:38;;;;21504:120:::0;:::o;20640:99::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20726:5:::1;20709:14;;:22;;;;;;;;;;;;;;;;;;20640:99:::0;:::o;21350:146::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21397:17:::1;21417:21;21397:41;;21457:10;21449:28;;:39;21478:9;21449:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21386:110;21350:146::o:0;3800:127::-;3874:7;3901:9;:18;3911:7;3901:18;;;;;;;;;;;;;;;;3894:25;;3800:127;;;:::o;7255:148::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7362:1:::1;7325:40;;7346:6;;;;;;;;;;;7325:40;;;;;;;;;;;;7393:1;7376:6;;:19;;;;;;;;;;;;;;;;;;7255:148::o:0;22255:212::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22356:4:::1;22324:19;:29;22344:8;22324:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22417:4;22371:33;:43;22405:8;22371:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;22432:27;22450:8;22432:17;:27::i;:::-;22255:212:::0;:::o;15898:38::-;;;;;;;;;;;;;:::o;20485:147::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20618:6:::1;20574:33;:41;20608:6;20574:41;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;20485:147:::0;;:::o;19640:232::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19704:14:::1;;;;;;;;;;;19703:15;19695:24;;;::::0;::::1;;19747:4;19730:14;;:21;;;;;;;;;;;;;;;;;;19776:12;19762:11;:26;;;;19817:15;19799;:33;;;;19848:16;;;;;;;;;;19640:232::o:0;16889:30::-;;;;:::o;7041:79::-;7079:7;7106:6;;;;;;;;;;;7099:13;;7041:79;:::o;15943:32::-;;;;;;;;;;;;;:::o;16097:::-;;;;:::o;3471:104::-;3527:13;3560:7;3553:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3471:104;:::o;22475:878::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22692:12:::1;22673:16;:31;;;;22733:12;22715:15;:30;;;;22776:13;22756:17;:33;;;;22819:13;22800:16;:32;;;;22855:6;22843:9;:18;;;;22885:7;22872:10;:20;;;;22921:55;22965:10;;22921:39;22943:16;;22921:17;;:21;;:39;;;;:::i;:::-;:43;;:55;;;;:::i;:::-;22905:13;:71;;;;23002:52;23044:9;;23002:37;23023:15;;23002:16;;:20;;:37;;;;:::i;:::-;:41;;:52;;;;:::i;:::-;22987:12;:67;;;;23132:2;23115:13;;:19;;:41;;;;;23154:2;23138:12;;:18;;23115:41;23107:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;23215:130;23226:17;;23245:16;;23263:10;;23275:16;;23318:15;;23335:9;;23215:130;;;;;;;;;;;:::i;:::-;;;;;;;;22475:878:::0;;;;;;:::o;21848:140::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21939:41:::1;21968:4;21974:5;21939:28;:41::i;:::-;21848:140:::0;;:::o;16249:24::-;;;;:::o;16280:25::-;;;;:::o;5033:286::-;5126:4;5143:146;5152:12;:10;:12::i;:::-;5166:7;5175:113;5214:15;5175:113;;;;;;;;;;;;;;;;;:11;:25;5187:12;:10;:12::i;:::-;5175:25;;;;;;;;;;;;;;;:34;5201:7;5175:34;;;;;;;;;;;;;;;;:38;;:113;;;;;:::i;:::-;5143:8;:146::i;:::-;5307:4;5300:11;;5033:286;;;;:::o;20747:103::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20837:5:::1;20818:16;;:24;;;;;;;;;;;;;;;;;;20747:103:::0;:::o;3935:175::-;4021:4;4038:42;4048:12;:10;:12::i;:::-;4062:9;4073:6;4038:9;:42::i;:::-;4098:4;4091:11;;3935:175;;;;:::o;16838:26::-;;;;:::o;16422:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;20858:174::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20946:3:::1;20937:5;:12;;20929:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;21019:5;21003:13;:21;;;;20858:174:::0;:::o;16015:35::-;;;;;;;;;;;;;:::o;21632:208::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21737:7:::1;21712:32;;:21;;;;;;;;;;;:32;;::::0;21704:41:::1;;;::::0;::::1;;21780:7;21756:21;;:31;;;;;;;;;;;;;;;;;;21803:29;21824:7;21803:29;;;;;;:::i;:::-;;;;;;;;21632:208:::0;:::o;4118:151::-;4207:7;4234:11;:18;4246:5;4234:18;;;;;;;;;;;;;;;:27;4253:7;4234:27;;;;;;;;;;;;;;;;4227:34;;4118:151;;;;:::o;16057:33::-;;;;:::o;16212:30::-;;;;:::o;7411:244::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7520:1:::1;7500:22;;:8;:22;;::::0;7492:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7610:8;7581:38;;7602:6;;;;;;;;;;;7581:38;;;;;;;;;;;;7639:8;7630:6;;:17;;;;;;;;;;;;;;;;;;7411:244:::0;:::o;16136:31::-;;;;:::o;15984:24::-;;;;:::o;21046:218::-;7178:12;:10;:12::i;:::-;7168:22;;:6;;;;;;;;;;;:22;;;7160:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21130:6:::1;21121:5;:16;;;;:::i;:::-;21113:24;;21180:3;21165:12;;:18;;;;:::i;:::-;21156:5;:27;;21148:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21251:5;21239:9;:17;;;;21046:218:::0;:::o;597:179::-;655:7;675:9;691:1;687;:5;;;;:::i;:::-;675:17;;716:1;711;:6;;703:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;767:1;760:8;;;597:179;;;;:::o;221:98::-;274:7;301:10;294:17;;221:98;:::o;1126:248::-;1184:7;1213:1;1208;:6;1204:47;;1238:1;1231:8;;;;1204:47;1263:9;1279:1;1275;:5;;;;:::i;:::-;1263:17;;1308:1;1303;1299;:5;;;;:::i;:::-;:10;1291:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1365:1;1358:8;;;1126:248;;;;;:::o;1382:132::-;1440:7;1467:39;1471:1;1474;1467:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1460:46;;1382:132;;;;:::o;29732:1025::-;29811:1;29801:6;:11;29797:50;29829:7;29797:50;29857:24;29874:6;29857:16;:24::i;:::-;29894:12;29909:4;29894:19;;29924:15;29942:4;29924:22;;29967:23;30029:31;30050:9;;30029:16;;:20;;:31;;;;:::i;:::-;29993:33;30015:10;;29993:17;;:21;;:33;;;;:::i;:::-;:67;;;;:::i;:::-;29967:93;;30073:19;30125:1;30107:15;:19;30103:108;;;30157:42;30183:15;30157:21;:25;;:42;;;;:::i;:::-;30143:56;;30103:108;30221:23;30289:11;30247:39;30268:17;;30247:16;;:20;;:39;;;;:::i;:::-;:53;;;;:::i;:::-;30221:79;;30311:17;30359:11;30331:25;30345:10;;30331:9;;:13;;:25;;;;:::i;:::-;:39;;;;:::i;:::-;30311:59;;30413:1;30395:15;:19;30391:123;;;30453:15;;;;;;;;;;;30445:29;;30482:15;30445:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30431:71;;;;;30391:123;30550:1;30538:9;:13;30534:108;;;30593:9;;;;;;;;;;;30585:23;;30616:9;30585:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30568:62;;;;;30534:108;30659:90;30687:15;30717:7;:21;;;;;30728:10;30717:21;30659:90;;;;;;;:::i;:::-;;;;;;;;29786:971;;;;;;29732:1025;;:::o;784:136::-;842:7;869:43;873:1;876;869:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;862:50;;784:136;;;;:::o;6259:346::-;6378:1;6361:19;;:5;:19;;;6353:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6459:1;6440:21;;:7;:21;;;6432:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6543:6;6513:11;:18;6525:5;6513:18;;;;;;;;;;;;;;;:27;6532:7;6513:27;;;;;;;;;;;;;;;:36;;;;6581:7;6565:32;;6574:5;6565:32;;;6590:6;6565:32;;;;;;:::i;:::-;;;;;;;;6259:346;;;:::o;5327:538::-;5451:1;5433:20;;:6;:20;;;5425:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5535:1;5514:23;;:9;:23;;;5506:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5590:47;5611:6;5619:9;5630:6;5590:20;:47::i;:::-;5670:70;5692:6;5670:70;;;;;;;;;;;;;;;;;:9;:17;5680:6;5670:17;;;;;;;;;;;;;;;;:21;;:70;;;;;:::i;:::-;5650:9;:17;5660:6;5650:17;;;;;;;;;;;;;;;:90;;;;5774:32;5799:6;5774:9;:20;5784:9;5774:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5751:9;:20;5761:9;5751:20;;;;;;;;;;;;;;;:55;;;;5839:9;5822:35;;5831:6;5822:35;;;5850:6;5822:35;;;;;;:::i;:::-;;;;;;;;5327:538;;;:::o;23495:4235::-;23611:1;23595:18;;:4;:18;;;23587:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23689:1;23675:16;;:2;:16;;;23667:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23745:21;23777:20;23808:14;23840:33;:39;23874:4;23840:39;;;;;;;;;;;;;;;;;;;;;;;;;23835:142;;23904:14;;;;;;;;;;;23896:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;23835:142;24003:1;23993:6;:11;23989:3678;;24021:28;24037:4;24043:2;24047:1;24021:15;:28::i;:::-;24064:7;;;;;23989:3678;24127:8;;;;;;;;;;;24126:9;:39;;;;;24140:19;:25;24160:4;24140:25;;;;;;;;;;;;;;;;;;;;;;;;;24139:26;24126:39;:67;;;;;24170:19;:23;24190:2;24170:23;;;;;;;;;;;;;;;;;;;;;;;;;24169:24;24126:67;24108:3559;;;24220:14;24237:25;:29;24263:2;24237:29;;;;;;;;;;;;;;;;;;;;;;;;;24220:46;;24285:9;24281:1514;;;24331:17;;24315:33;;24382:16;;24367:31;;24426:10;;24417:19;;24461:14;;;;;;;;;;;24457:269;;;24565:13;;24523:28;:39;24552:9;24523:39;;;;;;;;;;;;;;;;:55;;;;:::i;:::-;24504:15;:74;;24496:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;24691:15;24649:28;:39;24678:9;24649:39;;;;;;;;;;;;;;;:57;;;;24457:269;24281:1514;;;24810:16;;24794:32;;24860:15;;24845:30;;24903:9;;24894:18;;24937:14;;;;;;;;;;;24933:598;;;25009:1;24995:11;;:15;;;;:::i;:::-;24980:12;:30;24972:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25074:13;;25059:11;:28;;25051:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25181:12;25142:24;:35;25167:9;25142:35;;;;;;;;;;;;;;;;:51;25134:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25305:13;;25263:28;:39;25292:9;25263:39;;;;;;;;;;;;;;;;:55;;;;:::i;:::-;25244:15;:74;;25236:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;25427:12;25389:24;:35;25414:9;25389:35;;;;;;;;;;;;;;;:50;;;;25500:15;25458:28;:39;25487:9;25458:39;;;;;;;;;;;;;;;:57;;;;24933:598;25551:16;;;;;;;;;;;25547:233;;;25584:32;25619:13;25629:2;25619:9;:13::i;:::-;25584:48;;25692:9;;25682:6;25655:24;:33;;;;:::i;:::-;:46;;25647:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;25569:211;25547:233;24281:1514;25811:17;25831:43;25867:6;25831:31;25849:12;25831:13;:17;;:31;;;;:::i;:::-;:35;;:43;;;;:::i;:::-;25811:63;;25891:28;25922:24;25940:4;25922:9;:24::i;:::-;25891:55;;25963:12;26002:18;;25978:20;:42;;25963:57;;26041:7;:43;;;;;26053:25;:31;26079:4;26053:31;;;;;;;;;;;;;;;;;;;;;;;;;26052:32;26041:43;26037:1272;;;26116:4;26105:8;;:15;;;;;;;;;;;;;;;;;;26141:18;26184:21;;;;;;;;;;;:41;;;;;26224:1;26209:12;:16;26184:41;26180:875;;;26250:20;26273:25;26287:10;;26273:9;;:13;;:25;;;;:::i;:::-;26250:48;;26321:24;26348:105;26440:12;26348:61;26399:9;;26348:20;:50;;:61;;;;:::i;:::-;:91;;:105;;;;:::i;:::-;26321:132;;26476:22;26501:106;26594:12;26501:62;26552:10;;26501:20;:50;;:62;;;;:::i;:::-;:92;;:106;;;;:::i;:::-;26476:131;;26632:21;26656:104;26747:12;;26656:60;26703:12;26656:16;:46;;:60;;;;:::i;:::-;:90;;:104;;;;:::i;:::-;26632:128;;26785:22;26810:103;26899:13;;26810:58;26855:12;26810:14;:44;;:58;;;;:::i;:::-;:88;;:103;;;;:::i;:::-;26785:128;;26951:33;26970:13;26951:14;:18;;:33;;;;:::i;:::-;26938:46;;27009:26;27024:10;27009:14;:26::i;:::-;26227:828;;;;;26180:875;27075:24;27102:34;27125:10;27102:18;;:22;;:34;;;;:::i;:::-;27075:61;;27155:38;27176:16;27155:20;:38::i;:::-;27224:1;27212:9;:13;;;;27257:1;27244:10;:14;;;;27288:5;27277:8;;:16;;;;;;;;;;;;;;;;;;26086:1223;;26037:1272;27325:12;27340:30;27366:3;27340:21;27351:9;27340:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;27325:45;;27396:16;27407:4;27396:6;:10;;:16;;;;:::i;:::-;27387:25;;27433:9;27429:155;;;27476:20;27491:4;27476:10;;:14;;:20;;;;:::i;:::-;27463:10;:33;;;;27429:155;;;27549:19;27563:4;27549:9;;:13;;:19;;;;:::i;:::-;27537:9;:31;;;;27429:155;27600:42;27616:4;27630;27637;27600:15;:42::i;:::-;24205:3462;;;;;24108:3559;27679:33;27695:4;27701:2;27705:6;27679:15;:33::i;:::-;23574:4156;;;23495:4235;;;;:::o;928:190::-;1014:7;1047:1;1042;:6;;1050:12;1034:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1074:9;1090:1;1086;:5;;;;:::i;:::-;1074:17;;1109:1;1102:8;;;928:190;;;;;:::o;21996:188::-;22113:5;22079:25;:31;22105:4;22079:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22170:5;22136:40;;22164:4;22136:40;;;;;;;;;;;;21996:188;;:::o;1522:189::-;1608:7;1640:1;1636;:5;1643:12;1628:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1667:9;1683:1;1679;:5;;;;:::i;:::-;1667:17;;1702:1;1695:8;;;1522:189;;;;;:::o;28228:499::-;28294:21;28332:1;28318:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28294:40;;28363:4;28345;28350:1;28345:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28389:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28379:4;28384:1;28379:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28422:62;28439:4;28454:15;;;;;;;;;;;28472:11;28422:8;:62::i;:::-;28495:15;;;;;;;;;;;:66;;;28576:11;28602:1;28646:4;28673;28693:15;28495:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28283:444;28228:499;:::o;6613:91::-;;;;:::o;27740:480::-;27799:12;27814:13;27825:1;27814:6;:10;;:13;;;;:::i;:::-;27799:28;;27838:17;27858:16;27869:4;27858:6;:10;;:16;;;;:::i;:::-;27838:36;;27885:22;27910:21;27885:46;;27942:22;27959:4;27942:16;:22::i;:::-;28045:18;28066:41;28092:14;28066:21;:25;;:41;;;;:::i;:::-;28045:62;;28118:35;28131:9;28142:10;28118:12;:35::i;:::-;28169:43;28184:4;28190:10;28202:9;28169:43;;;;;;;;:::i;:::-;;;;;;;;27788:432;;;;27740:480;:::o;28735:513::-;28883:62;28900:4;28915:15;;;;;;;;;;;28933:11;28883:8;:62::i;:::-;28988:15;;;;;;;;;;;:31;;;29027:9;29060:4;29080:11;29106:1;29149;29192:7;:5;:7::i;:::-;29214:15;28988:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28735:513;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:90::-;2956:7;2999:5;2992:13;2985:21;2974:32;;2922:90;;;:::o;3018:116::-;3088:21;3103:5;3088:21;:::i;:::-;3081:5;3078:32;3068:60;;3124:1;3121;3114:12;3068:60;3018:116;:::o;3140:133::-;3183:5;3221:6;3208:20;3199:29;;3237:30;3261:5;3237:30;:::i;:::-;3140:133;;;;:::o;3279:468::-;3344:6;3352;3401:2;3389:9;3380:7;3376:23;3372:32;3369:119;;;3407:79;;:::i;:::-;3369:119;3527:1;3552:53;3597:7;3588:6;3577:9;3573:22;3552:53;:::i;:::-;3542:63;;3498:117;3654:2;3680:50;3722:7;3713:6;3702:9;3698:22;3680:50;:::i;:::-;3670:60;;3625:115;3279:468;;;;;:::o;3753:474::-;3821:6;3829;3878:2;3866:9;3857:7;3853:23;3849:32;3846:119;;;3884:79;;:::i;:::-;3846:119;4004:1;4029:53;4074:7;4065:6;4054:9;4050:22;4029:53;:::i;:::-;4019:63;;3975:117;4131:2;4157:53;4202:7;4193:6;4182:9;4178:22;4157:53;:::i;:::-;4147:63;;4102:118;3753:474;;;;;:::o;4233:109::-;4314:21;4329:5;4314:21;:::i;:::-;4309:3;4302:34;4233:109;;:::o;4348:210::-;4435:4;4473:2;4462:9;4458:18;4450:26;;4486:65;4548:1;4537:9;4533:17;4524:6;4486:65;:::i;:::-;4348:210;;;;:::o;4564:60::-;4592:3;4613:5;4606:12;;4564:60;;;:::o;4630:142::-;4680:9;4713:53;4731:34;4740:24;4758:5;4740:24;:::i;:::-;4731:34;:::i;:::-;4713:53;:::i;:::-;4700:66;;4630:142;;;:::o;4778:126::-;4828:9;4861:37;4892:5;4861:37;:::i;:::-;4848:50;;4778:126;;;:::o;4910:153::-;4987:9;5020:37;5051:5;5020:37;:::i;:::-;5007:50;;4910:153;;;:::o;5069:185::-;5183:64;5241:5;5183:64;:::i;:::-;5178:3;5171:77;5069:185;;:::o;5260:276::-;5380:4;5418:2;5407:9;5403:18;5395:26;;5431:98;5526:1;5515:9;5511:17;5502:6;5431:98;:::i;:::-;5260:276;;;;:::o;5542:118::-;5629:24;5647:5;5629:24;:::i;:::-;5624:3;5617:37;5542:118;;:::o;5666:222::-;5759:4;5797:2;5786:9;5782:18;5774:26;;5810:71;5878:1;5867:9;5863:17;5854:6;5810:71;:::i;:::-;5666:222;;;;:::o;5894:329::-;5953:6;6002:2;5990:9;5981:7;5977:23;5973:32;5970:119;;;6008:79;;:::i;:::-;5970:119;6128:1;6153:53;6198:7;6189:6;6178:9;6174:22;6153:53;:::i;:::-;6143:63;;6099:117;5894:329;;;;:::o;6229:117::-;6338:1;6335;6328:12;6352:180;6400:77;6397:1;6390:88;6497:4;6494:1;6487:15;6521:4;6518:1;6511:15;6538:281;6621:27;6643:4;6621:27;:::i;:::-;6613:6;6609:40;6751:6;6739:10;6736:22;6715:18;6703:10;6700:34;6697:62;6694:88;;;6762:18;;:::i;:::-;6694:88;6802:10;6798:2;6791:22;6581:238;6538:281;;:::o;6825:129::-;6859:6;6886:20;;:::i;:::-;6876:30;;6915:33;6943:4;6935:6;6915:33;:::i;:::-;6825:129;;;:::o;6960:311::-;7037:4;7127:18;7119:6;7116:30;7113:56;;;7149:18;;:::i;:::-;7113:56;7199:4;7191:6;7187:17;7179:25;;7259:4;7253;7249:15;7241:23;;6960:311;;;:::o;7277:117::-;7386:1;7383;7376:12;7417:710;7513:5;7538:81;7554:64;7611:6;7554:64;:::i;:::-;7538:81;:::i;:::-;7529:90;;7639:5;7668:6;7661:5;7654:21;7702:4;7695:5;7691:16;7684:23;;7755:4;7747:6;7743:17;7735:6;7731:30;7784:3;7776:6;7773:15;7770:122;;;7803:79;;:::i;:::-;7770:122;7918:6;7901:220;7935:6;7930:3;7927:15;7901:220;;;8010:3;8039:37;8072:3;8060:10;8039:37;:::i;:::-;8034:3;8027:50;8106:4;8101:3;8097:14;8090:21;;7977:144;7961:4;7956:3;7952:14;7945:21;;7901:220;;;7905:21;7519:608;;7417:710;;;;;:::o;8150:370::-;8221:5;8270:3;8263:4;8255:6;8251:17;8247:27;8237:122;;8278:79;;:::i;:::-;8237:122;8395:6;8382:20;8420:94;8510:3;8502:6;8495:4;8487:6;8483:17;8420:94;:::i;:::-;8411:103;;8227:293;8150:370;;;;:::o;8526:311::-;8603:4;8693:18;8685:6;8682:30;8679:56;;;8715:18;;:::i;:::-;8679:56;8765:4;8757:6;8753:17;8745:25;;8825:4;8819;8815:15;8807:23;;8526:311;;;:::o;8860:710::-;8956:5;8981:81;8997:64;9054:6;8997:64;:::i;:::-;8981:81;:::i;:::-;8972:90;;9082:5;9111:6;9104:5;9097:21;9145:4;9138:5;9134:16;9127:23;;9198:4;9190:6;9186:17;9178:6;9174:30;9227:3;9219:6;9216:15;9213:122;;;9246:79;;:::i;:::-;9213:122;9361:6;9344:220;9378:6;9373:3;9370:15;9344:220;;;9453:3;9482:37;9515:3;9503:10;9482:37;:::i;:::-;9477:3;9470:50;9549:4;9544:3;9540:14;9533:21;;9420:144;9404:4;9399:3;9395:14;9388:21;;9344:220;;;9348:21;8962:608;;8860:710;;;;;:::o;9593:370::-;9664:5;9713:3;9706:4;9698:6;9694:17;9690:27;9680:122;;9721:79;;:::i;:::-;9680:122;9838:6;9825:20;9863:94;9953:3;9945:6;9938:4;9930:6;9926:17;9863:94;:::i;:::-;9854:103;;9670:293;9593:370;;;;:::o;9969:894::-;10087:6;10095;10144:2;10132:9;10123:7;10119:23;10115:32;10112:119;;;10150:79;;:::i;:::-;10112:119;10298:1;10287:9;10283:17;10270:31;10328:18;10320:6;10317:30;10314:117;;;10350:79;;:::i;:::-;10314:117;10455:78;10525:7;10516:6;10505:9;10501:22;10455:78;:::i;:::-;10445:88;;10241:302;10610:2;10599:9;10595:18;10582:32;10641:18;10633:6;10630:30;10627:117;;;10663:79;;:::i;:::-;10627:117;10768:78;10838:7;10829:6;10818:9;10814:22;10768:78;:::i;:::-;10758:88;;10553:303;9969:894;;;;;:::o;10869:619::-;10946:6;10954;10962;11011:2;10999:9;10990:7;10986:23;10982:32;10979:119;;;11017:79;;:::i;:::-;10979:119;11137:1;11162:53;11207:7;11198:6;11187:9;11183:22;11162:53;:::i;:::-;11152:63;;11108:117;11264:2;11290:53;11335:7;11326:6;11315:9;11311:22;11290:53;:::i;:::-;11280:63;;11235:118;11392:2;11418:53;11463:7;11454:6;11443:9;11439:22;11418:53;:::i;:::-;11408:63;;11363:118;10869:619;;;;;:::o;11494:86::-;11529:7;11569:4;11562:5;11558:16;11547:27;;11494:86;;;:::o;11586:112::-;11669:22;11685:5;11669:22;:::i;:::-;11664:3;11657:35;11586:112;;:::o;11704:214::-;11793:4;11831:2;11820:9;11816:18;11808:26;;11844:67;11908:1;11897:9;11893:17;11884:6;11844:67;:::i;:::-;11704:214;;;;:::o;11924:118::-;12011:24;12029:5;12011:24;:::i;:::-;12006:3;11999:37;11924:118;;:::o;12048:222::-;12141:4;12179:2;12168:9;12164:18;12156:26;;12192:71;12260:1;12249:9;12245:17;12236:6;12192:71;:::i;:::-;12048:222;;;;:::o;12276:323::-;12332:6;12381:2;12369:9;12360:7;12356:23;12352:32;12349:119;;;12387:79;;:::i;:::-;12349:119;12507:1;12532:50;12574:7;12565:6;12554:9;12550:22;12532:50;:::i;:::-;12522:60;;12478:114;12276:323;;;;:::o;12605:104::-;12650:7;12679:24;12697:5;12679:24;:::i;:::-;12668:35;;12605:104;;;:::o;12715:142::-;12818:32;12844:5;12818:32;:::i;:::-;12813:3;12806:45;12715:142;;:::o;12863:254::-;12972:4;13010:2;12999:9;12995:18;12987:26;;13023:87;13107:1;13096:9;13092:17;13083:6;13023:87;:::i;:::-;12863:254;;;;:::o;13123:1057::-;13227:6;13235;13243;13251;13259;13267;13316:3;13304:9;13295:7;13291:23;13287:33;13284:120;;;13323:79;;:::i;:::-;13284:120;13443:1;13468:53;13513:7;13504:6;13493:9;13489:22;13468:53;:::i;:::-;13458:63;;13414:117;13570:2;13596:53;13641:7;13632:6;13621:9;13617:22;13596:53;:::i;:::-;13586:63;;13541:118;13698:2;13724:53;13769:7;13760:6;13749:9;13745:22;13724:53;:::i;:::-;13714:63;;13669:118;13826:2;13852:53;13897:7;13888:6;13877:9;13873:22;13852:53;:::i;:::-;13842:63;;13797:118;13954:3;13981:53;14026:7;14017:6;14006:9;14002:22;13981:53;:::i;:::-;13971:63;;13925:119;14083:3;14110:53;14155:7;14146:6;14135:9;14131:22;14110:53;:::i;:::-;14100:63;;14054:119;13123:1057;;;;;;;;:::o;14186:474::-;14254:6;14262;14311:2;14299:9;14290:7;14286:23;14282:32;14279:119;;;14317:79;;:::i;:::-;14279:119;14437:1;14462:53;14507:7;14498:6;14487:9;14483:22;14462:53;:::i;:::-;14452:63;;14408:117;14564:2;14590:53;14635:7;14626:6;14615:9;14611:22;14590:53;:::i;:::-;14580:63;;14535:118;14186:474;;;;;:::o;14666:182::-;14806:34;14802:1;14794:6;14790:14;14783:58;14666:182;:::o;14854:366::-;14996:3;15017:67;15081:2;15076:3;15017:67;:::i;:::-;15010:74;;15093:93;15182:3;15093:93;:::i;:::-;15211:2;15206:3;15202:12;15195:19;;14854:366;;;:::o;15226:419::-;15392:4;15430:2;15419:9;15415:18;15407:26;;15479:9;15473:4;15469:20;15465:1;15454:9;15450:17;15443:47;15507:131;15633:4;15507:131;:::i;:::-;15499:139;;15226:419;;;:::o;15651:180::-;15699:77;15696:1;15689:88;15796:4;15793:1;15786:15;15820:4;15817:1;15810:15;15837:348;15877:7;15900:20;15918:1;15900:20;:::i;:::-;15895:25;;15934:20;15952:1;15934:20;:::i;:::-;15929:25;;16122:1;16054:66;16050:74;16047:1;16044:81;16039:1;16032:9;16025:17;16021:105;16018:131;;;16129:18;;:::i;:::-;16018:131;16177:1;16174;16170:9;16159:20;;15837:348;;;;:::o;16191:180::-;16239:77;16236:1;16229:88;16336:4;16333:1;16326:15;16360:4;16357:1;16350:15;16377:320;16421:6;16458:1;16452:4;16448:12;16438:22;;16505:1;16499:4;16495:12;16526:18;16516:81;;16582:4;16574:6;16570:17;16560:27;;16516:81;16644:2;16636:6;16633:14;16613:18;16610:38;16607:84;;16663:18;;:::i;:::-;16607:84;16428:269;16377:320;;;:::o;16703:180::-;16843:32;16839:1;16831:6;16827:14;16820:56;16703:180;:::o;16889:366::-;17031:3;17052:67;17116:2;17111:3;17052:67;:::i;:::-;17045:74;;17128:93;17217:3;17128:93;:::i;:::-;17246:2;17241:3;17237:12;17230:19;;16889:366;;;:::o;17261:419::-;17427:4;17465:2;17454:9;17450:18;17442:26;;17514:9;17508:4;17504:20;17500:1;17489:9;17485:17;17478:47;17542:131;17668:4;17542:131;:::i;:::-;17534:139;;17261:419;;;:::o;17686:221::-;17826:34;17822:1;17814:6;17810:14;17803:58;17895:4;17890:2;17882:6;17878:15;17871:29;17686:221;:::o;17913:366::-;18055:3;18076:67;18140:2;18135:3;18076:67;:::i;:::-;18069:74;;18152:93;18241:3;18152:93;:::i;:::-;18270:2;18265:3;18261:12;18254:19;;17913:366;;;:::o;18285:419::-;18451:4;18489:2;18478:9;18474:18;18466:26;;18538:9;18532:4;18528:20;18524:1;18513:9;18509:17;18502:47;18566:131;18692:4;18566:131;:::i;:::-;18558:139;;18285:419;;;:::o;18710:180::-;18758:77;18755:1;18748:88;18855:4;18852:1;18845:15;18879:4;18876:1;18869:15;18896:233;18935:3;18958:24;18976:5;18958:24;:::i;:::-;18949:33;;19004:66;18997:5;18994:77;18991:103;;19074:18;;:::i;:::-;18991:103;19121:1;19114:5;19110:13;19103:20;;18896:233;;;:::o;19135:223::-;19275:34;19271:1;19263:6;19259:14;19252:58;19344:6;19339:2;19331:6;19327:15;19320:31;19135:223;:::o;19364:366::-;19506:3;19527:67;19591:2;19586:3;19527:67;:::i;:::-;19520:74;;19603:93;19692:3;19603:93;:::i;:::-;19721:2;19716:3;19712:12;19705:19;;19364:366;;;:::o;19736:419::-;19902:4;19940:2;19929:9;19925:18;19917:26;;19989:9;19983:4;19979:20;19975:1;19964:9;19960:17;19953:47;20017:131;20143:4;20017:131;:::i;:::-;20009:139;;19736:419;;;:::o;20161:775::-;20394:4;20432:3;20421:9;20417:19;20409:27;;20446:71;20514:1;20503:9;20499:17;20490:6;20446:71;:::i;:::-;20527:72;20595:2;20584:9;20580:18;20571:6;20527:72;:::i;:::-;20609;20677:2;20666:9;20662:18;20653:6;20609:72;:::i;:::-;20691;20759:2;20748:9;20744:18;20735:6;20691:72;:::i;:::-;20773:73;20841:3;20830:9;20826:19;20817:6;20773:73;:::i;:::-;20856;20924:3;20913:9;20909:19;20900:6;20856:73;:::i;:::-;20161:775;;;;;;;;;:::o;20942:225::-;21082:34;21078:1;21070:6;21066:14;21059:58;21151:8;21146:2;21138:6;21134:15;21127:33;20942:225;:::o;21173:366::-;21315:3;21336:67;21400:2;21395:3;21336:67;:::i;:::-;21329:74;;21412:93;21501:3;21412:93;:::i;:::-;21530:2;21525:3;21521:12;21514:19;;21173:366;;;:::o;21545:419::-;21711:4;21749:2;21738:9;21734:18;21726:26;;21798:9;21792:4;21788:20;21784:1;21773:9;21769:17;21762:47;21826:131;21952:4;21826:131;:::i;:::-;21818:139;;21545:419;;;:::o;21970:225::-;22110:34;22106:1;22098:6;22094:14;22087:58;22179:8;22174:2;22166:6;22162:15;22155:33;21970:225;:::o;22201:366::-;22343:3;22364:67;22428:2;22423:3;22364:67;:::i;:::-;22357:74;;22440:93;22529:3;22440:93;:::i;:::-;22558:2;22553:3;22549:12;22542:19;;22201:366;;;:::o;22573:419::-;22739:4;22777:2;22766:9;22762:18;22754:26;;22826:9;22820:4;22816:20;22812:1;22801:9;22797:17;22790:47;22854:131;22980:4;22854:131;:::i;:::-;22846:139;;22573:419;;;:::o;22998:180::-;23046:77;23043:1;23036:88;23143:4;23140:1;23133:15;23167:4;23164:1;23157:15;23184:185;23224:1;23241:20;23259:1;23241:20;:::i;:::-;23236:25;;23275:20;23293:1;23275:20;:::i;:::-;23270:25;;23314:1;23304:35;;23319:18;;:::i;:::-;23304:35;23361:1;23358;23354:9;23349:14;;23184:185;;;;:::o;23375:227::-;23515:34;23511:1;23503:6;23499:14;23492:58;23584:10;23579:2;23571:6;23567:15;23560:35;23375:227;:::o;23608:366::-;23750:3;23771:67;23835:2;23830:3;23771:67;:::i;:::-;23764:74;;23847:93;23936:3;23847:93;:::i;:::-;23965:2;23960:3;23956:12;23949:19;;23608:366;;;:::o;23980:419::-;24146:4;24184:2;24173:9;24169:18;24161:26;;24233:9;24227:4;24223:20;24219:1;24208:9;24204:17;24197:47;24261:131;24387:4;24261:131;:::i;:::-;24253:139;;23980:419;;;:::o;24405:305::-;24445:3;24464:20;24482:1;24464:20;:::i;:::-;24459:25;;24498:20;24516:1;24498:20;:::i;:::-;24493:25;;24652:1;24584:66;24580:74;24577:1;24574:81;24571:107;;;24658:18;;:::i;:::-;24571:107;24702:1;24699;24695:9;24688:16;;24405:305;;;;:::o;24716:177::-;24856:29;24852:1;24844:6;24840:14;24833:53;24716:177;:::o;24899:366::-;25041:3;25062:67;25126:2;25121:3;25062:67;:::i;:::-;25055:74;;25138:93;25227:3;25138:93;:::i;:::-;25256:2;25251:3;25247:12;25240:19;;24899:366;;;:::o;25271:419::-;25437:4;25475:2;25464:9;25460:18;25452:26;;25524:9;25518:4;25514:20;25510:1;25499:9;25495:17;25488:47;25552:131;25678:4;25552:131;:::i;:::-;25544:139;;25271:419;;;:::o;25696:220::-;25836:34;25832:1;25824:6;25820:14;25813:58;25905:3;25900:2;25892:6;25888:15;25881:28;25696:220;:::o;25922:366::-;26064:3;26085:67;26149:2;26144:3;26085:67;:::i;:::-;26078:74;;26161:93;26250:3;26161:93;:::i;:::-;26279:2;26274:3;26270:12;26263:19;;25922:366;;;:::o;26294:419::-;26460:4;26498:2;26487:9;26483:18;26475:26;;26547:9;26541:4;26537:20;26533:1;26522:9;26518:17;26511:47;26575:131;26701:4;26575:131;:::i;:::-;26567:139;;26294:419;;;:::o;26719:147::-;26820:11;26857:3;26842:18;;26719:147;;;;:::o;26872:114::-;;:::o;26992:398::-;27151:3;27172:83;27253:1;27248:3;27172:83;:::i;:::-;27165:90;;27264:93;27353:3;27264:93;:::i;:::-;27382:1;27377:3;27373:11;27366:18;;26992:398;;;:::o;27396:379::-;27580:3;27602:147;27745:3;27602:147;:::i;:::-;27595:154;;27766:3;27759:10;;27396:379;;;:::o;27781:320::-;27896:4;27934:2;27923:9;27919:18;27911:26;;27947:71;28015:1;28004:9;28000:17;27991:6;27947:71;:::i;:::-;28028:66;28090:2;28079:9;28075:18;28066:6;28028:66;:::i;:::-;27781:320;;;;;:::o;28107:223::-;28247:34;28243:1;28235:6;28231:14;28224:58;28316:6;28311:2;28303:6;28299:15;28292:31;28107:223;:::o;28336:366::-;28478:3;28499:67;28563:2;28558:3;28499:67;:::i;:::-;28492:74;;28575:93;28664:3;28575:93;:::i;:::-;28693:2;28688:3;28684:12;28677:19;;28336:366;;;:::o;28708:419::-;28874:4;28912:2;28901:9;28897:18;28889:26;;28961:9;28955:4;28951:20;28947:1;28936:9;28932:17;28925:47;28989:131;29115:4;28989:131;:::i;:::-;28981:139;;28708:419;;;:::o;29133:221::-;29273:34;29269:1;29261:6;29257:14;29250:58;29342:4;29337:2;29329:6;29325:15;29318:29;29133:221;:::o;29360:366::-;29502:3;29523:67;29587:2;29582:3;29523:67;:::i;:::-;29516:74;;29599:93;29688:3;29599:93;:::i;:::-;29717:2;29712:3;29708:12;29701:19;;29360:366;;;:::o;29732:419::-;29898:4;29936:2;29925:9;29921:18;29913:26;;29985:9;29979:4;29975:20;29971:1;29960:9;29956:17;29949:47;30013:131;30139:4;30013:131;:::i;:::-;30005:139;;29732:419;;;:::o;30157:224::-;30297:34;30293:1;30285:6;30281:14;30274:58;30366:7;30361:2;30353:6;30349:15;30342:32;30157:224;:::o;30387:366::-;30529:3;30550:67;30614:2;30609:3;30550:67;:::i;:::-;30543:74;;30626:93;30715:3;30626:93;:::i;:::-;30744:2;30739:3;30735:12;30728:19;;30387:366;;;:::o;30759:419::-;30925:4;30963:2;30952:9;30948:18;30940:26;;31012:9;31006:4;31002:20;30998:1;30987:9;30983:17;30976:47;31040:131;31166:4;31040:131;:::i;:::-;31032:139;;30759:419;;;:::o;31184:222::-;31324:34;31320:1;31312:6;31308:14;31301:58;31393:5;31388:2;31380:6;31376:15;31369:30;31184:222;:::o;31412:366::-;31554:3;31575:67;31639:2;31634:3;31575:67;:::i;:::-;31568:74;;31651:93;31740:3;31651:93;:::i;:::-;31769:2;31764:3;31760:12;31753:19;;31412:366;;;:::o;31784:419::-;31950:4;31988:2;31977:9;31973:18;31965:26;;32037:9;32031:4;32027:20;32023:1;32012:9;32008:17;32001:47;32065:131;32191:4;32065:131;:::i;:::-;32057:139;;31784:419;;;:::o;32209:225::-;32349:34;32345:1;32337:6;32333:14;32326:58;32418:8;32413:2;32405:6;32401:15;32394:33;32209:225;:::o;32440:366::-;32582:3;32603:67;32667:2;32662:3;32603:67;:::i;:::-;32596:74;;32679:93;32768:3;32679:93;:::i;:::-;32797:2;32792:3;32788:12;32781:19;;32440:366;;;:::o;32812:419::-;32978:4;33016:2;33005:9;33001:18;32993:26;;33065:9;33059:4;33055:20;33051:1;33040:9;33036:17;33029:47;33093:131;33219:4;33093:131;:::i;:::-;33085:139;;32812:419;;;:::o;33237:223::-;33377:34;33373:1;33365:6;33361:14;33354:58;33446:6;33441:2;33433:6;33429:15;33422:31;33237:223;:::o;33466:366::-;33608:3;33629:67;33693:2;33688:3;33629:67;:::i;:::-;33622:74;;33705:93;33794:3;33705:93;:::i;:::-;33823:2;33818:3;33814:12;33807:19;;33466:366;;;:::o;33838:419::-;34004:4;34042:2;34031:9;34027:18;34019:26;;34091:9;34085:4;34081:20;34077:1;34066:9;34062:17;34055:47;34119:131;34245:4;34119:131;:::i;:::-;34111:139;;33838:419;;;:::o;34263:182::-;34403:34;34399:1;34391:6;34387:14;34380:58;34263:182;:::o;34451:366::-;34593:3;34614:67;34678:2;34673:3;34614:67;:::i;:::-;34607:74;;34690:93;34779:3;34690:93;:::i;:::-;34808:2;34803:3;34799:12;34792:19;;34451:366;;;:::o;34823:419::-;34989:4;35027:2;35016:9;35012:18;35004:26;;35076:9;35070:4;35066:20;35062:1;35051:9;35047:17;35040:47;35104:131;35230:4;35104:131;:::i;:::-;35096:139;;34823:419;;;:::o;35248:172::-;35388:24;35384:1;35376:6;35372:14;35365:48;35248:172;:::o;35426:366::-;35568:3;35589:67;35653:2;35648:3;35589:67;:::i;:::-;35582:74;;35665:93;35754:3;35665:93;:::i;:::-;35783:2;35778:3;35774:12;35767:19;;35426:366;;;:::o;35798:419::-;35964:4;36002:2;35991:9;35987:18;35979:26;;36051:9;36045:4;36041:20;36037:1;36026:9;36022:17;36015:47;36079:131;36205:4;36079:131;:::i;:::-;36071:139;;35798:419;;;:::o;36223:168::-;36363:20;36359:1;36351:6;36347:14;36340:44;36223:168;:::o;36397:366::-;36539:3;36560:67;36624:2;36619:3;36560:67;:::i;:::-;36553:74;;36636:93;36725:3;36636:93;:::i;:::-;36754:2;36749:3;36745:12;36738:19;;36397:366;;;:::o;36769:419::-;36935:4;36973:2;36962:9;36958:18;36950:26;;37022:9;37016:4;37012:20;37008:1;36997:9;36993:17;36986:47;37050:131;37176:4;37050:131;:::i;:::-;37042:139;;36769:419;;;:::o;37194:174::-;37334:26;37330:1;37322:6;37318:14;37311:50;37194:174;:::o;37374:366::-;37516:3;37537:67;37601:2;37596:3;37537:67;:::i;:::-;37530:74;;37613:93;37702:3;37613:93;:::i;:::-;37731:2;37726:3;37722:12;37715:19;;37374:366;;;:::o;37746:419::-;37912:4;37950:2;37939:9;37935:18;37927:26;;37999:9;37993:4;37989:20;37985:1;37974:9;37970:17;37963:47;38027:131;38153:4;38027:131;:::i;:::-;38019:139;;37746:419;;;:::o;38171:170::-;38311:22;38307:1;38299:6;38295:14;38288:46;38171:170;:::o;38347:366::-;38489:3;38510:67;38574:2;38569:3;38510:67;:::i;:::-;38503:74;;38586:93;38675:3;38586:93;:::i;:::-;38704:2;38699:3;38695:12;38688:19;;38347:366;;;:::o;38719:419::-;38885:4;38923:2;38912:9;38908:18;38900:26;;38972:9;38966:4;38962:20;38958:1;38947:9;38943:17;38936:47;39000:131;39126:4;39000:131;:::i;:::-;38992:139;;38719:419;;;:::o;39144:223::-;39284:34;39280:1;39272:6;39268:14;39261:58;39353:6;39348:2;39340:6;39336:15;39329:31;39144:223;:::o;39373:366::-;39515:3;39536:67;39600:2;39595:3;39536:67;:::i;:::-;39529:74;;39612:93;39701:3;39612:93;:::i;:::-;39730:2;39725:3;39721:12;39714:19;;39373:366;;;:::o;39745:419::-;39911:4;39949:2;39938:9;39934:18;39926:26;;39998:9;39992:4;39988:20;39984:1;39973:9;39969:17;39962:47;40026:131;40152:4;40026:131;:::i;:::-;40018:139;;39745:419;;;:::o;40170:191::-;40210:4;40230:20;40248:1;40230:20;:::i;:::-;40225:25;;40264:20;40282:1;40264:20;:::i;:::-;40259:25;;40303:1;40300;40297:8;40294:34;;;40308:18;;:::i;:::-;40294:34;40353:1;40350;40346:9;40338:17;;40170:191;;;;:::o;40367:143::-;40424:5;40455:6;40449:13;40440:22;;40471:33;40498:5;40471:33;:::i;:::-;40367:143;;;;:::o;40516:351::-;40586:6;40635:2;40623:9;40614:7;40610:23;40606:32;40603:119;;;40641:79;;:::i;:::-;40603:119;40761:1;40786:64;40842:7;40833:6;40822:9;40818:22;40786:64;:::i;:::-;40776:74;;40732:128;40516:351;;;;:::o;40873:85::-;40918:7;40947:5;40936:16;;40873:85;;;:::o;40964:158::-;41022:9;41055:61;41073:42;41082:32;41108:5;41082:32;:::i;:::-;41073:42;:::i;:::-;41055:61;:::i;:::-;41042:74;;40964:158;;;:::o;41128:147::-;41223:45;41262:5;41223:45;:::i;:::-;41218:3;41211:58;41128:147;;:::o;41281:114::-;41348:6;41382:5;41376:12;41366:22;;41281:114;;;:::o;41401:184::-;41500:11;41534:6;41529:3;41522:19;41574:4;41569:3;41565:14;41550:29;;41401:184;;;;:::o;41591:132::-;41658:4;41681:3;41673:11;;41711:4;41706:3;41702:14;41694:22;;41591:132;;;:::o;41729:108::-;41806:24;41824:5;41806:24;:::i;:::-;41801:3;41794:37;41729:108;;:::o;41843:179::-;41912:10;41933:46;41975:3;41967:6;41933:46;:::i;:::-;42011:4;42006:3;42002:14;41988:28;;41843:179;;;;:::o;42028:113::-;42098:4;42130;42125:3;42121:14;42113:22;;42028:113;;;:::o;42177:732::-;42296:3;42325:54;42373:5;42325:54;:::i;:::-;42395:86;42474:6;42469:3;42395:86;:::i;:::-;42388:93;;42505:56;42555:5;42505:56;:::i;:::-;42584:7;42615:1;42600:284;42625:6;42622:1;42619:13;42600:284;;;42701:6;42695:13;42728:63;42787:3;42772:13;42728:63;:::i;:::-;42721:70;;42814:60;42867:6;42814:60;:::i;:::-;42804:70;;42660:224;42647:1;42644;42640:9;42635:14;;42600:284;;;42604:14;42900:3;42893:10;;42301:608;;;42177:732;;;;:::o;42915:831::-;43178:4;43216:3;43205:9;43201:19;43193:27;;43230:71;43298:1;43287:9;43283:17;43274:6;43230:71;:::i;:::-;43311:80;43387:2;43376:9;43372:18;43363:6;43311:80;:::i;:::-;43438:9;43432:4;43428:20;43423:2;43412:9;43408:18;43401:48;43466:108;43569:4;43560:6;43466:108;:::i;:::-;43458:116;;43584:72;43652:2;43641:9;43637:18;43628:6;43584:72;:::i;:::-;43666:73;43734:3;43723:9;43719:19;43710:6;43666:73;:::i;:::-;42915:831;;;;;;;;:::o;43752:442::-;43901:4;43939:2;43928:9;43924:18;43916:26;;43952:71;44020:1;44009:9;44005:17;43996:6;43952:71;:::i;:::-;44033:72;44101:2;44090:9;44086:18;44077:6;44033:72;:::i;:::-;44115;44183:2;44172:9;44168:18;44159:6;44115:72;:::i;:::-;43752:442;;;;;;:::o;44200:807::-;44449:4;44487:3;44476:9;44472:19;44464:27;;44501:71;44569:1;44558:9;44554:17;44545:6;44501:71;:::i;:::-;44582:72;44650:2;44639:9;44635:18;44626:6;44582:72;:::i;:::-;44664:80;44740:2;44729:9;44725:18;44716:6;44664:80;:::i;:::-;44754;44830:2;44819:9;44815:18;44806:6;44754:80;:::i;:::-;44844:73;44912:3;44901:9;44897:19;44888:6;44844:73;:::i;:::-;44927;44995:3;44984:9;44980:19;44971:6;44927:73;:::i;:::-;44200:807;;;;;;;;;:::o;45013:143::-;45070:5;45101:6;45095:13;45086:22;;45117:33;45144:5;45117:33;:::i;:::-;45013:143;;;;:::o;45162:663::-;45250:6;45258;45266;45315:2;45303:9;45294:7;45290:23;45286:32;45283:119;;;45321:79;;:::i;:::-;45283:119;45441:1;45466:64;45522:7;45513:6;45502:9;45498:22;45466:64;:::i;:::-;45456:74;;45412:128;45579:2;45605:64;45661:7;45652:6;45641:9;45637:22;45605:64;:::i;:::-;45595:74;;45550:129;45718:2;45744:64;45800:7;45791:6;45780:9;45776:22;45744:64;:::i;:::-;45734:74;;45689:129;45162:663;;;;;:::o
Swarm Source
ipfs://62b03ab291e2be4615d45a5bfe6ec1f6c5598a662cbba78228a32c73bb18d786
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,019.2 | 0.000000000000000002 | <$0.000001 |
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.