Vetter Token (VETTER) Token Tracker | BscScan (2024)

Vetter Token (VETTER) Token Tracker | BscScan (1)

Vetter Token (VETTER)

Sponsored

MetaMask Manage your web3 everything with MetaMask Portfolio. Try Now!Ready to onboard to BNB Smart Chain? With MetaMask Portfolio, you're in control.

ZeeDex Earn $Zdex with each swap. Swap Now You will earn $Zdex as rewards for any trade or stake on ZeeDex exchange.

NexoJoin the hunt for $12,000,000+ in NEXO Tokens. Get NEXOCollect points for eligible actions and use multipliers to win big.

Sponsored

Сoins.game - 100 free spins for registration. Spin Now! Everyday giveaways up to 8.88BTC, Lucky Spins.Deposit BONUS 300% and Cashbacks!

NanoGames.io Claim Free Lottery tickets with 100k prize pool Claim NowRegister now on NanoGames and receive free lottery tickets to kickstart your new adventure.

Sponsored

BC.GAME The Best BNB Casino with 1,000,000 BNB Daily Bonus. Claim Now5000+ Slots, Live casino games, 50+ cryptos, 100% bet insurance. Register with Bscscan and get 240% first deposit bonus.

Housebets Experience Ultimate Crypto Casino: Massive Rewards, VIP Support, Top-Tier Bonuses Claim Now! 370% welcome bonus, instant payouts, $10M limits! Provably fair. Built by players for players.

BEP-20Cross-Chain

Platform
  • Check previous token supply
  • Add Token to MetaMask (Web3)
  • Update Token Info
  • Update Name Tag or Label
  • Submit Burn Details
  • Report/Flag Address

Overview

Max Total Supply

4,000,000,000VETTER (CSupply: 3,999,999,992.379404)

Holders

9,742 ( -0.021%)

Market

Price

$0.00 @ 0.000000 BNB (+3.34%)

Onchain Market Cap

$796,800.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

0x6169b3b23e57de79a6146a2170980ceb1f83b9e0

  • Transfers
  • Holders
  • Info
  • DEX Trades
  • Contract
  • Analytics

Loading...

Loading

Loading...

Loading

Loading...

Loading

OVERVIEW

Vetter Platform is where crowdsourcing meets A.I. and gamification to empower the crypto investors.

Volume (24H):$232.95
Market Capitalization:$0.00
Circulating Supply:0.00 VETTER
Market Data Source: Coinmarketcap

Update? Click here to update the token ICO / general information

  • Code
  • Read Contract
  • Write Contract

Contract Source Code Verified (Exact Match)

Contract Name:

VetterToken

Compiler Version

v0.8.9+commit.e5eed63a

Optimization Enabled:

Yes with 200 runs

Other Settings:

default evmVersion, Unlicense license

Contract Source Code (Solidity)

Vetter Token (VETTER) Token Tracker | BscScan (13)Vetter Token (VETTER) Token Tracker | BscScan (14)Vetter Token (VETTER) Token Tracker | BscScan (15)IDE

    library Address - function isContract(address account) interface IERC20 - function totalSupply() - function balanceOf(address account) - function transfer(address recipient, ... - function allowance(address owner, add ... - function approve(address spender, uin ... - function transferFrom(address sender, ... interface IUniswapV2Factory - function feeTo() - function feeToSetter() - function getPair(address tokenA, addr ... - function allPairs(uint256) - function allPairsLength() - function createPair(address tokenA, a ... - function setFeeTo(address) - function setFeeToSetter(address) interface IUniswapV2Pair - function name() - function symbol() - function decimals() - function totalSupply() - function balanceOf(address owner) - function allowance(address owner, add ... - function approve(address spender, uin ... - function transfer(address to, uint256 ... - function transferFrom(address from, a ... - function DOMAIN_SEPARATOR() - function PERMIT_TYPEHASH() - function MINIMUM_LIQUIDITY() - function nonces(address owner) - function permit(address owner, addres ... - function factory() - function token0() - function token1() - function getReserves() - function price0CumulativeLast() - function price1CumulativeLast() - function kLast() - function burn(address to) - function swap(uint256 amount0Out, uin ... - function skim(address to) - function sync() - function initialize(address, address) interface IUniswapV2Router01 - function factory() - function WETH() - function addLiquidity(address tokenA, ... - function addLiquidityETH(address toke ... - function removeLiquidity(address toke ... - function removeLiquidityETH(address t ... - function removeLiquidityWithPermit(ad ... - function removeLiquidityETHWithPermit ... - function swapExactTokensForTokens(uin ... - function swapTokensForExactTokens(uin ... - function swapExactETHForTokens(uint25 ... - function swapTokensForExactETH(uint25 ... - function swapExactTokensForETH(uint25 ... - function swapETHForExactTokens(uint25 ... - function quote(uint256 amountA, uint2 ... - function getAmountOut(uint256 amountI ... - function getAmountIn(uint256 amountOu ... - function getAmountsOut(uint256 amount ... - function getAmountsIn(uint256 amountO ... interface IUniswapV2Router02 is IUnis ... - function removeLiquidityETHSupporting ... - function removeLiquidityETHWithPermit ... - function swapExactTokensForTokensSupp ... - function swapExactETHForTokensSupport ... - function swapExactTokensForETHSupport ... - function _msgSender() contract Ownable is Context - function owner() - function isOwner(address who) - function transferOwnership(address ne ... - function acceptOwnership() - function getTime() contract VetterToken is Context, O ... * - function totalSupply() - function balanceOf(address account) - function transfer(address recipient, ... - function allowance(address owner, add ... - function approve(address spender, uin ... - function transferFrom(address sender, ... - function name() - function symbol() - function decimals() - function increaseAllowance(address sp ... - function decreaseAllowance(address sp ... - function addLiquidity(uint256 tokenAm ... - function _approve(address owner, addr ... - function _transfer(address from, addr ... - function isFounderPercentageValid() - function swapMarketingPoolTokens(uint ... - function swapVetterPoolTokens(uint256 ... - function setVetterReserve(uint256 vet ... - function setVetterAddress(address _ve ... - function addLiquidityPoolTokensToLP(u ... - function swapTokensForBNB(uint256 tok ... - function _handleBuyTax(uint256 starti ... - function _handleSellTax(uint256 start ... - function takeTaxes(bool _enabled) - function setAllTaxes(uint256 marketin ... - function setInitialLaunchTaxes(uint25 ... - function getTotalBuyTax() - function getTotalSellTax() - function rewardParticipatory(address ... - function rewardVetter(address to, uin ... - function transferTipAmount(address fr ... - function getTokenPoolSizes() - function getTaxPoolSizes() - function isExcludedFromFee(address ac ... - function excludeFromFee(address accou ... - function includeInFee(address account ... - function getSellBnBAmount(uint256 tok ... - function transferBNBToAddress(address ... - function getPairAddress() - function changeRouterVersion(address ... - function setPresaleAddress(address wh ... - function transferForeignToken(address ... - function _setRankContract(address _co ... - function isArchitect(address who) - function addArchitect(address who, ui ... - function removeArchitect(address who) - function adjustArchitect(address who, ... - function distributeFounderTokens() - function getNumberOfFounders() - function _getAllFounders() - function isAdmin(address who) - function isFullAdmin(address who) - function addAdmin(address who, bool f ... - function removeAdmin(address who) - function _getAllAdmins() - function getNumberOfAdmins() - function isVetter(address who) - function isTrialVetter(address who) - function isFullVetter(address who) - function addOrAdjustVetter(address wh ... - function removeVetter(address who) - function _removeVetter(address who) - function getNumberOfVetters() - function _getAllVetters() - function _getAllShareholders() - function addToStableList(address _wal ... - function getStableListEntry(address w ... - function adjustStableListEnrty(addres ... - function getStableShares() - function getPrivateShares() - function distributeStableTokens() - function airdropPrivateTokens() - function _getMaxTier() - function _getTierLevel(uint256 level) - function _getAllTiers() - function _setTierLevel(uint256 level, ... - function _addNewTier(uint256 newAmoun ... - function _getWalletTier(address who) - function _getUserInfo(address who) - function addToRoyaltyHolders(address ... - function distributeRoyaltyTokens() - function checkRoyaltyAmount() - function getRoyaltyAmount(address who ... - function claimRoyalties() - function setMinRoyaltyTier(uint256 ti ...
  • Similar
  • Sol2Uml
  • Submit Audit
  • Compare
/** *Submitted for verification at BscScan.com on 2021-10-19*/// SPDX-License-Identifier: Unlicensedpragma solidity ^0.8.4;library Address{ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); }}interface IERC20{ function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value);}interface IUniswapV2Factory{ event PairCreated(address indexed token0, address indexed token1, address pair, uint256); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external;}interface IUniswapV2Pair{ event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out,address indexed to); event Sync(uint112 reserve0, uint112 reserve1); 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 MINIMUM_LIQUIDITY() external pure returns (uint256); 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; 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 burn(address to) external returns (uint256 amount0, uint256 amount1); 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 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;}abstract contract Context{ function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); }}contract Ownable is Context{ address private _owner; address private _newOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; _newOwner = address(0); emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } function isOwner(address who) public view returns (bool) { return _owner == who; } modifier onlyOwner() { require(isOwner(_msgSender()), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); require(newOwner != _owner, "Ownable: new owner is already the owner"); _newOwner = newOwner; } function acceptOwnership() public { require(_msgSender() == _newOwner); emit OwnershipTransferred(_owner, _newOwner); _owner = _newOwner; _newOwner = address(0); } function getTime() public view returns (uint256) { return block.timestamp; }}contract VetterToken is Context, Ownable, IERC20{ using Address for address; address private _rankContract; modifier onlyRankContract() { require(_msgSender() == _rankContract, "caller is not the rank contract"); _; } string private constant _name = "Vetter Token"; string private constant _symbol = "VETTER"; uint8 private constant _decimals = 9; address private presaleAddress = 0x000000000000000000000000000000000000dEaD; // External presale address address payable private vetterAddress = payable(0x3636413005a394800F5E4B9fbF194521F3ac40F2); // External Vetter Pool Address (to send the BNB to when auto selling) address payable constant private addressV2Router = payable(0x10ED43C718714eb63d5aA57B78B54704E256024E); IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; uint256 private constant _totalTokens = 4 * 10**9 * 10**_decimals; // 4 Billion Tokens uint256 private constant _initialFounder = 2 * 10**8 * 10**_decimals; // 200 Million Tokens uint256 private constant _initialStable = 2 * 10**8 * 10**_decimals; // 200 Million Tokens uint256 private constant _initialPrivateSale = 2290909091 * 10**_decimals; // 2.3 Billion Tokens uint256 private constant _initialPreSale = 654545455 * 10**_decimals; // 645 Million Tokens uint256 private constant _initialLiquidity = 654545455 * 10**_decimals; // 645 Million Tokens mapping(uint256 => uint256) private _tiers; // The actual tier levels (number of Tokens needed per Tier) uint256 private _numberOfTiers = 4; // Used to control tier levels for DAPP access (0 - number of tier inclusive) [Tier 0 is always 0 tokens] uint256 private constant _initialTier1 = 10000; uint256 private constant _initialTier2 = 100000; uint256 private constant _initialTier3 = 250000; uint256 private constant _initialTier4 = 500000; mapping(address => uint256) private _tokensOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; struct Founder { address payable _founder; uint256 _percentage; } mapping (address => bool) private _architects; mapping (uint256 => Founder) _founderList; uint256 private _numberOfFounders; uint256 private constant _initialFounderLock = 365 days; // Time to the first token release uint256 private constant _founderRelease = 30 days; // Days to the next token release after the first uint256 private constant _founderPercentPerPeriod = 10; // The percentage of the founder pool released over time... uint256 private _timeTokenLaunched; // When the contract was created... uint256 private _founderTokens = _initialFounder; // Track them until they are sent out...timed release uint256 private _stableTokens = _initialStable; // Track them until they are sent out...timed release uint256 private _privateSaleTokens = _initialPrivateSale; // Track them until they are sent out...air dropped uint256 private _presaleAndLiquidityTokens = _initialPreSale + _initialLiquidity; // Track them until they are sent out...sent to presale provider struct Share { address _wallet; // Who was in the sale uint256 _shares; // This is based upon 1 share = 0.01 BNB bool _private; // Used to determine airdropped amounts bool _active; // Used to determine if still qualified for stablizer token releases uint256 _minTokens; // Lowest Level to remain active for stablizer token releases } uint256 private constant _stableRelease = 90 days; // Days between each token release uint256 private _stablePercent = 10; // The percentage of the stable pool to release next uint256 private _stablePeriod = 0; // Which period we are currently in mapping (address => uint256) private _shareHolderIndex; // Index of address in list mapping (uint256 => Share) private _shareHolders; // Used for Private Sale Airdrop and Stabilizer Token Distribution uint256 private _numberOfShareholders; // Count of entries in the Shares List mapping (address => uint256) private _admins; // 0 = No, 1 = reviewer only, 2 = full admin uint256 private _numberOfAdmins; // Number of Admins mapping (uint256 => address) private _adminIndex; // Admin list index bool private _taxesEnabled = false; uint256 private _marketingBuyTax = 50; // (stored at 10x so 5% is 50) uint256 private _marketingSellTax = 50; // (stored at 10x so 5% is 50) uint256 private constant _marketTaxCap = 50; // 5% max uint256 private _marketingTokens; // Marketing/Dev Pool uint256 private _participitoryBuyTax = 20; // (stored at 10x so 2% is 20) uint256 private _participitorySellTax = 50; // (stored at 10x so 5% is 50) uint256 private constant _participitoryCap = 50; // 5% max uint256 private _participitoryTokens; // Participitory Pool uint256 private _vetterBuyTax = 20; // (stored at 10x so 2% is 20) uint256 private _vetterSellTax = 50; // (stored at 10x so 5% is 50) uint256 private constant _vetterCap = 50; // 5% max uint256 private constant _maxHighTaxTime = 2 days; // Maximum time the vetter tax can be set to a higher rate before cap sets in uint256 private _vetterTokens; // Vetter Pool uint256 private _vetterReserve; // Vetter to keep on hand...set to 0 initially mapping (address => uint256) private _vetters; // Vetter Type: 0 = not vetter, 1 = full vetter, 2 = trial vetter uint256 private _numberOfVetters; // Count of vetters mapping (uint256 => address) private _vetterList; // List of vetter addresses uint256 private _liquidityBuyTax = 20; // (stored at 10x so 2% is 20) uint256 private _liquiditySellTax = 20; // (stored at 10x so 2% is 20) uint256 private constant _liquidityCap = 20; // 2% max uint256 private _liquidityTokens; // Liquidity Pool uint256 private _royaltyBuyTax = 10; // (stored at 10x so 1% is 10) uint256 private _royaltySellTax = 10; // (stored at 10x so 1% is 10) uint256 private constant _royaltyCap = 20; // 2% max uint256 private constant _royaltyMin = 10; // 1% min uint256 private _royaltyTokens; // Royalty Pool uint256 private _royaltyUndistributed; // Amount of Pool Not Yet istributed uint256 private _royaltyTierRequired = 3; // Minimum Tier Needed to claim Royalties struct Royalties { uint256 whenAvailable; uint256 amountToClaim; } uint256 private _numRoyaltyHolders; // Count of address now able to claim royalties uint256 private _numberOfDistributions; // Needed to iterate the mapping list when needed mapping (uint256 => Royalties) private _distributions; // The actual amounts by date listing...index to time/amount mapping (address => uint256) private _royaltyIndex; // Addresses in royalty list to time last claimed constructor() { // Distribute the tokens... _tokensOwned[address(this)] = _totalTokens - _presaleAndLiquidityTokens; emit Transfer(address(0), address(this), _totalTokens - _presaleAndLiquidityTokens); _tokensOwned[owner()] = _presaleAndLiquidityTokens; emit Transfer(address(0), owner(), _presaleAndLiquidityTokens); _presaleAndLiquidityTokens = 0; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(addressV2Router); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[addressV2Router] = true; _isExcludedFromFee[uniswapV2Pair] = true; _isExcludedFromFee[vetterAddress] = true; _tiers[1] = _initialTier1; _tiers[2] = _initialTier2; _tiers[3] = _initialTier3; _tiers[4] = _initialTier4; _timeTokenLaunched = block.timestamp; } // To receive ETH from uniswapV2Router when swapping receive() external payable {} function totalSupply() external pure override returns (uint256) { return _totalTokens; } function balanceOf(address account) public view override returns (uint256) { return _tokensOwned[account]; } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } // Account for the correct amount to be approved since they only see the post tax amount in their wallet function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance"); _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function name() external pure returns (string memory) { return _name; } function symbol() external pure returns (string memory) { return _symbol; } function decimals() external pure returns (uint8) { return _decimals; } function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { require(subtractedValue <= _allowances[_msgSender()][spender], "ERC20: transfer amount exceeds allowance"); _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } 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(), getTime() ); } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= _tokensOwned[from], "Transfer amount would exceed balance"); _tokensOwned[from] = _tokensOwned[from] - amount; uint256 remaining = amount; uint256 sellTax; uint256 buyTax; if(_taxesEnabled && !_isExcludedFromFee[from] && (from != presaleAddress)) { sellTax = remaining - _handleSellTax(remaining); remaining = remaining - sellTax; } if(_taxesEnabled && !_isExcludedFromFee[to] && (from != presaleAddress)) { buyTax = remaining - _handleBuyTax(remaining); remaining = remaining - buyTax; } // Add the taxed tokens to the contract... if(amount > remaining) { _tokensOwned[address(this)] = _tokensOwned[address(this)] + (amount - remaining); if(buyTax > 0) emit Transfer(to, address(this), buyTax); if(sellTax > 0) emit Transfer(from, address(this), sellTax); } // Give tokens to the new owner... _tokensOwned[to] = _tokensOwned[to] + remaining; emit Transfer(from, to, remaining); // Save time if these are all gone now... if(_stableTokens > 0) { // Check if still eligible for stable rewards... if(_shareHolderIndex[from] > 0) { // Handle the normal case in the list...won't catch the case where the first entry is actually supposed to be index 0 if(_tokensOwned[from] < _shareHolders[_shareHolderIndex[from]]._minTokens) _shareHolders[_shareHolderIndex[from]]._active = false; } } } function isFounderPercentageValid() internal view returns(bool) { uint256 percentageSum = 0; for(uint256 index = 1; index <= _numberOfFounders; index++) { percentageSum = percentageSum + _founderList[index]._percentage; } return(percentageSum == 100); } event MarketingPoolSwap(uint256 tokensSwapped); function swapMarketingPoolTokens(uint256 amount) external onlyArchitect { require(amount <= _marketingTokens, "Not enough tokens to convert"); require(isFounderPercentageValid(), "Founder percentages are not set to 100%"); uint256 initialBalance = address(this).balance; swapTokensForBNB(amount); uint256 transferredBalance = address(this).balance - initialBalance; if (transferredBalance == 0) return; _tokensOwned[address(this)] = _tokensOwned[address(this)] - amount; _marketingTokens = _marketingTokens - amount; emit MarketingPoolSwap(amount); // Send to Marketing addresses controlled by the founder list uint256 remaining = transferredBalance; for(uint256 index = 1; index <= _numberOfFounders; index++) { uint256 sendAmt = (transferredBalance * _founderList[index]._percentage) / 100; transferBNBToAddress(_founderList[index]._founder, sendAmt); remaining = remaining - sendAmt; } // Should not be any left, but if the division was not even... if(remaining > 0) transferBNBToAddress(payable(owner()), remaining); } event VetterPoolSwapped(uint256 amountSentToInvestmentPool); function swapVetterPoolTokens(uint256 amount) external onlyArchitect { require(amount <= _vetterTokens, "Not enough to swap"); require(_vetterTokens > _vetterReserve, "Can't reduce pool below reserve amount"); uint256 swapAmt = amount; if(_vetterTokens - swapAmt < _vetterReserve) { swapAmt = _vetterTokens - _vetterReserve; } uint256 initialBalance = address(this).balance; swapTokensForBNB(swapAmt); uint256 transferredBalance = address(this).balance - initialBalance; if (transferredBalance == 0) return; // Send to vetter address _tokensOwned[address(this)] = _tokensOwned[address(this)] - swapAmt; _vetterTokens = _vetterTokens - swapAmt; transferBNBToAddress(vetterAddress, transferredBalance); emit VetterPoolSwapped(swapAmt); } function setVetterReserve(uint256 vetter) public onlyArchitect { _vetterReserve = vetter; } event SetVetterAddress(address wallet); function setVetterAddress(address _vetterAddress) external onlyArchitect { vetterAddress = payable(_vetterAddress); _isExcludedFromFee[vetterAddress] = true; emit SetVetterAddress(_vetterAddress); } event LiquidityAddedToLP(uint256 tokensAdded); function addLiquidityPoolTokensToLP(uint256 amount) external onlyArchitect { require(amount <= _liquidityTokens, "Not enough to liquify"); // split the contract balance into halves uint256 half = amount / 2; uint256 otherHalf = amount - half; // capture the contract's current BNB balance. // this is so that we can capture exactly the amount of BNB that the // swap creates, and not make the liquidity event include any BNB that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // Enough liquidity??? if(swapTokensForBNB(half)) { uint256 newBalance = address(this).balance - initialBalance; if(newBalance > 0) { _tokensOwned[address(this)] = _tokensOwned[address(this)] - amount; _liquidityTokens = _liquidityTokens - amount; addLiquidity(otherHalf, newBalance); emit LiquidityAddedToLP(amount); } } } // Just converts the tokens held by the contract itself to BNB...from whatever pool holds them...and gives them to the spcified wallet address function swapTokensForBNB(uint256 tokenAmount) private returns (bool status) { // Generate the uniswap pair path of token -> WETH address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); if(allowance(address(this), address(uniswapV2Router)) < tokenAmount) { _approve(address(this), address(uniswapV2Router), ~uint256(0)); } // Make the swap try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // Accept any amount of ETH path, address(this), getTime() ) { return true; } catch { return false; } } function _handleBuyTax(uint256 starting) private returns(uint256) { uint256 remaining = starting; uint256 tax = (starting * _marketingBuyTax) / 1000; _marketingTokens = _marketingTokens + tax; remaining = remaining - tax; tax = (starting * _participitoryBuyTax) / 1000; _participitoryTokens = _participitoryTokens + tax; remaining = remaining - tax; tax = (starting * _vetterBuyTax) / 1000; _vetterTokens = _vetterTokens + tax; remaining = remaining - tax; tax = (starting * _liquidityBuyTax) / 1000; _liquidityTokens = _liquidityTokens + tax; remaining = remaining - tax; tax = (starting * _royaltyBuyTax) / 1000; _royaltyTokens = _royaltyTokens + tax; _royaltyUndistributed = _royaltyUndistributed + tax; remaining = remaining - tax; return remaining; } function _handleSellTax(uint256 starting) private returns(uint256) { uint256 remaining = starting; uint256 tax = (starting * _marketingSellTax) / 1000; _marketingTokens = _marketingTokens + tax; remaining = remaining - tax; tax = (starting * _participitorySellTax) / 1000; _participitoryTokens = _participitoryTokens + tax; remaining = remaining - tax; tax = (starting * _vetterSellTax) / 1000; _vetterTokens = _vetterTokens + tax; remaining = remaining - tax; tax = (starting * _liquiditySellTax) / 1000; _liquidityTokens = _liquidityTokens + tax; remaining = remaining - tax; tax = (starting * _royaltySellTax) / 1000; _royaltyTokens = _royaltyTokens + tax; _royaltyUndistributed = _royaltyUndistributed + tax; remaining = remaining - tax; return remaining; } event TaxesEnabled(bool enabled); function takeTaxes(bool _enabled) external onlyArchitect { _taxesEnabled = _enabled; emit TaxesEnabled(_taxesEnabled); } event BuyTaxesChanged(uint256 marketing, uint256 participatory, uint256 vetter, uint256 liquidity, uint256 royalty); event SellTaxesChanged(uint256 marketing, uint256 participatory, uint256 vetter, uint256 liquidity, uint256 royalty); function setAllTaxes(uint256 marketingBuy, uint256 marketingSell, uint256 participatoryBuy, uint256 participatorySell, uint256 vetterBuy, uint256 vetterSell, uint256 liquidityBuy, uint256 liquiditySell, uint256 royaltyBuy, uint256 royaltySell) public onlyArchitect { require(marketingBuy <= _marketTaxCap && marketingSell <= _marketTaxCap, "Marketing Tax Exceeds Cap"); require(participatoryBuy <= _participitoryCap && participatorySell <= _participitoryCap, "Participatory Tax Exceeds Cap"); require(vetterBuy <= _vetterCap && vetterSell <= _vetterCap, "Vetter Tax Exceeds Cap"); require(liquidityBuy <= _liquidityCap && liquiditySell <= _liquidityCap, "Liquidity Tax Exceeds Cap"); require(royaltyBuy <= _royaltyCap && royaltySell <= _royaltyCap, "Royalty Tax Exceeds Cap"); require(royaltyBuy >= _royaltyMin && royaltySell >= _royaltyMin, "Royalty Tax Below Minimum"); _marketingBuyTax = marketingBuy; _marketingSellTax = marketingSell; _participitoryBuyTax = participatoryBuy; _participitorySellTax = participatorySell; _vetterBuyTax = vetterBuy; _vetterSellTax = vetterSell; _liquidityBuyTax = liquidityBuy; _liquiditySellTax = liquiditySell; _royaltyBuyTax = royaltyBuy; _royaltySellTax = royaltySell; emit BuyTaxesChanged(_marketingBuyTax, _participitoryBuyTax, _vetterBuyTax, _liquidityBuyTax, _royaltyBuyTax); emit SellTaxesChanged(_marketingSellTax, _participitorySellTax, _vetterSellTax, _liquiditySellTax, _royaltySellTax); } event LaunchTaxChanged(uint256 newVetterTax); // Bot measure to deincentivize selling early... // Ignores the normal caps we have in place...but only able to be called in the initial days of launch function setInitialLaunchTaxes(uint256 amount) public onlyArchitect { require(getTime() < _timeTokenLaunched + _maxHighTaxTime, "Past Allowed High Tax Period"); require(amount < 670, "Can't exceed maximum sell tax of 80%"); _vetterSellTax = amount; emit LaunchTaxChanged(_vetterSellTax); } function getTotalBuyTax() public view returns (uint256) { return(_marketingBuyTax + _participitoryBuyTax + _vetterBuyTax + _liquidityBuyTax + _royaltyBuyTax); } function getTotalSellTax() public view returns (uint256) { return(_marketingSellTax + _participitorySellTax + _vetterSellTax + _liquiditySellTax + _royaltySellTax); } event ParticipitoryRewarded(address indexed to, uint256 value); function rewardParticipatory(address to, uint256 amount) external onlyRankContract { require(amount <= _participitoryTokens, "Not enough to reward"); _tokensOwned[address(this)] = _tokensOwned[address(this)] - amount; _participitoryTokens = _participitoryTokens - amount; _tokensOwned[to] = _tokensOwned[to] + amount; emit Transfer(address(this), to, amount); emit ParticipitoryRewarded(to, amount); } event VetterRewarded(address indexed to, uint256 value); function rewardVetter(address to, uint256 amount) external onlyRankContract { require(amount <= _vetterTokens, "Not enough to reward"); // Send vetter to them _tokensOwned[address(this)] = _tokensOwned[address(this)] - amount; _vetterTokens = _vetterTokens - amount; _tokensOwned[to] = _tokensOwned[to] + amount; emit Transfer(address(this), to, amount); emit VetterRewarded(to, amount); } event TipSent(address indexed from, address indexed to, uint256 value); function transferTipAmount(address from, address to, uint256 amount) external onlyRankContract { _transfer(from, to, amount); emit TipSent(from, to, amount); } // Return the current tracking of the size of initial tokens created in pools as well as taxed pools... // Values: // 0) Total the contract still holds // 1) Contract Tokens allocated to Founder Pool // 2) Contract Tokens allocated to Stable Pool // 3) Contract Tokens allocated to Private Airdrop Pool // 4) Contract Tokens allocated to Presale/Liquidity Pool function getTokenPoolSizes() public view returns(uint256,uint256,uint256,uint256,uint256) { return (balanceOf(address(this)), _founderTokens, _stableTokens, _privateSaleTokens, _presaleAndLiquidityTokens); } // Return the current tracking of the size of initial tokens created in pools as well as taxed pools... // Values: // 1) Marketing Tokens Held by the contract // 2) Participatory Tokens Held by the contract // 3) Vetter Tokens Held by the contract // 4) Liquidity Tokens Held by the contract // 5) Royalty Tokens Held by the contract // 6) Royalty Tokens Not Distributed Yet function getTaxPoolSizes() public view returns(uint256,uint256,uint256,uint256,uint256,uint256) { return (_marketingTokens, _participitoryTokens, _vetterTokens, _liquidityTokens, _royaltyTokens, _royaltyUndistributed); } function isExcludedFromFee(address account) external view returns (bool) { return _isExcludedFromFee[account]; } event ExcludeFromFee(address wallet); function excludeFromFee(address account) external onlyArchitect { _isExcludedFromFee[account] = true; emit ExcludeFromFee(account); } event IncludeInFee(address wallet); function includeInFee(address account) external onlyArchitect { _isExcludedFromFee[account] = false; emit IncludeInFee(account); } function getSellBnBAmount(uint256 tokenAmount) public view returns (uint256) { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uint256[] memory amounts = uniswapV2Router.getAmountsOut(tokenAmount, path); return amounts[1]; } // Used to get BNB from the contract... function transferBNBToAddress(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function getPairAddress() external view onlyArchitect returns (address) { return uniswapV2Pair; } event ChangeRouter(address router, address pair); // Used when Pancake Swap is upgraded to a new version... function changeRouterVersion(address _router) external onlyArchitect returns (address _pair) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_router); _pair = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); if (_pair == address(0)) { // Pair doesn't exist _pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); } // Set the router/pair of the contract variables uniswapV2Pair = _pair; uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[address(uniswapV2Router)] = true; emit ChangeRouter(address(uniswapV2Router), address(uniswapV2Pair)); } function setPresaleAddress(address who) external onlyArchitect { presaleAddress = who; _isExcludedFromFee[who] = true; } event TransferForeignTokens(address token, address to, uint256 amount); // Used to get random tokens sent to this address out to a wallet... function transferForeignToken(address _token, address _to) external onlyArchitect returns (bool _sent) { require(_token != address(this), "Can't let you take all native token"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); if(_sent) emit TransferForeignTokens(_token, _to, _contractBalance); } function _setRankContract(address _contractAddress) external onlyArchitect { _rankContract = _contractAddress; } // Is wallet in list of architects function isArchitect(address who) public view returns(bool) { return _architects[who]; } // Add a new wallet address to list function addArchitect(address who, uint256 percentage) external onlyArchitect { require(percentage <= 100,"Bad Percentage Provided"); require(!_architects[who],"Architect Already Added"); _architects[who] = true; //_founderList.push(Founder(payable(who), percentage)); _numberOfFounders = _numberOfFounders + 1; _founderList[_numberOfFounders] = Founder(payable(who), percentage); _isExcludedFromFee[who] = true; addOrAdjustVetter(who, true); if(_royaltyIndex[who] > 0) return; _royaltyIndex[who] = getTime(); _numRoyaltyHolders = _numRoyaltyHolders + 1; } // Remove a wallet address from list function removeArchitect(address who) external onlyArchitect { require(_architects[who],"Not an Architect"); _architects[who] = false; _removeVetter(who); for(uint256 index = 1; index <= _numberOfFounders; index++) { // Find the entry in the list... if(_founderList[index]._founder == who) { // Move the last entry to this position... _founderList[index] = _founderList[_numberOfFounders]; // Remove the last element to shrink the array down... _numberOfFounders = _numberOfFounders - 1; break; } } } // Add a new wallet address to list function adjustArchitect(address who, uint256 percentage) external onlyArchitect { require(percentage <= 100,"Bad Percentage Provided"); require(_architects[who],"Not an Architect"); for(uint256 index = 1; index <= _numberOfFounders; index++) { // Find the entry in the list... if(_founderList[index]._founder == who) { _founderList[index]._percentage = percentage; break; } } } function distributeFounderTokens() external onlyArchitect { require(isFounderPercentageValid(), "Founder percentages are not set to 100%"); // First check if we are past the initial lock period... if(getTime() < _timeTokenLaunched + _initialFounderLock) return; uint256 totalUnlocked = 0; uint256 periods = 0; while((totalUnlocked < 100) && (getTime() > (_timeTokenLaunched + _initialFounderLock + (_founderRelease * periods)))) { totalUnlocked = totalUnlocked + _founderPercentPerPeriod; periods++; } if(periods < 1) return; // We may have sent some out already...so determine how many we can give out that are left now... // Use FounderCurrent - ShouldBeRemaining where ShouldBeRemaining = InitialAmount - AmountToDistribute // where AmountToDistribute = NumberOfPeriods * TokensPerPeriod // where TokensPerPeriod = PercentageOfOriginal uint256 tokensPerPeriod = (_initialFounder * _founderPercentPerPeriod) / 100; uint256 tokensToDistribute = _founderTokens - (_initialFounder - (periods * tokensPerPeriod)); // Now hand them out... for(uint256 index = 1; index <= _numberOfFounders; index++) { uint256 amount = (tokensToDistribute * _founderList[index]._percentage) / 100; _tokensOwned[address(this)] = _tokensOwned[address(this)] - amount; _founderTokens = _founderTokens - amount; _tokensOwned[_founderList[index]._founder] = _tokensOwned[_founderList[index]._founder] + amount; emit Transfer(address(this), _founderList[index]._founder, amount); } } modifier onlyArchitect() { require(isArchitect(_msgSender()) || isOwner(_msgSender()), "Caller is not an architect."); _; } function getNumberOfFounders() view external returns(uint256) { return _numberOfFounders; } function _getAllFounders() view public returns(Founder[] memory) { Founder[] memory founders = new Founder[](_numberOfFounders); for(uint256 index = 1; index <= _numberOfFounders; index++) { founders[index-1] = _founderList[index]; } return founders; } // Is wallet in list of admins function isAdmin(address who) public view returns(bool) { return _admins[who] > 0; } function isFullAdmin(address who) public view returns(bool) { return _admins[who] > 1; } // Add a new wallet address to list function addAdmin(address who, bool full) external onlyArchitect { if(!isAdmin(who)) { _numberOfAdmins = _numberOfAdmins + 1; _adminIndex[_numberOfAdmins] = who; } if(full) _admins[who] = 2; else _admins[who] = 1; } // Remove a wallet address from list function removeAdmin(address who) external onlyArchitect { if(!isAdmin(who)) return; _admins[who] = 0; for(uint256 index = 1; index <= _numberOfAdmins; index++) { if(_adminIndex[index] == who) { // Move the last entry to here in the mapping... _adminIndex[index] = _adminIndex[_numberOfAdmins]; _numberOfAdmins = _numberOfAdmins - 1; return; } } } modifier onlyAdmin() { require(isFullAdmin(_msgSender()) || isArchitect(_msgSender()) || isOwner(_msgSender()), "Caller is not an admin."); _; } function _getAllAdmins() view public returns(address[] memory) { address[] memory admins = new address[](_numberOfAdmins); for(uint256 index = 1; index <= _numberOfAdmins; index++) { admins[index-1] = _adminIndex[index]; } return admins; } function getNumberOfAdmins() view external returns(uint256) { return _numberOfAdmins; } // Is wallet in list of vetters function isVetter(address who) public view returns(bool) { return _vetters[who] > 0; } // Is wallet in list of trial vetters function isTrialVetter(address who) public view returns(bool) { return _vetters[who] == 2; } // Is wallet in list of full vetters function isFullVetter(address who) public view returns(bool) { return _vetters[who] == 1; } // Add a new wallet address to list function addOrAdjustVetter(address who, bool full) public onlyAdmin { if(!isVetter(who)) { _numberOfVetters = _numberOfVetters + 1; _vetterList[_numberOfVetters] = who; } if(full) _vetters[who] = 1; else _vetters[who] = 2; } // Prevent admins from removing architects... function removeVetter(address who) public onlyAdmin { if(isArchitect(_msgSender())) { _removeVetter(who); return; } require(!isArchitect(who), "Cannot remove the architects from the list."); _removeVetter(who); } // Remove a wallet address from list function _removeVetter(address who) internal { if(!isVetter(who)) return; _vetters[who] = 0; for(uint256 index = 1; index <= _numberOfVetters; index++) { if(_vetterList[index] == who) { // Move the last entry to here in the mapping... _vetterList[index] = _vetterList[_numberOfVetters]; _numberOfVetters = _numberOfVetters - 1; return; } } } function getNumberOfVetters() view external returns(uint256) { return _numberOfVetters; } function _getAllVetters() view public returns(address[] memory) { address[] memory vetters = new address[](_numberOfVetters); for(uint256 index = 1; index <= _numberOfVetters; index++) { vetters[index-1] = _vetterList[index]; } return vetters; } function _getAllShareholders() view public returns(address[] memory) { address[] memory holders = new address[](_numberOfShareholders); for(uint256 index = 1; index <= _numberOfShareholders; index++) { holders[index-1] = _shareHolders[index]._wallet; } return holders; } function addToStableList(address _wallet, uint256 _shares, bool _private, bool _active) external onlyArchitect { bool active = _active; if(_shares == 0) active = false; _numberOfShareholders = _numberOfShareholders + 1; _shareHolderIndex[_wallet] = _numberOfShareholders; _shareHolders[_numberOfShareholders] = Share(_wallet, _shares, _private, active, 0); } function getStableListEntry(address who) view external returns(uint256, bool, bool, uint256) { Share memory s = _shareHolders[_shareHolderIndex[who]]; return (s._shares, s._private, s._active, s._minTokens); } function adjustStableListEnrty(address _wallet, uint256 _shares, bool _private, bool _active, uint256 _minTokens) external onlyArchitect { bool active = _active; if(_shares == 0) active = false; _shareHolders[_shareHolderIndex[_wallet]]._shares = _shares; _shareHolders[_shareHolderIndex[_wallet]]._private = _private; _shareHolders[_shareHolderIndex[_wallet]]._active = active; _shareHolders[_shareHolderIndex[_wallet]]._minTokens = _minTokens; } function getStableShares() public view returns(uint256) { uint256 shares = 0; for(uint256 index = 1; index <= _numberOfShareholders; index++) { if(_shareHolders[index]._active) shares = shares + _shareHolders[index]._shares; } return shares; } function getPrivateShares() public view returns(uint256) { uint256 shares = 0; for(uint256 index = 1; index <= _numberOfShareholders; index++) { if(_shareHolders[index]._active && _shareHolders[index]._private) shares = shares + _shareHolders[index]._shares; } return shares; } function distributeStableTokens() external onlyArchitect { require(_stableTokens > 0, "Stable Token Distribution Already Happened"); // First check if we are past the lock period... if(getTime() < _timeTokenLaunched + (_stableRelease * (_stablePeriod + 1))) return; _stablePeriod = _stablePeriod + 1; uint256 tokensThisPeriod = (_initialStable * (_stablePeriod * _stablePercent)) / 100; uint256 tokensPerShare = tokensThisPeriod / getStableShares(); // Now hand them out... for(uint256 index = 1; index <= _numberOfShareholders; index++) { if(_shareHolders[index]._active) { uint256 amount = tokensPerShare * _shareHolders[index]._shares; _tokensOwned[_shareHolders[index]._wallet] = _tokensOwned[_shareHolders[index]._wallet] + amount; _tokensOwned[address(this)] = _tokensOwned[address(this)] - amount; _stableTokens = _stableTokens - amount; _shareHolders[index]._minTokens = _shareHolders[index]._minTokens + amount; emit Transfer(address(this), _shareHolders[index]._wallet, amount); } } // Be sure on the final stage that all of the tokens were distributed... if(_stablePeriod > 3 && _stableTokens > 0) { _participitoryTokens = _participitoryTokens + _stableTokens; _stableTokens = 0; } } function airdropPrivateTokens() external onlyArchitect { require(_privateSaleTokens > 0, "AirDrop Already Happened"); uint256 tokensPerShare = _privateSaleTokens / getPrivateShares(); // Now hand them out... for(uint256 index = 1; index <= _numberOfShareholders; index++) { if(_shareHolders[index]._private) { uint256 amount = tokensPerShare * _shareHolders[index]._shares; _tokensOwned[address(this)] = _tokensOwned[address(this)] - amount; _privateSaleTokens = _privateSaleTokens - amount; _tokensOwned[_shareHolders[index]._wallet] = _tokensOwned[_shareHolders[index]._wallet] + amount; _shareHolders[index]._minTokens = _shareHolders[index]._minTokens + amount; emit Transfer(address(this), _shareHolders[index]._wallet, amount); } } // Should not be any left, but make sure it is cleared out... if(_privateSaleTokens > 0) { _participitoryTokens = _participitoryTokens + _privateSaleTokens; _privateSaleTokens = 0; } } // Return the number of tiers currently in use function _getMaxTier() view public returns(uint256) { return _numberOfTiers; } // Get the number of tokens needed at a specified Tier function _getTierLevel(uint256 level) view public returns(uint256) { require(level <= _getMaxTier(),"Not a Valid Tier Level"); return _tiers[level]; } // Get the token counts for all tier levels function _getAllTiers() view public returns(uint256[] memory) { uint256 maxTier = _getMaxTier(); uint256[] memory tierLevels = new uint256[](maxTier + 1); for(uint256 level = 0; level <= maxTier; level++) { tierLevels[level] = _tiers[level]; } return tierLevels; } event TierLevelChanged(uint256 tier, uint256 newLevel); // Set the number of tokens needed at a specified Tier function _setTierLevel(uint256 level, uint256 newAmount) external onlyArchitect { require(level <= _getMaxTier(),"Not a Valid Tier Level"); _tiers[level] = newAmount; emit TierLevelChanged(level, newAmount); } // Add to tier count and set the number of tokens needed function _addNewTier(uint256 newAmount) external onlyArchitect { _numberOfTiers = _numberOfTiers + 1; _tiers[_numberOfTiers] = newAmount; emit TierLevelChanged(_numberOfTiers, newAmount); } // Return the Tier of a wallet address by tokens held function _getWalletTier(address who) view public returns(uint256) { uint256 whoBal = balanceOf(who); if(whoBal > 0) { for(uint256 level = _getMaxTier(); level > 0; level--) { if(whoBal > _getTierLevel(level)) return level; } } return 0; } // Return Tier and Access Information (wallet tier, owner, architect, admin, reviewer, trial vetter, full vetter, active in stable pool) function _getUserInfo(address who) view external returns(uint256, uint256, bool, bool, bool, bool, bool) { return (_getWalletTier(who), _tokensOwned[who], isArchitect(who), isFullAdmin(who), isAdmin(who), isTrialVetter(who), isFullVetter(who)); } function addToRoyaltyHolders(address who) external onlyRankContract { if(_royaltyIndex[who] > 0) return; _royaltyIndex[who] = getTime(); _numRoyaltyHolders = _numRoyaltyHolders + 1; } event RoyaltyDistribution(uint256 amount, uint256 timeAdded); function distributeRoyaltyTokens() external onlyArchitect { require(_royaltyUndistributed > 0 && _royaltyTokens > 0, "Nothing to Distribute"); require(_numRoyaltyHolders > 0, "Noone to Distribute to"); uint256 amount = _royaltyUndistributed / _numRoyaltyHolders; _royaltyUndistributed = _royaltyUndistributed - (amount * _numRoyaltyHolders); // Account for a division remainder _numberOfDistributions = _numberOfDistributions + 1; _distributions[_numberOfDistributions] = Royalties(getTime(), amount); emit RoyaltyDistribution(amount, getTime()); } function checkRoyaltyAmount() public view returns(uint256) { uint256 lastTime = _royaltyIndex[_msgSender()]; if(lastTime < 1) return 0; uint256 available = 0; for(uint256 index = 1; index <= _numberOfDistributions; index++) { if(_distributions[index].whenAvailable > lastTime) available = available + _distributions[index].amountToClaim; } return available; } function getRoyaltyAmount(address who) public view returns(uint256) { uint256 lastTime = _royaltyIndex[who]; if(lastTime < 1) return 0; uint256 available = 0; for(uint256 index = 1; index <= _numberOfDistributions; index++) { if(_distributions[index].whenAvailable > lastTime) available = available + _distributions[index].amountToClaim; } return available; } event RoyaltyClaimed(address indexed to, uint256 received); function claimRoyalties() external { require(_royaltyIndex[_msgSender()] > 0, "Not a Royalty Holder"); require(_getWalletTier(_msgSender()) > _royaltyTierRequired, "Must Meet Tier Requirement To Claim"); uint256 amount = checkRoyaltyAmount(); require(amount > 0, "No Royalty To Claim"); _tokensOwned[address(this)] = _tokensOwned[address(this)] - amount; _royaltyTokens = _royaltyTokens - amount; _tokensOwned[_msgSender()] = _tokensOwned[_msgSender()] + amount; _royaltyIndex[_msgSender()] = getTime(); emit Transfer(address(this), _msgSender(), amount); emit RoyaltyClaimed(_msgSender(), amount); } event RoyaltyTierChanged(uint256 newTier, uint256 tokenNeeed); function setMinRoyaltyTier(uint256 tierLevel) external onlyArchitect { require(tierLevel <= _getMaxTier(), "Invalid Tier Level"); _royaltyTierRequired = tierLevel; emit RoyaltyTierChanged(tierLevel, _getTierLevel(tierLevel)); }}

Contract Security Audit

  • No Contract Security Audit Submitted- Submit Audit Here

Contract ABI

  • JSON Format
  • RAW/Text Format
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"participatory","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"vetter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"royalty","type":"uint256"}],"name":"BuyTaxesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"router","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"}],"name":"ChangeRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"IncludeInFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newVetterTax","type":"uint256"}],"name":"LaunchTaxChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensAdded","type":"uint256"}],"name":"LiquidityAddedToLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"}],"name":"MarketingPoolSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ParticipitoryRewarded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"received","type":"uint256"}],"name":"RoyaltyClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timeAdded","type":"uint256"}],"name":"RoyaltyDistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTier","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenNeeed","type":"uint256"}],"name":"RoyaltyTierChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"participatory","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"vetter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"royalty","type":"uint256"}],"name":"SellTaxesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"SetVetterAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"TaxesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tier","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLevel","type":"uint256"}],"name":"TierLevelChanged","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":"TipSent","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":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountSentToInvestmentPool","type":"uint256"}],"name":"VetterPoolSwapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"VetterRewarded","type":"event"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"_addNewTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_getAllAdmins","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getAllFounders","outputs":[{"components":[{"internalType":"address payable","name":"_founder","type":"address"},{"internalType":"uint256","name":"_percentage","type":"uint256"}],"internalType":"struct VetterToken.Founder[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getAllShareholders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getAllTiers","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getAllVetters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"}],"name":"_getTierLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"_getUserInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"_getWalletTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"name":"_setRankContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"_setTierLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"full","type":"bool"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"addArchitect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addLiquidityPoolTokensToLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"full","type":"bool"}],"name":"addOrAdjustVetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"addToRoyaltyHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"uint256","name":"_shares","type":"uint256"},{"internalType":"bool","name":"_private","type":"bool"},{"internalType":"bool","name":"_active","type":"bool"}],"name":"addToStableList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"adjustArchitect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"uint256","name":"_shares","type":"uint256"},{"internalType":"bool","name":"_private","type":"bool"},{"internalType":"bool","name":"_active","type":"bool"},{"internalType":"uint256","name":"_minTokens","type":"uint256"}],"name":"adjustStableListEnrty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"airdropPrivateTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"_pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkRoyaltyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"distributeFounderTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeRoyaltyTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeStableTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getNumberOfAdmins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfFounders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfVetters","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPrivateShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"getRoyaltyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"getSellBnBAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"getStableListEntry","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStableShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxPoolSizes","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenPoolSizes","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":"who","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"isArchitect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"isFullAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"isFullVetter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"isTrialVetter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"isVetter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"removeArchitect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"removeVetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rewardParticipatory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rewardVetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"participatoryBuy","type":"uint256"},{"internalType":"uint256","name":"participatorySell","type":"uint256"},{"internalType":"uint256","name":"vetterBuy","type":"uint256"},{"internalType":"uint256","name":"vetterSell","type":"uint256"},{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"liquiditySell","type":"uint256"},{"internalType":"uint256","name":"royaltyBuy","type":"uint256"},{"internalType":"uint256","name":"royaltySell","type":"uint256"}],"name":"setAllTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setInitialLaunchTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierLevel","type":"uint256"}],"name":"setMinRoyaltyTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"setPresaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vetterAddress","type":"address"}],"name":"setVetterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"vetter","type":"uint256"}],"name":"setVetterReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapMarketingPoolTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapVetterPoolTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"takeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferTipAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Contract Creation Code

Decompile Bytecode Switch to Opcodes View

6080604052600380546001600160a01b031990811661dead1790915560048054909116733636413005a394800f5e4b9fbf194521f3ac40f21781556008556200004b6009600a620006ed565b6200005b90630bebc20062000705565b6010556200006c6009600a620006ed565b6200007c90630bebc20062000705565b6011556200008d6009600a620006ed565b6200009d9063888c7fa362000705565b601255620000ae6009600a620006ed565b620000be90632703922f62000705565b620000cc6009600a620006ed565b620000dc90632703922f62000705565b620000e8919062000727565b601355600a60148181556000601555601c805460ff191690556032601d819055601e819055602082905560218190556023829055602455602a819055602b55602d819055602e5560036031553480156200014157600080fd5b5060008054336001600160a01b03199182168117835560018054909216909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506013546200019f6009600a620006ed565b620001af9063ee6b280062000705565b620001bb919062000742565b306000818152600960208190526040822093909355601354919290916000805160206200651883398151915291620001f590600a620006ed565b620002059063ee6b280062000705565b62000211919062000742565b60405190815260200160405180910390a3601354600960006200023c6000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055620002696000546001600160a01b031690565b6001600160a01b031660006001600160a01b031660008051602062006518833981519152601354604051620002a091815260200190565b60405180910390a3600060138190555060007310ed43c718714eb63d5aa57b78b54704e256024e9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030357600080fd5b505afa15801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e91906200075c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038757600080fd5b505afa1580156200039c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c291906200075c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200040b57600080fd5b505af115801562000420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044691906200075c565b600680546001600160a01b03199081166001600160a01b039384161790915560058054909116918316919091179055306000908152600b602081905260408220805460ff1916600190811790915591620004a86000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600b84527f1b527d29b0adad6024a4fa67afed68011eb0c3f10e7bdd1c9ac22fe52fc2fe96805486166001908117909155600654831682528382208054871682179055600480549093168252928120805490951690921790935560079091526127107fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b82855620186a07fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d556203d0907f3be6fd20d5acfde5b873b48692cd31f4d3c7e8ee8a813af4696af8859e5ca6c65552506207a1207fb805995a7ec585a251200611a61d179cfd7fb105e1ab17dc415a7336783786f75542600f5562000787565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200062f578160001904821115620006135762000613620005d8565b808516156200062157918102915b93841c9390800290620005f3565b509250929050565b6000826200064857506001620006e7565b816200065757506000620006e7565b81600181146200067057600281146200067b576200069b565b6001915050620006e7565b60ff8411156200068f576200068f620005d8565b50506001821b620006e7565b5060208310610133831016604e8410600b8410161715620006c0575081810a620006e7565b620006cc8383620005ee565b8060001904821115620006e357620006e3620005d8565b0290505b92915050565b6000620006fe60ff84168362000637565b9392505050565b6000816000190483118215151615620007225762000722620005d8565b500290565b600082198211156200073d576200073d620005d8565b500190565b600082821015620007575762000757620005d8565b500390565b6000602082840312156200076f57600080fd5b81516001600160a01b0381168114620006fe57600080fd5b615d8180620007976000396000f3fe6080604052600436106104825760003560e01c8063727b42c811610255578063a91109c011610144578063d6dac9b6116100c1578063ea2f0b3711610085578063ea2f0b3714610efa578063edfdd40b14610f1a578063f2fde38b14610fd4578063f75772fc14610ff4578063f9a635b314611014578063fcc6334f1461103457600080fd5b8063d6dac9b614610e3c578063dd62ed3e14610e51578063e57b5ffb14610e97578063e8b8081014610ed0578063e8eaf89014610ee557600080fd5b8063b756255211610108578063b756255214610d8a578063bb54a84514610daa578063bdb9f28d14610dca578063c866776b14610dea578063cde2a69e14610e2757600080fd5b8063a91109c014610ce8578063aa6529ed14610d08578063aa9de27714610d28578063b1da528c14610d4a578063b3124b4514610d6a57600080fd5b80638d5f81e2116101d25780639911ec75116101965780639911ec7514610c3a578063a4230bd514610c4f578063a457c2d714610c6f578063a5ffa30f14610c8f578063a9059cbb14610cc857600080fd5b80638d5f81e214610ba35780638da5cb5b14610bb85780639080f9ec14610bd657806391469a6e14610bf657806395d89b4114610c0b57600080fd5b80638120904b116102195780638120904b14610b01578063820bd6a914610b165780638366e79a14610b4e57806386762e4114610b6e578063871f832514610b8e57600080fd5b8063727b42c814610a7557806374ac325914610a9757806374f059ba14610ab757806379ba509714610acc5780637a49b92a14610ae157600080fd5b80632e8263e911610371578063459a44d8116102ee5780635881f3ef116102b25780635881f3ef146109a75780635b491ba5146109df57806366b500f5146109ff5780636df2e0b514610a1f57806370a0823114610a3f57600080fd5b8063459a44d81461090457806346d6f78a146109265780634b5e86ff1461093b5780635342acb41461095b578063557ed1ba1461099457600080fd5b80633bbefdbc116103355780633bbefdbc1461084e5780633dcb2f021461086357806340a4f8bf146108af578063437823ec146108cf5780634450e9d6146108ef57600080fd5b80632e8263e9146107ae5780632f54bf6e146107c3578063313ce567146107f2578063328499281461080e578063395093511461082e57600080fd5b8063095ea7b3116103ff57806318160ddd116103c357806318160ddd146107015780632360b1701461071657806323b872dd1461073657806324d7806c146107565780632b69b42b1461078e57600080fd5b8063095ea7b31461061f5780630c8459e91461064f578063141c1a9c14610688578063163bc261146106c15780631785f53c146106e157600080fd5b806306c623751161044657806306c623751461052d57806306fdde031461054d5780630718db421461058b57806308c18d0f146105ab57806309364e551461060a57600080fd5b8063017826e81461048e57806304b51fa5146104c157806305b3744c146104d6578063069b7820146104f857806306b7bb591461050d57600080fd5b3661048957005b600080fd5b34801561049a57600080fd5b506104ae6104a9366004615507565b611054565b6040519081526020015b60405180910390f35b3480156104cd57600080fd5b506104ae6110bb565b3480156104e257600080fd5b506104f66104f136600461552b565b611138565b005b34801561050457600080fd5b506104f6611208565b34801561051957600080fd5b506104f6610528366004615544565b6113e4565b34801561053957600080fd5b506104ae61054836600461552b565b6115bb565b34801561055957600080fd5b5060408051808201909152600c81526b2b32ba3a32b9102a37b5b2b760a11b60208201525b6040516104b89190615570565b34801561059757600080fd5b506104f66105a6366004615544565b611751565b3480156105b757600080fd5b506105cb6105c6366004615507565b611885565b6040805197885260208801969096529315159486019490945290151560608501521515608084015290151560a0830152151560c082015260e0016104b8565b34801561061657600080fd5b506008546104ae565b34801561062b57600080fd5b5061063f61063a366004615544565b611904565b60405190151581526020016104b8565b34801561065b57600080fd5b5061063f61066a366004615507565b6001600160a01b03166000908152600c602052604090205460ff1690565b34801561069457600080fd5b5061063f6106a3366004615507565b6001600160a01b031660009081526019602052604090205460011090565b3480156106cd57600080fd5b506104f66106dc36600461552b565b61191b565b3480156106ed57600080fd5b506104f66106fc366004615507565b611afb565b34801561070d57600080fd5b506104ae611bf2565b34801561072257600080fd5b506104f66107313660046155d3565b611c13565b34801561074257600080fd5b5061063f61075136600461560c565b611d1a565b34801561076257600080fd5b5061063f610771366004615507565b6001600160a01b0316600090815260196020526040902054151590565b34801561079a57600080fd5b506104f66107a936600461564d565b611dad565b3480156107ba57600080fd5b506104f6611ea5565b3480156107cf57600080fd5b5061063f6107de366004615507565b6000546001600160a01b0390811691161490565b3480156107fe57600080fd5b50604051600981526020016104b8565b34801561081a57600080fd5b506104f6610829366004615507565b6120b3565b34801561083a57600080fd5b5061063f610849366004615544565b612135565b34801561085a57600080fd5b506104ae61216c565b34801561086f57600080fd5b50601f54602254602554602c54602f54603054604080519687526020870195909552938501929092526060840152608083015260a082015260c0016104b8565b3480156108bb57600080fd5b506104f66108ca36600461552b565b6121ee565b3480156108db57600080fd5b506104f66108ea366004615507565b61232d565b3480156108fb57600080fd5b50600e546104ae565b34801561091057600080fd5b506109196123b5565b6040516104b891906156e4565b34801561093257600080fd5b506104f661246a565b34801561094757600080fd5b506104f661095636600461552b565b6126cb565b34801561096757600080fd5b5061063f610976366004615507565b6001600160a01b03166000908152600b602052604090205460ff1690565b3480156109a057600080fd5b50426104ae565b3480156109b357600080fd5b506109c76109c2366004615507565b61275e565b6040516001600160a01b0390911681526020016104b8565b3480156109eb57600080fd5b506104f66109fa3660046156f7565b612b2b565b348015610a0b57600080fd5b506104f6610a1a36600461552b565b612e71565b348015610a2b57600080fd5b506104ae610a3a366004615507565b612eaa565b348015610a4b57600080fd5b506104ae610a5a366004615507565b6001600160a01b031660009081526009602052604090205490565b348015610a8157600080fd5b50610a8a612f32565b6040516104b8919061575f565b348015610aa357600080fd5b506104f6610ab236600461552b565b613013565b348015610ac357600080fd5b50610919613138565b348015610ad857600080fd5b506104f66131ed565b348015610aed57600080fd5b506104f6610afc366004615507565b613271565b348015610b0d57600080fd5b506104ae613368565b348015610b2257600080fd5b5061063f610b31366004615507565b6001600160a01b0316600090815260276020526040902054151590565b348015610b5a57600080fd5b5061063f610b693660046157b7565b6133a1565b348015610b7a57600080fd5b506104f6610b8936600461560c565b613596565b348015610b9a57600080fd5b506104f6613626565b348015610baf57600080fd5b506109c761379b565b348015610bc457600080fd5b506000546001600160a01b03166109c7565b348015610be257600080fd5b506104f6610bf1366004615507565b6137e1565b348015610c0257600080fd5b506104f6613837565b348015610c1757600080fd5b506040805180820190915260068152652b22aa2a22a960d11b602082015261057e565b348015610c4657600080fd5b506104ae613aef565b348015610c5b57600080fd5b506104f6610c6a3660046155d3565b613b0a565b348015610c7b57600080fd5b5061063f610c8a366004615544565b613bd8565b348015610c9b57600080fd5b5061063f610caa366004615507565b6001600160a01b031660009081526027602052604090205460021490565b348015610cd457600080fd5b5061063f610ce3366004615544565b613c51565b348015610cf457600080fd5b506104f6610d0336600461552b565b613c5e565b348015610d1457600080fd5b506104f6610d23366004615507565b613e17565b348015610d3457600080fd5b50610d3d613f60565b6040516104b891906157e5565b348015610d5657600080fd5b506104f6610d65366004615544565b61400a565b348015610d7657600080fd5b506104f6610d85366004615829565b614174565b348015610d9657600080fd5b506104f6610da5366004615507565b6141ef565b348015610db657600080fd5b506104f6610dc5366004615846565b61428b565b348015610dd657600080fd5b506104f6610de5366004615507565b614359565b348015610df657600080fd5b50610dff6143c7565b604080519586526020860194909452928401919091526060830152608082015260a0016104b8565b348015610e3357600080fd5b506028546104ae565b348015610e4857600080fd5b506104ae61440b565b348015610e5d57600080fd5b506104ae610e6c3660046157b7565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b348015610ea357600080fd5b5061063f610eb2366004615507565b6001600160a01b031660009081526027602052604090205460011490565b348015610edc57600080fd5b50601a546104ae565b348015610ef157600080fd5b5061091961446a565b348015610f0657600080fd5b506104f6610f15366004615507565b61451f565b348015610f2657600080fd5b50610fae610f35366004615507565b6001600160a01b0390811660009081526016602090815260408083205483526017825291829020825160a081018452815490941684526001810154918401829052600281015460ff8082161515948601859052610100909104161515606085018190526003909101546080909401849052909391929091565b6040805194855292151560208501529015159183019190915260608201526080016104b8565b348015610fe057600080fd5b506104f6610fef366004615507565b6145a4565b34801561100057600080fd5b506104f661100f366004615544565b6146ee565b34801561102057600080fd5b506104ae61102f36600461552b565b61484c565b34801561104057600080fd5b506104f661104f366004615868565b6148b2565b6001600160a01b03811660009081526009602052604081205480156110b257600061107e60085490565b90505b80156110b0576110908161484c565b82111561109e579392505050565b806110a8816158d9565b915050611081565b505b50600092915050565b3360009081526035602052604081205460018110156110dc57600091505090565b600060015b60335481116111315760008181526034602052604090205483101561111f5760008181526034602052604090206001015461111c90836158f0565b91505b8061112981615908565b9150506110e1565b5092915050565b6111413361066a565b806111505750611150336107de565b6111755760405162461bcd60e51b815260040161116c90615923565b60405180910390fd5b6008548111156111bc5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a5908151a595c8813195d995b60721b604482015260640161116c565b60318190557f07f2a6588b8c0ae2c36a254496d314568ae6bddca166f6028c276b3297f726af816111ec8161484c565b604080519283526020830191909152015b60405180910390a150565b3360009081526035602052604090205461125b5760405162461bcd60e51b81526020600482015260146024820152732737ba1030902937bcb0b63a3c902437b63232b960611b604482015260640161116c565b60315461126733611054565b116112c05760405162461bcd60e51b815260206004820152602360248201527f4d757374204d656574205469657220526571756972656d656e7420546f20436c60448201526261696d60e81b606482015260840161116c565b60006112ca6110bb565b9050600081116113125760405162461bcd60e51b81526020600482015260136024820152724e6f20526f79616c747920546f20436c61696d60681b604482015260640161116c565b3060009081526009602052604090205461132d90829061595a565b30600090815260096020526040902055602f5461134b90829061595a565b602f55336000908152600960205260409020546113699082906158f0565b336000818152600960209081526040808320949094556035815290839020429055915183815290913091600080516020615d2c833981519152910160405180910390a360405181815233907f4dde06d146f45c5901140b17cd6e3c65b3767f374b735f91bdf1bcff9e649c7a9060200160405180910390a250565b6113ed3361066a565b806113fc57506113fc336107de565b6114185760405162461bcd60e51b815260040161116c90615923565b60648111156114635760405162461bcd60e51b81526020600482015260176024820152761098590814195c98d95b9d1859d948141c9bdd9a591959604a1b604482015260640161116c565b6001600160a01b0382166000908152600c602052604090205460ff16156114cc5760405162461bcd60e51b815260206004820152601760248201527f41726368697465637420416c7265616479204164646564000000000000000000604482015260640161116c565b6001600160a01b0382166000908152600c60205260409020805460ff19166001908117909155600e546114fe916158f0565b600e8190556040805180820182526001600160a01b0385811680835260208084018781526000968752600d8252858720945185546001600160a01b031916941693909317845591516001938401558452600b90529120805460ff191682179055611569908390611c13565b6001600160a01b0382166000908152603560205260409020541561158b575050565b426001600160a01b0383166000908152603560205260409020556032546115b39060016158f0565b6032555b5050565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106115f4576115f4615987565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561164857600080fd5b505afa15801561165c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611680919061599d565b8160018151811061169357611693615987565b6001600160a01b03928316602091820292909201015260055460405163d06ca61f60e01b8152600092919091169063d06ca61f906116d790879086906004016159ba565b60006040518083038186803b1580156116ef57600080fd5b505afa158015611703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261172b91908101906159d3565b90508060018151811061174057611740615987565b602002602001015192505050919050565b61175a3361066a565b806117695750611769336107de565b6117855760405162461bcd60e51b815260040161116c90615923565b60648111156117d05760405162461bcd60e51b81526020600482015260176024820152761098590814195c98d95b9d1859d948141c9bdd9a591959604a1b604482015260640161116c565b6001600160a01b0382166000908152600c602052604090205460ff1661182b5760405162461bcd60e51b815260206004820152601060248201526f139bdd08185b88105c98da1a5d1958dd60821b604482015260640161116c565b60015b600e548111611880576000818152600d60205260409020546001600160a01b038481169116141561186e576000908152600d602052604090206001015550565b8061187881615908565b91505061182e565b505050565b600080600080600080600061189988611054565b6001600160a01b0389166000908152600960205260409020546118bb8a61066a565b6001600160a01b039a909a16600090815260196020908152604080832054602790925290912054929b919a99506001818110995090151597506002831496509091149350915050565b600061191133848461496b565b5060015b92915050565b6119243361066a565b806119335750611933336107de565b61194f5760405162461bcd60e51b815260040161116c90615923565b601f548111156119a15760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f20636f6e7665727400000000604482015260640161116c565b6119a9614a87565b6119c55760405162461bcd60e51b815260040161116c90615a91565b476119cf82614acf565b5060006119dc824761595a565b9050806119e857505050565b30600090815260096020526040902054611a0390849061595a565b30600090815260096020526040902055601f54611a2190849061595a565b601f556040518381527fd06fc5b2519e388fed054cf3477042e8fdf94298454368d50967013106a74cd69060200160405180910390a18060015b600e548111611ad2576000818152600d6020526040812060010154606490611a839086615ad8565b611a8d9190615af7565b6000838152600d6020526040902054909150611ab2906001600160a01b031682614c6d565b611abc818461595a565b9250508080611aca90615908565b915050611a5b565b508015611af457611af4611aee6000546001600160a01b031690565b82614c6d565b5050505b50565b611b043361066a565b80611b135750611b13336107de565b611b2f5760405162461bcd60e51b815260040161116c90615923565b6001600160a01b038116600090815260196020526040902054611b4f5750565b6001600160a01b03811660009081526019602052604081205560015b601a5481116115b7576000818152601b60205260409020546001600160a01b0383811691161415611be057601a80546000908152601b602052604080822054848352912080546001600160a01b0319166001600160a01b0390921691909117905554611bd99060019061595a565b601a555050565b80611bea81615908565b915050611b6b565b6000611c006009600a615bfd565b611c0e9063ee6b2800615ad8565b905090565b611c1c336106a3565b80611c2b5750611c2b3361066a565b80611c3a5750611c3a336107de565b611c805760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba1030b71030b236b4b71760491b604482015260640161116c565b6001600160a01b038216600090815260276020526040902054611cd857602854611cab9060016158f0565b6028819055600090815260296020526040902080546001600160a01b0319166001600160a01b0384161790555b8015611cfc57506001600160a01b0316600090815260276020526040902060019055565b506001600160a01b0316600090815260276020526040902060029055565b6001600160a01b0383166000908152600a60209081526040808320338452909152812054821115611d5d5760405162461bcd60e51b815260040161116c90615c0c565b611d68848484614ca3565b6001600160a01b0384166000908152600a6020908152604080832033808552925290912054611da3918691611d9e90869061595a565b61496b565b5060019392505050565b611db63361066a565b80611dc55750611dc5336107de565b611de15760405162461bcd60e51b815260040161116c90615923565b8083611deb575060005b601854611df99060016158f0565b60188190556001600160a01b039586166000818152601660209081526040808320859055805160a081018252938452838201988952961515838801908152941515606084019081526080840183815294835260179091529590209051815497166001600160a01b03199097169690961786559351600186015551600285018054935115156101000261ff00199215159290921661ffff1990941693909317179091555051600390910155565b611eae3361066a565b80611ebd5750611ebd336107de565b611ed95760405162461bcd60e51b815260040161116c90615923565b600060125411611f2b5760405162461bcd60e51b815260206004820152601860248201527f41697244726f7020416c72656164792048617070656e65640000000000000000604482015260640161116c565b6000611f3561216c565b601254611f429190615af7565b905060015b601854811161208f5760008181526017602052604090206002015460ff161561207d57600081815260176020526040812060010154611f869084615ad8565b30600090815260096020526040902054909150611fa490829061595a565b30600090815260096020526040902055601254611fc290829061595a565b6012556000828152601760209081526040808320546001600160a01b031683526009909152902054611ff59082906158f0565b600083815260176020818152604080842080546001600160a01b031685526009835290842094909455918590529052600301546120339082906158f0565b6000838152601760209081526040918290206003810193909355915490518381526001600160a01b03909116913091600080516020615d2c833981519152910160405180910390a3505b8061208781615908565b915050611f47565b5060125415611af8576012546022546120a891906158f0565b602255600060125550565b6002546001600160a01b0316336001600160a01b0316146120e65760405162461bcd60e51b815260040161116c90615c54565b6001600160a01b038116600090815260356020526040902054156121075750565b426001600160a01b03821660009081526035602052604090205560325461212f9060016158f0565b60325550565b336000818152600a602090815260408083206001600160a01b03871684529091528120549091611911918590611d9e9086906158f0565b60008060015b60185481116121e857600081815260176020526040902060020154610100900460ff1680156121b2575060008181526017602052604090206002015460ff165b156121d6576000818152601760205260409020600101546121d390836158f0565b91505b806121e081615908565b915050612172565b50919050565b6121f73361066a565b806122065750612206336107de565b6122225760405162461bcd60e51b815260040161116c90615923565b602c5481111561226c5760405162461bcd60e51b81526020600482015260156024820152744e6f7420656e6f75676820746f206c69717569667960581b604482015260640161116c565b6000612279600283615af7565b90506000612287828461595a565b90504761229383614acf565b15611af45760006122a4824761595a565b9050801561232657306000908152600960205260409020546122c790869061595a565b30600090815260096020526040902055602c546122e590869061595a565b602c556122f2838261510a565b6040518581527f7efafb3bb52354a1b7d0353fbb402e0d2e083329d3f7493320186476a7ddc01e9060200160405180910390a15b5050505050565b6123363361066a565b806123455750612345336107de565b6123615760405162461bcd60e51b815260040161116c90615923565b6001600160a01b0381166000818152600b6020908152604091829020805460ff1916600117905590519182527f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b6291016111fd565b6060600060185467ffffffffffffffff8111156123d4576123d4615971565b6040519080825280602002602001820160405280156123fd578160200160208202803683370190505b50905060015b60185481116121e8576000818152601760205260409020546001600160a01b03168261243060018461595a565b8151811061244057612440615987565b6001600160a01b03909216602092830291909101909101528061246281615908565b915050612403565b6124733361066a565b806124825750612482336107de565b61249e5760405162461bcd60e51b815260040161116c90615923565b6124a6614a87565b6124c25760405162461bcd60e51b815260040161116c90615a91565b6301e13380600f546124d491906158f0565b4210156124dd57565b6000805b60648210801561251857506124f98162278d00615ad8565b6301e13380600f5461250b91906158f0565b61251591906158f0565b42115b1561253c57612528600a836158f0565b91508061253481615908565b9150506124e1565b6001811015612549575050565b60006064600a61255a600982615bfd565b61256890630bebc200615ad8565b6125729190615ad8565b61257c9190615af7565b9050600061258a8284615ad8565b6125966009600a615bfd565b6125a490630bebc200615ad8565b6125ae919061595a565b6010546125bb919061595a565b905060015b600e548111612326576000818152600d60205260408120600101546064906125e89085615ad8565b6125f29190615af7565b3060009081526009602052604090205490915061261090829061595a565b3060009081526009602052604090205560105461262e90829061595a565b6010556000828152600d60209081526040808320546001600160a01b0316835260099091529020546126619082906158f0565b6000838152600d6020818152604080842080546001600160a01b039081168652600984528286209690965593879052918152915490518481529216913091600080516020615d2c833981519152910160405180910390a350806126c381615908565b9150506125c0565b6126d43361066a565b806126e357506126e3336107de565b6126ff5760405162461bcd60e51b815260040161116c90615923565b60085461270d9060016158f0565b6008818155600091825260076020526040918290208390555490517fbdf90ff695f9a3fa36f3d047c52d66e87f77a36e951a6895dda36c9275bf2de8916111fd918490918252602082015260400190565b60006127693361066a565b806127785750612778336107de565b6127945760405162461bcd60e51b815260040161116c90615923565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156127d257600080fd5b505afa1580156127e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280a919061599d565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561285257600080fd5b505afa158015612866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288a919061599d565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156128d057600080fd5b505afa1580156128e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612908919061599d565b91506001600160a01b038216612a8c57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561295157600080fd5b505afa158015612965573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612989919061599d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156129d157600080fd5b505afa1580156129e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a09919061599d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015612a5157600080fd5b505af1158015612a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a89919061599d565b91505b600680546001600160a01b038085166001600160a01b0319928316178355600580548583169316831781556000928352600b602052604092839020805460ff1916600117905554925491517f868d477d1f2aa07449951b6ecd423921fda432f90f37c85b0db8216a0ed41bac93612b1d939083169216906001600160a01b0392831681529116602082015260400190565b60405180910390a150919050565b612b343361066a565b80612b435750612b43336107de565b612b5f5760405162461bcd60e51b815260040161116c90615923565b60328a11158015612b71575060328911155b612bbd5760405162461bcd60e51b815260206004820152601960248201527f4d61726b6574696e672054617820457863656564732043617000000000000000604482015260640161116c565b60328811158015612bcf575060328711155b612c1b5760405162461bcd60e51b815260206004820152601d60248201527f506172746963697061746f727920546178204578636565647320436170000000604482015260640161116c565b60328611158015612c2d575060328511155b612c725760405162461bcd60e51b81526020600482015260166024820152750566574746572205461782045786365656473204361760541b604482015260640161116c565b60148411158015612c84575060148311155b612cd05760405162461bcd60e51b815260206004820152601960248201527f4c69717569646974792054617820457863656564732043617000000000000000604482015260640161116c565b60148211158015612ce2575060148111155b612d2e5760405162461bcd60e51b815260206004820152601760248201527f526f79616c747920546178204578636565647320436170000000000000000000604482015260640161116c565b600a8210158015612d405750600a8110155b612d8c5760405162461bcd60e51b815260206004820152601960248201527f526f79616c7479205461782042656c6f77204d696e696d756d00000000000000604482015260640161116c565b601d8a9055601e8990556020888155602188905560238790556024869055602a859055602b849055602d839055602e829055604080518c81529182018a9052810187905260608101859052608081018390527fbfe33b8e53a77d1d28e7ea5b41ffe1ab8754166269e2d8d916e320d964f826cd9060a00160405180910390a1601e54602154602454602b54602e546040805195865260208601949094528484019290925260608401526080830152517fe73951c8d7b4075ead457d46dfd65df11de13e2590ef311eb292d6b85f240e1d9181900360a00190a150505050505050505050565b612e7a3361066a565b80612e895750612e89336107de565b612ea55760405162461bcd60e51b815260040161116c90615923565b602655565b6001600160a01b0381166000908152603560205260408120546001811015612ed55750600092915050565b600060015b6033548111612f2a57600081815260346020526040902054831015612f1857600081815260346020526040902060010154612f1590836158f0565b91505b80612f2281615908565b915050612eda565b509392505050565b60606000600e5467ffffffffffffffff811115612f5157612f51615971565b604051908082528060200260200182016040528015612f9657816020015b6040805180820190915260008082526020820152815260200190600190039081612f6f5790505b50905060015b600e5481116121e8576000818152600d6020908152604091829020825180840190935280546001600160a01b03168352600190810154918301919091528390612fe5908461595a565b81518110612ff557612ff5615987565b6020026020010181905250808061300b90615908565b915050612f9c565b61301c3361066a565b8061302b575061302b336107de565b6130475760405162461bcd60e51b815260040161116c90615923565b6202a300600f5461305891906158f0565b42106130a65760405162461bcd60e51b815260206004820152601c60248201527f5061737420416c6c6f77656420486967682054617820506572696f6400000000604482015260640161116c565b61029e81106131035760405162461bcd60e51b8152602060048201526024808201527f43616e277420657863656564206d6178696d756d2073656c6c20746178206f666044820152632038302560e01b606482015260840161116c565b60248190556040518181527f066a0f28b85b6d0200c28735f0e8408f403b994df515a38964ccc120270b1dc8906020016111fd565b6060600060285467ffffffffffffffff81111561315757613157615971565b604051908082528060200260200182016040528015613180578160200160208202803683370190505b50905060015b60285481116121e8576000818152602960205260409020546001600160a01b0316826131b360018461595a565b815181106131c3576131c3615987565b6001600160a01b0390921660209283029190910190910152806131e581615908565b915050613186565b6001546001600160a01b0316336001600160a01b03161461320d57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b61327a336106a3565b8061328957506132893361066a565b806132985750613298336107de565b6132de5760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba1030b71030b236b4b71760491b604482015260640161116c565b6132e73361066a565b156132f557611af8816151ed565b6132fe8161066a565b1561335f5760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f742072656d6f76652074686520617263686974656374732066726f60448201526a36903a3432903634b9ba1760a91b606482015260840161116c565b611af8816151ed565b6000602e54602b54602454602154601e5461338391906158f0565b61338d91906158f0565b61339791906158f0565b611c0e91906158f0565b60006133ac3361066a565b806133bb57506133bb336107de565b6133d75760405162461bcd60e51b815260040161116c90615923565b6001600160a01b03831630141561343c5760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b606482015260840161116c565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b15801561347e57600080fd5b505afa158015613492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b69190615c8b565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561350457600080fd5b505af1158015613518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353c9190615ca4565b9150811561113157604080516001600160a01b038087168252851660208201529081018290527f73ec400914545adf2dc33884905ae36f941eeed9cbd942e1a8bb85627b4ec0e79060600160405180910390a15092915050565b6002546001600160a01b0316336001600160a01b0316146135c95760405162461bcd60e51b815260040161116c90615c54565b6135d4838383614ca3565b816001600160a01b0316836001600160a01b03167f944676cc66b56faa2e31ce8f94f620789dda8488308d59491fabc492867d4cec8360405161361991815260200190565b60405180910390a3505050565b61362f3361066a565b8061363e575061363e336107de565b61365a5760405162461bcd60e51b815260040161116c90615923565b600060305411801561366e57506000602f54115b6136b25760405162461bcd60e51b81526020600482015260156024820152744e6f7468696e6720746f204469737472696275746560581b604482015260640161116c565b6000603254116136fd5760405162461bcd60e51b81526020600482015260166024820152754e6f6f6e6520746f204469737472696275746520746f60501b604482015260640161116c565b600060325460305461370f9190615af7565b90506032548161371f9190615ad8565b60305461372c919061595a565b60305560335461373d9060016158f0565b6033556040805180820190915280428152602090810183905260335460009081526034825260409020825181559101516001909101557fbd3514f9ade0d658423a988a8a8faf7019f095cf5f801302597317de4bd6732081426111ec565b60006137a63361066a565b806137b557506137b5336107de565b6137d15760405162461bcd60e51b815260040161116c90615923565b506006546001600160a01b031690565b6137ea3361066a565b806137f957506137f9336107de565b6138155760405162461bcd60e51b815260040161116c90615923565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6138403361066a565b8061384f575061384f336107de565b61386b5760405162461bcd60e51b815260040161116c90615923565b6000601154116138d05760405162461bcd60e51b815260206004820152602a60248201527f537461626c6520546f6b656e20446973747269627574696f6e20416c726561646044820152691e4812185c1c195b995960b21b606482015260840161116c565b6015546138de9060016158f0565b6138eb906276a700615ad8565b600f546138f891906158f0565b42101561390157565b60155461390f9060016158f0565b601581905560145460009160649161392691615ad8565b6139326009600a615bfd565b61394090630bebc200615ad8565b61394a9190615ad8565b6139549190615af7565b9050600061396061440b565b61396a9083615af7565b905060015b6018548111613ab957600081815260176020526040902060020154610100900460ff1615613aa7576000818152601760205260408120600101546139b39084615ad8565b6000838152601760209081526040808320546001600160a01b0316835260099091529020549091506139e69082906158f0565b6000838152601760209081526040808320546001600160a01b031683526009909152808220929092553081522054613a1f90829061595a565b30600090815260096020526040902055601154613a3d90829061595a565b601155600082815260176020526040902060030154613a5d9082906158f0565b6000838152601760209081526040918290206003810193909355915490518381526001600160a01b03909116913091600080516020615d2c833981519152910160405180910390a3505b80613ab181615908565b91505061396f565b506003601554118015613ace57506000601154115b156115b757601154602254613ae391906158f0565b60225560006011555050565b6000602d54602a54602354602054601d5461338391906158f0565b613b133361066a565b80613b225750613b22336107de565b613b3e5760405162461bcd60e51b815260040161116c90615923565b6001600160a01b038216600090815260196020526040902054613b9657601a54613b699060016158f0565b601a8190556000908152601b6020526040902080546001600160a01b0319166001600160a01b0384161790555b8015613bba57506001600160a01b0316600090815260196020526040902060029055565b506001600160a01b0316600090815260196020526040902060019055565b336000908152600a602090815260408083206001600160a01b0386168452909152812054821115613c1b5760405162461bcd60e51b815260040161116c90615c0c565b336000818152600a602090815260408083206001600160a01b038816845290915290205461191191908590611d9e90869061595a565b6000611911338484614ca3565b613c673361066a565b80613c765750613c76336107de565b613c925760405162461bcd60e51b815260040161116c90615923565b602554811115613cd95760405162461bcd60e51b815260206004820152601260248201527104e6f7420656e6f75676820746f20737761760741b604482015260640161116c565b60265460255411613d3b5760405162461bcd60e51b815260206004820152602660248201527f43616e27742072656475636520706f6f6c2062656c6f77207265736572766520604482015265185b5bdd5b9d60d21b606482015260840161116c565b602654602554829190613d4f90839061595a565b1015613d6857602654602554613d65919061595a565b90505b47613d7282614acf565b506000613d7f824761595a565b905080613d8c5750505050565b30600090815260096020526040902054613da790849061595a565b30600090815260096020526040902055602554613dc590849061595a565b602555600454613dde906001600160a01b031682614c6d565b6040518381527f6cd9391c9f6aeefa7061c38b472fe9b6c2c8c547eaa0e0b8a30024273f84f1e79060200160405180910390a150505050565b613e203361066a565b80613e2f5750613e2f336107de565b613e4b5760405162461bcd60e51b815260040161116c90615923565b6001600160a01b0381166000908152600c602052604090205460ff16613ea65760405162461bcd60e51b815260206004820152601060248201526f139bdd08185b88105c98da1a5d1958dd60821b604482015260640161116c565b6001600160a01b0381166000908152600c60205260409020805460ff19169055613ecf816151ed565b60015b600e5481116115b7576000818152600d60205260409020546001600160a01b0383811691161415613f4e57600e80546000908152600d60205260408082208483529120815481546001600160a01b0319166001600160a01b03909116178155600191820154908201559054613f47919061595a565b600e555050565b80613f5881615908565b915050613ed2565b60606000613f6d60085490565b90506000613f7c8260016158f0565b67ffffffffffffffff811115613f9457613f94615971565b604051908082528060200260200182016040528015613fbd578160200160208202803683370190505b50905060005b828111611131576000818152600760205260409020548251839083908110613fed57613fed615987565b60209081029190910101528061400281615908565b915050613fc3565b6002546001600160a01b0316336001600160a01b03161461403d5760405162461bcd60e51b815260040161116c90615c54565b6022548111156140865760405162461bcd60e51b8152602060048201526014602482015273139bdd08195b9bdd59da081d1bc81c995dd85c9960621b604482015260640161116c565b306000908152600960205260409020546140a190829061595a565b306000908152600960205260409020556022546140bf90829061595a565b6022556001600160a01b0382166000908152600960205260409020546140e69082906158f0565b6001600160a01b038316600081815260096020526040908190209290925590513090600080516020615d2c833981519152906141259085815260200190565b60405180910390a3816001600160a01b03167f15b794e3052b5da22ebfa5569d3b6d97c8e7d5cb97330d41f70cde6ddff8b0278260405161416891815260200190565b60405180910390a25050565b61417d3361066a565b8061418c575061418c336107de565b6141a85760405162461bcd60e51b815260040161116c90615923565b601c805460ff191682151590811790915560405160ff909116151581527faee4360312c9b530a8bd724c910f6a885c0b17181c349f3e341f5632a28ac69e906020016111fd565b6141f83361066a565b806142075750614207336107de565b6142235760405162461bcd60e51b815260040161116c90615923565b600480546001600160a01b0319166001600160a01b0383169081179091556000818152600b6020908152604091829020805460ff1916600117905590519182527fd7d04accdcaeb712b37ef16145ef8c65efe99a233c740beb38e892756701d44091016111fd565b6142943361066a565b806142a357506142a3336107de565b6142bf5760405162461bcd60e51b815260040161116c90615923565b60085482111561430a5760405162461bcd60e51b8152602060048201526016602482015275139bdd08184815985b1a5908151a595c8813195d995b60521b604482015260640161116c565b60008281526007602090815260409182902083905581518481529081018390527fbdf90ff695f9a3fa36f3d047c52d66e87f77a36e951a6895dda36c9275bf2de8910160405180910390a15050565b6143623361066a565b806143715750614371336107de565b61438d5760405162461bcd60e51b815260040161116c90615923565b600380546001600160a01b039092166001600160a01b0319909216821790556000908152600b60205260409020805460ff19166001179055565b60008060008060006143ee306001600160a01b031660009081526009602052604090205490565b601054601154601254601354945094509450945094509091929394565b60008060015b60185481116121e857600081815260176020526040902060020154610100900460ff16156144585760008181526017602052604090206001015461445590836158f0565b91505b8061446281615908565b915050614411565b60606000601a5467ffffffffffffffff81111561448957614489615971565b6040519080825280602002602001820160405280156144b2578160200160208202803683370190505b50905060015b601a5481116121e8576000818152601b60205260409020546001600160a01b0316826144e560018461595a565b815181106144f5576144f5615987565b6001600160a01b03909216602092830291909101909101528061451781615908565b9150506144b8565b6145283361066a565b806145375750614537336107de565b6145535760405162461bcd60e51b815260040161116c90615923565b6001600160a01b0381166000818152600b6020908152604091829020805460ff1916905590519182527f4f6a6b6efe34ec6478021aa9fb7f6980e78ea3a10c74074a8ce49d5d3ebf1f7e91016111fd565b6145ad336107de565b6145f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161116c565b6001600160a01b03811661465e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161116c565b6000546001600160a01b03828116911614156146cc5760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320616c7265616479207468604482015266329037bbb732b960c91b606482015260840161116c565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b0316336001600160a01b0316146147215760405162461bcd60e51b815260040161116c90615c54565b60255481111561476a5760405162461bcd60e51b8152602060048201526014602482015273139bdd08195b9bdd59da081d1bc81c995dd85c9960621b604482015260640161116c565b3060009081526009602052604090205461478590829061595a565b306000908152600960205260409020556025546147a390829061595a565b6025556001600160a01b0382166000908152600960205260409020546147ca9082906158f0565b6001600160a01b038316600081815260096020526040908190209290925590513090600080516020615d2c833981519152906148099085815260200190565b60405180910390a3816001600160a01b03167f3f49f3a6e0f8e89dba7ceeafcc1affeee4276f37d8339f8fa26f6acbabe9b8da8260405161416891815260200190565b600061485760085490565b82111561489f5760405162461bcd60e51b8152602060048201526016602482015275139bdd08184815985b1a5908151a595c8813195d995b60521b604482015260640161116c565b5060009081526007602052604090205490565b6148bb3361066a565b806148ca57506148ca336107de565b6148e65760405162461bcd60e51b815260040161116c90615923565b81846148f0575060005b6001600160a01b0395909516600090815260166020908152604080832080548452601790925280832060010196909655805482528582206002908101805460ff19169615159690961790955580548252858220909401805461ff00191661010097151597909702969096179095559154845250912060030155565b6001600160a01b0383166149cd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161116c565b6001600160a01b038216614a2e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161116c565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101613619565b60008060015b600e548111614ac6576000818152600d6020526040902060010154614ab290836158f0565b915080614abe81615908565b915050614a8d565b50606414919050565b604080516002808252606082018352600092839291906020830190803683370190505090503081600081518110614b0857614b08615987565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015614b5c57600080fd5b505afa158015614b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b94919061599d565b81600181518110614ba757614ba7615987565b6001600160a01b03928316602091820292909201810191909152600554306000908152600a8352604080822092909416815291522054831115614bfe57600554614bfe9030906001600160a01b031660001961496b565b6005546001600160a01b031663791ac9478460008430426040518663ffffffff1660e01b8152600401614c35959493929190615cc1565b600060405180830381600087803b158015614c4f57600080fd5b505af1925050508015614c60575060015b6119115750600092915050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611880573d6000803e3d6000fd5b6001600160a01b038316614d075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161116c565b6001600160a01b038216614d695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161116c565b60008111614dcb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161116c565b6001600160a01b038316600090815260096020526040902054811115614e3f5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657220616d6f756e7420776f756c64206578636565642062616c604482015263616e636560e01b606482015260840161116c565b6001600160a01b038316600090815260096020526040902054614e6390829061595a565b6001600160a01b038416600090815260096020526040812091909155601c54829190819060ff168015614eaf57506001600160a01b0386166000908152600b602052604090205460ff16155b8015614ec957506003546001600160a01b03878116911614155b15614ef057614ed7836152b0565b614ee1908461595a565b9150614eed828461595a565b92505b601c5460ff168015614f1b57506001600160a01b0385166000908152600b602052604090205460ff16155b8015614f3557506003546001600160a01b03878116911614155b15614f5c57614f43836153f1565b614f4d908461595a565b9050614f59818461595a565b92505b8284111561500257614f6e838561595a565b30600090815260096020526040902054614f8891906158f0565b306000908152600960205260409020558015614fcd5760405181815230906001600160a01b03871690600080516020615d2c8339815191529060200160405180910390a35b81156150025760405182815230906001600160a01b03881690600080516020615d2c8339815191529060200160405180910390a35b6001600160a01b0385166000908152600960205260409020546150269084906158f0565b6001600160a01b038087166000818152600960205260409081902093909355915190881690600080516020615d2c833981519152906150689087815260200190565b60405180910390a360115415615102576001600160a01b03861660009081526016602052604090205415615102576001600160a01b0386166000818152601660209081526040808320548352601782528083206003015493835260099091529020541015615102576001600160a01b038616600090815260166020908152604080832054835260179091529020600201805461ff00191690555b505050505050565b6005546151229030906001600160a01b03168461496b565b6005546001600160a01b031663f305d71982308560008061514b6000546001600160a01b031690565b4260405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b1580156151b457600080fd5b505af11580156151c8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123269190615cfd565b6001600160a01b03811660009081526027602052604090205461520d5750565b6001600160a01b03811660009081526027602052604081205560015b60285481116115b7576000818152602960205260409020546001600160a01b038381169116141561529e576028805460009081526029602052604080822054848352912080546001600160a01b0319166001600160a01b03909216919091179055546152979060019061595a565b6028555050565b806152a881615908565b915050615229565b60008082905060006103e8601e54856152c99190615ad8565b6152d39190615af7565b905080601f546152e391906158f0565b601f556152f0818361595a565b91506103e8602154856153039190615ad8565b61530d9190615af7565b90508060225461531d91906158f0565b60225561532a818361595a565b91506103e86024548561533d9190615ad8565b6153479190615af7565b90508060255461535791906158f0565b602555615364818361595a565b91506103e8602b54856153779190615ad8565b6153819190615af7565b905080602c5461539191906158f0565b602c5561539e818361595a565b91506103e8602e54856153b19190615ad8565b6153bb9190615af7565b905080602f546153cb91906158f0565b602f556030546153dc9082906158f0565b6030556153e9818361595a565b949350505050565b60008082905060006103e8601d548561540a9190615ad8565b6154149190615af7565b905080601f5461542491906158f0565b601f55615431818361595a565b91506103e8602054856154449190615ad8565b61544e9190615af7565b90508060225461545e91906158f0565b60225561546b818361595a565b91506103e86023548561547e9190615ad8565b6154889190615af7565b90508060255461549891906158f0565b6025556154a5818361595a565b91506103e8602a54856154b89190615ad8565b6154c29190615af7565b905080602c546154d291906158f0565b602c556154df818361595a565b91506103e8602d54856153b19190615ad8565b6001600160a01b0381168114611af857600080fd5b60006020828403121561551957600080fd5b8135615524816154f2565b9392505050565b60006020828403121561553d57600080fd5b5035919050565b6000806040838503121561555757600080fd5b8235615562816154f2565b946020939093013593505050565b600060208083528351808285015260005b8181101561559d57858101830151858201604001528201615581565b818111156155af576000604083870101525b50601f01601f1916929092016040019392505050565b8015158114611af857600080fd5b600080604083850312156155e657600080fd5b82356155f1816154f2565b91506020830135615601816155c5565b809150509250929050565b60008060006060848603121561562157600080fd5b833561562c816154f2565b9250602084013561563c816154f2565b929592945050506040919091013590565b6000806000806080858703121561566357600080fd5b843561566e816154f2565b9350602085013592506040850135615685816155c5565b91506060850135615695816155c5565b939692955090935050565b600081518084526020808501945080840160005b838110156156d95781516001600160a01b0316875295820195908201906001016156b4565b509495945050505050565b60208152600061552460208301846156a0565b6000806000806000806000806000806101408b8d03121561571757600080fd5b505088359a60208a01359a5060408a013599606081013599506080810135985060a0810135975060c0810135965060e081013595506101008101359450610120013592509050565b602080825282518282018190526000919060409081850190868401855b828110156157aa57815180516001600160a01b0316855286015186850152928401929085019060010161577c565b5091979650505050505050565b600080604083850312156157ca57600080fd5b82356157d5816154f2565b91506020830135615601816154f2565b6020808252825182820181905260009190848201906040850190845b8181101561581d57835183529284019291840191600101615801565b50909695505050505050565b60006020828403121561583b57600080fd5b8135615524816155c5565b6000806040838503121561585957600080fd5b50508035926020909101359150565b600080600080600060a0868803121561588057600080fd5b853561588b816154f2565b94506020860135935060408601356158a2816155c5565b925060608601356158b2816155c5565b949793965091946080013592915050565b634e487b7160e01b600052601160045260246000fd5b6000816158e8576158e86158c3565b506000190190565b60008219821115615903576159036158c3565b500190565b600060001982141561591c5761591c6158c3565b5060010190565b6020808252601b908201527f43616c6c6572206973206e6f7420616e206172636869746563742e0000000000604082015260600190565b60008282101561596c5761596c6158c3565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156159af57600080fd5b8151615524816154f2565b8281526040602082015260006153e960408301846156a0565b600060208083850312156159e657600080fd5b825167ffffffffffffffff808211156159fe57600080fd5b818501915085601f830112615a1257600080fd5b815181811115615a2457615a24615971565b8060051b604051601f19603f83011681018181108582111715615a4957615a49615971565b604052918252848201925083810185019188831115615a6757600080fd5b938501935b82851015615a8557845184529385019392850192615a6c565b98975050505050505050565b60208082526027908201527f466f756e6465722070657263656e746167657320617265206e6f742073657420604082015266746f203130302560c81b606082015260800190565b6000816000190483118215151615615af257615af26158c3565b500290565b600082615b1457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115615b54578160001904821115615b3a57615b3a6158c3565b80851615615b4757918102915b93841c9390800290615b1e565b509250929050565b600082615b6b57506001611915565b81615b7857506000611915565b8160018114615b8e5760028114615b9857615bb4565b6001915050611915565b60ff841115615ba957615ba96158c3565b50506001821b611915565b5060208310610133831016604e8410600b8410161715615bd7575081810a611915565b615be18383615b19565b8060001904821115615bf557615bf56158c3565b029392505050565b600061552460ff841683615b5c565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252601f908201527f63616c6c6572206973206e6f74207468652072616e6b20636f6e747261637400604082015260600190565b600060208284031215615c9d57600080fd5b5051919050565b600060208284031215615cb657600080fd5b8151615524816155c5565b85815284602082015260a060408201526000615ce060a08301866156a0565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215615d1257600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cc7fa0643ad1482e74a0dae730c09fe40b6c435b3fb6ed31161c6fdde81c5d7264736f6c63430008090033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef


Deployed Bytecode

0x6080604052600436106104825760003560e01c8063727b42c811610255578063a91109c011610144578063d6dac9b6116100c1578063ea2f0b3711610085578063ea2f0b3714610efa578063edfdd40b14610f1a578063f2fde38b14610fd4578063f75772fc14610ff4578063f9a635b314611014578063fcc6334f1461103457600080fd5b8063d6dac9b614610e3c578063dd62ed3e14610e51578063e57b5ffb14610e97578063e8b8081014610ed0578063e8eaf89014610ee557600080fd5b8063b756255211610108578063b756255214610d8a578063bb54a84514610daa578063bdb9f28d14610dca578063c866776b14610dea578063cde2a69e14610e2757600080fd5b8063a91109c014610ce8578063aa6529ed14610d08578063aa9de27714610d28578063b1da528c14610d4a578063b3124b4514610d6a57600080fd5b80638d5f81e2116101d25780639911ec75116101965780639911ec7514610c3a578063a4230bd514610c4f578063a457c2d714610c6f578063a5ffa30f14610c8f578063a9059cbb14610cc857600080fd5b80638d5f81e214610ba35780638da5cb5b14610bb85780639080f9ec14610bd657806391469a6e14610bf657806395d89b4114610c0b57600080fd5b80638120904b116102195780638120904b14610b01578063820bd6a914610b165780638366e79a14610b4e57806386762e4114610b6e578063871f832514610b8e57600080fd5b8063727b42c814610a7557806374ac325914610a9757806374f059ba14610ab757806379ba509714610acc5780637a49b92a14610ae157600080fd5b80632e8263e911610371578063459a44d8116102ee5780635881f3ef116102b25780635881f3ef146109a75780635b491ba5146109df57806366b500f5146109ff5780636df2e0b514610a1f57806370a0823114610a3f57600080fd5b8063459a44d81461090457806346d6f78a146109265780634b5e86ff1461093b5780635342acb41461095b578063557ed1ba1461099457600080fd5b80633bbefdbc116103355780633bbefdbc1461084e5780633dcb2f021461086357806340a4f8bf146108af578063437823ec146108cf5780634450e9d6146108ef57600080fd5b80632e8263e9146107ae5780632f54bf6e146107c3578063313ce567146107f2578063328499281461080e578063395093511461082e57600080fd5b8063095ea7b3116103ff57806318160ddd116103c357806318160ddd146107015780632360b1701461071657806323b872dd1461073657806324d7806c146107565780632b69b42b1461078e57600080fd5b8063095ea7b31461061f5780630c8459e91461064f578063141c1a9c14610688578063163bc261146106c15780631785f53c146106e157600080fd5b806306c623751161044657806306c623751461052d57806306fdde031461054d5780630718db421461058b57806308c18d0f146105ab57806309364e551461060a57600080fd5b8063017826e81461048e57806304b51fa5146104c157806305b3744c146104d6578063069b7820146104f857806306b7bb591461050d57600080fd5b3661048957005b600080fd5b34801561049a57600080fd5b506104ae6104a9366004615507565b611054565b6040519081526020015b60405180910390f35b3480156104cd57600080fd5b506104ae6110bb565b3480156104e257600080fd5b506104f66104f136600461552b565b611138565b005b34801561050457600080fd5b506104f6611208565b34801561051957600080fd5b506104f6610528366004615544565b6113e4565b34801561053957600080fd5b506104ae61054836600461552b565b6115bb565b34801561055957600080fd5b5060408051808201909152600c81526b2b32ba3a32b9102a37b5b2b760a11b60208201525b6040516104b89190615570565b34801561059757600080fd5b506104f66105a6366004615544565b611751565b3480156105b757600080fd5b506105cb6105c6366004615507565b611885565b6040805197885260208801969096529315159486019490945290151560608501521515608084015290151560a0830152151560c082015260e0016104b8565b34801561061657600080fd5b506008546104ae565b34801561062b57600080fd5b5061063f61063a366004615544565b611904565b60405190151581526020016104b8565b34801561065b57600080fd5b5061063f61066a366004615507565b6001600160a01b03166000908152600c602052604090205460ff1690565b34801561069457600080fd5b5061063f6106a3366004615507565b6001600160a01b031660009081526019602052604090205460011090565b3480156106cd57600080fd5b506104f66106dc36600461552b565b61191b565b3480156106ed57600080fd5b506104f66106fc366004615507565b611afb565b34801561070d57600080fd5b506104ae611bf2565b34801561072257600080fd5b506104f66107313660046155d3565b611c13565b34801561074257600080fd5b5061063f61075136600461560c565b611d1a565b34801561076257600080fd5b5061063f610771366004615507565b6001600160a01b0316600090815260196020526040902054151590565b34801561079a57600080fd5b506104f66107a936600461564d565b611dad565b3480156107ba57600080fd5b506104f6611ea5565b3480156107cf57600080fd5b5061063f6107de366004615507565b6000546001600160a01b0390811691161490565b3480156107fe57600080fd5b50604051600981526020016104b8565b34801561081a57600080fd5b506104f6610829366004615507565b6120b3565b34801561083a57600080fd5b5061063f610849366004615544565b612135565b34801561085a57600080fd5b506104ae61216c565b34801561086f57600080fd5b50601f54602254602554602c54602f54603054604080519687526020870195909552938501929092526060840152608083015260a082015260c0016104b8565b3480156108bb57600080fd5b506104f66108ca36600461552b565b6121ee565b3480156108db57600080fd5b506104f66108ea366004615507565b61232d565b3480156108fb57600080fd5b50600e546104ae565b34801561091057600080fd5b506109196123b5565b6040516104b891906156e4565b34801561093257600080fd5b506104f661246a565b34801561094757600080fd5b506104f661095636600461552b565b6126cb565b34801561096757600080fd5b5061063f610976366004615507565b6001600160a01b03166000908152600b602052604090205460ff1690565b3480156109a057600080fd5b50426104ae565b3480156109b357600080fd5b506109c76109c2366004615507565b61275e565b6040516001600160a01b0390911681526020016104b8565b3480156109eb57600080fd5b506104f66109fa3660046156f7565b612b2b565b348015610a0b57600080fd5b506104f6610a1a36600461552b565b612e71565b348015610a2b57600080fd5b506104ae610a3a366004615507565b612eaa565b348015610a4b57600080fd5b506104ae610a5a366004615507565b6001600160a01b031660009081526009602052604090205490565b348015610a8157600080fd5b50610a8a612f32565b6040516104b8919061575f565b348015610aa357600080fd5b506104f6610ab236600461552b565b613013565b348015610ac357600080fd5b50610919613138565b348015610ad857600080fd5b506104f66131ed565b348015610aed57600080fd5b506104f6610afc366004615507565b613271565b348015610b0d57600080fd5b506104ae613368565b348015610b2257600080fd5b5061063f610b31366004615507565b6001600160a01b0316600090815260276020526040902054151590565b348015610b5a57600080fd5b5061063f610b693660046157b7565b6133a1565b348015610b7a57600080fd5b506104f6610b8936600461560c565b613596565b348015610b9a57600080fd5b506104f6613626565b348015610baf57600080fd5b506109c761379b565b348015610bc457600080fd5b506000546001600160a01b03166109c7565b348015610be257600080fd5b506104f6610bf1366004615507565b6137e1565b348015610c0257600080fd5b506104f6613837565b348015610c1757600080fd5b506040805180820190915260068152652b22aa2a22a960d11b602082015261057e565b348015610c4657600080fd5b506104ae613aef565b348015610c5b57600080fd5b506104f6610c6a3660046155d3565b613b0a565b348015610c7b57600080fd5b5061063f610c8a366004615544565b613bd8565b348015610c9b57600080fd5b5061063f610caa366004615507565b6001600160a01b031660009081526027602052604090205460021490565b348015610cd457600080fd5b5061063f610ce3366004615544565b613c51565b348015610cf457600080fd5b506104f6610d0336600461552b565b613c5e565b348015610d1457600080fd5b506104f6610d23366004615507565b613e17565b348015610d3457600080fd5b50610d3d613f60565b6040516104b891906157e5565b348015610d5657600080fd5b506104f6610d65366004615544565b61400a565b348015610d7657600080fd5b506104f6610d85366004615829565b614174565b348015610d9657600080fd5b506104f6610da5366004615507565b6141ef565b348015610db657600080fd5b506104f6610dc5366004615846565b61428b565b348015610dd657600080fd5b506104f6610de5366004615507565b614359565b348015610df657600080fd5b50610dff6143c7565b604080519586526020860194909452928401919091526060830152608082015260a0016104b8565b348015610e3357600080fd5b506028546104ae565b348015610e4857600080fd5b506104ae61440b565b348015610e5d57600080fd5b506104ae610e6c3660046157b7565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b348015610ea357600080fd5b5061063f610eb2366004615507565b6001600160a01b031660009081526027602052604090205460011490565b348015610edc57600080fd5b50601a546104ae565b348015610ef157600080fd5b5061091961446a565b348015610f0657600080fd5b506104f6610f15366004615507565b61451f565b348015610f2657600080fd5b50610fae610f35366004615507565b6001600160a01b0390811660009081526016602090815260408083205483526017825291829020825160a081018452815490941684526001810154918401829052600281015460ff8082161515948601859052610100909104161515606085018190526003909101546080909401849052909391929091565b6040805194855292151560208501529015159183019190915260608201526080016104b8565b348015610fe057600080fd5b506104f6610fef366004615507565b6145a4565b34801561100057600080fd5b506104f661100f366004615544565b6146ee565b34801561102057600080fd5b506104ae61102f36600461552b565b61484c565b34801561104057600080fd5b506104f661104f366004615868565b6148b2565b6001600160a01b03811660009081526009602052604081205480156110b257600061107e60085490565b90505b80156110b0576110908161484c565b82111561109e579392505050565b806110a8816158d9565b915050611081565b505b50600092915050565b3360009081526035602052604081205460018110156110dc57600091505090565b600060015b60335481116111315760008181526034602052604090205483101561111f5760008181526034602052604090206001015461111c90836158f0565b91505b8061112981615908565b9150506110e1565b5092915050565b6111413361066a565b806111505750611150336107de565b6111755760405162461bcd60e51b815260040161116c90615923565b60405180910390fd5b6008548111156111bc5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a5908151a595c8813195d995b60721b604482015260640161116c565b60318190557f07f2a6588b8c0ae2c36a254496d314568ae6bddca166f6028c276b3297f726af816111ec8161484c565b604080519283526020830191909152015b60405180910390a150565b3360009081526035602052604090205461125b5760405162461bcd60e51b81526020600482015260146024820152732737ba1030902937bcb0b63a3c902437b63232b960611b604482015260640161116c565b60315461126733611054565b116112c05760405162461bcd60e51b815260206004820152602360248201527f4d757374204d656574205469657220526571756972656d656e7420546f20436c60448201526261696d60e81b606482015260840161116c565b60006112ca6110bb565b9050600081116113125760405162461bcd60e51b81526020600482015260136024820152724e6f20526f79616c747920546f20436c61696d60681b604482015260640161116c565b3060009081526009602052604090205461132d90829061595a565b30600090815260096020526040902055602f5461134b90829061595a565b602f55336000908152600960205260409020546113699082906158f0565b336000818152600960209081526040808320949094556035815290839020429055915183815290913091600080516020615d2c833981519152910160405180910390a360405181815233907f4dde06d146f45c5901140b17cd6e3c65b3767f374b735f91bdf1bcff9e649c7a9060200160405180910390a250565b6113ed3361066a565b806113fc57506113fc336107de565b6114185760405162461bcd60e51b815260040161116c90615923565b60648111156114635760405162461bcd60e51b81526020600482015260176024820152761098590814195c98d95b9d1859d948141c9bdd9a591959604a1b604482015260640161116c565b6001600160a01b0382166000908152600c602052604090205460ff16156114cc5760405162461bcd60e51b815260206004820152601760248201527f41726368697465637420416c7265616479204164646564000000000000000000604482015260640161116c565b6001600160a01b0382166000908152600c60205260409020805460ff19166001908117909155600e546114fe916158f0565b600e8190556040805180820182526001600160a01b0385811680835260208084018781526000968752600d8252858720945185546001600160a01b031916941693909317845591516001938401558452600b90529120805460ff191682179055611569908390611c13565b6001600160a01b0382166000908152603560205260409020541561158b575050565b426001600160a01b0383166000908152603560205260409020556032546115b39060016158f0565b6032555b5050565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106115f4576115f4615987565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561164857600080fd5b505afa15801561165c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611680919061599d565b8160018151811061169357611693615987565b6001600160a01b03928316602091820292909201015260055460405163d06ca61f60e01b8152600092919091169063d06ca61f906116d790879086906004016159ba565b60006040518083038186803b1580156116ef57600080fd5b505afa158015611703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261172b91908101906159d3565b90508060018151811061174057611740615987565b602002602001015192505050919050565b61175a3361066a565b806117695750611769336107de565b6117855760405162461bcd60e51b815260040161116c90615923565b60648111156117d05760405162461bcd60e51b81526020600482015260176024820152761098590814195c98d95b9d1859d948141c9bdd9a591959604a1b604482015260640161116c565b6001600160a01b0382166000908152600c602052604090205460ff1661182b5760405162461bcd60e51b815260206004820152601060248201526f139bdd08185b88105c98da1a5d1958dd60821b604482015260640161116c565b60015b600e548111611880576000818152600d60205260409020546001600160a01b038481169116141561186e576000908152600d602052604090206001015550565b8061187881615908565b91505061182e565b505050565b600080600080600080600061189988611054565b6001600160a01b0389166000908152600960205260409020546118bb8a61066a565b6001600160a01b039a909a16600090815260196020908152604080832054602790925290912054929b919a99506001818110995090151597506002831496509091149350915050565b600061191133848461496b565b5060015b92915050565b6119243361066a565b806119335750611933336107de565b61194f5760405162461bcd60e51b815260040161116c90615923565b601f548111156119a15760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f20636f6e7665727400000000604482015260640161116c565b6119a9614a87565b6119c55760405162461bcd60e51b815260040161116c90615a91565b476119cf82614acf565b5060006119dc824761595a565b9050806119e857505050565b30600090815260096020526040902054611a0390849061595a565b30600090815260096020526040902055601f54611a2190849061595a565b601f556040518381527fd06fc5b2519e388fed054cf3477042e8fdf94298454368d50967013106a74cd69060200160405180910390a18060015b600e548111611ad2576000818152600d6020526040812060010154606490611a839086615ad8565b611a8d9190615af7565b6000838152600d6020526040902054909150611ab2906001600160a01b031682614c6d565b611abc818461595a565b9250508080611aca90615908565b915050611a5b565b508015611af457611af4611aee6000546001600160a01b031690565b82614c6d565b5050505b50565b611b043361066a565b80611b135750611b13336107de565b611b2f5760405162461bcd60e51b815260040161116c90615923565b6001600160a01b038116600090815260196020526040902054611b4f5750565b6001600160a01b03811660009081526019602052604081205560015b601a5481116115b7576000818152601b60205260409020546001600160a01b0383811691161415611be057601a80546000908152601b602052604080822054848352912080546001600160a01b0319166001600160a01b0390921691909117905554611bd99060019061595a565b601a555050565b80611bea81615908565b915050611b6b565b6000611c006009600a615bfd565b611c0e9063ee6b2800615ad8565b905090565b611c1c336106a3565b80611c2b5750611c2b3361066a565b80611c3a5750611c3a336107de565b611c805760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba1030b71030b236b4b71760491b604482015260640161116c565b6001600160a01b038216600090815260276020526040902054611cd857602854611cab9060016158f0565b6028819055600090815260296020526040902080546001600160a01b0319166001600160a01b0384161790555b8015611cfc57506001600160a01b0316600090815260276020526040902060019055565b506001600160a01b0316600090815260276020526040902060029055565b6001600160a01b0383166000908152600a60209081526040808320338452909152812054821115611d5d5760405162461bcd60e51b815260040161116c90615c0c565b611d68848484614ca3565b6001600160a01b0384166000908152600a6020908152604080832033808552925290912054611da3918691611d9e90869061595a565b61496b565b5060019392505050565b611db63361066a565b80611dc55750611dc5336107de565b611de15760405162461bcd60e51b815260040161116c90615923565b8083611deb575060005b601854611df99060016158f0565b60188190556001600160a01b039586166000818152601660209081526040808320859055805160a081018252938452838201988952961515838801908152941515606084019081526080840183815294835260179091529590209051815497166001600160a01b03199097169690961786559351600186015551600285018054935115156101000261ff00199215159290921661ffff1990941693909317179091555051600390910155565b611eae3361066a565b80611ebd5750611ebd336107de565b611ed95760405162461bcd60e51b815260040161116c90615923565b600060125411611f2b5760405162461bcd60e51b815260206004820152601860248201527f41697244726f7020416c72656164792048617070656e65640000000000000000604482015260640161116c565b6000611f3561216c565b601254611f429190615af7565b905060015b601854811161208f5760008181526017602052604090206002015460ff161561207d57600081815260176020526040812060010154611f869084615ad8565b30600090815260096020526040902054909150611fa490829061595a565b30600090815260096020526040902055601254611fc290829061595a565b6012556000828152601760209081526040808320546001600160a01b031683526009909152902054611ff59082906158f0565b600083815260176020818152604080842080546001600160a01b031685526009835290842094909455918590529052600301546120339082906158f0565b6000838152601760209081526040918290206003810193909355915490518381526001600160a01b03909116913091600080516020615d2c833981519152910160405180910390a3505b8061208781615908565b915050611f47565b5060125415611af8576012546022546120a891906158f0565b602255600060125550565b6002546001600160a01b0316336001600160a01b0316146120e65760405162461bcd60e51b815260040161116c90615c54565b6001600160a01b038116600090815260356020526040902054156121075750565b426001600160a01b03821660009081526035602052604090205560325461212f9060016158f0565b60325550565b336000818152600a602090815260408083206001600160a01b03871684529091528120549091611911918590611d9e9086906158f0565b60008060015b60185481116121e857600081815260176020526040902060020154610100900460ff1680156121b2575060008181526017602052604090206002015460ff165b156121d6576000818152601760205260409020600101546121d390836158f0565b91505b806121e081615908565b915050612172565b50919050565b6121f73361066a565b806122065750612206336107de565b6122225760405162461bcd60e51b815260040161116c90615923565b602c5481111561226c5760405162461bcd60e51b81526020600482015260156024820152744e6f7420656e6f75676820746f206c69717569667960581b604482015260640161116c565b6000612279600283615af7565b90506000612287828461595a565b90504761229383614acf565b15611af45760006122a4824761595a565b9050801561232657306000908152600960205260409020546122c790869061595a565b30600090815260096020526040902055602c546122e590869061595a565b602c556122f2838261510a565b6040518581527f7efafb3bb52354a1b7d0353fbb402e0d2e083329d3f7493320186476a7ddc01e9060200160405180910390a15b5050505050565b6123363361066a565b806123455750612345336107de565b6123615760405162461bcd60e51b815260040161116c90615923565b6001600160a01b0381166000818152600b6020908152604091829020805460ff1916600117905590519182527f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b6291016111fd565b6060600060185467ffffffffffffffff8111156123d4576123d4615971565b6040519080825280602002602001820160405280156123fd578160200160208202803683370190505b50905060015b60185481116121e8576000818152601760205260409020546001600160a01b03168261243060018461595a565b8151811061244057612440615987565b6001600160a01b03909216602092830291909101909101528061246281615908565b915050612403565b6124733361066a565b806124825750612482336107de565b61249e5760405162461bcd60e51b815260040161116c90615923565b6124a6614a87565b6124c25760405162461bcd60e51b815260040161116c90615a91565b6301e13380600f546124d491906158f0565b4210156124dd57565b6000805b60648210801561251857506124f98162278d00615ad8565b6301e13380600f5461250b91906158f0565b61251591906158f0565b42115b1561253c57612528600a836158f0565b91508061253481615908565b9150506124e1565b6001811015612549575050565b60006064600a61255a600982615bfd565b61256890630bebc200615ad8565b6125729190615ad8565b61257c9190615af7565b9050600061258a8284615ad8565b6125966009600a615bfd565b6125a490630bebc200615ad8565b6125ae919061595a565b6010546125bb919061595a565b905060015b600e548111612326576000818152600d60205260408120600101546064906125e89085615ad8565b6125f29190615af7565b3060009081526009602052604090205490915061261090829061595a565b3060009081526009602052604090205560105461262e90829061595a565b6010556000828152600d60209081526040808320546001600160a01b0316835260099091529020546126619082906158f0565b6000838152600d6020818152604080842080546001600160a01b039081168652600984528286209690965593879052918152915490518481529216913091600080516020615d2c833981519152910160405180910390a350806126c381615908565b9150506125c0565b6126d43361066a565b806126e357506126e3336107de565b6126ff5760405162461bcd60e51b815260040161116c90615923565b60085461270d9060016158f0565b6008818155600091825260076020526040918290208390555490517fbdf90ff695f9a3fa36f3d047c52d66e87f77a36e951a6895dda36c9275bf2de8916111fd918490918252602082015260400190565b60006127693361066a565b806127785750612778336107de565b6127945760405162461bcd60e51b815260040161116c90615923565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156127d257600080fd5b505afa1580156127e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280a919061599d565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561285257600080fd5b505afa158015612866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288a919061599d565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156128d057600080fd5b505afa1580156128e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612908919061599d565b91506001600160a01b038216612a8c57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561295157600080fd5b505afa158015612965573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612989919061599d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156129d157600080fd5b505afa1580156129e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a09919061599d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015612a5157600080fd5b505af1158015612a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a89919061599d565b91505b600680546001600160a01b038085166001600160a01b0319928316178355600580548583169316831781556000928352600b602052604092839020805460ff1916600117905554925491517f868d477d1f2aa07449951b6ecd423921fda432f90f37c85b0db8216a0ed41bac93612b1d939083169216906001600160a01b0392831681529116602082015260400190565b60405180910390a150919050565b612b343361066a565b80612b435750612b43336107de565b612b5f5760405162461bcd60e51b815260040161116c90615923565b60328a11158015612b71575060328911155b612bbd5760405162461bcd60e51b815260206004820152601960248201527f4d61726b6574696e672054617820457863656564732043617000000000000000604482015260640161116c565b60328811158015612bcf575060328711155b612c1b5760405162461bcd60e51b815260206004820152601d60248201527f506172746963697061746f727920546178204578636565647320436170000000604482015260640161116c565b60328611158015612c2d575060328511155b612c725760405162461bcd60e51b81526020600482015260166024820152750566574746572205461782045786365656473204361760541b604482015260640161116c565b60148411158015612c84575060148311155b612cd05760405162461bcd60e51b815260206004820152601960248201527f4c69717569646974792054617820457863656564732043617000000000000000604482015260640161116c565b60148211158015612ce2575060148111155b612d2e5760405162461bcd60e51b815260206004820152601760248201527f526f79616c747920546178204578636565647320436170000000000000000000604482015260640161116c565b600a8210158015612d405750600a8110155b612d8c5760405162461bcd60e51b815260206004820152601960248201527f526f79616c7479205461782042656c6f77204d696e696d756d00000000000000604482015260640161116c565b601d8a9055601e8990556020888155602188905560238790556024869055602a859055602b849055602d839055602e829055604080518c81529182018a9052810187905260608101859052608081018390527fbfe33b8e53a77d1d28e7ea5b41ffe1ab8754166269e2d8d916e320d964f826cd9060a00160405180910390a1601e54602154602454602b54602e546040805195865260208601949094528484019290925260608401526080830152517fe73951c8d7b4075ead457d46dfd65df11de13e2590ef311eb292d6b85f240e1d9181900360a00190a150505050505050505050565b612e7a3361066a565b80612e895750612e89336107de565b612ea55760405162461bcd60e51b815260040161116c90615923565b602655565b6001600160a01b0381166000908152603560205260408120546001811015612ed55750600092915050565b600060015b6033548111612f2a57600081815260346020526040902054831015612f1857600081815260346020526040902060010154612f1590836158f0565b91505b80612f2281615908565b915050612eda565b509392505050565b60606000600e5467ffffffffffffffff811115612f5157612f51615971565b604051908082528060200260200182016040528015612f9657816020015b6040805180820190915260008082526020820152815260200190600190039081612f6f5790505b50905060015b600e5481116121e8576000818152600d6020908152604091829020825180840190935280546001600160a01b03168352600190810154918301919091528390612fe5908461595a565b81518110612ff557612ff5615987565b6020026020010181905250808061300b90615908565b915050612f9c565b61301c3361066a565b8061302b575061302b336107de565b6130475760405162461bcd60e51b815260040161116c90615923565b6202a300600f5461305891906158f0565b42106130a65760405162461bcd60e51b815260206004820152601c60248201527f5061737420416c6c6f77656420486967682054617820506572696f6400000000604482015260640161116c565b61029e81106131035760405162461bcd60e51b8152602060048201526024808201527f43616e277420657863656564206d6178696d756d2073656c6c20746178206f666044820152632038302560e01b606482015260840161116c565b60248190556040518181527f066a0f28b85b6d0200c28735f0e8408f403b994df515a38964ccc120270b1dc8906020016111fd565b6060600060285467ffffffffffffffff81111561315757613157615971565b604051908082528060200260200182016040528015613180578160200160208202803683370190505b50905060015b60285481116121e8576000818152602960205260409020546001600160a01b0316826131b360018461595a565b815181106131c3576131c3615987565b6001600160a01b0390921660209283029190910190910152806131e581615908565b915050613186565b6001546001600160a01b0316336001600160a01b03161461320d57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b61327a336106a3565b8061328957506132893361066a565b806132985750613298336107de565b6132de5760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba1030b71030b236b4b71760491b604482015260640161116c565b6132e73361066a565b156132f557611af8816151ed565b6132fe8161066a565b1561335f5760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f742072656d6f76652074686520617263686974656374732066726f60448201526a36903a3432903634b9ba1760a91b606482015260840161116c565b611af8816151ed565b6000602e54602b54602454602154601e5461338391906158f0565b61338d91906158f0565b61339791906158f0565b611c0e91906158f0565b60006133ac3361066a565b806133bb57506133bb336107de565b6133d75760405162461bcd60e51b815260040161116c90615923565b6001600160a01b03831630141561343c5760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b606482015260840161116c565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b15801561347e57600080fd5b505afa158015613492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b69190615c8b565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561350457600080fd5b505af1158015613518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353c9190615ca4565b9150811561113157604080516001600160a01b038087168252851660208201529081018290527f73ec400914545adf2dc33884905ae36f941eeed9cbd942e1a8bb85627b4ec0e79060600160405180910390a15092915050565b6002546001600160a01b0316336001600160a01b0316146135c95760405162461bcd60e51b815260040161116c90615c54565b6135d4838383614ca3565b816001600160a01b0316836001600160a01b03167f944676cc66b56faa2e31ce8f94f620789dda8488308d59491fabc492867d4cec8360405161361991815260200190565b60405180910390a3505050565b61362f3361066a565b8061363e575061363e336107de565b61365a5760405162461bcd60e51b815260040161116c90615923565b600060305411801561366e57506000602f54115b6136b25760405162461bcd60e51b81526020600482015260156024820152744e6f7468696e6720746f204469737472696275746560581b604482015260640161116c565b6000603254116136fd5760405162461bcd60e51b81526020600482015260166024820152754e6f6f6e6520746f204469737472696275746520746f60501b604482015260640161116c565b600060325460305461370f9190615af7565b90506032548161371f9190615ad8565b60305461372c919061595a565b60305560335461373d9060016158f0565b6033556040805180820190915280428152602090810183905260335460009081526034825260409020825181559101516001909101557fbd3514f9ade0d658423a988a8a8faf7019f095cf5f801302597317de4bd6732081426111ec565b60006137a63361066a565b806137b557506137b5336107de565b6137d15760405162461bcd60e51b815260040161116c90615923565b506006546001600160a01b031690565b6137ea3361066a565b806137f957506137f9336107de565b6138155760405162461bcd60e51b815260040161116c90615923565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6138403361066a565b8061384f575061384f336107de565b61386b5760405162461bcd60e51b815260040161116c90615923565b6000601154116138d05760405162461bcd60e51b815260206004820152602a60248201527f537461626c6520546f6b656e20446973747269627574696f6e20416c726561646044820152691e4812185c1c195b995960b21b606482015260840161116c565b6015546138de9060016158f0565b6138eb906276a700615ad8565b600f546138f891906158f0565b42101561390157565b60155461390f9060016158f0565b601581905560145460009160649161392691615ad8565b6139326009600a615bfd565b61394090630bebc200615ad8565b61394a9190615ad8565b6139549190615af7565b9050600061396061440b565b61396a9083615af7565b905060015b6018548111613ab957600081815260176020526040902060020154610100900460ff1615613aa7576000818152601760205260408120600101546139b39084615ad8565b6000838152601760209081526040808320546001600160a01b0316835260099091529020549091506139e69082906158f0565b6000838152601760209081526040808320546001600160a01b031683526009909152808220929092553081522054613a1f90829061595a565b30600090815260096020526040902055601154613a3d90829061595a565b601155600082815260176020526040902060030154613a5d9082906158f0565b6000838152601760209081526040918290206003810193909355915490518381526001600160a01b03909116913091600080516020615d2c833981519152910160405180910390a3505b80613ab181615908565b91505061396f565b506003601554118015613ace57506000601154115b156115b757601154602254613ae391906158f0565b60225560006011555050565b6000602d54602a54602354602054601d5461338391906158f0565b613b133361066a565b80613b225750613b22336107de565b613b3e5760405162461bcd60e51b815260040161116c90615923565b6001600160a01b038216600090815260196020526040902054613b9657601a54613b699060016158f0565b601a8190556000908152601b6020526040902080546001600160a01b0319166001600160a01b0384161790555b8015613bba57506001600160a01b0316600090815260196020526040902060029055565b506001600160a01b0316600090815260196020526040902060019055565b336000908152600a602090815260408083206001600160a01b0386168452909152812054821115613c1b5760405162461bcd60e51b815260040161116c90615c0c565b336000818152600a602090815260408083206001600160a01b038816845290915290205461191191908590611d9e90869061595a565b6000611911338484614ca3565b613c673361066a565b80613c765750613c76336107de565b613c925760405162461bcd60e51b815260040161116c90615923565b602554811115613cd95760405162461bcd60e51b815260206004820152601260248201527104e6f7420656e6f75676820746f20737761760741b604482015260640161116c565b60265460255411613d3b5760405162461bcd60e51b815260206004820152602660248201527f43616e27742072656475636520706f6f6c2062656c6f77207265736572766520604482015265185b5bdd5b9d60d21b606482015260840161116c565b602654602554829190613d4f90839061595a565b1015613d6857602654602554613d65919061595a565b90505b47613d7282614acf565b506000613d7f824761595a565b905080613d8c5750505050565b30600090815260096020526040902054613da790849061595a565b30600090815260096020526040902055602554613dc590849061595a565b602555600454613dde906001600160a01b031682614c6d565b6040518381527f6cd9391c9f6aeefa7061c38b472fe9b6c2c8c547eaa0e0b8a30024273f84f1e79060200160405180910390a150505050565b613e203361066a565b80613e2f5750613e2f336107de565b613e4b5760405162461bcd60e51b815260040161116c90615923565b6001600160a01b0381166000908152600c602052604090205460ff16613ea65760405162461bcd60e51b815260206004820152601060248201526f139bdd08185b88105c98da1a5d1958dd60821b604482015260640161116c565b6001600160a01b0381166000908152600c60205260409020805460ff19169055613ecf816151ed565b60015b600e5481116115b7576000818152600d60205260409020546001600160a01b0383811691161415613f4e57600e80546000908152600d60205260408082208483529120815481546001600160a01b0319166001600160a01b03909116178155600191820154908201559054613f47919061595a565b600e555050565b80613f5881615908565b915050613ed2565b60606000613f6d60085490565b90506000613f7c8260016158f0565b67ffffffffffffffff811115613f9457613f94615971565b604051908082528060200260200182016040528015613fbd578160200160208202803683370190505b50905060005b828111611131576000818152600760205260409020548251839083908110613fed57613fed615987565b60209081029190910101528061400281615908565b915050613fc3565b6002546001600160a01b0316336001600160a01b03161461403d5760405162461bcd60e51b815260040161116c90615c54565b6022548111156140865760405162461bcd60e51b8152602060048201526014602482015273139bdd08195b9bdd59da081d1bc81c995dd85c9960621b604482015260640161116c565b306000908152600960205260409020546140a190829061595a565b306000908152600960205260409020556022546140bf90829061595a565b6022556001600160a01b0382166000908152600960205260409020546140e69082906158f0565b6001600160a01b038316600081815260096020526040908190209290925590513090600080516020615d2c833981519152906141259085815260200190565b60405180910390a3816001600160a01b03167f15b794e3052b5da22ebfa5569d3b6d97c8e7d5cb97330d41f70cde6ddff8b0278260405161416891815260200190565b60405180910390a25050565b61417d3361066a565b8061418c575061418c336107de565b6141a85760405162461bcd60e51b815260040161116c90615923565b601c805460ff191682151590811790915560405160ff909116151581527faee4360312c9b530a8bd724c910f6a885c0b17181c349f3e341f5632a28ac69e906020016111fd565b6141f83361066a565b806142075750614207336107de565b6142235760405162461bcd60e51b815260040161116c90615923565b600480546001600160a01b0319166001600160a01b0383169081179091556000818152600b6020908152604091829020805460ff1916600117905590519182527fd7d04accdcaeb712b37ef16145ef8c65efe99a233c740beb38e892756701d44091016111fd565b6142943361066a565b806142a357506142a3336107de565b6142bf5760405162461bcd60e51b815260040161116c90615923565b60085482111561430a5760405162461bcd60e51b8152602060048201526016602482015275139bdd08184815985b1a5908151a595c8813195d995b60521b604482015260640161116c565b60008281526007602090815260409182902083905581518481529081018390527fbdf90ff695f9a3fa36f3d047c52d66e87f77a36e951a6895dda36c9275bf2de8910160405180910390a15050565b6143623361066a565b806143715750614371336107de565b61438d5760405162461bcd60e51b815260040161116c90615923565b600380546001600160a01b039092166001600160a01b0319909216821790556000908152600b60205260409020805460ff19166001179055565b60008060008060006143ee306001600160a01b031660009081526009602052604090205490565b601054601154601254601354945094509450945094509091929394565b60008060015b60185481116121e857600081815260176020526040902060020154610100900460ff16156144585760008181526017602052604090206001015461445590836158f0565b91505b8061446281615908565b915050614411565b60606000601a5467ffffffffffffffff81111561448957614489615971565b6040519080825280602002602001820160405280156144b2578160200160208202803683370190505b50905060015b601a5481116121e8576000818152601b60205260409020546001600160a01b0316826144e560018461595a565b815181106144f5576144f5615987565b6001600160a01b03909216602092830291909101909101528061451781615908565b9150506144b8565b6145283361066a565b806145375750614537336107de565b6145535760405162461bcd60e51b815260040161116c90615923565b6001600160a01b0381166000818152600b6020908152604091829020805460ff1916905590519182527f4f6a6b6efe34ec6478021aa9fb7f6980e78ea3a10c74074a8ce49d5d3ebf1f7e91016111fd565b6145ad336107de565b6145f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161116c565b6001600160a01b03811661465e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161116c565b6000546001600160a01b03828116911614156146cc5760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320616c7265616479207468604482015266329037bbb732b960c91b606482015260840161116c565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b0316336001600160a01b0316146147215760405162461bcd60e51b815260040161116c90615c54565b60255481111561476a5760405162461bcd60e51b8152602060048201526014602482015273139bdd08195b9bdd59da081d1bc81c995dd85c9960621b604482015260640161116c565b3060009081526009602052604090205461478590829061595a565b306000908152600960205260409020556025546147a390829061595a565b6025556001600160a01b0382166000908152600960205260409020546147ca9082906158f0565b6001600160a01b038316600081815260096020526040908190209290925590513090600080516020615d2c833981519152906148099085815260200190565b60405180910390a3816001600160a01b03167f3f49f3a6e0f8e89dba7ceeafcc1affeee4276f37d8339f8fa26f6acbabe9b8da8260405161416891815260200190565b600061485760085490565b82111561489f5760405162461bcd60e51b8152602060048201526016602482015275139bdd08184815985b1a5908151a595c8813195d995b60521b604482015260640161116c565b5060009081526007602052604090205490565b6148bb3361066a565b806148ca57506148ca336107de565b6148e65760405162461bcd60e51b815260040161116c90615923565b81846148f0575060005b6001600160a01b0395909516600090815260166020908152604080832080548452601790925280832060010196909655805482528582206002908101805460ff19169615159690961790955580548252858220909401805461ff00191661010097151597909702969096179095559154845250912060030155565b6001600160a01b0383166149cd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161116c565b6001600160a01b038216614a2e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161116c565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101613619565b60008060015b600e548111614ac6576000818152600d6020526040902060010154614ab290836158f0565b915080614abe81615908565b915050614a8d565b50606414919050565b604080516002808252606082018352600092839291906020830190803683370190505090503081600081518110614b0857614b08615987565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015614b5c57600080fd5b505afa158015614b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b94919061599d565b81600181518110614ba757614ba7615987565b6001600160a01b03928316602091820292909201810191909152600554306000908152600a8352604080822092909416815291522054831115614bfe57600554614bfe9030906001600160a01b031660001961496b565b6005546001600160a01b031663791ac9478460008430426040518663ffffffff1660e01b8152600401614c35959493929190615cc1565b600060405180830381600087803b158015614c4f57600080fd5b505af1925050508015614c60575060015b6119115750600092915050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611880573d6000803e3d6000fd5b6001600160a01b038316614d075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161116c565b6001600160a01b038216614d695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161116c565b60008111614dcb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161116c565b6001600160a01b038316600090815260096020526040902054811115614e3f5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657220616d6f756e7420776f756c64206578636565642062616c604482015263616e636560e01b606482015260840161116c565b6001600160a01b038316600090815260096020526040902054614e6390829061595a565b6001600160a01b038416600090815260096020526040812091909155601c54829190819060ff168015614eaf57506001600160a01b0386166000908152600b602052604090205460ff16155b8015614ec957506003546001600160a01b03878116911614155b15614ef057614ed7836152b0565b614ee1908461595a565b9150614eed828461595a565b92505b601c5460ff168015614f1b57506001600160a01b0385166000908152600b602052604090205460ff16155b8015614f3557506003546001600160a01b03878116911614155b15614f5c57614f43836153f1565b614f4d908461595a565b9050614f59818461595a565b92505b8284111561500257614f6e838561595a565b30600090815260096020526040902054614f8891906158f0565b306000908152600960205260409020558015614fcd5760405181815230906001600160a01b03871690600080516020615d2c8339815191529060200160405180910390a35b81156150025760405182815230906001600160a01b03881690600080516020615d2c8339815191529060200160405180910390a35b6001600160a01b0385166000908152600960205260409020546150269084906158f0565b6001600160a01b038087166000818152600960205260409081902093909355915190881690600080516020615d2c833981519152906150689087815260200190565b60405180910390a360115415615102576001600160a01b03861660009081526016602052604090205415615102576001600160a01b0386166000818152601660209081526040808320548352601782528083206003015493835260099091529020541015615102576001600160a01b038616600090815260166020908152604080832054835260179091529020600201805461ff00191690555b505050505050565b6005546151229030906001600160a01b03168461496b565b6005546001600160a01b031663f305d71982308560008061514b6000546001600160a01b031690565b4260405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b1580156151b457600080fd5b505af11580156151c8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123269190615cfd565b6001600160a01b03811660009081526027602052604090205461520d5750565b6001600160a01b03811660009081526027602052604081205560015b60285481116115b7576000818152602960205260409020546001600160a01b038381169116141561529e576028805460009081526029602052604080822054848352912080546001600160a01b0319166001600160a01b03909216919091179055546152979060019061595a565b6028555050565b806152a881615908565b915050615229565b60008082905060006103e8601e54856152c99190615ad8565b6152d39190615af7565b905080601f546152e391906158f0565b601f556152f0818361595a565b91506103e8602154856153039190615ad8565b61530d9190615af7565b90508060225461531d91906158f0565b60225561532a818361595a565b91506103e86024548561533d9190615ad8565b6153479190615af7565b90508060255461535791906158f0565b602555615364818361595a565b91506103e8602b54856153779190615ad8565b6153819190615af7565b905080602c5461539191906158f0565b602c5561539e818361595a565b91506103e8602e54856153b19190615ad8565b6153bb9190615af7565b905080602f546153cb91906158f0565b602f556030546153dc9082906158f0565b6030556153e9818361595a565b949350505050565b60008082905060006103e8601d548561540a9190615ad8565b6154149190615af7565b905080601f5461542491906158f0565b601f55615431818361595a565b91506103e8602054856154449190615ad8565b61544e9190615af7565b90508060225461545e91906158f0565b60225561546b818361595a565b91506103e86023548561547e9190615ad8565b6154889190615af7565b90508060255461549891906158f0565b6025556154a5818361595a565b91506103e8602a54856154b89190615ad8565b6154c29190615af7565b905080602c546154d291906158f0565b602c556154df818361595a565b91506103e8602d54856153b19190615ad8565b6001600160a01b0381168114611af857600080fd5b60006020828403121561551957600080fd5b8135615524816154f2565b9392505050565b60006020828403121561553d57600080fd5b5035919050565b6000806040838503121561555757600080fd5b8235615562816154f2565b946020939093013593505050565b600060208083528351808285015260005b8181101561559d57858101830151858201604001528201615581565b818111156155af576000604083870101525b50601f01601f1916929092016040019392505050565b8015158114611af857600080fd5b600080604083850312156155e657600080fd5b82356155f1816154f2565b91506020830135615601816155c5565b809150509250929050565b60008060006060848603121561562157600080fd5b833561562c816154f2565b9250602084013561563c816154f2565b929592945050506040919091013590565b6000806000806080858703121561566357600080fd5b843561566e816154f2565b9350602085013592506040850135615685816155c5565b91506060850135615695816155c5565b939692955090935050565b600081518084526020808501945080840160005b838110156156d95781516001600160a01b0316875295820195908201906001016156b4565b509495945050505050565b60208152600061552460208301846156a0565b6000806000806000806000806000806101408b8d03121561571757600080fd5b505088359a60208a01359a5060408a013599606081013599506080810135985060a0810135975060c0810135965060e081013595506101008101359450610120013592509050565b602080825282518282018190526000919060409081850190868401855b828110156157aa57815180516001600160a01b0316855286015186850152928401929085019060010161577c565b5091979650505050505050565b600080604083850312156157ca57600080fd5b82356157d5816154f2565b91506020830135615601816154f2565b6020808252825182820181905260009190848201906040850190845b8181101561581d57835183529284019291840191600101615801565b50909695505050505050565b60006020828403121561583b57600080fd5b8135615524816155c5565b6000806040838503121561585957600080fd5b50508035926020909101359150565b600080600080600060a0868803121561588057600080fd5b853561588b816154f2565b94506020860135935060408601356158a2816155c5565b925060608601356158b2816155c5565b949793965091946080013592915050565b634e487b7160e01b600052601160045260246000fd5b6000816158e8576158e86158c3565b506000190190565b60008219821115615903576159036158c3565b500190565b600060001982141561591c5761591c6158c3565b5060010190565b6020808252601b908201527f43616c6c6572206973206e6f7420616e206172636869746563742e0000000000604082015260600190565b60008282101561596c5761596c6158c3565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156159af57600080fd5b8151615524816154f2565b8281526040602082015260006153e960408301846156a0565b600060208083850312156159e657600080fd5b825167ffffffffffffffff808211156159fe57600080fd5b818501915085601f830112615a1257600080fd5b815181811115615a2457615a24615971565b8060051b604051601f19603f83011681018181108582111715615a4957615a49615971565b604052918252848201925083810185019188831115615a6757600080fd5b938501935b82851015615a8557845184529385019392850192615a6c565b98975050505050505050565b60208082526027908201527f466f756e6465722070657263656e746167657320617265206e6f742073657420604082015266746f203130302560c81b606082015260800190565b6000816000190483118215151615615af257615af26158c3565b500290565b600082615b1457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115615b54578160001904821115615b3a57615b3a6158c3565b80851615615b4757918102915b93841c9390800290615b1e565b509250929050565b600082615b6b57506001611915565b81615b7857506000611915565b8160018114615b8e5760028114615b9857615bb4565b6001915050611915565b60ff841115615ba957615ba96158c3565b50506001821b611915565b5060208310610133831016604e8410600b8410161715615bd7575081810a611915565b615be18383615b19565b8060001904821115615bf557615bf56158c3565b029392505050565b600061552460ff841683615b5c565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252601f908201527f63616c6c6572206973206e6f74207468652072616e6b20636f6e747261637400604082015260600190565b600060208284031215615c9d57600080fd5b5051919050565b600060208284031215615cb657600080fd5b8151615524816155c5565b85815284602082015260a060408201526000615ce060a08301866156a0565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215615d1257600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cc7fa0643ad1482e74a0dae730c09fe40b6c435b3fb6ed31161c6fdde81c5d7264736f6c63430008090033

Deployed Bytecode Sourcemap

10172:48615:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55062:349;;;;;;;;;;-1:-1:-1;55062:349:0;;;;;:::i;:::-;;:::i;:::-;;;548:25:1;;;536:2;521:18;55062:349:0;;;;;;;;56763:447;;;;;;;;;;;;;:::i;58520:264::-;;;;;;;;;;-1:-1:-1;58520:264:0;;;;;:::i;:::-;;:::i;:::-;;57740:702;;;;;;;;;;;;;:::i;40302:671::-;;;;;;;;;;-1:-1:-1;40302:671:0;;;;;:::i;:::-;;:::i;37667:338::-;;;;;;;;;;-1:-1:-1;37667:338:0;;;;;:::i;:::-;;:::i;20625:90::-;;;;;;;;;;-1:-1:-1;20702:5:0;;;;;;;;;;;;-1:-1:-1;;;20702:5:0;;;;20625:90;;;;;;;:::i;41777:521::-;;;;;;;;;;-1:-1:-1;41777:521:0;;;;;:::i;:::-;;:::i;55561:265::-;;;;;;;;;;-1:-1:-1;55561:265:0;;;;;:::i;:::-;;:::i;:::-;;;;1976:25:1;;;2032:2;2017:18;;2010:34;;;;2087:14;;2080:22;2060:18;;;2053:50;;;;2146:14;;2139:22;2134:2;2119:18;;2112:50;2206:14;2199:22;2193:3;2178:19;;2171:51;2266:14;;2259:22;2253:3;2238:19;;2231:51;2326:14;2319:22;2313:3;2298:19;;2291:51;1963:3;1948:19;55561:265:0;1691:657:1;53581:97:0;;;;;;;;;;-1:-1:-1;53656:14:0;;53581:97;;20063:166;;;;;;;;;;-1:-1:-1;20063:166:0;;;;;:::i;:::-;;:::i;:::-;;;2518:14:1;;2511:22;2493:41;;2481:2;2466:18;20063:166:0;2353:187:1;40146:107:0;;;;;;;;;;-1:-1:-1;40146:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;40229:16:0;40200:4;40229:16;;;:11;:16;;;;;;;;;40146:107;44804;;;;;;;;;;-1:-1:-1;44804:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;44887:12:0;44858:4;44887:12;;;:7;:12;;;;;;44902:1;-1:-1:-1;44887:16:0;44804:107;24773:1221;;;;;;;;;;-1:-1:-1;24773:1221:0;;;;;:::i;:::-;;:::i;45306:511::-;;;;;;;;;;-1:-1:-1;45306:511:0;;;;;:::i;:::-;;:::i;19365:107::-;;;;;;;;;;;;;:::i;46947:305::-;;;;;;;;;;-1:-1:-1;46947:305:0;;;;;:::i;:::-;;:::i;20237:380::-;;;;;;;;;;-1:-1:-1;20237:380:0;;;;;:::i;:::-;;:::i;44693:103::-;;;;;;;;;;-1:-1:-1;44693:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;44772:12:0;44743:4;44772:12;;;:7;:12;;;;;;:16;;;44693:103;48952:415;;;;;;;;;;-1:-1:-1;48952:415:0;;;;;:::i;:::-;;:::i;52328:1193::-;;;;;;;;;;;;;:::i;9326:101::-;;;;;;;;;;-1:-1:-1;9326:101:0;;;;;:::i;:::-;9377:4;9406:6;-1:-1:-1;;;;;9406:6:0;;;:13;;;;9326:101;20825:90;;;;;;;;;;-1:-1:-1;20825:90:0;;10583:1;4249:36:1;;4237:2;4222:18;20825:90:0;4107:184:1;55834:222:0;;;;;;;;;;-1:-1:-1;55834:222:0;;;;;:::i;:::-;;:::i;20923:::-;;;;;;;;;;-1:-1:-1;20923:222:0;;;;;:::i;:::-;;:::i;50460:345::-;;;;;;;;;;;;;:::i;36858:239::-;;;;;;;;;;-1:-1:-1;36978:16:0;;36996:20;;37018:13;;37033:16;;37051:14;;37067:21;;36858:239;;;4583:25:1;;;4639:2;4624:18;;4617:34;;;;4667:18;;;4660:34;;;;4725:2;4710:18;;4703:34;4768:3;4753:19;;4746:35;4812:3;4797:19;;4790:35;4570:3;4555:19;36858:239:0;4296:535:1;27439:1096:0;;;;;;;;;;-1:-1:-1;27439:1096:0;;;;;:::i;:::-;;:::i;37289:161::-;;;;;;;;;;-1:-1:-1;37289:161:0;;;;;:::i;:::-;;:::i;44211:110::-;;;;;;;;;;-1:-1:-1;44296:17:0;;44211:110;;48606:338;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;42306:1738::-;;;;;;;;;;;;;:::i;54769:226::-;;;;;;;;;;-1:-1:-1;54769:226:0;;;;;:::i;:::-;;:::i;37105:131::-;;;;;;;;;;-1:-1:-1;37105:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;37201:27:0;37172:4;37201:27;;;:18;:27;;;;;;;;;37105:131;10070:95;;;;;;;;;;-1:-1:-1;10142:15:0;10070:95;;38441:783;;;;;;;;;;-1:-1:-1;38441:783:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;5732:32:1;;;5714:51;;5702:2;5687:18;38441:783:0;5568:203:1;31879:1621:0;;;;;;;;;;-1:-1:-1;31879:1621:0;;;;;:::i;:::-;;:::i;26977:110::-;;;;;;;;;;-1:-1:-1;26977:110:0;;;;;:::i;:::-;;:::i;57218:447::-;;;;;;;;;;-1:-1:-1;57218:447:0;;;;;:::i;:::-;;:::i;19480:127::-;;;;;;;;;;-1:-1:-1;19480:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;19578:21:0;19546:7;19578:21;;;:12;:21;;;;;;;19480:127;44329:320;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;33723:335::-;;;;;;;;;;-1:-1:-1;33723:335:0;;;;;:::i;:::-;;:::i;48285:313::-;;;;;;;;;;;;;:::i;9853:209::-;;;;;;;;;;;;;:::i;47311:295::-;;;;;;;;;;-1:-1:-1;47311:295:0;;;;;:::i;:::-;;:::i;34253:185::-;;;;;;;;;;;;;:::i;46471:105::-;;;;;;;;;;-1:-1:-1;46471:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;46551:13:0;46522:4;46551:13;;;:8;:13;;;;;;:17;;;46471:105;39541:418;;;;;;;;;;-1:-1:-1;39541:418:0;;;;;:::i;:::-;;:::i;35607:187::-;;;;;;;;;;-1:-1:-1;35607:187:0;;;;;:::i;:::-;;:::i;56133:622::-;;;;;;;;;;;;;:::i;38197:116::-;;;;;;;;;;;;;:::i;9234:84::-;;;;;;;;;;-1:-1:-1;9272:7:0;9304:6;-1:-1:-1;;;;;9304:6:0;9234:84;;39967:131;;;;;;;;;;-1:-1:-1;39967:131:0;;;;;:::i;:::-;;:::i;50813:1507::-;;;;;;;;;;;;;:::i;20723:94::-;;;;;;;;;;-1:-1:-1;20802:7:0;;;;;;;;;;;;-1:-1:-1;;;20802:7:0;;;;20723:94;;34066:179;;;;;;;;;;;;;:::i;44960:296::-;;;;;;;;;;-1:-1:-1;44960:296:0;;;;;:::i;:::-;;:::i;21153:349::-;;;;;;;;;;-1:-1:-1;21153:349:0;;;;;:::i;:::-;;:::i;46627:111::-;;;;;;;;;;-1:-1:-1;46627:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;46712:13:0;46683:4;46712:13;;;:8;:13;;;;;;46729:1;46712:18;;46627:111;19615:174;;;;;;;;;;-1:-1:-1;19615:174:0;;;;;:::i;:::-;;:::i;26070:899::-;;;;;;;;;;-1:-1:-1;26070:899:0;;;;;:::i;:::-;;:::i;41023:705::-;;;;;;;;;;-1:-1:-1;41023:705:0;;;;;:::i;:::-;;:::i;53981:341::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;34517:467::-;;;;;;;;;;-1:-1:-1;34517:467:0;;;;;:::i;:::-;;:::i;31476:148::-;;;;;;;;;;-1:-1:-1;31476:148:0;;;;;:::i;:::-;;:::i;27142:235::-;;;;;;;;;;-1:-1:-1;27142:235:0;;;;;:::i;:::-;;:::i;54453:246::-;;;;;;;;;;-1:-1:-1;54453:246:0;;;;;:::i;:::-;;:::i;39232:148::-;;;;;;;;;;-1:-1:-1;39232:148:0;;;;;:::i;:::-;;:::i;36203:226::-;;;;;;;;;;;;;:::i;:::-;;;;9187:25:1;;;9243:2;9228:18;;9221:34;;;;9271:18;;;9264:34;;;;9329:2;9314:18;;9307:34;9372:3;9357:19;;9350:35;9174:3;9159:19;36203:226:0;8928:463:1;48169:108:0;;;;;;;;;;-1:-1:-1;48253:16:0;;48169:108;;50141:311;;;;;;;;;;;;;:::i;19797:148::-;;;;;;;;;;-1:-1:-1;19797:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;19910:18:0;;;19878:7;19910:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19797:148;46788:110;;;;;;;;;;-1:-1:-1;46788:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;46872:13:0;46843:4;46872:13;;;:8;:13;;;;;;46889:1;46872:18;;46788:110;46320:106;;;;;;;;;;-1:-1:-1;46403:15:0;;46320:106;;46005:307;;;;;;;;;;;;;:::i;37501:158::-;;;;;;;;;;-1:-1:-1;37501:158:0;;;;;:::i;:::-;;:::i;49375:237::-;;;;;;;;;;-1:-1:-1;49375:237:0;;;;;:::i;:::-;-1:-1:-1;;;;;49515:22:0;;;49438:7;49515:22;;;:17;:22;;;;;;;;;49501:37;;:13;:37;;;;;;49484:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49375:237;;;;;9615:25:1;;;9683:14;;9676:22;9671:2;9656:18;;9649:50;9742:14;;9735:22;9715:18;;;9708:50;;;;9789:2;9774:18;;9767:34;9602:3;9587:19;49375:237:0;9396:411:1;9566:279:0;;;;;;;;;;-1:-1:-1;9566:279:0;;;;;:::i;:::-;;:::i;35056:464::-;;;;;;;;;;-1:-1:-1;35056:464:0;;;;;:::i;:::-;;:::i;53746:178::-;;;;;;;;;;-1:-1:-1;53746:178:0;;;;;:::i;:::-;;:::i;49620:513::-;;;;;;;;;;-1:-1:-1;49620:513:0;;;;;:::i;:::-;;:::i;55062:349::-;-1:-1:-1;;;;;19578:21:0;;55119:7;19578:21;;;:12;:21;;;;;;55189:10;;55186:199;;55229:13;55245;53656:14;;;53581:97;55245:13;55229:29;;55225:149;55260:9;;55225:149;;55324:20;55338:5;55324:13;:20::i;:::-;55315:6;:29;55312:46;;;55353:5;55062:349;-1:-1:-1;;;55062:349:0:o;55312:46::-;55271:7;;;;:::i;:::-;;;;55225:149;;;;55186:199;-1:-1:-1;55402:1:0;;55062:349;-1:-1:-1;;55062:349:0:o;56763:447::-;8793:10;56813:7;56857:27;;;:13;:27;;;;;;56909:1;56898:12;;56895:25;;;56919:1;56912:8;;;56763:447;:::o;56895:25::-;56933:17;56985:1;56965:211;56997:22;;56988:5;:31;56965:211;;57057:21;;;;:14;:21;;;;;:35;:46;-1:-1:-1;57054:110:0;;;57129:21;;;;:14;:21;;;;;:35;;;57117:47;;:9;:47;:::i;:::-;57105:59;;57054:110;57021:7;;;;:::i;:::-;;;;56965:211;;;-1:-1:-1;57193:9:0;56763:447;-1:-1:-1;;56763:447:0:o;58520:264::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;;;;;;;;;53656:14;;58613:9:::1;:26;;58605:57;;;::::0;-1:-1:-1;;;58605:57:0;;11576:2:1;58605:57:0::1;::::0;::::1;11558:21:1::0;11615:2;11595:18;;;11588:30;-1:-1:-1;;;11634:18:1;;;11627:48;11692:18;;58605:57:0::1;11374:342:1::0;58605:57:0::1;58673:20;:32:::0;;;58721:55:::1;58696:9:::0;58751:24:::1;58696:9:::0;58751:13:::1;:24::i;:::-;58721:55;::::0;;11895:25:1;;;11951:2;11936:18;;11929:34;;;;11868:18;58721:55:0::1;;;;;;;;58520:264:::0;:::o;57740:702::-;8793:10;57829:1;57799:27;;;:13;:27;;;;;;57791:64;;;;-1:-1:-1;;;57791:64:0;;12176:2:1;57791:64:0;;;12158:21:1;12215:2;12195:18;;;12188:30;-1:-1:-1;;;12234:18:1;;;12227:50;12294:18;;57791:64:0;11974:344:1;57791:64:0;57905:20;;57874:28;8793:10;55062:349;:::i;57874:28::-;:51;57866:99;;;;-1:-1:-1;;;57866:99:0;;12525:2:1;57866:99:0;;;12507:21:1;12564:2;12544:18;;;12537:30;12603:34;12583:18;;;12576:62;-1:-1:-1;;;12654:18:1;;;12647:33;12697:19;;57866:99:0;12323:399:1;57866:99:0;57976:14;57993:20;:18;:20::i;:::-;57976:37;;58041:1;58032:6;:10;58024:42;;;;-1:-1:-1;;;58024:42:0;;12929:2:1;58024:42:0;;;12911:21:1;12968:2;12948:18;;;12941:30;-1:-1:-1;;;12987:18:1;;;12980:49;13046:18;;58024:42:0;12727:343:1;58024:42:0;58130:4;58109:27;;;;:12;:27;;;;;;:36;;58139:6;;58109:36;:::i;:::-;58100:4;58079:27;;;;:12;:27;;;;;:66;58173:14;;:23;;58190:6;;58173:23;:::i;:::-;58156:14;:40;8793:10;58236:26;;;;:12;:26;;;;;;:35;;58265:6;;58236:35;:::i;:::-;8793:10;58207:26;;;;:12;:26;;;;;;;;:64;;;;58282:13;:27;;;;;;10142:15;58282:39;;58337:45;;548:25:1;;;8793:10:0;;58354:4;;-1:-1:-1;;;;;;;;;;;58337:45:0;521:18:1;58337:45:0;;;;;;;58398:36;;548:25:1;;;8793:10:0;;58398:36;;536:2:1;521:18;58398:36:0;;;;;;;57780:662;57740:702::o;40302:671::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;40418:3:::1;40404:10;:17;;40396:52;;;::::0;-1:-1:-1;;;40396:52:0;;13407:2:1;40396:52:0::1;::::0;::::1;13389:21:1::0;13446:2;13426:18;;;13419:30;-1:-1:-1;;;13465:18:1;;;13458:53;13528:18;;40396:52:0::1;13205:347:1::0;40396:52:0::1;-1:-1:-1::0;;;;;40468:16:0;::::1;;::::0;;;:11:::1;:16;::::0;;;;;::::1;;40467:17;40459:52;;;::::0;-1:-1:-1;;;40459:52:0;;13759:2:1;40459:52:0::1;::::0;::::1;13741:21:1::0;13798:2;13778:18;;;13771:30;13837:25;13817:18;;;13810:53;13880:18;;40459:52:0::1;13557:347:1::0;40459:52:0::1;-1:-1:-1::0;;;;;40524:16:0;::::1;;::::0;;;:11:::1;:16;::::0;;;;:23;;-1:-1:-1;;40524:23:0::1;40543:4;40524:23:::0;;::::1;::::0;;;40643:17:::1;::::0;:21:::1;::::0;::::1;:::i;:::-;40623:17;:41:::0;;;40709:33:::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;40709:33:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;40675:31:0;;;:12:::1;:31:::0;;;;;:67;;;;-1:-1:-1;;;;;;40675:67:0::1;::::0;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;40675:67:0;;::::1;::::0;40755:23;;:18:::1;:23:::0;;;;:30;;-1:-1:-1;;40755:30:0::1;::::0;::::1;::::0;;40796:28:::1;::::0;40709:33;;40796:17:::1;:28::i;:::-;-1:-1:-1::0;;;;;40840:18:0;::::1;40861:1;40840:18:::0;;;:13:::1;:18;::::0;;;;;:22;40837:34:::1;;40302:671:::0;;:::o;40837:34::-:1;10142:15:::0;-1:-1:-1;;;;;40881:18:0;::::1;;::::0;;;:13:::1;:18;::::0;;;;:30;40943:18:::1;::::0;:22:::1;::::0;40964:1:::1;40943:22;:::i;:::-;40922:18;:43:::0;44194:1:::1;40302:671:::0;;:::o;37667:338::-;37784:16;;;37798:1;37784:16;;;;;;;;37735:7;;;;37784:16;37798:1;37784:16;;;;;;;;;;-1:-1:-1;37784:16:0;37760:40;;37831:4;37813;37818:1;37813:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;37813:23:0;;;:7;;;;;;;;;;:23;;;;37857:15;;:22;;;-1:-1:-1;;;37857:22:0;;;;:15;;;;;:20;;:22;;;;;37813:7;;37857:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37847:4;37852:1;37847:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;37847:32:0;;;:7;;;;;;;;;:32;37919:15;;:48;;-1:-1:-1;;;37919:48:0;;37892:24;;37919:15;;;;;:29;;:48;;37949:11;;37962:4;;37919:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;37919:48:0;;;;;;;;;;;;:::i;:::-;37892:75;;37987:7;37995:1;37987:10;;;;;;;;:::i;:::-;;;;;;;37980:17;;;;37667:338;;;:::o;41777:521::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;41896:3:::1;41882:10;:17;;41874:52;;;::::0;-1:-1:-1;;;41874:52:0;;13407:2:1;41874:52:0::1;::::0;::::1;13389:21:1::0;13446:2;13426:18;;;13419:30;-1:-1:-1;;;13465:18:1;;;13458:53;13528:18;;41874:52:0::1;13205:347:1::0;41874:52:0::1;-1:-1:-1::0;;;;;41945:16:0;::::1;;::::0;;;:11:::1;:16;::::0;;;;;::::1;;41937:44;;;::::0;-1:-1:-1;;;41937:44:0;;16078:2:1;41937:44:0::1;::::0;::::1;16060:21:1::0;16117:2;16097:18;;;16090:30;-1:-1:-1;;;16136:18:1;;;16129:46;16192:18;;41937:44:0::1;15876:340:1::0;41937:44:0::1;42014:1;41994:297;42026:17;;42017:5;:26;41994:297;;42127:19;::::0;;;:12:::1;:19;::::0;;;;:28;-1:-1:-1;;;;;42127:35:0;;::::1;:28:::0;::::1;:35;42124:156;;;42196:19;::::0;;;:12:::1;:19;::::0;;;;:31:::1;;:44:::0;-1:-1:-1;41777:521:0:o;42124:156::-:1;42045:7:::0;::::1;::::0;::::1;:::i;:::-;;;;41994:297;;;;41777:521:::0;;:::o;55561:265::-;55618:7;55627;55636:4;55642;55648;55654;55660;55690:19;55705:3;55690:14;:19::i;:::-;-1:-1:-1;;;;;55711:17:0;;;;;;:12;:17;;;;;;55730:16;55724:3;55730:11;:16::i;:::-;-1:-1:-1;;;;;44887:12:0;;;;44858:4;44887:12;;;:7;:12;;;;;;;;;46712:8;:13;;;;;;;55682:136;;;;44887:12;-1:-1:-1;44902:1:0;-1:-1:-1;;;;;44772:16:0;;;;-1:-1:-1;46729:1:0;46712:18;;;-1:-1:-1;46872:18:0;;;;-1:-1:-1;55682:136:0;-1:-1:-1;;55561:265:0:o;20063:166::-;20138:4;20160:39;8793:10;20183:7;20192:6;20160:8;:39::i;:::-;-1:-1:-1;20217:4:0;20063:166;;;;;:::o;24773:1221::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;24879:16:::1;;24869:6;:26;;24861:67;;;::::0;-1:-1:-1;;;24861:67:0;;16423:2:1;24861:67:0::1;::::0;::::1;16405:21:1::0;16462:2;16442:18;;;16435:30;16501;16481:18;;;16474:58;16549:18;;24861:67:0::1;16221:352:1::0;24861:67:0::1;24947:26;:24;:26::i;:::-;24939:78;;;;-1:-1:-1::0;;;24939:78:0::1;;;;;;;:::i;:::-;25055:21;25087:24;25104:6:::0;25087:16:::1;:24::i;:::-;-1:-1:-1::0;25122:26:0::1;25151:38;25175:14:::0;25151:21:::1;:38;:::i;:::-;25122:67:::0;-1:-1:-1;25204:23:0;25200:36:::1;;25229:7;;24773:1221:::0;:::o;25200:36::-:1;25299:4;25278:27;::::0;;;:12:::1;:27;::::0;;;;;:36:::1;::::0;25308:6;;25278:36:::1;:::i;:::-;25269:4;25248:27;::::0;;;:12:::1;:27;::::0;;;;:66;25344:16:::1;::::0;:25:::1;::::0;25363:6;;25344:25:::1;:::i;:::-;25325:16;:44:::0;25385:25:::1;::::0;548::1;;;25385::0::1;::::0;536:2:1;521:18;25385:25:0::1;;;;;;;25514:18:::0;25563:1:::1;25543:294;25575:17;;25566:5;:26;25543:294;;25627:15;25667:19:::0;;;:12:::1;:19;::::0;;;;:31:::1;;::::0;25702:3:::1;::::0;25646:52:::1;::::0;:18;:52:::1;:::i;:::-;25645:60;;;;:::i;:::-;25741:19;::::0;;;:12:::1;:19;::::0;;;;:28;25627:78;;-1:-1:-1;25720:59:0::1;::::0;-1:-1:-1;;;;;25741:28:0::1;25627:78:::0;25720:20:::1;:59::i;:::-;25806:19;25818:7:::0;25806:9;:19:::1;:::i;:::-;25794:31;;25612:225;25594:7;;;;;:::i;:::-;;;;25543:294;;;-1:-1:-1::0;25922:13:0;;25919:67:::1;;25937:49;25966:7;9272::::0;9304:6;-1:-1:-1;;;;;9304:6:0;;9234:84;25966:7:::1;25976:9;25937:20;:49::i;:::-;24850:1144;;;44194:1;24773:1221:::0;:::o;45306:511::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44772:12:0;;44743:4;44772:12;;;:7;:12;;;;;;45379:25:::1;;24773:1221:::0;:::o;45379:25::-:1;-1:-1:-1::0;;;;;45416:12:0;::::1;45431:1;45416:12:::0;;;:7:::1;:12;::::0;;;;:16;45463:1:::1;45443:367;45475:15;;45466:5;:24;45443:367;;45528:18;::::0;;;:11:::1;:18;::::0;;;;;-1:-1:-1;;;;;45528:25:0;;::::1;:18:::0;::::1;:25;45525:274;;;45686:15;::::0;;45674:28:::1;::::0;;;:11:::1;:28;::::0;;;;;;45653:18;;;;;:49;;-1:-1:-1;;;;;;45653:49:0::1;-1:-1:-1::0;;;;;45674:28:0;;::::1;45653:49:::0;;;::::1;::::0;;45739:15;:19:::1;::::0;45674:28;;45739:19:::1;:::i;:::-;45721:15;:37:::0;-1:-1:-1;24773:1221:0;:::o;45525:274::-:1;45492:7:::0;::::1;::::0;::::1;:::i;:::-;;;;45443:367;;19365:107:::0;19420:7;11160:13;10583:1;11160:2;:13;:::i;:::-;11148:25;;:9;:25;:::i;:::-;19445:19;;19365:107;:::o;46947:305::-;45870:25;8793:10;45882:12;8692:120;45870:25;:54;;;-1:-1:-1;45899:25:0;8793:10;40146:107;:::i;45899:25::-;45870:79;;;-1:-1:-1;45928:21:0;8793:10;45936:12;8692:120;45928:21;45862:115;;;;-1:-1:-1;;;45862:115:0;;18966:2:1;45862:115:0;;;18948:21:1;19005:2;18985:18;;;18978:30;-1:-1:-1;;;19024:18:1;;;19017:53;19087:18;;45862:115:0;18764:347:1;45862:115:0;-1:-1:-1;;;;;46551:13:0;;46522:4;46551:13;;;:8;:13;;;;;;47031:144:::1;;47093:16;::::0;:20:::1;::::0;47112:1:::1;47093:20;:::i;:::-;47074:16;:39:::0;;;47128:29:::1;::::0;;;:11:::1;:29;::::0;;;;:35;;-1:-1:-1;;;;;;47128:35:0::1;-1:-1:-1::0;;;;;47128:35:0;::::1;;::::0;;47031:144:::1;47188:4;47185:59;;;-1:-1:-1::0;;;;;;47194:13:0::1;;::::0;;;:8:::1;:13;::::0;;;;47210:1:::1;47194:17:::0;;40302:671::o;47185:59::-:1;-1:-1:-1::0;;;;;;47227:13:0::1;;::::0;;;:8:::1;:13;::::0;;;;47243:1:::1;47227:17:::0;;46947:305::o;20237:380::-;-1:-1:-1;;;;;20377:19:0;;20337:4;20377:19;;;:11;:19;;;;;;;;8793:10;20377:33;;;;;;;;20367:43;;;20359:96;;;;-1:-1:-1;;;20359:96:0;;;;;;;:::i;:::-;20466:36;20476:6;20484:9;20495:6;20466:9;:36::i;:::-;-1:-1:-1;;;;;20544:19:0;;;;;;:11;:19;;;;;;;;8793:10;20544:33;;;;;;;;;20513:74;;20522:6;;20544:42;;20580:6;;20544:42;:::i;:::-;20513:8;:74::i;:::-;-1:-1:-1;20605:4:0;20237:380;;;;;:::o;48952:415::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;49093:7;49114:12;49111:31:::1;;-1:-1:-1::0;49137:5:0::1;49111:31;49179:21;::::0;:25:::1;::::0;49203:1:::1;49179:25;:::i;:::-;49155:21;:49:::0;;;-1:-1:-1;;;;;49215:26:0;;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:50;;;49315:44;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;;::::0;;;;;;;::::1;;::::0;;;;;;;;;;;;49276:36;;;:13:::1;:36:::0;;;;;;:83;;;;;::::1;-1:-1:-1::0;;;;;;49276:83:0;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;::::1;;;;-1:-1:-1::0;;49276:83:0;::::1;;::::0;;;;-1:-1:-1;;49276:83:0;;;;;;;::::1;::::0;;;-1:-1:-1;49276:83:0;::::1;::::0;;::::1;::::0;48952:415::o;52328:1193::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;52428:1:::1;52407:18;;:22;52399:59;;;::::0;-1:-1:-1;;;52399:59:0;;19727:2:1;52399:59:0::1;::::0;::::1;19709:21:1::0;19766:2;19746:18;;;19739:30;19805:26;19785:18;;;19778:54;19849:18;;52399:59:0::1;19525:348:1::0;52399:59:0::1;52471:22;52517:18;:16;:18::i;:::-;52496;;:39;;;;:::i;:::-;52471:64:::0;-1:-1:-1;52601:1:0::1;52581:688;52613:21;;52604:5;:30;52581:688;;52672:20;::::0;;;:13:::1;:20;::::0;;;;:29:::1;;::::0;::::1;;52669:589;;;52735:14;52769:20:::0;;;:13:::1;:20;::::0;;;;:28:::1;;::::0;52752:45:::1;::::0;:14;:45:::1;:::i;:::-;52867:4;52846:27;::::0;;;:12:::1;:27;::::0;;;;;52735:62;;-1:-1:-1;52846:36:0::1;::::0;52735:62;;52846:36:::1;:::i;:::-;52837:4;52816:27;::::0;;;:12:::1;:27;::::0;;;;:66;52922:18:::1;::::0;:27:::1;::::0;52943:6;;52922:27:::1;:::i;:::-;52901:18;:48:::0;53013:42:::1;53026:20:::0;;;:13:::1;:20;::::0;;;;;;;:28;-1:-1:-1;;;;;53026:28:0::1;53013:42:::0;;:12:::1;:42:::0;;;;;;:51:::1;::::0;53058:6;;53013:51:::1;:::i;:::-;52968:42;52981:20:::0;;;:13:::1;:20;::::0;;;;;;;:28;;-1:-1:-1;;;;;52981:28:0::1;52968:42:::0;;:12:::1;:42:::0;;;;;:96;;;;53117:20;;;;;;:31:::1;;::::0;:40:::1;::::0;53151:6;;53117:40:::1;:::i;:::-;53083:20;::::0;;;:13:::1;:20;::::0;;;;;;;;:31:::1;::::0;::::1;:74:::0;;;;53205:28;;53181:61;;548:25:1;;;-1:-1:-1;;;;;53205:28:0;;::::1;::::0;53198:4:::1;::::0;-1:-1:-1;;;;;;;;;;;53181:61:0;521:18:1;53181:61:0::1;;;;;;;52716:542;52669:589;52636:7:::0;::::1;::::0;::::1;:::i;:::-;;;;52581:688;;;-1:-1:-1::0;53353:18:0::1;::::0;:22;53350:164:::1;;53447:18;;53424:20;;:41;;;;:::i;:::-;53401:20;:64:::0;53501:1:::1;53480:18;:22:::0;52388:1133:::1;52328:1193::o:0;55834:222::-;10369:13;;-1:-1:-1;;;;;10369:13:0;8793:10;-1:-1:-1;;;;;10353:29:0;;10345:73;;;;-1:-1:-1;;;10345:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;55921:18:0;::::1;55942:1;55921:18:::0;;;:13:::1;:18;::::0;;;;;:22;55918:34:::1;;24773:1221:::0;:::o;55918:34::-:1;10142:15:::0;-1:-1:-1;;;;;55964:18:0;::::1;;::::0;;;:13:::1;:18;::::0;;;;:30;56026:18:::1;::::0;:22:::1;::::0;56047:1:::1;56026:22;:::i;:::-;56005:18;:43:::0;55834:222;:::o;20923:::-;8793:10;21013:4;21067:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21067:34:0;;;;;;;;;;21013:4;;21035:80;;21058:7;;21067:47;;21104:10;;21067:47;:::i;50460:345::-;50508:7;;50582:1;50562:212;50594:21;;50585:5;:30;50562:212;;50653:20;;;;:13;:20;;;;;:28;;;;;;;;:61;;;;-1:-1:-1;50685:20:0;;;;:13;:20;;;;;:29;;;;;50653:61;50650:112;;;50734:20;;;;:13;:20;;;;;:28;;;50725:37;;:6;:37;:::i;:::-;50716:46;;50650:112;50617:7;;;;:::i;:::-;;;;50562:212;;;-1:-1:-1;50791:6:0;50460:345;-1:-1:-1;50460:345:0:o;27439:1096::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;27548:16:::1;;27538:6;:26;;27530:60;;;::::0;-1:-1:-1;;;27530:60:0;;20440:2:1;27530:60:0::1;::::0;::::1;20422:21:1::0;20479:2;20459:18;;;20452:30;-1:-1:-1;;;20498:18:1;;;20491:51;20559:18;;27530:60:0::1;20238:345:1::0;27530:60:0::1;27654:12;27669:10;27678:1;27669:6:::0;:10:::1;:::i;:::-;27654:25:::0;-1:-1:-1;27690:17:0::1;27710:13;27654:25:::0;27710:6;:13:::1;:::i;:::-;27690:33:::0;-1:-1:-1;28026:21:0::1;28095:22;28112:4:::0;28095:16:::1;:22::i;:::-;28092:436;;;28143:18;28164:38;28188:14:::0;28164:21:::1;:38;:::i;:::-;28143:59:::0;-1:-1:-1;28220:14:0;;28217:300:::1;;28319:4;28298:27;::::0;;;:12:::1;:27;::::0;;;;;:36:::1;::::0;28328:6;;28298:36:::1;:::i;:::-;28289:4;28268:27;::::0;;;:12:::1;:27;::::0;;;;:66;28372:16:::1;::::0;:25:::1;::::0;28391:6;;28372:25:::1;:::i;:::-;28353:16;:44:::0;28416:35:::1;28429:9:::0;28440:10;28416:12:::1;:35::i;:::-;28475:26;::::0;548:25:1;;;28475:26:0::1;::::0;536:2:1;521:18;28475:26:0::1;;;;;;;28217:300;28128:400;27519:1016;;;27439:1096:::0;:::o;37289:161::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37369:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;37369:34:0::1;37399:4;37369:34;::::0;;37419:23;;5714:51:1;;;37419:23:0::1;::::0;5687:18:1;37419:23:0::1;5568:203:1::0;48606:338:0;48657:16;48691:24;48732:21;;48718:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48718:36:0;-1:-1:-1;48691:63:0;-1:-1:-1;48785:1:0;48765:147;48797:21;;48788:5;:30;48765:147;;48872:20;;;;:13;:20;;;;;:28;-1:-1:-1;;;;;48872:28:0;48853:7;48861;48872:28;48886:5;48861:7;:::i;:::-;48853:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;48853:47:0;;;:16;;;;;;;;;;;:47;48820:7;;;;:::i;:::-;;;;48765:147;;42306:1738;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;42388:26:::1;:24;:26::i;:::-;42380:78;;;;-1:-1:-1::0;;;42380:78:0::1;;;;;;;:::i;:::-;12703:8;42552:18;;:40;;;;:::i;:::-;10142:15:::0;42540:52:::1;42537:64;;;42306:1738::o:0;42537:64::-:1;42613:21;42649:15:::0;42679:235:::1;42702:3;42686:13;:19;42685:111;;;;-1:-1:-1::0;42768:25:0::1;42786:7:::0;12823::::1;42768:25;:::i;:::-;12703:8;42724:18;;:40;;;;:::i;:::-;:70;;;;:::i;:::-;10142:15:::0;42711:84:::1;42685:111;42679:235;;;42838:40;12971:2;42838:13:::0;:40:::1;:::i;:::-;42822:56:::0;-1:-1:-1;42893:9:0;::::1;::::0;::::1;:::i;:::-;;;;42679:235;;;42939:1;42929:7;:11;42926:23;;;42942:7;;42306:1738::o:0;42926:23::-:1;43310;43383:3;12971:2;11265:13;10583:1;12971:2:::0;11265:13:::1;:::i;:::-;11253:25;::::0;:9:::1;:25;:::i;:::-;43337:42;;;;:::i;:::-;43336:50;;;;:::i;:::-;43310:76:::0;-1:-1:-1;43397:26:0::1;43463:25;43310:76:::0;43463:7;:25:::1;:::i;:::-;11265:13;10583:1;11265:2;:13;:::i;:::-;11253:25;::::0;:9:::1;:25;:::i;:::-;43444:45;;;;:::i;:::-;43426:14;;:64;;;;:::i;:::-;43397:93:::0;-1:-1:-1;43556:1:0::1;43536:501;43568:17;;43559:5;:26;43536:501;;43620:14;43659:19:::0;;;:12:::1;:19;::::0;;;;:31:::1;;::::0;43694:3:::1;::::0;43638:52:::1;::::0;:18;:52:::1;:::i;:::-;43637:60;;;;:::i;:::-;43763:4;43742:27;::::0;;;:12:::1;:27;::::0;;;;;43620:77;;-1:-1:-1;43742:36:0::1;::::0;43620:77;;43742:36:::1;:::i;:::-;43733:4;43712:27;::::0;;;:12:::1;:27;::::0;;;;:66;43810:14:::1;::::0;:23:::1;::::0;43827:6;;43810:23:::1;:::i;:::-;43793:14;:40:::0;43893:42:::1;43906:19:::0;;;:12:::1;:19;::::0;;;;;;;:28;-1:-1:-1;;;;;43906:28:0::1;43893:42:::0;;:12:::1;:42:::0;;;;;;:51:::1;::::0;43938:6;;43893:51:::1;:::i;:::-;43848:42;43861:19:::0;;;:12:::1;:19;::::0;;;;;;;:28;;-1:-1:-1;;;;;43861:28:0;;::::1;43848:42:::0;;:12:::1;:42:::0;;;;;:96;;;;43988:19;;;;;;;:28;;43964:61;;548:25:1;;;43988:28:0;::::1;::::0;43981:4:::1;::::0;-1:-1:-1;;;;;;;;;;;43964:61:0;521:18:1;43964:61:0::1;;;;;;;-1:-1:-1::0;43587:7:0;::::1;::::0;::::1;:::i;:::-;;;;43536:501;;54769:226:::0;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;54865:14:::1;::::0;:18:::1;::::0;54882:1:::1;54865:18;:::i;:::-;54848:14;:35:::0;;;54894:22:::1;::::0;;;:6:::1;:22;::::0;;;;;;:34;;;54961:14;54944:43;;::::1;::::0;::::1;::::0;54919:9;;11895:25:1;;;11951:2;11936:18;;11929:34;11883:2;11868:18;;11721:248;38441:783:0;38519:13;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;38550:35:::1;38607:7;38550:65;;38654:16;-1:-1:-1::0;;;;;38654:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;38636:53:0::1;;38698:4;38705:16;-1:-1:-1::0;;;;;38705:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38636:93;::::0;-1:-1:-1;;;;;;38636:93:0::1;::::0;;;;;;-1:-1:-1;;;;;20818:15:1;;;38636:93:0::1;::::0;::::1;20800:34:1::0;20870:15;;20850:18;;;20843:43;20735:18;;38636:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38628:101:::0;-1:-1:-1;;;;;;38744:19:0;::::1;38740:200;;38850:16;-1:-1:-1::0;;;;;38850:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;38832:56:0::1;;38897:4;38904:16;-1:-1:-1::0;;;;;38904:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38832:96;::::0;-1:-1:-1;;;;;;38832:96:0::1;::::0;;;;;;-1:-1:-1;;;;;20818:15:1;;;38832:96:0::1;::::0;::::1;20800:34:1::0;20870:15;;20850:18;;;20843:43;20735:18;;38832:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38824:104;;38740:200;39010:13;:21:::0;;-1:-1:-1;;;;;39010:21:0;;::::1;-1:-1:-1::0;;;;;;39010:21:0;;::::1;;::::0;;39042:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;39010:13:::1;39087:44:::0;;;:18:::1;:44;::::0;;;;;;:51;;-1:-1:-1;;39087:51:0::1;39010:21:::0;39087:51:::1;::::0;;39175:15;39201:13;;39154:62;;::::1;::::0;::::1;::::0;39175:15;;::::1;::::0;39201:13:::1;::::0;-1:-1:-1;;;;;20818:15:1;;;20800:34;;20870:15;;20865:2;20850:18;;20843:43;20750:2;20735:18;;20588:304;39154:62:0::1;;;;;;;;38539:685;38441:783:::0;;;:::o;31879:1621::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;15420:2:::1;32168:12;:29;;:63;;;;;15420:2;32201:13;:30;;32168:63;32160:101;;;::::0;-1:-1:-1;;;32160:101:0;;21099:2:1;32160:101:0::1;::::0;::::1;21081:21:1::0;21138:2;21118:18;;;21111:30;21177:27;21157:18;;;21150:55;21222:18;;32160:101:0::1;20897:349:1::0;32160:101:0::1;15748:2;32280:16;:37;;:79;;;;;15748:2;32321:17;:38;;32280:79;32272:121;;;::::0;-1:-1:-1;;;32272:121:0;;21453:2:1;32272:121:0::1;::::0;::::1;21435:21:1::0;21492:2;21472:18;;;21465:30;21531:31;21511:18;;;21504:59;21580:18;;32272:121:0::1;21251:353:1::0;32272:121:0::1;16065:2;32412:9;:23;;:51;;;;;16065:2;32439:10;:24;;32412:51;32404:86;;;::::0;-1:-1:-1;;;32404:86:0;;21811:2:1;32404:86:0::1;::::0;::::1;21793:21:1::0;21850:2;21830:18;;;21823:30;-1:-1:-1;;;21869:18:1;;;21862:52;21931:18;;32404:86:0::1;21609:346:1::0;32404:86:0::1;16909:2;32509:12;:29;;:63;;;;;16909:2;32542:13;:30;;32509:63;32501:101;;;::::0;-1:-1:-1;;;32501:101:0;;22162:2:1;32501:101:0::1;::::0;::::1;22144:21:1::0;22201:2;22181:18;;;22174:30;22240:27;22220:18;;;22213:55;22285:18;;32501:101:0::1;21960:349:1::0;32501:101:0::1;17227:2;32621:10;:25;;:55;;;;;17227:2;32650:11;:26;;32621:55;32613:91;;;::::0;-1:-1:-1;;;32613:91:0;;22516:2:1;32613:91:0::1;::::0;::::1;22498:21:1::0;22555:2;22535:18;;;22528:30;22594:25;22574:18;;;22567:53;22637:18;;32613:91:0::1;22314:347:1::0;32613:91:0::1;17294:2;32723:10;:25;;:55;;;;;17294:2;32752:11;:26;;32723:55;32715:93;;;::::0;-1:-1:-1;;;32715:93:0;;22868:2:1;32715:93:0::1;::::0;::::1;22850:21:1::0;22907:2;22887:18;;;22880:30;22946:27;22926:18;;;22919:55;22991:18;;32715:93:0::1;22666:349:1::0;32715:93:0::1;32821:16;:31:::0;;;32863:17:::1;:33:::0;;;32909:20:::1;:39:::0;;;32959:21:::1;:41:::0;;;33013:13:::1;:25:::0;;;33049:14:::1;:27:::0;;;33089:16:::1;:31:::0;;;33131:17:::1;:33:::0;;;33177:14:::1;:27:::0;;;33215:15:::1;:29:::0;;;33262:104:::1;::::0;;9187:25:1;;;9228:18;;;9221:34;;;9271:18;;9264:34;;;9329:2;9314:18;;9307:34;;;9372:3;9357:19;;9350:35;;;33262:104:0::1;::::0;9174:3:1;9159:19;33262:104:0::1;;;;;;;33399:17;::::0;33418:21:::1;::::0;33441:14:::1;::::0;33457:17:::1;::::0;33476:15:::1;::::0;33382:110:::1;::::0;;9187:25:1;;;9243:2;9228:18;;9221:34;;;;9271:18;;;9264:34;;;;9329:2;9314:18;;9307:34;9372:3;9357:19;;9350:35;33382:110:0;::::1;::::0;;;;9174:3:1;33382:110:0;;::::1;31879:1621:::0;;;;;;;;;;:::o;26977:110::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;27056:14:::1;:23:::0;26977:110::o;57218:447::-;-1:-1:-1;;;;;57321:18:0;;57277:7;57321:18;;;:13;:18;;;;;;57364:1;57353:12;;57350:25;;;-1:-1:-1;57374:1:0;;57218:447;-1:-1:-1;;57218:447:0:o;57350:25::-;57388:17;57440:1;57420:211;57452:22;;57443:5;:31;57420:211;;57512:21;;;;:14;:21;;;;;:35;:46;-1:-1:-1;57509:110:0;;;57584:21;;;;:14;:21;;;;;:35;;;57572:47;;:9;:47;:::i;:::-;57560:59;;57509:110;57476:7;;;;:::i;:::-;;;;57420:211;;;-1:-1:-1;57648:9:0;57218:447;-1:-1:-1;;;57218:447:0:o;44329:320::-;44376:16;44410:25;44452:17;;44438:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;44438:32:0;;;;;;;;;;;;;;;-1:-1:-1;44410:60:0;-1:-1:-1;44501:1:0;44481:135;44513:17;;44504:5;:26;44481:135;;44585:19;;;;:12;:19;;;;;;;;;44565:39;;;;;;;;;;-1:-1:-1;;;;;44565:39:0;;;;;;;;;;;;;;;:8;;44574:7;;44598:5;44574:7;:::i;:::-;44565:17;;;;;;;;:::i;:::-;;;;;;:39;;;;44532:7;;;;;:::i;:::-;;;;44481:135;;33723:335;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;16137:6:::1;33827:18;;:36;;;;:::i;:::-;10142:15:::0;33815:48:::1;33807:89;;;::::0;-1:-1:-1;;;33807:89:0;;23222:2:1;33807:89:0::1;::::0;::::1;23204:21:1::0;23261:2;23241:18;;;23234:30;23300;23280:18;;;23273:58;23348:18;;33807:89:0::1;23020:352:1::0;33807:89:0::1;33924:3;33915:6;:12;33907:61;;;::::0;-1:-1:-1;;;33907:61:0;;23579:2:1;33907:61:0::1;::::0;::::1;23561:21:1::0;23618:2;23598:18;;;23591:30;23657:34;23637:18;;;23630:62;-1:-1:-1;;;23708:18:1;;;23701:34;23752:19;;33907:61:0::1;23377:400:1::0;33907:61:0::1;33979:14;:23:::0;;;34018:32:::1;::::0;548:25:1;;;34018:32:0::1;::::0;536:2:1;521:18;34018:32:0::1;402:177:1::0;48285:313:0;48331:16;48365:24;48406:16;;48392:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48392:31:0;-1:-1:-1;48365:58:0;-1:-1:-1;48454:1:0;48434:132;48466:16;;48457:5;:25;48434:132;;48536:18;;;;:11;:18;;;;;;-1:-1:-1;;;;;48536:18:0;48517:7;48525;48536:18;48548:5;48525:7;:::i;:::-;48517:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;48517:37:0;;;:16;;;;;;;;;;;:37;48484:7;;;;:::i;:::-;;;;48434:132;;9853:209;9927:9;;-1:-1:-1;;;;;9927:9:0;8793:10;-1:-1:-1;;;;;9911:25:0;;9903:34;;;;;;9982:9;;;9974:6;;9953:39;;-1:-1:-1;;;;;9982:9:0;;;;9974:6;;;;9953:39;;;10012:9;;;;10003:18;;-1:-1:-1;;;;;;10003:18:0;;;-1:-1:-1;;;;;10012:9:0;;10003:18;;;;10032:22;;;9853:209::o;47311:295::-;45870:25;8793:10;45882:12;8692:120;45870:25;:54;;;-1:-1:-1;45899:25:0;8793:10;40146:107;:::i;45899:25::-;45870:79;;;-1:-1:-1;45928:21:0;8793:10;45936:12;8692:120;45928:21;45862:115;;;;-1:-1:-1;;;45862:115:0;;18966:2:1;45862:115:0;;;18948:21:1;19005:2;18985:18;;;18978:30;-1:-1:-1;;;19024:18:1;;;19017:53;19087:18;;45862:115:0;18764:347:1;45862:115:0;47382:25:::1;8793:10:::0;40146:107;:::i;47382:25::-:1;47379:105;;;47433:18;47447:3;47433:13;:18::i;47379:105::-;47505:16;47517:3;47505:11;:16::i;:::-;47504:17;47496:73;;;::::0;-1:-1:-1;;;47496:73:0;;23984:2:1;47496:73:0::1;::::0;::::1;23966:21:1::0;24023:2;24003:18;;;23996:30;24062:34;24042:18;;;24035:62;-1:-1:-1;;;24113:18:1;;;24106:41;24164:19;;47496:73:0::1;23782:407:1::0;47496:73:0::1;47580:18;47594:3;47580:13;:18::i;34253:185::-:0;34301:7;34414:15;;34394:17;;34377:14;;34353:21;;34333:17;;:41;;;;:::i;:::-;:58;;;;:::i;:::-;:78;;;;:::i;:::-;:96;;;;:::i;39541:418::-;39632:10;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39668:23:0;::::1;39686:4;39668:23;;39660:71;;;::::0;-1:-1:-1;;;39660:71:0;;24396:2:1;39660:71:0::1;::::0;::::1;24378:21:1::0;24435:2;24415:18;;;24408:30;24474:34;24454:18;;;24447:62;-1:-1:-1;;;24525:18:1;;;24518:33;24568:19;;39660:71:0::1;24194:399:1::0;39660:71:0::1;39769:39;::::0;-1:-1:-1;;;39769:39:0;;39802:4:::1;39769:39;::::0;::::1;5714:51:1::0;39742:24:0::1;::::0;-1:-1:-1;;;;;39769:24:0;::::1;::::0;::::1;::::0;5687:18:1;;39769:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39827:46;::::0;-1:-1:-1;;;39827:46:0;;-1:-1:-1;;;;;24979:32:1;;;39827:46:0::1;::::0;::::1;24961:51:1::0;25028:18;;;25021:34;;;39742:66:0;;-1:-1:-1;39827:23:0;;::::1;::::0;::::1;::::0;24934:18:1;;39827:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39819:54;;39887:5;39884:67;;;39899:52;::::0;;-1:-1:-1;;;;;25574:15:1;;;25556:34;;25626:15;;25621:2;25606:18;;25599:43;25658:18;;;25651:34;;;39899:52:0::1;::::0;25506:2:1;25491:18;39899:52:0::1;;;;;;;39649:310;39541:418:::0;;;;:::o;35607:187::-;10369:13;;-1:-1:-1;;;;;10369:13:0;8793:10;-1:-1:-1;;;;;10353:29:0;;10345:73;;;;-1:-1:-1;;;10345:73:0;;;;;;;:::i;:::-;35718:27:::1;35728:4;35734:2;35738:6;35718:9;:27::i;:::-;35775:2;-1:-1:-1::0;;;;;35761:25:0::1;35769:4;-1:-1:-1::0;;;;;35761:25:0::1;;35779:6;35761:25;;;;548::1::0;;536:2;521:18;;402:177;35761:25:0::1;;;;;;;;35607:187:::0;;;:::o;56133:622::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;56239:1:::1;56215:21;;:25;:47;;;;;56261:1;56244:14;;:18;56215:47;56207:81;;;::::0;-1:-1:-1;;;56207:81:0;;25898:2:1;56207:81:0::1;::::0;::::1;25880:21:1::0;25937:2;25917:18;;;25910:30;-1:-1:-1;;;25956:18:1;;;25949:51;26017:18;;56207:81:0::1;25696:345:1::0;56207:81:0::1;56328:1;56307:18;;:22;56299:57;;;::::0;-1:-1:-1;;;56299:57:0;;26248:2:1;56299:57:0::1;::::0;::::1;26230:21:1::0;26287:2;26267:18;;;26260:30;-1:-1:-1;;;26306:18:1;;;26299:52;26368:18;;56299:57:0::1;26046:346:1::0;56299:57:0::1;56367:14;56408:18;;56384:21;;:42;;;;:::i;:::-;56367:59;;56495:18;;56486:6;:27;;;;:::i;:::-;56461:21;;:53;;;;:::i;:::-;56437:21;:77:::0;56587:22:::1;::::0;:26:::1;::::0;56612:1:::1;56587:26;:::i;:::-;56562:22;:51:::0;56665:28:::1;::::0;;;;::::1;::::0;;;;10142:15;56665:28;;::::1;::::0;;::::1;::::0;;;56639:22:::1;::::0;-1:-1:-1;56624:38:0;;;:14:::1;:38:::0;;;;;:69;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;56709:38:::1;56665:28:::0;10142:15;56737:9:::1;10070:95:::0;38197:116;38260:7;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;-1:-1:-1;38292:13:0::1;::::0;-1:-1:-1;;;;;38292:13:0::1;38197:116:::0;:::o;39967:131::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;40058:13:::1;:32:::0;;-1:-1:-1;;;;;;40058:32:0::1;-1:-1:-1::0;;;;;40058:32:0;;;::::1;::::0;;;::::1;::::0;;39967:131::o;50813:1507::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;50910:1:::1;50894:13;;:17;50886:72;;;::::0;-1:-1:-1;;;50886:72:0;;26599:2:1;50886:72:0::1;::::0;::::1;26581:21:1::0;26638:2;26618:18;;;26611:30;26677:34;26657:18;;;26650:62;-1:-1:-1;;;26728:18:1;;;26721:40;26778:19;;50886:72:0::1;26397:406:1::0;50886:72:0::1;51084:13;::::0;:17:::1;::::0;51100:1:::1;51084:17;:::i;:::-;51066:36;::::0;14234:7:::1;51066:36;:::i;:::-;51044:18;;:59;;;;:::i;:::-;10142:15:::0;51032:71:::1;51029:83;;;42306:1738::o:0;51029:83::-:1;51140:13;::::0;:17:::1;::::0;51156:1:::1;51140:17;:::i;:::-;51124:13;:33:::0;;;51232:14:::1;::::0;51170:24:::1;::::0;51251:3:::1;::::0;51216:30:::1;::::0;::::1;:::i;:::-;11372:13;10583:1;11372:2;:13;:::i;:::-;11360:25;::::0;:9:::1;:25;:::i;:::-;51198:49;;;;:::i;:::-;51197:57;;;;:::i;:::-;51170:84;;51265:22;51309:17;:15;:17::i;:::-;51290:36;::::0;:16;:36:::1;:::i;:::-;51265:61:::0;-1:-1:-1;51392:1:0::1;51372:677;51404:21;;51395:5;:30;51372:677;;51463:20;::::0;;;:13:::1;:20;::::0;;;;:28:::1;;::::0;::::1;::::0;::::1;;;51460:578;;;51525:14;51559:20:::0;;;:13:::1;:20;::::0;;;;:28:::1;;::::0;51542:45:::1;::::0;:14;:45:::1;:::i;:::-;51651:42;51664:20:::0;;;:13:::1;:20;::::0;;;;;;;:28;-1:-1:-1;;;;;51664:28:0::1;51651:42:::0;;:12:::1;:42:::0;;;;;;51525:62;;-1:-1:-1;51651:51:0::1;::::0;51525:62;;51651:51:::1;:::i;:::-;51606:42;51619:20:::0;;;:13:::1;:20;::::0;;;;;;;:28;-1:-1:-1;;;;;51619:28:0::1;51606:42:::0;;:12:::1;:42:::0;;;;;;:96;;;;51772:4:::1;51751:27:::0;;;;:36:::1;::::0;51781:6;;51751:36:::1;:::i;:::-;51742:4;51721:27;::::0;;;:12:::1;:27;::::0;;;;:66;51822:13:::1;::::0;:22:::1;::::0;51838:6;;51822:22:::1;:::i;:::-;51806:13;:38:::0;51897:20:::1;::::0;;;:13:::1;:20;::::0;;;;:31:::1;;::::0;:40:::1;::::0;51931:6;;51897:40:::1;:::i;:::-;51863:20;::::0;;;:13:::1;:20;::::0;;;;;;;;:31:::1;::::0;::::1;:74:::0;;;;51985:28;;51961:61;;548:25:1;;;-1:-1:-1;;;;;51985:28:0;;::::1;::::0;51978:4:::1;::::0;-1:-1:-1;;;;;;;;;;;51961:61:0;521:18:1;51961:61:0::1;;;;;;;51506:532;51460:578;51427:7:::0;::::1;::::0;::::1;:::i;:::-;;;;51372:677;;;;52162:1;52146:13;;:17;:38;;;;;52183:1;52167:13;;:17;52146:38;52143:170;;;52256:13;;52233:20;;:36;;;;:::i;:::-;52210:20;:59:::0;52300:1:::1;52284:13;:17:::0;50875:1445:::1;;50813:1507::o:0;34066:179::-;34113:7;34222:14;;34203:16;;34187:13;;34164:20;;34145:16;;:39;;;;:::i;44960:296::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44772:12:0;;44743:4;44772:12;;;:7;:12;;;;;;45041:140:::1;;45101:15;::::0;:19:::1;::::0;45119:1:::1;45101:19;:::i;:::-;45083:15;:37:::0;;;45135:28:::1;::::0;;;:11:::1;:28;::::0;;;;:34;;-1:-1:-1;;;;;;45135:34:0::1;-1:-1:-1::0;;;;;45135:34:0;::::1;;::::0;;45041:140:::1;45194:4;45191:57;;;-1:-1:-1::0;;;;;;45200:12:0::1;;::::0;;;:7:::1;:12;::::0;;;;45215:1:::1;45200:16:::0;;40302:671::o;45191:57::-:1;-1:-1:-1::0;;;;;;45232:12:0::1;;::::0;;;:7:::1;:12;::::0;;;;45247:1:::1;45232:16:::0;;44960:296::o;21153:349::-;8793:10;21248:4;21297:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21297:34:0;;;;;;;;;;21278:53;;;21270:106;;;;-1:-1:-1;;;21270:106:0;;;;;;;:::i;:::-;8793:10;21419:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21419:34:0;;;;;;;;;;21387:85;;8793:10;21410:7;;21419:52;;21456:15;;21419:52;:::i;19615:174::-;19695:4;19717:42;8793:10;19741:9;19752:6;19717:9;:42::i;26070:899::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;26173:13:::1;;26163:6;:23;;26155:54;;;::::0;-1:-1:-1;;;26155:54:0;;27010:2:1;26155:54:0::1;::::0;::::1;26992:21:1::0;27049:2;27029:18;;;27022:30;-1:-1:-1;;;27068:18:1;;;27061:48;27126:18;;26155:54:0::1;26808:342:1::0;26155:54:0::1;26244:14;;26228:13;;:30;26220:81;;;::::0;-1:-1:-1;;;26220:81:0;;27357:2:1;26220:81:0::1;::::0;::::1;27339:21:1::0;27396:2;27376:18;;;27369:30;27435:34;27415:18;;;27408:62;-1:-1:-1;;;27486:18:1;;;27479:36;27532:19;;26220:81:0::1;27155:402:1::0;26220:81:0::1;26378:14;::::0;26352:13:::1;::::0;26332:6;;26378:14;26352:23:::1;::::0;26332:6;;26352:23:::1;:::i;:::-;:40;26349:121;;;26444:14;;26428:13;;:30;;;;:::i;:::-;26418:40;;26349:121;26507:21;26539:25;26556:7:::0;26539:16:::1;:25::i;:::-;-1:-1:-1::0;26575:26:0::1;26604:38;26628:14:::0;26604:21:::1;:38;:::i;:::-;26575:67:::0;-1:-1:-1;26657:23:0;26653:36:::1;;26682:7;;;24773:1221:::0;:::o;26653:36::-:1;26787:4;26766:27;::::0;;;:12:::1;:27;::::0;;;;;:37:::1;::::0;26796:7;;26766:37:::1;:::i;:::-;26757:4;26736:27;::::0;;;:12:::1;:27;::::0;;;;:67;26830:13:::1;::::0;:23:::1;::::0;26846:7;;26830:23:::1;:::i;:::-;26814:13;:39:::0;26885:13:::1;::::0;26864:55:::1;::::0;-1:-1:-1;;;;;26885:13:0::1;26900:18:::0;26864:20:::1;:55::i;:::-;26935:26;::::0;548:25:1;;;26935:26:0::1;::::0;536:2:1;521:18;26935:26:0::1;;;;;;;26144:825;;;26070:899:::0;:::o;41023:705::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41108:16:0;::::1;;::::0;;;:11:::1;:16;::::0;;;;;::::1;;41100:44;;;::::0;-1:-1:-1;;;41100:44:0;;16078:2:1;41100:44:0::1;::::0;::::1;16060:21:1::0;16117:2;16097:18;;;16090:30;-1:-1:-1;;;16136:18:1;;;16129:46;16192:18;;41100:44:0::1;15876:340:1::0;41100:44:0::1;-1:-1:-1::0;;;;;41157:16:0;::::1;41176:5;41157:16:::0;;;:11:::1;:16;::::0;;;;:24;;-1:-1:-1;;41157:24:0::1;::::0;;41192:18:::1;41169:3:::0;41192:13:::1;:18::i;:::-;41243:1;41223:498;41255:17;;41246:5;:26;41223:498;;41356:19;::::0;;;:12:::1;:19;::::0;;;;:28;-1:-1:-1;;;;;41356:35:0;;::::1;:28:::0;::::1;:35;41353:357;;;41520:17;::::0;;41507:31:::1;::::0;;;:12:::1;:31;::::0;;;;;41485:19;;;;;:53;;;;-1:-1:-1;;;;;;41485:53:0::1;-1:-1:-1::0;;;;;41485:53:0;;::::1;;::::0;;;;;::::1;::::0;;;::::1;::::0;41649:17;;:21:::1;::::0;41485:53;41649:21:::1;:::i;:::-;41629:17;:41:::0;40302:671;;:::o;41353:357::-:1;41274:7:::0;::::1;::::0;::::1;:::i;:::-;;;;41223:498;;53981:341:::0;54025:16;54059:15;54077:13;53656:14;;;53581:97;54077:13;54059:31;-1:-1:-1;54101:27:0;54145:11;54059:31;54155:1;54145:11;:::i;:::-;54131:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;54131:26:0;;54101:56;;54172:13;54168:119;54200:7;54191:5;:16;54168:119;;54262:13;;;;:6;:13;;;;;;54242:17;;:10;;54269:5;;54242:17;;;;;;:::i;:::-;;;;;;;;;;:33;54209:7;;;;:::i;:::-;;;;54168:119;;34517:467;10369:13;;-1:-1:-1;;;;;10369:13:0;8793:10;-1:-1:-1;;;;;10353:29:0;;10345:73;;;;-1:-1:-1;;;10345:73:0;;;;;;;:::i;:::-;34634:20:::1;;34624:6;:30;;34616:63;;;::::0;-1:-1:-1;;;34616:63:0;;27764:2:1;34616:63:0::1;::::0;::::1;27746:21:1::0;27803:2;27783:18;;;27776:30;-1:-1:-1;;;27822:18:1;;;27815:50;27882:18;;34616:63:0::1;27562:344:1::0;34616:63:0::1;34743:4;34722:27;::::0;;;:12:::1;:27;::::0;;;;;:36:::1;::::0;34752:6;;34722:36:::1;:::i;:::-;34713:4;34692:27;::::0;;;:12:::1;:27;::::0;;;;:66;34792:20:::1;::::0;:29:::1;::::0;34815:6;;34792:29:::1;:::i;:::-;34769:20;:52:::0;-1:-1:-1;;;;;34851:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;;:25:::1;::::0;34870:6;;34851:25:::1;:::i;:::-;-1:-1:-1::0;;;;;34832:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;;;:44;;;;34892:35;;34909:4:::1;::::0;-1:-1:-1;;;;;;;;;;;34892:35:0;::::1;::::0;34920:6;548:25:1;;536:2;521:18;;402:177;34892:35:0::1;;;;;;;;34965:2;-1:-1:-1::0;;;;;34943:33:0::1;;34969:6;34943:33;;;;548:25:1::0;;536:2;521:18;;402:177;34943:33:0::1;;;;;;;;34517:467:::0;;:::o;31476:148::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;31549:13:::1;:24:::0;;-1:-1:-1;;31549:24:0::1;::::0;::::1;;::::0;;::::1;::::0;;;31589:27:::1;::::0;31549:24:::1;31602:13:::0;;;2518:14:1;2511:22;2493:41;;31589:27:0::1;::::0;2481:2:1;2466:18;31589:27:0::1;2353:187:1::0;27142:235:0;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;27231:13:::1;:39:::0;;-1:-1:-1;;;;;;27231:39:0::1;-1:-1:-1::0;;;;;27231:39:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;27281:33:0;;;:18:::1;:33;::::0;;;;;;;;:40;;-1:-1:-1;;27281:40:0::1;-1:-1:-1::0;27281:40:0::1;::::0;;27337:32;;5714:51:1;;;27337:32:0::1;::::0;5687:18:1;27337:32:0::1;5568:203:1::0;54453:246:0;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;53656:14;;54557:5:::1;:22;;54549:56;;;::::0;-1:-1:-1;;;54549:56:0;;28113:2:1;54549:56:0::1;::::0;::::1;28095:21:1::0;28152:2;28132:18;;;28125:30;-1:-1:-1;;;28171:18:1;;;28164:52;28233:18;;54549:56:0::1;27911:346:1::0;54549:56:0::1;54616:13;::::0;;;:6:::1;:13;::::0;;;;;;;;:25;;;54657:34;;11895:25:1;;;11936:18;;;11929:34;;;54657::0::1;::::0;11868:18:1;54657:34:0::1;;;;;;;54453:246:::0;;:::o;39232:148::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;39311:14:::1;:20:::0;;-1:-1:-1;;;;;39311:20:0;;::::1;-1:-1:-1::0;;;;;;39311:20:0;;::::1;::::0;::::1;::::0;;:14:::1;39342:23:::0;;;:18:::1;:23;::::0;;;;:30;;-1:-1:-1;;39342:30:0::1;39311:20:::0;39342:30:::1;::::0;;39232:148::o;36203:226::-;36252:7;36260;36268;36276;36284;36317:24;36335:4;-1:-1:-1;;;;;19578:21:0;19546:7;19578:21;;;:12;:21;;;;;;;19480:127;36317:24;36343:14;;36359:13;;36374:18;;36394:26;;36309:112;;;;;;;;;;36203:226;;;;;:::o;50141:311::-;50188:7;;50262:1;50242:179;50274:21;;50265:5;:30;50242:179;;50333:20;;;;:13;:20;;;;;:28;;;;;;;;50330:79;;;50381:20;;;;:13;:20;;;;;:28;;;50372:37;;:6;:37;:::i;:::-;50363:46;;50330:79;50297:7;;;;:::i;:::-;;;;50242:179;;46005:307;46050:16;46084:23;46124:15;;46110:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46110:30:0;-1:-1:-1;46084:56:0;-1:-1:-1;46171:1:0;46151:130;46183:15;;46174:5;:24;46151:130;;46251:18;;;;:11;:18;;;;;;-1:-1:-1;;;;;46251:18:0;46233:6;46240:7;46251:18;46263:5;46240:7;:::i;:::-;46233:15;;;;;;;;:::i;:::-;-1:-1:-1;;;;;46233:36:0;;;:15;;;;;;;;;;;:36;46200:7;;;;:::i;:::-;;;;46151:130;;37501:158;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37579:27:0;::::1;37609:5;37579:27:::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;37579:35:0::1;::::0;;37630:21;;5714:51:1;;;37630:21:0::1;::::0;5687:18:1;37630:21:0::1;5568:203:1::0;9566:279:0;9480:21;8793:10;9488:12;8692:120;9480:21;9472:66;;;;-1:-1:-1;;;9472:66:0;;28464:2:1;9472:66:0;;;28446:21:1;;;28483:18;;;28476:30;28542:34;28522:18;;;28515:62;28594:18;;9472:66:0;28262:356:1;9472:66:0;-1:-1:-1;;;;;9660:22:0;::::1;9652:73;;;::::0;-1:-1:-1;;;9652:73:0;;28825:2:1;9652:73:0::1;::::0;::::1;28807:21:1::0;28864:2;28844:18;;;28837:30;28903:34;28883:18;;;28876:62;-1:-1:-1;;;28954:18:1;;;28947:36;29000:19;;9652:73:0::1;28623:402:1::0;9652:73:0::1;9756:6;::::0;-1:-1:-1;;;;;9744:18:0;;::::1;9756:6:::0;::::1;9744:18;;9736:70;;;::::0;-1:-1:-1;;;9736:70:0;;29232:2:1;9736:70:0::1;::::0;::::1;29214:21:1::0;29271:2;29251:18;;;29244:30;29310:34;29290:18;;;29283:62;-1:-1:-1;;;29361:18:1;;;29354:37;29408:19;;9736:70:0::1;29030:403:1::0;9736:70:0::1;9817:9;:20:::0;;-1:-1:-1;;;;;;9817:20:0::1;-1:-1:-1::0;;;;;9817:20:0;;;::::1;::::0;;;::::1;::::0;;9566:279::o;35056:464::-;10369:13;;-1:-1:-1;;;;;10369:13:0;8793:10;-1:-1:-1;;;;;10353:29:0;;10345:73;;;;-1:-1:-1;;;10345:73:0;;;;;;;:::i;:::-;35166:13:::1;;35156:6;:23;;35148:56;;;::::0;-1:-1:-1;;;35148:56:0;;27764:2:1;35148:56:0::1;::::0;::::1;27746:21:1::0;27803:2;27783:18;;;27776:30;-1:-1:-1;;;27822:18:1;;;27815:50;27882:18;;35148:56:0::1;27562:344:1::0;35148:56:0::1;35300:4;35279:27;::::0;;;:12:::1;:27;::::0;;;;;:36:::1;::::0;35309:6;;35279:36:::1;:::i;:::-;35270:4;35249:27;::::0;;;:12:::1;:27;::::0;;;;:66;35342:13:::1;::::0;:22:::1;::::0;35358:6;;35342:22:::1;:::i;:::-;35326:13;:38:::0;-1:-1:-1;;;;;35394:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;;:25:::1;::::0;35413:6;;35394:25:::1;:::i;:::-;-1:-1:-1::0;;;;;35375:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;;;:44;;;;35435:35;;35452:4:::1;::::0;-1:-1:-1;;;;;;;;;;;35435:35:0;::::1;::::0;35463:6;548:25:1;;536:2;521:18;;402:177;35435:35:0::1;;;;;;;;35501:2;-1:-1:-1::0;;;;;35486:26:0::1;;35505:6;35486:26;;;;548:25:1::0;;536:2;521:18;;402:177;53746:178:0;53804:7;53846:13;53656:14;;;53581:97;53846:13;53837:5;:22;;53829:56;;;;-1:-1:-1;;;53829:56:0;;28113:2:1;53829:56:0;;;28095:21:1;28152:2;28132:18;;;28125:30;-1:-1:-1;;;28171:18:1;;;28164:52;28233:18;;53829:56:0;27911:346:1;53829:56:0;-1:-1:-1;53903:13:0;;;;:6;:13;;;;;;;53746:178::o;49620:513::-;44101:25;8793:10;40146:107;:::i;44101:25::-;:50;;;-1:-1:-1;44130:21:0;8793:10;44138:12;8692:120;44130:21;44093:90;;;;-1:-1:-1;;;44093:90:0;;;;;;;:::i;:::-;49787:7;49808:12;49805:31:::1;;-1:-1:-1::0;49831:5:0::1;49805:31;-1:-1:-1::0;;;;;49863:26:0;;;::::1;49849:41;49863:26:::0;;;:17:::1;:26;::::0;;;;;;;;;49849:41;;:13:::1;:41:::0;;;;;;:49:::1;;:59:::0;;;;49933:26;;49919:41;;;;;:50:::1;::::0;;::::1;:61:::0;;-1:-1:-1;;49919:61:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;50005:26;;49991:41;;;;;:49;;::::1;:58:::0;;-1:-1:-1;;49991:58:0::1;49919:61;49991:58:::0;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;50074:26;;50060:41;;-1:-1:-1;50060:41:0;;:52:::1;;:65:::0;49620:513::o;22030:342::-;-1:-1:-1;;;;;22128:19:0;;22120:68;;;;-1:-1:-1;;;22120:68:0;;29640:2:1;22120:68:0;;;29622:21:1;29679:2;29659:18;;;29652:30;29718:34;29698:18;;;29691:62;-1:-1:-1;;;29769:18:1;;;29762:34;29813:19;;22120:68:0;29438:400:1;22120:68:0;-1:-1:-1;;;;;22207:21:0;;22199:68;;;;-1:-1:-1;;;22199:68:0;;30045:2:1;22199:68:0;;;30027:21:1;30084:2;30064:18;;;30057:30;30123:34;30103:18;;;30096:62;-1:-1:-1;;;30174:18:1;;;30167:32;30216:19;;22199:68:0;29843:398:1;22199:68:0;-1:-1:-1;;;;;22280:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22332:32;;548:25:1;;;22332:32:0;;521:18:1;22332:32:0;402:177:1;24389:321:0;24447:4;;24525:1;24505:159;24537:17;;24528:5;:26;24505:159;;24621:19;;;;:12;:19;;;;;:31;;;24605:47;;:13;:47;:::i;:::-;24589:63;-1:-1:-1;24556:7:0;;;;:::i;:::-;;;;24505:159;;;-1:-1:-1;24698:3:0;24681:20;;24389:321;-1:-1:-1;24389:321:0:o;28691:836::-;28868:16;;;28882:1;28868:16;;;;;;;;28755:11;;;;28868:16;28882:1;28868:16;;;;;;;;;;-1:-1:-1;28868:16:0;28844:40;;28913:4;28895;28900:1;28895:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28895:23:0;;;:7;;;;;;;;;;:23;;;;28939:15;;:22;;;-1:-1:-1;;;28939:22:0;;;;:15;;;;;:20;;:22;;;;;28895:7;;28939:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28929:4;28934:1;28929:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28929:32:0;;;:7;;;;;;;;;;:32;;;;29010:15;;28995:4;19878:7;19910:18;;;:11;:18;;;;;;29010:15;;;;19910:27;;;;;;29030:11;-1:-1:-1;28974:165:0;;;29097:15;;29065:62;;29082:4;;-1:-1:-1;;;;;29097:15:0;-1:-1:-1;;29065:8:0;:62::i;:::-;29181:15;;-1:-1:-1;;;;;29181:15:0;:66;29262:11;29181:15;29345:4;29372;10142:15;29181:231;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29177:343;;-1:-1:-1;29503:5:0;;28691:836;-1:-1:-1;;28691:836:0:o;38058:131::-;38155:26;;-1:-1:-1;;;;;38155:18:0;;;:26;;;;;38174:6;;38155:26;;;;38174:6;38155:18;:26;;;;;;;;;;;;;;;;;;;22380:2001;-1:-1:-1;;;;;22473:18:0;;22465:68;;;;-1:-1:-1;;;22465:68:0;;31035:2:1;22465:68:0;;;31017:21:1;31074:2;31054:18;;;31047:30;31113:34;31093:18;;;31086:62;-1:-1:-1;;;31164:18:1;;;31157:35;31209:19;;22465:68:0;30833:401:1;22465:68:0;-1:-1:-1;;;;;22552:16:0;;22544:64;;;;-1:-1:-1;;;22544:64:0;;31441:2:1;22544:64:0;;;31423:21:1;31480:2;31460:18;;;31453:30;31519:34;31499:18;;;31492:62;-1:-1:-1;;;31570:18:1;;;31563:33;31613:19;;22544:64:0;31239:399:1;22544:64:0;22636:1;22627:6;:10;22619:64;;;;-1:-1:-1;;;22619:64:0;;31845:2:1;22619:64:0;;;31827:21:1;31884:2;31864:18;;;31857:30;31923:34;31903:18;;;31896:62;-1:-1:-1;;;31974:18:1;;;31967:39;32023:19;;22619:64:0;31643:405:1;22619:64:0;-1:-1:-1;;;;;22714:18:0;;;;;;:12;:18;;;;;;22704:28;;;22696:77;;;;-1:-1:-1;;;22696:77:0;;32255:2:1;22696:77:0;;;32237:21:1;32294:2;32274:18;;;32267:30;32333:34;32313:18;;;32306:62;-1:-1:-1;;;32384:18:1;;;32377:34;32428:19;;22696:77:0;32053:400:1;22696:77:0;-1:-1:-1;;;;;22807:18:0;;;;;;:12;:18;;;;;;:27;;22828:6;;22807:27;:::i;:::-;-1:-1:-1;;;;;22786:18:0;;;;;;:12;:18;;;;;:48;;;;22940:13;;22867:6;;22786:18;;;22940:13;;:42;;;;-1:-1:-1;;;;;;22958:24:0;;;;;;:18;:24;;;;;;;;22957:25;22940:42;:70;;;;-1:-1:-1;22995:14:0;;-1:-1:-1;;;;;22987:22:0;;;22995:14;;22987:22;;22940:70;22937:204;;;23058:25;23073:9;23058:14;:25::i;:::-;23046:37;;:9;:37;:::i;:::-;23036:47;-1:-1:-1;23110:19:0;23036:47;23110:9;:19;:::i;:::-;23098:31;;22937:204;23156:13;;;;:40;;;;-1:-1:-1;;;;;;23174:22:0;;;;;;:18;:22;;;;;;;;23173:23;23156:40;:68;;;;-1:-1:-1;23209:14:0;;-1:-1:-1;;;;;23201:22:0;;;23209:14;;23201:22;;23156:68;23153:199;;;23271:24;23285:9;23271:13;:24::i;:::-;23259:36;;:9;:36;:::i;:::-;23250:45;-1:-1:-1;23322:18:0;23250:45;23322:9;:18;:::i;:::-;23310:30;;23153:199;23428:9;23419:6;:18;23416:283;;;23524:18;23533:9;23524:6;:18;:::i;:::-;23514:4;23493:27;;;;:12;:27;;;;;;:50;;;;:::i;:::-;23484:4;23463:27;;;;:12;:27;;;;;:80;23561:10;;23558:55;;23578:35;;548:25:1;;;23599:4:0;;-1:-1:-1;;;;;23578:35:0;;;-1:-1:-1;;;;;;;;;;;23578:35:0;536:2:1;521:18;23578:35:0;;;;;;;23558:55;23631:11;;23628:59;;23649:38;;548:25:1;;;23672:4:0;;-1:-1:-1;;;;;23649:38:0;;;-1:-1:-1;;;;;;;;;;;23649:38:0;536:2:1;521:18;23649:38:0;;;;;;;23628:59;-1:-1:-1;;;;;23774:16:0;;;;;;:12;:16;;;;;;:28;;23793:9;;23774:28;:::i;:::-;-1:-1:-1;;;;;23755:16:0;;;;;;;:12;:16;;;;;;;:47;;;;23818:29;;;;;;-1:-1:-1;;;;;;;;;;;23818:29:0;;;23837:9;548:25:1;;536:2;521:18;;402:177;23818:29:0;;;;;;;;23914:13;;:17;23911:463;;-1:-1:-1;;;;;24022:23:0;;24048:1;24022:23;;;:17;:23;;;;;;:27;24019:344;;-1:-1:-1;;;;;24256:23:0;;24242:38;24256:23;;;:17;:23;;;;;;;;;24242:38;;:13;:38;;;;;:49;;;24221:18;;;:12;:18;;;;;;:70;24218:129;;;-1:-1:-1;;;;;24307:23:0;;24342:5;24307:23;;;:17;:23;;;;;;;;;24293:38;;:13;:38;;;;;:46;;:54;;-1:-1:-1;;24293:54:0;;;24218:129;22454:1927;;;22380:2001;;;:::o;21510:512::-;21695:15;;21663:62;;21680:4;;-1:-1:-1;;;;;21695:15:0;21713:11;21663:8;:62::i;:::-;21768:15;;-1:-1:-1;;;;;21768:15:0;:31;21807:9;21840:4;21860:11;21768:15;;21972:7;9272;9304:6;-1:-1:-1;;;;;9304:6:0;;9234:84;21972:7;10142:15;21768:246;;;;;;-1:-1:-1;;;;;;21768:246:0;;;-1:-1:-1;;;;;32817:15:1;;;21768:246:0;;;32799:34:1;32849:18;;;32842:34;;;;32892:18;;;32885:34;;;;32935:18;;;32928:34;;;;32999:15;;;32978:19;;;32971:44;33031:19;;;33024:35;;;;32733:19;;21768:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;47656:505::-;-1:-1:-1;;;;;46551:13:0;;46522:4;46551:13;;;:8;:13;;;;;;47717:26;;47656:505;:::o;47717:26::-;-1:-1:-1;;;;;47755:13:0;;47771:1;47755:13;;;:8;:13;;;;;:17;47803:1;47783:371;47815:16;;47806:5;:25;47783:371;;47869:18;;;;:11;:18;;;;;;-1:-1:-1;;;;;47869:25:0;;;:18;;:25;47866:277;;;48027:16;;;48015:29;;;;:11;:29;;;;;;;47994:18;;;;;:50;;-1:-1:-1;;;;;;47994:50:0;-1:-1:-1;;;;;48015:29:0;;;47994:50;;;;;;48082:16;:20;;48015:29;;48082:20;:::i;:::-;48063:16;:39;-1:-1:-1;;47656:505:0:o;47866:277::-;47833:7;;;;:::i;:::-;;;;47783:371;;30482:945;30540:7;30565:17;30585:8;30565:28;;30606:11;30653:4;30632:17;;30621:8;:28;;;;:::i;:::-;30620:37;;;;:::i;:::-;30606:51;;30706:3;30687:16;;:22;;;;:::i;:::-;30668:16;:41;30732:15;30744:3;30732:9;:15;:::i;:::-;30720:27;;30803:4;30778:21;;30767:8;:32;;;;:::i;:::-;30766:41;;;;:::i;:::-;30760:47;;30864:3;30841:20;;:26;;;;:::i;:::-;30818:20;:49;30890:15;30902:3;30890:9;:15;:::i;:::-;30878:27;;30954:4;30936:14;;30925:8;:25;;;;:::i;:::-;30924:34;;;;:::i;:::-;30918:40;;31001:3;30985:13;;:19;;;;:::i;:::-;30969:13;:35;31027:15;31039:3;31027:9;:15;:::i;:::-;31015:27;;31094:4;31073:17;;31062:8;:28;;;;:::i;:::-;31061:37;;;;:::i;:::-;31055:43;;31147:3;31128:16;;:22;;;;:::i;:::-;31109:16;:41;31173:15;31185:3;31173:9;:15;:::i;:::-;31161:27;;31238:4;31219:15;;31208:8;:26;;;;:::i;:::-;31207:35;;;;:::i;:::-;31201:41;;31287:3;31270:14;;:20;;;;:::i;:::-;31253:14;:37;31325:21;;:27;;31349:3;;31325:27;:::i;:::-;31301:21;:51;31375:15;31387:3;31375:9;:15;:::i;:::-;31363:27;30482:945;-1:-1:-1;;;;30482:945:0:o;29535:939::-;29592:7;29617:17;29637:8;29617:28;;29658:11;29704:4;29684:16;;29673:8;:27;;;;:::i;:::-;29672:36;;;;:::i;:::-;29658:50;;29757:3;29738:16;;:22;;;;:::i;:::-;29719:16;:41;29783:15;29795:3;29783:9;:15;:::i;:::-;29771:27;;29853:4;29829:20;;29818:8;:31;;;;:::i;:::-;29817:40;;;;:::i;:::-;29811:46;;29914:3;29891:20;;:26;;;;:::i;:::-;29868:20;:49;29940:15;29952:3;29940:9;:15;:::i;:::-;29928:27;;30003:4;29986:13;;29975:8;:24;;;;:::i;:::-;29974:33;;;;:::i;:::-;29968:39;;30050:3;30034:13;;:19;;;;:::i;:::-;30018:13;:35;30076:15;30088:3;30076:9;:15;:::i;:::-;30064:27;;30142:4;30122:16;;30111:8;:27;;;;:::i;:::-;30110:36;;;;:::i;:::-;30104:42;;30195:3;30176:16;;:22;;;;:::i;:::-;30157:16;:41;30221:15;30233:3;30221:9;:15;:::i;:::-;30209:27;;30285:4;30267:14;;30256:8;:25;;;;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;584:180::-;643:6;696:2;684:9;675:7;671:23;667:32;664:52;;;712:1;709;702:12;664:52;-1:-1:-1;735:23:1;;584:180;-1:-1:-1;584:180:1:o;769:315::-;837:6;845;898:2;886:9;877:7;873:23;869:32;866:52;;;914:1;911;904:12;866:52;953:9;940:23;972:31;997:5;972:31;:::i;:::-;1022:5;1074:2;1059:18;;;;1046:32;;-1:-1:-1;;;769:315:1:o;1089:597::-;1201:4;1230:2;1259;1248:9;1241:21;1291:6;1285:13;1334:6;1329:2;1318:9;1314:18;1307:34;1359:1;1369:140;1383:6;1380:1;1377:13;1369:140;;;1478:14;;;1474:23;;1468:30;1444:17;;;1463:2;1440:26;1433:66;1398:10;;1369:140;;;1527:6;1524:1;1521:13;1518:91;;;1597:1;1592:2;1583:6;1572:9;1568:22;1564:31;1557:42;1518:91;-1:-1:-1;1670:2:1;1649:15;-1:-1:-1;;1645:29:1;1630:45;;;;1677:2;1626:54;;1089:597;-1:-1:-1;;;1089:597:1:o;2545:118::-;2631:5;2624:13;2617:21;2610:5;2607:32;2597:60;;2653:1;2650;2643:12;2668:382;2733:6;2741;2794:2;2782:9;2773:7;2769:23;2765:32;2762:52;;;2810:1;2807;2800:12;2762:52;2849:9;2836:23;2868:31;2893:5;2868:31;:::i;:::-;2918:5;-1:-1:-1;2975:2:1;2960:18;;2947:32;2988:30;2947:32;2988:30;:::i;:::-;3037:7;3027:17;;;2668:382;;;;;:::o;3055:456::-;3132:6;3140;3148;3201:2;3189:9;3180:7;3176:23;3172:32;3169:52;;;3217:1;3214;3207:12;3169:52;3256:9;3243:23;3275:31;3300:5;3275:31;:::i;:::-;3325:5;-1:-1:-1;3382:2:1;3367:18;;3354:32;3395:33;3354:32;3395:33;:::i;:::-;3055:456;;3447:7;;-1:-1:-1;;;3501:2:1;3486:18;;;;3473:32;;3055:456::o;3516:586::-;3596:6;3604;3612;3620;3673:3;3661:9;3652:7;3648:23;3644:33;3641:53;;;3690:1;3687;3680:12;3641:53;3729:9;3716:23;3748:31;3773:5;3748:31;:::i;:::-;3798:5;-1:-1:-1;3850:2:1;3835:18;;3822:32;;-1:-1:-1;3906:2:1;3891:18;;3878:32;3919:30;3878:32;3919:30;:::i;:::-;3968:7;-1:-1:-1;4027:2:1;4012:18;;3999:32;4040:30;3999:32;4040:30;:::i;:::-;3516:586;;;;-1:-1:-1;3516:586:1;;-1:-1:-1;;3516:586:1:o;4836:461::-;4889:3;4927:5;4921:12;4954:6;4949:3;4942:19;4980:4;5009:2;5004:3;5000:12;4993:19;;5046:2;5039:5;5035:14;5067:1;5077:195;5091:6;5088:1;5085:13;5077:195;;;5156:13;;-1:-1:-1;;;;;5152:39:1;5140:52;;5212:12;;;;5247:15;;;;5188:1;5106:9;5077:195;;;-1:-1:-1;5288:3:1;;4836:461;-1:-1:-1;;;;;4836:461:1:o;5302:261::-;5481:2;5470:9;5463:21;5444:4;5501:56;5553:2;5542:9;5538:18;5530:6;5501:56;:::i;5776:799::-;5916:6;5924;5932;5940;5948;5956;5964;5972;5980;5988;6041:3;6029:9;6020:7;6016:23;6012:33;6009:53;;;6058:1;6055;6048:12;6009:53;-1:-1:-1;;6081:23:1;;;6151:2;6136:18;;6123:32;;-1:-1:-1;6202:2:1;6187:18;;6174:32;;6253:2;6238:18;;6225:32;;-1:-1:-1;6304:3:1;6289:19;;6276:33;;-1:-1:-1;6356:3:1;6341:19;;6328:33;;-1:-1:-1;6408:3:1;6393:19;;6380:33;;-1:-1:-1;6460:3:1;6445:19;;6432:33;;-1:-1:-1;6512:3:1;6497:19;;6484:33;;-1:-1:-1;6564:3:1;6549:19;6536:33;;-1:-1:-1;5776:799:1;-1:-1:-1;5776:799:1:o;6580:814::-;6801:2;6853:21;;;6923:13;;6826:18;;;6945:22;;;6772:4;;6801:2;6986;;7004:18;;;;7045:15;;;6772:4;7088:280;7102:6;7099:1;7096:13;7088:280;;;7161:13;;7203:9;;-1:-1:-1;;;;;7199:35:1;7187:48;;7275:11;;7269:18;7255:12;;;7248:40;7308:12;;;;7343:15;;;;7231:1;7117:9;7088:280;;;-1:-1:-1;7385:3:1;;6580:814;-1:-1:-1;;;;;;;6580:814:1:o;7399:388::-;7467:6;7475;7528:2;7516:9;7507:7;7503:23;7499:32;7496:52;;;7544:1;7541;7534:12;7496:52;7583:9;7570:23;7602:31;7627:5;7602:31;:::i;:::-;7652:5;-1:-1:-1;7709:2:1;7694:18;;7681:32;7722:33;7681:32;7722:33;:::i;7792:632::-;7963:2;8015:21;;;8085:13;;7988:18;;;8107:22;;;7934:4;;7963:2;8186:15;;;;8160:2;8145:18;;;7934:4;8229:169;8243:6;8240:1;8237:13;8229:169;;;8304:13;;8292:26;;8373:15;;;;8338:12;;;;8265:1;8258:9;8229:169;;;-1:-1:-1;8415:3:1;;7792:632;-1:-1:-1;;;;;;7792:632:1:o;8429:241::-;8485:6;8538:2;8526:9;8517:7;8513:23;8509:32;8506:52;;;8554:1;8551;8544:12;8506:52;8593:9;8580:23;8612:28;8634:5;8612:28;:::i;8675:248::-;8743:6;8751;8804:2;8792:9;8783:7;8779:23;8775:32;8772:52;;;8820:1;8817;8810:12;8772:52;-1:-1:-1;;8843:23:1;;;8913:2;8898:18;;;8885:32;;-1:-1:-1;8675:248:1:o;9812:655::-;9901:6;9909;9917;9925;9933;9986:3;9974:9;9965:7;9961:23;9957:33;9954:53;;;10003:1;10000;9993:12;9954:53;10042:9;10029:23;10061:31;10086:5;10061:31;:::i;:::-;10111:5;-1:-1:-1;10163:2:1;10148:18;;10135:32;;-1:-1:-1;10219:2:1;10204:18;;10191:32;10232:30;10191:32;10232:30;:::i;:::-;10281:7;-1:-1:-1;10340:2:1;10325:18;;10312:32;10353:30;10312:32;10353:30;:::i;:::-;9812:655;;;;-1:-1:-1;9812:655:1;;10456:3;10441:19;10428:33;;9812:655;-1:-1:-1;;9812:655:1:o;10472:127::-;10533:10;10528:3;10524:20;10521:1;10514:31;10564:4;10561:1;10554:15;10588:4;10585:1;10578:15;10604:136;10643:3;10671:5;10661:39;;10680:18;;:::i;:::-;-1:-1:-1;;;10716:18:1;;10604:136::o;10745:128::-;10785:3;10816:1;10812:6;10809:1;10806:13;10803:39;;;10822:18;;:::i;:::-;-1:-1:-1;10858:9:1;;10745:128::o;10878:135::-;10917:3;-1:-1:-1;;10938:17:1;;10935:43;;;10958:18;;:::i;:::-;-1:-1:-1;11005:1:1;10994:13;;10878:135::o;11018:351::-;11220:2;11202:21;;;11259:2;11239:18;;;11232:30;11298:29;11293:2;11278:18;;11271:57;11360:2;11345:18;;11018:351::o;13075:125::-;13115:4;13143:1;13140;13137:8;13134:34;;;13148:18;;:::i;:::-;-1:-1:-1;13185:9:1;;13075:125::o;13909:127::-;13970:10;13965:3;13961:20;13958:1;13951:31;14001:4;13998:1;13991:15;14025:4;14022:1;14015:15;14041:127;14102:10;14097:3;14093:20;14090:1;14083:31;14133:4;14130:1;14123:15;14157:4;14154:1;14147:15;14173:251;14243:6;14296:2;14284:9;14275:7;14271:23;14267:32;14264:52;;;14312:1;14309;14302:12;14264:52;14344:9;14338:16;14363:31;14388:5;14363:31;:::i;14429:332::-;14636:6;14625:9;14618:25;14679:2;14674;14663:9;14659:18;14652:30;14599:4;14699:56;14751:2;14740:9;14736:18;14728:6;14699:56;:::i;14766:1105::-;14861:6;14892:2;14935;14923:9;14914:7;14910:23;14906:32;14903:52;;;14951:1;14948;14941:12;14903:52;14984:9;14978:16;15013:18;15054:2;15046:6;15043:14;15040:34;;;15070:1;15067;15060:12;15040:34;15108:6;15097:9;15093:22;15083:32;;15153:7;15146:4;15142:2;15138:13;15134:27;15124:55;;15175:1;15172;15165:12;15124:55;15204:2;15198:9;15226:2;15222;15219:10;15216:36;;;15232:18;;:::i;:::-;15278:2;15275:1;15271:10;15310:2;15304:9;15373:2;15369:7;15364:2;15360;15356:11;15352:25;15344:6;15340:38;15428:6;15416:10;15413:22;15408:2;15396:10;15393:18;15390:46;15387:72;;;15439:18;;:::i;:::-;15475:2;15468:22;15525:18;;;15559:15;;;;-1:-1:-1;15601:11:1;;;15597:20;;;15629:19;;;15626:39;;;15661:1;15658;15651:12;15626:39;15685:11;;;;15705:135;15721:6;15716:3;15713:15;15705:135;;;15787:10;;15775:23;;15738:12;;;;15818;;;;15705:135;;;15859:6;14766:1105;-1:-1:-1;;;;;;;;14766:1105:1:o;16578:403::-;16780:2;16762:21;;;16819:2;16799:18;;;16792:30;16858:34;16853:2;16838:18;;16831:62;-1:-1:-1;;;16924:2:1;16909:18;;16902:37;16971:3;16956:19;;16578:403::o;16986:168::-;17026:7;17092:1;17088;17084:6;17080:14;17077:1;17074:21;17069:1;17062:9;17055:17;17051:45;17048:71;;;17099:18;;:::i;:::-;-1:-1:-1;17139:9:1;;16986:168::o;17159:217::-;17199:1;17225;17215:132;;17269:10;17264:3;17260:20;17257:1;17250:31;17304:4;17301:1;17294:15;17332:4;17329:1;17322:15;17215:132;-1:-1:-1;17361:9:1;;17159:217::o;17381:422::-;17470:1;17513:5;17470:1;17527:270;17548:7;17538:8;17535:21;17527:270;;;17607:4;17603:1;17599:6;17595:17;17589:4;17586:27;17583:53;;;17616:18;;:::i;:::-;17666:7;17656:8;17652:22;17649:55;;;17686:16;;;;17649:55;17765:22;;;;17725:15;;;;17527:270;;;17531:3;17381:422;;;;;:::o;17808:806::-;17857:5;17887:8;17877:80;;-1:-1:-1;17928:1:1;17942:5;;17877:80;17976:4;17966:76;;-1:-1:-1;18013:1:1;18027:5;;17966:76;18058:4;18076:1;18071:59;;;;18144:1;18139:130;;;;18051:218;;18071:59;18101:1;18092:10;;18115:5;;;18139:130;18176:3;18166:8;18163:17;18160:43;;;18183:18;;:::i;:::-;-1:-1:-1;;18239:1:1;18225:16;;18254:5;;18051:218;;18353:2;18343:8;18340:16;18334:3;18328:4;18325:13;18321:36;18315:2;18305:8;18302:16;18297:2;18291:4;18288:12;18284:35;18281:77;18278:159;;;-1:-1:-1;18390:19:1;;;18422:5;;18278:159;18469:34;18494:8;18488:4;18469:34;:::i;:::-;18539:6;18535:1;18531:6;18527:19;18518:7;18515:32;18512:58;;;18550:18;;:::i;:::-;18588:20;;17808:806;-1:-1:-1;;;17808:806:1:o;18619:140::-;18677:5;18706:47;18747:4;18737:8;18733:19;18727:4;18706:47;:::i;19116:404::-;19318:2;19300:21;;;19357:2;19337:18;;;19330:30;19396:34;19391:2;19376:18;;19369:62;-1:-1:-1;;;19462:2:1;19447:18;;19440:38;19510:3;19495:19;;19116:404::o;19878:355::-;20080:2;20062:21;;;20119:2;20099:18;;;20092:30;20158:33;20153:2;20138:18;;20131:61;20224:2;20209:18;;19878:355::o;24598:184::-;24668:6;24721:2;24709:9;24700:7;24696:23;24692:32;24689:52;;;24737:1;24734;24727:12;24689:52;-1:-1:-1;24760:16:1;;24598:184;-1:-1:-1;24598:184:1:o;25066:245::-;25133:6;25186:2;25174:9;25165:7;25161:23;25157:32;25154:52;;;25202:1;25199;25192:12;25154:52;25234:9;25228:16;25253:28;25275:5;25253:28;:::i;30246:582::-;30545:6;30534:9;30527:25;30588:6;30583:2;30572:9;30568:18;30561:34;30631:3;30626:2;30615:9;30611:18;30604:31;30508:4;30652:57;30704:3;30693:9;30689:19;30681:6;30652:57;:::i;:::-;-1:-1:-1;;;;;30745:32:1;;;;30740:2;30725:18;;30718:60;-1:-1:-1;30809:3:1;30794:19;30787:35;30644:65;30246:582;-1:-1:-1;;;30246:582:1:o;33070:306::-;33158:6;33166;33174;33227:2;33215:9;33206:7;33202:23;33198:32;33195:52;;;33243:1;33240;33233:12;33195:52;33272:9;33266:16;33256:26;;33322:2;33311:9;33307:18;33301:25;33291:35;;33366:2;33355:9;33351:18;33345:25;33335:35;;33070:306;;;;;:::o

Swarm Source

ipfs://cc7fa0643ad1482e74a0dae730c09fe40b6c435b3fb6ed31161c6fdde81c5d72

Loading...

Loading

[Download: CSV Export ]

[Download: CSV Export ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.

Connect a Wallet
Connect a Wallet

Compiler specific version warnings:

The compiled contract might be susceptible to VerbatimInvalidDeduplication (low-severity), FullInlinerNonExpressionSplitArgumentEvaluationOrder (low-severity), MissingSideEffectsOnSelectorAccess (low-severity), AbiReencodingHeadOverflowWithStaticArrayCleanup (medium-severity), DirtyBytesArrayToStorage (low-severity), DataLocationChangeInInternalOverride (very low-severity), NestedCalldataArrayAbiReencodingSizeValidation (very low-severity) Solidity Compiler Bugs.

Vetter Token (VETTER) Token Tracker | BscScan (2024)

References

Top Articles
Latest Posts
Article information

Author: Manual Maggio

Last Updated:

Views: 5876

Rating: 4.9 / 5 (69 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Manual Maggio

Birthday: 1998-01-20

Address: 359 Kelvin Stream, Lake Eldonview, MT 33517-1242

Phone: +577037762465

Job: Product Hospitality Supervisor

Hobby: Gardening, Web surfing, Video gaming, Amateur radio, Flag Football, Reading, Table tennis

Introduction: My name is Manual Maggio, I am a thankful, tender, adventurous, delightful, fantastic, proud, graceful person who loves writing and wants to share my knowledge and understanding with you.