Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
11186758 | 2 days ago | 50 S |
Loading...
Loading
Contract Name:
FARMER
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-03-02 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; // OpenZeppelin Contracts v5.0.1 /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Contract module that helps prevent reentrant calls to a function. */ abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "R1"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } /** * @dev Contract module which provides a basic access control mechanism */ abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor(address initialOwner) { if (initialOwner == address(0)) { revert("O1"); } _transferOwnership(initialOwner); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == msg.sender, "O2"); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "O1"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Implementation of the {IERC20} interface. */ abstract contract ERC20 is IERC20 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return 18; } function totalSupply() public view virtual returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual returns (bool) { address owner = msg.sender; _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual returns (bool) { address owner = msg.sender; _approve(owner, spender, amount); return true; } function transferFrom(address from, address to, uint256 amount) public virtual returns (bool) { address spender = msg.sender; _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0) && to != address(0), "E1"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "E2"); unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "E3"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0) && spender != address(0), "E4"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "E5"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } interface IMetropolisRouter { function factory() external pure returns (address); function WETH() external pure returns (address); // Mevcut fonksiyonlar function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); // Yeni eklenen fonksiyonlar function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IMetropolisFactory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } // Pair interface'ini de ekleyelim interface IMetropolisPair { function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; } // FARMER Token Contract contract FARMER is ERC20, ReentrancyGuard, Ownable { // Constants uint256 private constant TOTAL_SUPPLY = 1_000_000 * 10**18; uint256 private constant TAX_RATE = 5; // 5% uint256 private constant LIQUIDITY_TAX = 25; // 2.5% uint256 private constant AIRDROP_TAX = 25; // 2.5% uint256 private constant MIN_HOLDER_AMOUNT = 10 * 10**18; // 10 tokens minimum for holder status uint256 private constant MIN_TOKENS_FOR_PROCESS = 100 * 10**18; // 100 tokens minimum for processing uint256 private constant SWAP_PERCENTAGE = 75; // 75% will be swapped uint256 private constant LIQUIDITY_PERCENTAGE = 25; // 25% will be used for liquidity uint256 private constant MAX_SLIPPAGE = 30; // 30% slippage tolerance // Metropolis DEX addresses IMetropolisRouter public metropolisRouter; IMetropolisFactory public metropolisFactory; address public sonicToken; address public liquidityPair; // Holder tracking mapping(address => bool) public isHolder; address[] public holders; // Events event LiquidityAdded(uint256 tokenAmount, uint256 sonicAmount); event AirdropDistributed(uint256 amount, uint256 holdersCount); event SwapFailed(string reason); event LiquidityAddFailed(string reason); event AirdropFailed(string reason); event ProcessStarted(uint256 tokensForLiquidity, uint256 tokensForAirdrop); event SwapSuccessful(uint256 tokensSwapped, uint256 wethReceived); event SwapAndLiquidityProcessed( uint256 tokensSwapped, uint256 wethReceived, uint256 tokensIntoLiquidity, uint256 wethIntoLiquidity ); event PairReservesUpdated(uint256 farmReserve, uint256 wethReserve); event ApprovalRefreshed(address token, address spender, uint256 amount); event ContractInitialized(address router, address factory, address sonic, address pair); uint256 private _pendingLiquidityTokens; uint256 private _pendingAirdropTokens; bool private _initialized; constructor() ERC20("FARMER", "FARM") Ownable(msg.sender) { address _metropolisRouter = 0x95a7e403d7cF20F675fF9273D66e94d35ba49fA3; address _metropolisFactory = 0x1570300e9cFEC66c9Fb0C8bc14366C86EB170Ad0; address _sonicToken = 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38; require(_metropolisRouter != address(0) && _metropolisFactory != address(0) && _sonicToken != address(0), "F1"); metropolisRouter = IMetropolisRouter(_metropolisRouter); metropolisFactory = IMetropolisFactory(_metropolisFactory); sonicToken = _sonicToken; _mint(address(this), TOTAL_SUPPLY); } function initialize() external onlyOwner { require(!_initialized, "F2"); _initialized = true; liquidityPair = metropolisFactory.createPair(address(this), sonicToken); require(liquidityPair != address(0), "F3"); _approve(address(this), address(metropolisRouter), type(uint256).max); require(IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max), "F4"); IERC20(sonicToken).approve(liquidityPair, type(uint256).max); IERC20(address(this)).approve(liquidityPair, type(uint256).max); emit ContractInitialized(address(metropolisRouter), address(metropolisFactory), sonicToken, liquidityPair); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._beforeTokenTransfer(from, to, amount); } function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._afterTokenTransfer(from, to, amount); } function _transfer( address from, address to, uint256 amount ) internal virtual override { require(from != address(0) && to != address(0), "Transfer to/from zero address"); if (from == owner() || to == owner() || from == address(this) || to == address(this)) { super._transfer(from, to, amount); _updateHolder(from); _updateHolder(to); return; } bool isSellOrBuy = to == liquidityPair || from == liquidityPair; if (isSellOrBuy) { uint256 totalTax = (amount * TAX_RATE) / 100; uint256 transferAmount = amount - totalTax; super._transfer(from, to, transferAmount); super._transfer(from, address(this), totalTax); _pendingLiquidityTokens += (totalTax / 2); // 2.5% for liquidity _pendingAirdropTokens += (totalTax / 2); // 2.5% for airdrop if ((_pendingLiquidityTokens >= MIN_TOKENS_FOR_PROCESS || _pendingAirdropTokens >= MIN_TOKENS_FOR_PROCESS) && holders.length > 0) { _processLiquidityAndAirdrop(); } } else { super._transfer(from, to, amount); } _updateHolder(from); _updateHolder(to); } function _updateHolder(address account) private { if (account != liquidityPair && account != address(this)) { uint256 balance = balanceOf(account); bool isCurrentlyHolder = isHolder[account]; if (balance >= MIN_HOLDER_AMOUNT && !isCurrentlyHolder) { isHolder[account] = true; holders.push(account); } else if (balance < MIN_HOLDER_AMOUNT && isCurrentlyHolder) { isHolder[account] = false; _removeHolder(account); } } } function _removeHolder(address account) private { for (uint256 i = 0; i < holders.length; i++) { if (holders[i] == account) { holders[i] = holders[holders.length - 1]; holders.pop(); break; } } } function _processLiquidityAndAirdrop() private { uint256 totalTokens = _pendingLiquidityTokens + _pendingAirdropTokens; if (totalTokens < MIN_TOKENS_FOR_PROCESS || holders.length == 0) return; emit ProcessStarted(totalTokens, holders.length); // Convert 75% of tokens to SONIC uint256 tokensToSwap = (totalTokens * SWAP_PERCENTAGE) / 100; uint256 tokensForLiquidity = totalTokens - tokensToSwap; _pendingLiquidityTokens = 0; _pendingAirdropTokens = 0; // First swap the larger amount uint256 sonicReceived = _processSwap(tokensToSwap); if (sonicReceived == 0) { _pendingLiquidityTokens = tokensForLiquidity; _pendingAirdropTokens = tokensToSwap; return; } // Add liquidity if (tokensForLiquidity > 0) { uint256 sonicForLiquidity = (sonicReceived * LIQUIDITY_PERCENTAGE) / 100; // 25% for liquidity _processLiquidity(tokensForLiquidity, sonicForLiquidity); } // Distribute remaining SONIC as airdrop uint256 remainingSonic = IERC20(sonicToken).balanceOf(address(this)); if (remainingSonic > 0) { _processAirdrop(remainingSonic); } } function _processSwap(uint256 totalTokens) private returns (uint256) { if (totalTokens == 0) return 0; address[] memory path = new address[](2); path[0] = address(this); path[1] = sonicToken; // Check allowance uint256 currentAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter)); if (currentAllowance < totalTokens) { _approve(address(this), address(metropolisRouter), type(uint256).max); } try metropolisRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens( totalTokens, 0, // Minimum output amount - accepting high slippage path, address(this), block.timestamp + 300 ) { uint256 sonicBalance = IERC20(sonicToken).balanceOf(address(this)); emit SwapSuccessful(totalTokens, sonicBalance); return sonicBalance; } catch Error(string memory reason) { emit SwapFailed(reason); return 0; } catch { emit SwapFailed("Unknown error in swap"); return 0; } } function _processLiquidity(uint256 tokensForLiquidity, uint256 sonicForLiquidity) private { if (tokensForLiquidity == 0 || sonicForLiquidity == 0) return; // Check router approvals _approve(address(this), address(metropolisRouter), tokensForLiquidity); IERC20(sonicToken).approve(address(metropolisRouter), sonicForLiquidity); try metropolisRouter.addLiquidity( address(this), sonicToken, tokensForLiquidity, sonicForLiquidity, tokensForLiquidity * (100 - MAX_SLIPPAGE) / 100, // 30% slippage tolerance sonicForLiquidity * (100 - MAX_SLIPPAGE) / 100, // 30% slippage tolerance address(this), block.timestamp + 300 ) { emit LiquidityAdded(tokensForLiquidity, sonicForLiquidity); } catch Error(string memory reason) { emit LiquidityAddFailed(reason); } catch { emit LiquidityAddFailed("Unknown error in addLiquidity"); } } function _processAirdrop(uint256 sonicAmount) private { if (sonicAmount == 0 || holders.length == 0) return; uint256 amountPerHolder = sonicAmount / holders.length; if (amountPerHolder == 0) return; for (uint256 i = 0; i < holders.length && i < 100; i++) { if (holders[i] != address(0)) { try IERC20(sonicToken).transfer(holders[i], amountPerHolder) { // Transfer successful } catch { continue; } } } emit AirdropDistributed(sonicAmount, holders.length); } // View functions function getHolderCount() external view returns (uint256) { return holders.length; } function getHolders() external view returns (address[] memory) { return holders; } // Initial liquidity function (must be called by owner with ETH) function addInitialLiquidity(uint256 tokenAmount) external payable onlyOwner { require(msg.value > 0, "Must provide ETH for initial liquidity"); require(tokenAmount > 0, "Must provide token amount for initial liquidity"); require( IERC20(address(this)).balanceOf(address(this)) >= tokenAmount, "Insufficient token balance in contract" ); _approve(address(this), address(metropolisRouter), tokenAmount); try metropolisRouter.addLiquidityETH{value: msg.value}( address(this), tokenAmount, 0, 0, msg.sender, block.timestamp ) { emit LiquidityAdded(tokenAmount, msg.value); } catch { _approve(address(this), address(metropolisRouter), 0); revert("Failed to add liquidity"); } uint256 remainingETH = address(this).balance; if (remainingETH > 0) { payable(msg.sender).transfer(remainingETH); } } function setRouter(address _router) external onlyOwner { require(_router != address(0), "Invalid router address"); metropolisRouter = IMetropolisRouter(_router); } function rescueTokens(address _token, uint256 _amount) external onlyOwner { require(_token != address(this), "Cannot rescue FARMER tokens"); IERC20(_token).transfer(owner(), _amount); } // Transfer tokens to owner function withdrawTokensToOwner(uint256 amount) external onlyOwner { require( IERC20(address(this)).balanceOf(address(this)) >= amount, "Insufficient balance" ); _transfer(address(this), msg.sender, amount); } // View functions for pending amounts function getPendingLiquidityTokens() external view returns (uint256) { return _pendingLiquidityTokens; } function getPendingAirdropTokens() external view returns (uint256) { return _pendingAirdropTokens; } // Process liquidity and airdrop manually if needed function processLiquidityAndAirdrop() external onlyOwner { require(_pendingLiquidityTokens > 0 || _pendingAirdropTokens > 0, "No pending tokens"); require(holders.length > 0, "No holders"); _processLiquidityAndAirdrop(); } function checkAndRefreshAllowances() external onlyOwner { uint256 farmAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter)); if (farmAllowance < TOTAL_SUPPLY) { _approve(address(this), address(metropolisRouter), TOTAL_SUPPLY); } uint256 wethBalance = IERC20(sonicToken).balanceOf(address(this)); if (wethBalance > 0) { uint256 wethAllowance = IERC20(sonicToken).allowance(address(this), address(metropolisRouter)); if (wethAllowance < wethBalance) { IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max); } } } // Debug function function getSwapInfo() external view returns ( uint256 contractBalance, uint256 routerAllowance, bool pairExists, address pair, uint256 pendingLiq, uint256 pendingAirdrop ) { contractBalance = IERC20(address(this)).balanceOf(address(this)); routerAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter)); pair = IMetropolisFactory(metropolisRouter.factory()).getPair(address(this), sonicToken); pairExists = pair != address(0); pendingLiq = _pendingLiquidityTokens; pendingAirdrop = _pendingAirdropTokens; } // Pair rezervlerini kontrol et function getPairReserves() public view returns (uint256 farmReserve, uint256 wethReserve) { (uint112 reserve0, uint112 reserve1,) = IMetropolisPair(liquidityPair).getReserves(); address token0 = IMetropolisPair(liquidityPair).token0(); if (token0 == address(this)) { return (uint256(reserve0), uint256(reserve1)); } return (uint256(reserve1), uint256(reserve0)); } // Swap için minimum çıktı miktarını hesapla function getMinimumOutput(uint256 amountIn) public view returns (uint256) { (uint256 farmReserve, uint256 wethReserve) = getPairReserves(); if (farmReserve == 0 || wethReserve == 0) return 0; uint256 amountInWithFee = amountIn * 997; // %0.3 işlem ücreti uint256 numerator = amountInWithFee * wethReserve; uint256 denominator = (farmReserve * 1000) + amountInWithFee; return numerator / denominator; } // Tüm onayları yenile function refreshAllApprovals() external onlyOwner { _approve(address(this), address(metropolisRouter), type(uint256).max); IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max); try IERC20(sonicToken).approve(liquidityPair, type(uint256).max) {} catch {} try IERC20(address(this)).approve(liquidityPair, type(uint256).max) {} catch {} } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"holdersCount","type":"uint256"}],"name":"AirdropDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"AirdropFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ApprovalRefreshed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"router","type":"address"},{"indexed":false,"internalType":"address","name":"factory","type":"address"},{"indexed":false,"internalType":"address","name":"sonic","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"}],"name":"ContractInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"LiquidityAddFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sonicAmount","type":"uint256"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"farmReserve","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wethReserve","type":"uint256"}],"name":"PairReservesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensForLiquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensForAirdrop","type":"uint256"}],"name":"ProcessStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wethIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquidityProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"SwapFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wethReceived","type":"uint256"}],"name":"SwapSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"addInitialLiquidity","outputs":[],"stateMutability":"payable","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":[],"name":"checkAndRefreshAllowances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"getMinimumOutput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPairReserves","outputs":[{"internalType":"uint256","name":"farmReserve","type":"uint256"},{"internalType":"uint256","name":"wethReserve","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingAirdropTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingLiquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapInfo","outputs":[{"internalType":"uint256","name":"contractBalance","type":"uint256"},{"internalType":"uint256","name":"routerAllowance","type":"uint256"},{"internalType":"bool","name":"pairExists","type":"bool"},{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"pendingLiq","type":"uint256"},{"internalType":"uint256","name":"pendingAirdrop","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metropolisFactory","outputs":[{"internalType":"contract IMetropolisFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metropolisRouter","outputs":[{"internalType":"contract IMetropolisRouter","name":"","type":"address"}],"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":"processLiquidityAndAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"refreshAllApprovals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sonicToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokensToOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b50336040518060400160405280600681526020017f4641524d455200000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4641524d00000000000000000000000000000000000000000000000000000000815250816003908162000090919062000832565b508060049081620000a2919062000832565b5050506001600581905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000116906200097a565b60405180910390fd5b62000130816200034b60201b60201c565b5060007395a7e403d7cf20f675ff9273d66e94d35ba49fa390506000731570300e9cfec66c9fb0c8bc14366c86eb170ad09050600073039e2fb66102314ce7b64ce5ce3e5183bc94ad389050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620001e75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015620002215750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b62000263576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025a90620009ec565b60405180910390fd5b82600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003423069d3c21bcecceda10000006200041160201b60201c565b50505062000b18565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000483576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200047a9062000a5e565b60405180910390fd5b62000497600083836200057e60201b60201c565b8060026000828254620004ab919062000aaf565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200055e919062000afb565b60405180910390a36200057a600083836200059660201b60201c565b5050565b62000591838383620005ae60201b60201c565b505050565b620005a9838383620005b360201b60201c565b505050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200063a57607f821691505b60208210810362000650576200064f620005f2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200067b565b620006c686836200067b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007136200070d6200070784620006de565b620006e8565b620006de565b9050919050565b6000819050919050565b6200072f83620006f2565b620007476200073e826200071a565b84845462000688565b825550505050565b600090565b6200075e6200074f565b6200076b81848462000724565b505050565b5b8181101562000793576200078760008262000754565b60018101905062000771565b5050565b601f821115620007e257620007ac8162000656565b620007b7846200066b565b81016020851015620007c7578190505b620007df620007d6856200066b565b83018262000770565b50505b505050565b600082821c905092915050565b60006200080760001984600802620007e7565b1980831691505092915050565b6000620008228383620007f4565b9150826002028217905092915050565b6200083d82620005b8565b67ffffffffffffffff811115620008595762000858620005c3565b5b62000865825462000621565b6200087282828562000797565b600060209050601f831160018114620008aa576000841562000895578287015190505b620008a1858262000814565b86555062000911565b601f198416620008ba8662000656565b60005b82811015620008e457848901518255600182019150602085019450602081019050620008bd565b8683101562000904578489015162000900601f891682620007f4565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f31000000000000000000000000000000000000000000000000000000000000600082015250565b60006200096260028362000919565b91506200096f826200092a565b602082019050919050565b60006020820190508181036000830152620009958162000953565b9050919050565b7f4631000000000000000000000000000000000000000000000000000000000000600082015250565b6000620009d460028362000919565b9150620009e1826200099c565b602082019050919050565b6000602082019050818103600083015262000a0781620009c5565b9050919050565b7f4533000000000000000000000000000000000000000000000000000000000000600082015250565b600062000a4660028362000919565b915062000a538262000a0e565b602082019050919050565b6000602082019050818103600083015262000a798162000a37565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000abc82620006de565b915062000ac983620006de565b925082820190508082111562000ae45762000ae362000a80565b5b92915050565b62000af581620006de565b82525050565b600060208201905062000b12600083018462000aea565b92915050565b6151f48062000b286000396000f3fe6080604052600436106101e75760003560e01c80637136982b11610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e146106da578063ed9cacfe14610717578063f2fde38b1461072e578063fd7c9fab14610757576101ee565b8063a9059cbb14610620578063c026d93a1461065d578063c0d7865514610674578063d4d7b19a1461069d576101ee565b80638129fc1c116100d15780638129fc1c146105875780638da5cb5b1461059e57806395d89b41146105c95780639df93f6c146105f4576101ee565b80637136982b146104f157806379304bec1461051c5780637ac84fc114610545578063808a54571461055c576101ee565b8063313ce5671161017a5780635d76b04c116101495780635d76b04c146104335780635fe8e7cc1461045e57806362b6327a1461048957806370a08231146104b4576101ee565b8063313ce5671461039857806341a22cc2146103c3578063461a3a95146103df578063573761981461040a576101ee565b80631b26c80d116101b65780631b26c80d146102b157806323b872dd146102e1578063298926cb1461031e5780632a11ced01461035b576101ee565b806306fdde03146101f357806308dee2b41461021e578063095ea7b31461024957806318160ddd14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610782565b6040516102159190613c2f565b60405180910390f35b34801561022a57600080fd5b50610233610814565b6040516102409190613c6a565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190613d1e565b61081e565b60405161027d9190613d79565b60405180910390f35b34801561029257600080fd5b5061029b61083a565b6040516102a89190613c6a565b60405180910390f35b3480156102bd57600080fd5b506102c6610844565b6040516102d896959493929190613da3565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190613e04565b610ade565b6040516103159190613d79565b60405180910390f35b34801561032a57600080fd5b5061034560048036038101906103409190613e57565b610b06565b6040516103529190613c6a565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190613e57565b610b8e565b60405161038f9190613e84565b60405180910390f35b3480156103a457600080fd5b506103ad610bcd565b6040516103ba9190613ebb565b60405180910390f35b6103dd60048036038101906103d89190613e57565b610bd6565b005b3480156103eb57600080fd5b506103f4610ef3565b6040516104019190613e84565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613d1e565b610f19565b005b34801561043f57600080fd5b50610448611019565b6040516104559190613c6a565b60405180910390f35b34801561046a57600080fd5b50610473611023565b6040516104809190613f94565b60405180910390f35b34801561049557600080fd5b5061049e6110b1565b6040516104ab9190614015565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190614030565b6110d7565b6040516104e89190613c6a565b60405180910390f35b3480156104fd57600080fd5b5061050661111f565b6040516105139190613c6a565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190613e57565b61112c565b005b34801561055157600080fd5b5061055a6111fe565b005b34801561056857600080fd5b506105716112aa565b60405161057e9190613e84565b60405180910390f35b34801561059357600080fd5b5061059c6112d0565b005b3480156105aa57600080fd5b506105b36118af565b6040516105c09190613e84565b60405180910390f35b3480156105d557600080fd5b506105de6118d9565b6040516105eb9190613c2f565b60405180910390f35b34801561060057600080fd5b5061060961196b565b60405161061792919061405d565b60405180910390f35b34801561062c57600080fd5b5061064760048036038101906106429190613d1e565b611b2b565b6040516106549190613d79565b60405180910390f35b34801561066957600080fd5b50610672611b47565b005b34801561068057600080fd5b5061069b60048036038101906106969190614030565b611e9a565b005b3480156106a957600080fd5b506106c460048036038101906106bf9190614030565b611f55565b6040516106d19190613d79565b60405180910390f35b3480156106e657600080fd5b5061070160048036038101906106fc9190614086565b611f75565b60405161070e9190613c6a565b60405180910390f35b34801561072357600080fd5b5061072c611ffc565b005b34801561073a57600080fd5b5061075560048036038101906107509190614030565b6122d8565b005b34801561076357600080fd5b5061076c61235b565b60405161077991906140e7565b60405180910390f35b60606003805461079190614131565b80601f01602080910402602001604051908101604052809291908181526020018280546107bd90614131565b801561080a5780601f106107df5761010080835404028352916020019161080a565b820191906000526020600020905b8154815290600101906020018083116107ed57829003601f168201915b5050505050905090565b6000600d54905090565b60008033905061082f818585612381565b600191505092915050565b6000600254905090565b6000806000806000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108869190613e84565b602060405180830381865afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190614177565b95503073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016109269291906141a4565b602060405180830381865afa158015610943573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109679190614177565b9450600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fa91906141e2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610a569291906141a4565b602060405180830381865afa158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9791906141e2565b9250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614159350600d549150600e549050909192939495565b600080339050610aef858285612515565b610afa8585856125a1565b60019150509392505050565b6000806000610b1361196b565b915091506000821480610b265750600081145b15610b3657600092505050610b89565b60006103e585610b46919061423e565b905060008282610b56919061423e565b90506000826103e886610b69919061423e565b610b739190614280565b90508082610b8191906142e3565b955050505050505b919050565b600c8181548110610b9e57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b610bde612900565b60003411610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890614386565b60405180910390fd5b60008111610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b90614418565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c9e9190613e84565b602060405180830381865afa158015610cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdf9190614177565b1015610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d17906144aa565b60405180910390fd5b610d4d30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612381565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008033426040518863ffffffff1660e01b8152600401610db496959493929190614505565b60606040518083038185885af193505050508015610df057506040513d601f19601f82011682018060405250810190610ded9190614566565b60015b610e5d57610e2230600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000612381565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490614605565b60405180910390fd5b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8134604051610e9192919061405d565b60405180910390a160004790506000811115610eef573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610eed573d6000803e3d6000fd5b505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f21612900565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690614671565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610fb36118af565b836040518363ffffffff1660e01b8152600401610fd1929190614691565b6020604051808303816000875af1158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101491906146e6565b505050565b6000600e54905090565b6060600c8054806020026020016040519081016040528092919081815260200182805480156110a757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161105d575b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600c80549050905090565b611134612900565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161116e9190613e84565b602060405180830381865afa15801561118b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111af9190614177565b10156111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e79061475f565b60405180910390fd5b6111fb3033836125a1565b50565b611206612900565b6000600d54118061121957506000600e54115b611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124f906147cb565b60405180910390fd5b6000600c80549050116112a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129790614837565b60405180910390fd5b6112a8612977565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112d8612900565b600f60009054906101000a900460ff1615611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f906148a3565b60405180910390fd5b6001600f60006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016113c29291906141a4565b6020604051808303816000875af11580156113e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140591906141e2565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd9061490f565b60405180910390fd5b61152330600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612381565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115c2929190614691565b6020604051808303816000875af11580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160591906146e6565b611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b9061497b565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116e3929190614691565b6020604051808303816000875af1158015611702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172691906146e6565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117a4929190614691565b6020604051808303816000875af11580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e791906146e6565b507f1aee311dae12417944704a8411a039c41e8ae395e0c0075565cb1c93934babc4600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516118a5949392919061499b565b60405180910390a1565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546118e890614131565b80601f016020809104026020016040519081016040528092919081815260200182805461191490614131565b80156119615780601f1061193657610100808354040283529160200191611961565b820191906000526020600020905b81548152906001019060200180831161194457829003601f168201915b5050505050905090565b600080600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a029190614a62565b50915091506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9a91906141e2565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611afd57826dffffffffffffffffffffffffffff16826dffffffffffffffffffffffffffff1694509450505050611b27565b816dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16945094505050505b9091565b600080339050611b3c8185856125a1565b600191505092915050565b611b4f612900565b60003073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611bae9291906141a4565b602060405180830381865afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bef9190614177565b905069d3c21bcecceda1000000811015611c3b57611c3a30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000612381565b5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c989190613e84565b602060405180830381865afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd99190614177565b90506000811115611e96576000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611d659291906141a4565b602060405180830381865afa158015611d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da69190614177565b905081811015611e9457600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611e4f929190614691565b6020604051808303816000875af1158015611e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9291906146e6565b505b505b5050565b611ea2612900565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890614b01565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612004612900565b61205130600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612381565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016120f0929190614691565b6020604051808303816000875af115801561210f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213391906146e6565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016121d3929190614691565b6020604051808303816000875af192505050801561220f57506040513d601f19601f8201168201806040525081019061220c91906146e6565b60015b1561221657505b3073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612293929190614691565b6020604051808303816000875af19250505080156122cf57506040513d601f19601f820116820180604052508101906122cc91906146e6565b60015b156122d657505b565b6122e0612900565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361234f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234690614b6d565b60405180910390fd5b61235881612b46565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123eb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61242a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242190614bd9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125089190613c6a565b60405180910390a3505050565b60006125218484611f75565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461259b578181101561258d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258490614c45565b60405180910390fd5b61259a8484848403612381565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561260b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61264a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264190614cb1565b60405180910390fd5b6126526118af565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806126bd575061268e6118af565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806126f357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061272957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561275057612739838383612c0c565b61274283612e4d565b61274b82612e4d565b6128fb565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806127fb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b905080156128db5760006064600584612814919061423e565b61281e91906142e3565b90506000818461282e9190614cd1565b905061283b868683612c0c565b612846863084612c0c565b60028261285391906142e3565b600d60008282546128649190614280565b9250508190555060028261287891906142e3565b600e60008282546128899190614280565b9250508190555068056bc75e2d63100000600d541015806128b5575068056bc75e2d63100000600e5410155b80156128c657506000600c80549050115b156128d4576128d3612977565b5b50506128e7565b6128e6848484612c0c565b5b6128f084612e4d565b6128f983612e4d565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff1661291f6118af565b73ffffffffffffffffffffffffffffffffffffffff1614612975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296c90614d51565b60405180910390fd5b565b6000600e54600d546129899190614280565b905068056bc75e2d631000008110806129a757506000600c80549050145b156129b25750612b44565b7f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd81600c805490506040516129e892919061405d565b60405180910390a160006064604b83612a01919061423e565b612a0b91906142e3565b905060008183612a1b9190614cd1565b90506000600d819055506000600e819055506000612a3883613097565b905060008103612a595781600d8190555082600e8190555050505050612b44565b6000821115612a8b5760006064601983612a73919061423e565b612a7d91906142e3565b9050612a8983826134e0565b505b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612ae89190613e84565b602060405180830381865afa158015612b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b299190614177565b90506000811115612b3e57612b3d816137e6565b5b50505050505b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c765750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cac90614dbd565b60405180910390fd5b612cc08383836139e5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3d90614e29565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e349190613c6a565b60405180910390a3612e478484846139f5565b50505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612ed757503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15613094576000612ee7826110d7565b90506000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050678ac7230489e800008210158015612f50575080155b15613015576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613091565b678ac7230489e80000821080156130295750805b15613090576000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061308f83613a05565b5b5b50505b50565b60008082036130a957600090506134db565b6000600267ffffffffffffffff8111156130c6576130c5614e49565b5b6040519080825280602002602001820160405280156130f45781602001602082028036833780820191505090505b509050308160008151811061310c5761310b614e78565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061317d5761317c614e78565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060003073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016132169291906141a4565b602060405180830381865afa158015613233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132579190614177565b9050838110156132af576132ae30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612381565b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795856000853061012c426133009190614280565b6040518663ffffffff1660e01b8152600401613320959493929190614ea7565b600060405180830381600087803b15801561333a57600080fd5b505af192505050801561334b575060015b6133fb57613357614f0e565b806308c379a0036133b9575061336b614f61565b8061337657506133bb565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723816040516133a59190613c2f565b60405180910390a1600093505050506134db565b505b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec07236040516133e89061503d565b60405180910390a16000925050506134db565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016134589190613e84565b602060405180830381865afa158015613475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134999190614177565b90507fdd819f6d4da11821175805e17c46b8094c817290420e3de00dee96b4d256dc0185826040516134cc92919061405d565b60405180910390a18093505050505b919050565b60008214806134ef5750600081145b6137e25761352030600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612381565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161359f929190614691565b6020604051808303816000875af11580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e291906146e6565b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685856064601e60646136579190614cd1565b89613662919061423e565b61366c91906142e3565b6064601e606461367c9190614cd1565b89613687919061423e565b61369191906142e3565b3061012c426136a09190614280565b6040518963ffffffff1660e01b81526004016136c398979695949392919061505d565b6060604051808303816000875af19250505080156136ff57506040513d601f19601f820116820180604052508101906136fc9190614566565b60015b6137a45761370b614f0e565b806308c379a003613767575061371f614f61565b8061372a5750613769565b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad816040516137599190613c2f565b60405180910390a15061379f565b505b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad60405161379690615127565b60405180910390a15b6137e1565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b82826040516137d892919061405d565b60405180910390a15b5b5050565b60008114806137fa57506000600c80549050145b6139e2576000600c805490508261381191906142e3565b90506000810361382157506139e2565b60005b600c80549050811080156138385750606481105b156139a157600073ffffffffffffffffffffffffffffffffffffffff16600c828154811061386957613868614e78565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461398d57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600c838154811061390157613900614e78565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161394a929190614691565b6020604051808303816000875af192505050801561398657506040513d601f19601f8201168201806040525081019061398391906146e6565b60015b1561398e57505b5b808061399990615147565b915050613824565b507f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21782600c805490506040516139d892919061405d565b60405180910390a1505b50565b6139f0838383613b95565b505050565b613a00838383613b9a565b505050565b60005b600c80549050811015613b91578173ffffffffffffffffffffffffffffffffffffffff16600c8281548110613a4057613a3f614e78565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613b7e57600c6001600c80549050613a9a9190614cd1565b81548110613aab57613aaa614e78565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c8281548110613aea57613ae9614e78565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c805480613b4457613b4361518f565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613b91565b8080613b8990615147565b915050613a08565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613bd9578082015181840152602081019050613bbe565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c0182613b9f565b613c0b8185613baa565b9350613c1b818560208601613bbb565b613c2481613be5565b840191505092915050565b60006020820190508181036000830152613c498184613bf6565b905092915050565b6000819050919050565b613c6481613c51565b82525050565b6000602082019050613c7f6000830184613c5b565b92915050565b6000604051905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613cbf82613c94565b9050919050565b613ccf81613cb4565b8114613cda57600080fd5b50565b600081359050613cec81613cc6565b92915050565b613cfb81613c51565b8114613d0657600080fd5b50565b600081359050613d1881613cf2565b92915050565b60008060408385031215613d3557613d34613c8f565b5b6000613d4385828601613cdd565b9250506020613d5485828601613d09565b9150509250929050565b60008115159050919050565b613d7381613d5e565b82525050565b6000602082019050613d8e6000830184613d6a565b92915050565b613d9d81613cb4565b82525050565b600060c082019050613db86000830189613c5b565b613dc56020830188613c5b565b613dd26040830187613d6a565b613ddf6060830186613d94565b613dec6080830185613c5b565b613df960a0830184613c5b565b979650505050505050565b600080600060608486031215613e1d57613e1c613c8f565b5b6000613e2b86828701613cdd565b9350506020613e3c86828701613cdd565b9250506040613e4d86828701613d09565b9150509250925092565b600060208284031215613e6d57613e6c613c8f565b5b6000613e7b84828501613d09565b91505092915050565b6000602082019050613e996000830184613d94565b92915050565b600060ff82169050919050565b613eb581613e9f565b82525050565b6000602082019050613ed06000830184613eac565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f0b81613cb4565b82525050565b6000613f1d8383613f02565b60208301905092915050565b6000602082019050919050565b6000613f4182613ed6565b613f4b8185613ee1565b9350613f5683613ef2565b8060005b83811015613f87578151613f6e8882613f11565b9750613f7983613f29565b925050600181019050613f5a565b5085935050505092915050565b60006020820190508181036000830152613fae8184613f36565b905092915050565b6000819050919050565b6000613fdb613fd6613fd184613c94565b613fb6565b613c94565b9050919050565b6000613fed82613fc0565b9050919050565b6000613fff82613fe2565b9050919050565b61400f81613ff4565b82525050565b600060208201905061402a6000830184614006565b92915050565b60006020828403121561404657614045613c8f565b5b600061405484828501613cdd565b91505092915050565b60006040820190506140726000830185613c5b565b61407f6020830184613c5b565b9392505050565b6000806040838503121561409d5761409c613c8f565b5b60006140ab85828601613cdd565b92505060206140bc85828601613cdd565b9150509250929050565b60006140d182613fe2565b9050919050565b6140e1816140c6565b82525050565b60006020820190506140fc60008301846140d8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061414957607f821691505b60208210810361415c5761415b614102565b5b50919050565b60008151905061417181613cf2565b92915050565b60006020828403121561418d5761418c613c8f565b5b600061419b84828501614162565b91505092915050565b60006040820190506141b96000830185613d94565b6141c66020830184613d94565b9392505050565b6000815190506141dc81613cc6565b92915050565b6000602082840312156141f8576141f7613c8f565b5b6000614206848285016141cd565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061424982613c51565b915061425483613c51565b925082820261426281613c51565b915082820484148315176142795761427861420f565b5b5092915050565b600061428b82613c51565b915061429683613c51565b92508282019050808211156142ae576142ad61420f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142ee82613c51565b91506142f983613c51565b925082614309576143086142b4565b5b828204905092915050565b7f4d7573742070726f766964652045544820666f7220696e697469616c206c697160008201527f7569646974790000000000000000000000000000000000000000000000000000602082015250565b6000614370602683613baa565b915061437b82614314565b604082019050919050565b6000602082019050818103600083015261439f81614363565b9050919050565b7f4d7573742070726f7669646520746f6b656e20616d6f756e7420666f7220696e60008201527f697469616c206c69717569646974790000000000000000000000000000000000602082015250565b6000614402602f83613baa565b915061440d826143a6565b604082019050919050565b60006020820190508181036000830152614431816143f5565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000614494602683613baa565b915061449f82614438565b604082019050919050565b600060208201905081810360008301526144c381614487565b9050919050565b6000819050919050565b60006144ef6144ea6144e5846144ca565b613fb6565b613c51565b9050919050565b6144ff816144d4565b82525050565b600060c08201905061451a6000830189613d94565b6145276020830188613c5b565b61453460408301876144f6565b61454160608301866144f6565b61454e6080830185613d94565b61455b60a0830184613c5b565b979650505050505050565b60008060006060848603121561457f5761457e613c8f565b5b600061458d86828701614162565b935050602061459e86828701614162565b92505060406145af86828701614162565b9150509250925092565b7f4661696c656420746f20616464206c6971756964697479000000000000000000600082015250565b60006145ef601783613baa565b91506145fa826145b9565b602082019050919050565b6000602082019050818103600083015261461e816145e2565b9050919050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e730000000000600082015250565b600061465b601b83613baa565b915061466682614625565b602082019050919050565b6000602082019050818103600083015261468a8161464e565b9050919050565b60006040820190506146a66000830185613d94565b6146b36020830184613c5b565b9392505050565b6146c381613d5e565b81146146ce57600080fd5b50565b6000815190506146e0816146ba565b92915050565b6000602082840312156146fc576146fb613c8f565b5b600061470a848285016146d1565b91505092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614749601483613baa565b915061475482614713565b602082019050919050565b600060208201905081810360008301526147788161473c565b9050919050565b7f4e6f2070656e64696e6720746f6b656e73000000000000000000000000000000600082015250565b60006147b5601183613baa565b91506147c08261477f565b602082019050919050565b600060208201905081810360008301526147e4816147a8565b9050919050565b7f4e6f20686f6c6465727300000000000000000000000000000000000000000000600082015250565b6000614821600a83613baa565b915061482c826147eb565b602082019050919050565b6000602082019050818103600083015261485081614814565b9050919050565b7f4632000000000000000000000000000000000000000000000000000000000000600082015250565b600061488d600283613baa565b915061489882614857565b602082019050919050565b600060208201905081810360008301526148bc81614880565b9050919050565b7f4633000000000000000000000000000000000000000000000000000000000000600082015250565b60006148f9600283613baa565b9150614904826148c3565b602082019050919050565b60006020820190508181036000830152614928816148ec565b9050919050565b7f4634000000000000000000000000000000000000000000000000000000000000600082015250565b6000614965600283613baa565b91506149708261492f565b602082019050919050565b6000602082019050818103600083015261499481614958565b9050919050565b60006080820190506149b06000830187613d94565b6149bd6020830186613d94565b6149ca6040830185613d94565b6149d76060830184613d94565b95945050505050565b60006dffffffffffffffffffffffffffff82169050919050565b614a03816149e0565b8114614a0e57600080fd5b50565b600081519050614a20816149fa565b92915050565b600063ffffffff82169050919050565b614a3f81614a26565b8114614a4a57600080fd5b50565b600081519050614a5c81614a36565b92915050565b600080600060608486031215614a7b57614a7a613c8f565b5b6000614a8986828701614a11565b9350506020614a9a86828701614a11565b9250506040614aab86828701614a4d565b9150509250925092565b7f496e76616c696420726f75746572206164647265737300000000000000000000600082015250565b6000614aeb601683613baa565b9150614af682614ab5565b602082019050919050565b60006020820190508181036000830152614b1a81614ade565b9050919050565b7f4f31000000000000000000000000000000000000000000000000000000000000600082015250565b6000614b57600283613baa565b9150614b6282614b21565b602082019050919050565b60006020820190508181036000830152614b8681614b4a565b9050919050565b7f4534000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bc3600283613baa565b9150614bce82614b8d565b602082019050919050565b60006020820190508181036000830152614bf281614bb6565b9050919050565b7f4535000000000000000000000000000000000000000000000000000000000000600082015250565b6000614c2f600283613baa565b9150614c3a82614bf9565b602082019050919050565b60006020820190508181036000830152614c5e81614c22565b9050919050565b7f5472616e7366657220746f2f66726f6d207a65726f2061646472657373000000600082015250565b6000614c9b601d83613baa565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b6000614cdc82613c51565b9150614ce783613c51565b9250828203905081811115614cff57614cfe61420f565b5b92915050565b7f4f32000000000000000000000000000000000000000000000000000000000000600082015250565b6000614d3b600283613baa565b9150614d4682614d05565b602082019050919050565b60006020820190508181036000830152614d6a81614d2e565b9050919050565b7f4531000000000000000000000000000000000000000000000000000000000000600082015250565b6000614da7600283613baa565b9150614db282614d71565b602082019050919050565b60006020820190508181036000830152614dd681614d9a565b9050919050565b7f4532000000000000000000000000000000000000000000000000000000000000600082015250565b6000614e13600283613baa565b9150614e1e82614ddd565b602082019050919050565b60006020820190508181036000830152614e4281614e06565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a082019050614ebc6000830188613c5b565b614ec960208301876144f6565b8181036040830152614edb8186613f36565b9050614eea6060830185613d94565b614ef76080830184613c5b565b9695505050505050565b60008160e01c9050919050565b600060033d1115614f2d5760046000803e614f2a600051614f01565b90505b90565b614f3982613be5565b810181811067ffffffffffffffff82111715614f5857614f57614e49565b5b80604052505050565b600060443d10614fee57614f73613c85565b60043d036004823e80513d602482011167ffffffffffffffff82111715614f9b575050614fee565b808201805167ffffffffffffffff811115614fb95750505050614fee565b80602083010160043d038501811115614fd6575050505050614fee565b614fe582602001850186614f30565b82955050505050505b90565b7f556e6b6e6f776e206572726f7220696e20737761700000000000000000000000600082015250565b6000615027601583613baa565b915061503282614ff1565b602082019050919050565b600060208201905081810360008301526150568161501a565b9050919050565b600061010082019050615073600083018b613d94565b615080602083018a613d94565b61508d6040830189613c5b565b61509a6060830188613c5b565b6150a76080830187613c5b565b6150b460a0830186613c5b565b6150c160c0830185613d94565b6150ce60e0830184613c5b565b9998505050505050505050565b7f556e6b6e6f776e206572726f7220696e206164644c6971756964697479000000600082015250565b6000615111601d83613baa565b915061511c826150db565b602082019050919050565b6000602082019050818103600083015261514081615104565b9050919050565b600061515282613c51565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151845761518361420f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202a833c3844eb0f09a9e4cc285766be7749f0b9cfc84165df3336c47cec4185d264736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101e75760003560e01c80637136982b11610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e146106da578063ed9cacfe14610717578063f2fde38b1461072e578063fd7c9fab14610757576101ee565b8063a9059cbb14610620578063c026d93a1461065d578063c0d7865514610674578063d4d7b19a1461069d576101ee565b80638129fc1c116100d15780638129fc1c146105875780638da5cb5b1461059e57806395d89b41146105c95780639df93f6c146105f4576101ee565b80637136982b146104f157806379304bec1461051c5780637ac84fc114610545578063808a54571461055c576101ee565b8063313ce5671161017a5780635d76b04c116101495780635d76b04c146104335780635fe8e7cc1461045e57806362b6327a1461048957806370a08231146104b4576101ee565b8063313ce5671461039857806341a22cc2146103c3578063461a3a95146103df578063573761981461040a576101ee565b80631b26c80d116101b65780631b26c80d146102b157806323b872dd146102e1578063298926cb1461031e5780632a11ced01461035b576101ee565b806306fdde03146101f357806308dee2b41461021e578063095ea7b31461024957806318160ddd14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610782565b6040516102159190613c2f565b60405180910390f35b34801561022a57600080fd5b50610233610814565b6040516102409190613c6a565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190613d1e565b61081e565b60405161027d9190613d79565b60405180910390f35b34801561029257600080fd5b5061029b61083a565b6040516102a89190613c6a565b60405180910390f35b3480156102bd57600080fd5b506102c6610844565b6040516102d896959493929190613da3565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190613e04565b610ade565b6040516103159190613d79565b60405180910390f35b34801561032a57600080fd5b5061034560048036038101906103409190613e57565b610b06565b6040516103529190613c6a565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190613e57565b610b8e565b60405161038f9190613e84565b60405180910390f35b3480156103a457600080fd5b506103ad610bcd565b6040516103ba9190613ebb565b60405180910390f35b6103dd60048036038101906103d89190613e57565b610bd6565b005b3480156103eb57600080fd5b506103f4610ef3565b6040516104019190613e84565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613d1e565b610f19565b005b34801561043f57600080fd5b50610448611019565b6040516104559190613c6a565b60405180910390f35b34801561046a57600080fd5b50610473611023565b6040516104809190613f94565b60405180910390f35b34801561049557600080fd5b5061049e6110b1565b6040516104ab9190614015565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190614030565b6110d7565b6040516104e89190613c6a565b60405180910390f35b3480156104fd57600080fd5b5061050661111f565b6040516105139190613c6a565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190613e57565b61112c565b005b34801561055157600080fd5b5061055a6111fe565b005b34801561056857600080fd5b506105716112aa565b60405161057e9190613e84565b60405180910390f35b34801561059357600080fd5b5061059c6112d0565b005b3480156105aa57600080fd5b506105b36118af565b6040516105c09190613e84565b60405180910390f35b3480156105d557600080fd5b506105de6118d9565b6040516105eb9190613c2f565b60405180910390f35b34801561060057600080fd5b5061060961196b565b60405161061792919061405d565b60405180910390f35b34801561062c57600080fd5b5061064760048036038101906106429190613d1e565b611b2b565b6040516106549190613d79565b60405180910390f35b34801561066957600080fd5b50610672611b47565b005b34801561068057600080fd5b5061069b60048036038101906106969190614030565b611e9a565b005b3480156106a957600080fd5b506106c460048036038101906106bf9190614030565b611f55565b6040516106d19190613d79565b60405180910390f35b3480156106e657600080fd5b5061070160048036038101906106fc9190614086565b611f75565b60405161070e9190613c6a565b60405180910390f35b34801561072357600080fd5b5061072c611ffc565b005b34801561073a57600080fd5b5061075560048036038101906107509190614030565b6122d8565b005b34801561076357600080fd5b5061076c61235b565b60405161077991906140e7565b60405180910390f35b60606003805461079190614131565b80601f01602080910402602001604051908101604052809291908181526020018280546107bd90614131565b801561080a5780601f106107df5761010080835404028352916020019161080a565b820191906000526020600020905b8154815290600101906020018083116107ed57829003601f168201915b5050505050905090565b6000600d54905090565b60008033905061082f818585612381565b600191505092915050565b6000600254905090565b6000806000806000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108869190613e84565b602060405180830381865afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190614177565b95503073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016109269291906141a4565b602060405180830381865afa158015610943573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109679190614177565b9450600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fa91906141e2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610a569291906141a4565b602060405180830381865afa158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9791906141e2565b9250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614159350600d549150600e549050909192939495565b600080339050610aef858285612515565b610afa8585856125a1565b60019150509392505050565b6000806000610b1361196b565b915091506000821480610b265750600081145b15610b3657600092505050610b89565b60006103e585610b46919061423e565b905060008282610b56919061423e565b90506000826103e886610b69919061423e565b610b739190614280565b90508082610b8191906142e3565b955050505050505b919050565b600c8181548110610b9e57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b610bde612900565b60003411610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890614386565b60405180910390fd5b60008111610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b90614418565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c9e9190613e84565b602060405180830381865afa158015610cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdf9190614177565b1015610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d17906144aa565b60405180910390fd5b610d4d30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612381565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008033426040518863ffffffff1660e01b8152600401610db496959493929190614505565b60606040518083038185885af193505050508015610df057506040513d601f19601f82011682018060405250810190610ded9190614566565b60015b610e5d57610e2230600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000612381565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490614605565b60405180910390fd5b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8134604051610e9192919061405d565b60405180910390a160004790506000811115610eef573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610eed573d6000803e3d6000fd5b505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f21612900565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690614671565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610fb36118af565b836040518363ffffffff1660e01b8152600401610fd1929190614691565b6020604051808303816000875af1158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101491906146e6565b505050565b6000600e54905090565b6060600c8054806020026020016040519081016040528092919081815260200182805480156110a757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161105d575b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600c80549050905090565b611134612900565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161116e9190613e84565b602060405180830381865afa15801561118b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111af9190614177565b10156111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e79061475f565b60405180910390fd5b6111fb3033836125a1565b50565b611206612900565b6000600d54118061121957506000600e54115b611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124f906147cb565b60405180910390fd5b6000600c80549050116112a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129790614837565b60405180910390fd5b6112a8612977565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112d8612900565b600f60009054906101000a900460ff1615611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f906148a3565b60405180910390fd5b6001600f60006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016113c29291906141a4565b6020604051808303816000875af11580156113e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140591906141e2565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd9061490f565b60405180910390fd5b61152330600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612381565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115c2929190614691565b6020604051808303816000875af11580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160591906146e6565b611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b9061497b565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116e3929190614691565b6020604051808303816000875af1158015611702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172691906146e6565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117a4929190614691565b6020604051808303816000875af11580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e791906146e6565b507f1aee311dae12417944704a8411a039c41e8ae395e0c0075565cb1c93934babc4600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516118a5949392919061499b565b60405180910390a1565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546118e890614131565b80601f016020809104026020016040519081016040528092919081815260200182805461191490614131565b80156119615780601f1061193657610100808354040283529160200191611961565b820191906000526020600020905b81548152906001019060200180831161194457829003601f168201915b5050505050905090565b600080600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a029190614a62565b50915091506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9a91906141e2565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611afd57826dffffffffffffffffffffffffffff16826dffffffffffffffffffffffffffff1694509450505050611b27565b816dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16945094505050505b9091565b600080339050611b3c8185856125a1565b600191505092915050565b611b4f612900565b60003073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611bae9291906141a4565b602060405180830381865afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bef9190614177565b905069d3c21bcecceda1000000811015611c3b57611c3a30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000612381565b5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c989190613e84565b602060405180830381865afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd99190614177565b90506000811115611e96576000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611d659291906141a4565b602060405180830381865afa158015611d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da69190614177565b905081811015611e9457600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611e4f929190614691565b6020604051808303816000875af1158015611e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9291906146e6565b505b505b5050565b611ea2612900565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890614b01565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612004612900565b61205130600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612381565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016120f0929190614691565b6020604051808303816000875af115801561210f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213391906146e6565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016121d3929190614691565b6020604051808303816000875af192505050801561220f57506040513d601f19601f8201168201806040525081019061220c91906146e6565b60015b1561221657505b3073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612293929190614691565b6020604051808303816000875af19250505080156122cf57506040513d601f19601f820116820180604052508101906122cc91906146e6565b60015b156122d657505b565b6122e0612900565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361234f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234690614b6d565b60405180910390fd5b61235881612b46565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123eb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61242a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242190614bd9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125089190613c6a565b60405180910390a3505050565b60006125218484611f75565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461259b578181101561258d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258490614c45565b60405180910390fd5b61259a8484848403612381565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561260b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61264a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264190614cb1565b60405180910390fd5b6126526118af565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806126bd575061268e6118af565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806126f357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061272957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561275057612739838383612c0c565b61274283612e4d565b61274b82612e4d565b6128fb565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806127fb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b905080156128db5760006064600584612814919061423e565b61281e91906142e3565b90506000818461282e9190614cd1565b905061283b868683612c0c565b612846863084612c0c565b60028261285391906142e3565b600d60008282546128649190614280565b9250508190555060028261287891906142e3565b600e60008282546128899190614280565b9250508190555068056bc75e2d63100000600d541015806128b5575068056bc75e2d63100000600e5410155b80156128c657506000600c80549050115b156128d4576128d3612977565b5b50506128e7565b6128e6848484612c0c565b5b6128f084612e4d565b6128f983612e4d565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff1661291f6118af565b73ffffffffffffffffffffffffffffffffffffffff1614612975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296c90614d51565b60405180910390fd5b565b6000600e54600d546129899190614280565b905068056bc75e2d631000008110806129a757506000600c80549050145b156129b25750612b44565b7f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd81600c805490506040516129e892919061405d565b60405180910390a160006064604b83612a01919061423e565b612a0b91906142e3565b905060008183612a1b9190614cd1565b90506000600d819055506000600e819055506000612a3883613097565b905060008103612a595781600d8190555082600e8190555050505050612b44565b6000821115612a8b5760006064601983612a73919061423e565b612a7d91906142e3565b9050612a8983826134e0565b505b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612ae89190613e84565b602060405180830381865afa158015612b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b299190614177565b90506000811115612b3e57612b3d816137e6565b5b50505050505b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c765750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cac90614dbd565b60405180910390fd5b612cc08383836139e5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3d90614e29565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e349190613c6a565b60405180910390a3612e478484846139f5565b50505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612ed757503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15613094576000612ee7826110d7565b90506000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050678ac7230489e800008210158015612f50575080155b15613015576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613091565b678ac7230489e80000821080156130295750805b15613090576000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061308f83613a05565b5b5b50505b50565b60008082036130a957600090506134db565b6000600267ffffffffffffffff8111156130c6576130c5614e49565b5b6040519080825280602002602001820160405280156130f45781602001602082028036833780820191505090505b509050308160008151811061310c5761310b614e78565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061317d5761317c614e78565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060003073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016132169291906141a4565b602060405180830381865afa158015613233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132579190614177565b9050838110156132af576132ae30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612381565b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795856000853061012c426133009190614280565b6040518663ffffffff1660e01b8152600401613320959493929190614ea7565b600060405180830381600087803b15801561333a57600080fd5b505af192505050801561334b575060015b6133fb57613357614f0e565b806308c379a0036133b9575061336b614f61565b8061337657506133bb565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723816040516133a59190613c2f565b60405180910390a1600093505050506134db565b505b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec07236040516133e89061503d565b60405180910390a16000925050506134db565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016134589190613e84565b602060405180830381865afa158015613475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134999190614177565b90507fdd819f6d4da11821175805e17c46b8094c817290420e3de00dee96b4d256dc0185826040516134cc92919061405d565b60405180910390a18093505050505b919050565b60008214806134ef5750600081145b6137e25761352030600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612381565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161359f929190614691565b6020604051808303816000875af11580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e291906146e6565b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685856064601e60646136579190614cd1565b89613662919061423e565b61366c91906142e3565b6064601e606461367c9190614cd1565b89613687919061423e565b61369191906142e3565b3061012c426136a09190614280565b6040518963ffffffff1660e01b81526004016136c398979695949392919061505d565b6060604051808303816000875af19250505080156136ff57506040513d601f19601f820116820180604052508101906136fc9190614566565b60015b6137a45761370b614f0e565b806308c379a003613767575061371f614f61565b8061372a5750613769565b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad816040516137599190613c2f565b60405180910390a15061379f565b505b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad60405161379690615127565b60405180910390a15b6137e1565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b82826040516137d892919061405d565b60405180910390a15b5b5050565b60008114806137fa57506000600c80549050145b6139e2576000600c805490508261381191906142e3565b90506000810361382157506139e2565b60005b600c80549050811080156138385750606481105b156139a157600073ffffffffffffffffffffffffffffffffffffffff16600c828154811061386957613868614e78565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461398d57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600c838154811061390157613900614e78565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161394a929190614691565b6020604051808303816000875af192505050801561398657506040513d601f19601f8201168201806040525081019061398391906146e6565b60015b1561398e57505b5b808061399990615147565b915050613824565b507f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21782600c805490506040516139d892919061405d565b60405180910390a1505b50565b6139f0838383613b95565b505050565b613a00838383613b9a565b505050565b60005b600c80549050811015613b91578173ffffffffffffffffffffffffffffffffffffffff16600c8281548110613a4057613a3f614e78565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613b7e57600c6001600c80549050613a9a9190614cd1565b81548110613aab57613aaa614e78565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c8281548110613aea57613ae9614e78565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c805480613b4457613b4361518f565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613b91565b8080613b8990615147565b915050613a08565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613bd9578082015181840152602081019050613bbe565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c0182613b9f565b613c0b8185613baa565b9350613c1b818560208601613bbb565b613c2481613be5565b840191505092915050565b60006020820190508181036000830152613c498184613bf6565b905092915050565b6000819050919050565b613c6481613c51565b82525050565b6000602082019050613c7f6000830184613c5b565b92915050565b6000604051905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613cbf82613c94565b9050919050565b613ccf81613cb4565b8114613cda57600080fd5b50565b600081359050613cec81613cc6565b92915050565b613cfb81613c51565b8114613d0657600080fd5b50565b600081359050613d1881613cf2565b92915050565b60008060408385031215613d3557613d34613c8f565b5b6000613d4385828601613cdd565b9250506020613d5485828601613d09565b9150509250929050565b60008115159050919050565b613d7381613d5e565b82525050565b6000602082019050613d8e6000830184613d6a565b92915050565b613d9d81613cb4565b82525050565b600060c082019050613db86000830189613c5b565b613dc56020830188613c5b565b613dd26040830187613d6a565b613ddf6060830186613d94565b613dec6080830185613c5b565b613df960a0830184613c5b565b979650505050505050565b600080600060608486031215613e1d57613e1c613c8f565b5b6000613e2b86828701613cdd565b9350506020613e3c86828701613cdd565b9250506040613e4d86828701613d09565b9150509250925092565b600060208284031215613e6d57613e6c613c8f565b5b6000613e7b84828501613d09565b91505092915050565b6000602082019050613e996000830184613d94565b92915050565b600060ff82169050919050565b613eb581613e9f565b82525050565b6000602082019050613ed06000830184613eac565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f0b81613cb4565b82525050565b6000613f1d8383613f02565b60208301905092915050565b6000602082019050919050565b6000613f4182613ed6565b613f4b8185613ee1565b9350613f5683613ef2565b8060005b83811015613f87578151613f6e8882613f11565b9750613f7983613f29565b925050600181019050613f5a565b5085935050505092915050565b60006020820190508181036000830152613fae8184613f36565b905092915050565b6000819050919050565b6000613fdb613fd6613fd184613c94565b613fb6565b613c94565b9050919050565b6000613fed82613fc0565b9050919050565b6000613fff82613fe2565b9050919050565b61400f81613ff4565b82525050565b600060208201905061402a6000830184614006565b92915050565b60006020828403121561404657614045613c8f565b5b600061405484828501613cdd565b91505092915050565b60006040820190506140726000830185613c5b565b61407f6020830184613c5b565b9392505050565b6000806040838503121561409d5761409c613c8f565b5b60006140ab85828601613cdd565b92505060206140bc85828601613cdd565b9150509250929050565b60006140d182613fe2565b9050919050565b6140e1816140c6565b82525050565b60006020820190506140fc60008301846140d8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061414957607f821691505b60208210810361415c5761415b614102565b5b50919050565b60008151905061417181613cf2565b92915050565b60006020828403121561418d5761418c613c8f565b5b600061419b84828501614162565b91505092915050565b60006040820190506141b96000830185613d94565b6141c66020830184613d94565b9392505050565b6000815190506141dc81613cc6565b92915050565b6000602082840312156141f8576141f7613c8f565b5b6000614206848285016141cd565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061424982613c51565b915061425483613c51565b925082820261426281613c51565b915082820484148315176142795761427861420f565b5b5092915050565b600061428b82613c51565b915061429683613c51565b92508282019050808211156142ae576142ad61420f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142ee82613c51565b91506142f983613c51565b925082614309576143086142b4565b5b828204905092915050565b7f4d7573742070726f766964652045544820666f7220696e697469616c206c697160008201527f7569646974790000000000000000000000000000000000000000000000000000602082015250565b6000614370602683613baa565b915061437b82614314565b604082019050919050565b6000602082019050818103600083015261439f81614363565b9050919050565b7f4d7573742070726f7669646520746f6b656e20616d6f756e7420666f7220696e60008201527f697469616c206c69717569646974790000000000000000000000000000000000602082015250565b6000614402602f83613baa565b915061440d826143a6565b604082019050919050565b60006020820190508181036000830152614431816143f5565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000614494602683613baa565b915061449f82614438565b604082019050919050565b600060208201905081810360008301526144c381614487565b9050919050565b6000819050919050565b60006144ef6144ea6144e5846144ca565b613fb6565b613c51565b9050919050565b6144ff816144d4565b82525050565b600060c08201905061451a6000830189613d94565b6145276020830188613c5b565b61453460408301876144f6565b61454160608301866144f6565b61454e6080830185613d94565b61455b60a0830184613c5b565b979650505050505050565b60008060006060848603121561457f5761457e613c8f565b5b600061458d86828701614162565b935050602061459e86828701614162565b92505060406145af86828701614162565b9150509250925092565b7f4661696c656420746f20616464206c6971756964697479000000000000000000600082015250565b60006145ef601783613baa565b91506145fa826145b9565b602082019050919050565b6000602082019050818103600083015261461e816145e2565b9050919050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e730000000000600082015250565b600061465b601b83613baa565b915061466682614625565b602082019050919050565b6000602082019050818103600083015261468a8161464e565b9050919050565b60006040820190506146a66000830185613d94565b6146b36020830184613c5b565b9392505050565b6146c381613d5e565b81146146ce57600080fd5b50565b6000815190506146e0816146ba565b92915050565b6000602082840312156146fc576146fb613c8f565b5b600061470a848285016146d1565b91505092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614749601483613baa565b915061475482614713565b602082019050919050565b600060208201905081810360008301526147788161473c565b9050919050565b7f4e6f2070656e64696e6720746f6b656e73000000000000000000000000000000600082015250565b60006147b5601183613baa565b91506147c08261477f565b602082019050919050565b600060208201905081810360008301526147e4816147a8565b9050919050565b7f4e6f20686f6c6465727300000000000000000000000000000000000000000000600082015250565b6000614821600a83613baa565b915061482c826147eb565b602082019050919050565b6000602082019050818103600083015261485081614814565b9050919050565b7f4632000000000000000000000000000000000000000000000000000000000000600082015250565b600061488d600283613baa565b915061489882614857565b602082019050919050565b600060208201905081810360008301526148bc81614880565b9050919050565b7f4633000000000000000000000000000000000000000000000000000000000000600082015250565b60006148f9600283613baa565b9150614904826148c3565b602082019050919050565b60006020820190508181036000830152614928816148ec565b9050919050565b7f4634000000000000000000000000000000000000000000000000000000000000600082015250565b6000614965600283613baa565b91506149708261492f565b602082019050919050565b6000602082019050818103600083015261499481614958565b9050919050565b60006080820190506149b06000830187613d94565b6149bd6020830186613d94565b6149ca6040830185613d94565b6149d76060830184613d94565b95945050505050565b60006dffffffffffffffffffffffffffff82169050919050565b614a03816149e0565b8114614a0e57600080fd5b50565b600081519050614a20816149fa565b92915050565b600063ffffffff82169050919050565b614a3f81614a26565b8114614a4a57600080fd5b50565b600081519050614a5c81614a36565b92915050565b600080600060608486031215614a7b57614a7a613c8f565b5b6000614a8986828701614a11565b9350506020614a9a86828701614a11565b9250506040614aab86828701614a4d565b9150509250925092565b7f496e76616c696420726f75746572206164647265737300000000000000000000600082015250565b6000614aeb601683613baa565b9150614af682614ab5565b602082019050919050565b60006020820190508181036000830152614b1a81614ade565b9050919050565b7f4f31000000000000000000000000000000000000000000000000000000000000600082015250565b6000614b57600283613baa565b9150614b6282614b21565b602082019050919050565b60006020820190508181036000830152614b8681614b4a565b9050919050565b7f4534000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bc3600283613baa565b9150614bce82614b8d565b602082019050919050565b60006020820190508181036000830152614bf281614bb6565b9050919050565b7f4535000000000000000000000000000000000000000000000000000000000000600082015250565b6000614c2f600283613baa565b9150614c3a82614bf9565b602082019050919050565b60006020820190508181036000830152614c5e81614c22565b9050919050565b7f5472616e7366657220746f2f66726f6d207a65726f2061646472657373000000600082015250565b6000614c9b601d83613baa565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b6000614cdc82613c51565b9150614ce783613c51565b9250828203905081811115614cff57614cfe61420f565b5b92915050565b7f4f32000000000000000000000000000000000000000000000000000000000000600082015250565b6000614d3b600283613baa565b9150614d4682614d05565b602082019050919050565b60006020820190508181036000830152614d6a81614d2e565b9050919050565b7f4531000000000000000000000000000000000000000000000000000000000000600082015250565b6000614da7600283613baa565b9150614db282614d71565b602082019050919050565b60006020820190508181036000830152614dd681614d9a565b9050919050565b7f4532000000000000000000000000000000000000000000000000000000000000600082015250565b6000614e13600283613baa565b9150614e1e82614ddd565b602082019050919050565b60006020820190508181036000830152614e4281614e06565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a082019050614ebc6000830188613c5b565b614ec960208301876144f6565b8181036040830152614edb8186613f36565b9050614eea6060830185613d94565b614ef76080830184613c5b565b9695505050505050565b60008160e01c9050919050565b600060033d1115614f2d5760046000803e614f2a600051614f01565b90505b90565b614f3982613be5565b810181811067ffffffffffffffff82111715614f5857614f57614e49565b5b80604052505050565b600060443d10614fee57614f73613c85565b60043d036004823e80513d602482011167ffffffffffffffff82111715614f9b575050614fee565b808201805167ffffffffffffffff811115614fb95750505050614fee565b80602083010160043d038501811115614fd6575050505050614fee565b614fe582602001850186614f30565b82955050505050505b90565b7f556e6b6e6f776e206572726f7220696e20737761700000000000000000000000600082015250565b6000615027601583613baa565b915061503282614ff1565b602082019050919050565b600060208201905081810360008301526150568161501a565b9050919050565b600061010082019050615073600083018b613d94565b615080602083018a613d94565b61508d6040830189613c5b565b61509a6060830188613c5b565b6150a76080830187613c5b565b6150b460a0830186613c5b565b6150c160c0830185613d94565b6150ce60e0830184613c5b565b9998505050505050505050565b7f556e6b6e6f776e206572726f7220696e206164644c6971756964697479000000600082015250565b6000615111601d83613baa565b915061511c826150db565b602082019050919050565b6000602082019050818103600083015261514081615104565b9050919050565b600061515282613c51565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151845761518361420f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202a833c3844eb0f09a9e4cc285766be7749f0b9cfc84165df3336c47cec4185d264736f6c63430008130033
Deployed Bytecode Sourcemap
8351:15918:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20834:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3677:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3104:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22123:654;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;3875:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23313:472;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9378:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3012:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18992:1074;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9238:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20268:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20960:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18818:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9140:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3211:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18708:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20517:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21139:254;;;;;;;;;;;;;:::i;:::-;;9270:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11051:709;;;;;;;;;;;;;:::i;:::-;;1789:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22822:427;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3337:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21401:691;;;;;;;;;;;;;:::i;:::-;;20074:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9331:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3527:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23823:406;;;;;;;;;;;;;:::i;:::-;;1992:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9188:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2810:91;2855:13;2888:5;2881:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:91;:::o;20834:118::-;20894:7;20921:23;;20914:30;;20834:118;:::o;3677:190::-;3751:4;3768:13;3784:10;3768:26;;3805:32;3814:5;3821:7;3830:6;3805:8;:32::i;:::-;3855:4;3848:11;;;3677:190;;;;:::o;3104:99::-;3156:7;3183:12;;3176:19;;3104:99;:::o;22123:654::-;22179:23;22213;22247:15;22273:12;22296:18;22325:22;22399:4;22384:31;;;22424:4;22384:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22366:64;;22474:4;22459:31;;;22499:4;22514:16;;;;;;;;;;;22459:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22441:91;;22569:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22550:54;;;22613:4;22620:10;;;;;;;;;;;22550:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22543:88;;22671:1;22655:18;;:4;:18;;;;22642:31;;22697:23;;22684:36;;22748:21;;22731:38;;22123:654;;;;;;:::o;3875:250::-;3963:4;3980:15;3998:10;3980:28;;4019:38;4035:4;4041:7;4050:6;4019:15;:38::i;:::-;4068:27;4078:4;4084:2;4088:6;4068:9;:27::i;:::-;4113:4;4106:11;;;3875:250;;;;;:::o;23313:472::-;23378:7;23399:19;23420;23443:17;:15;:17::i;:::-;23398:62;;;;23490:1;23475:11;:16;:36;;;;23510:1;23495:11;:16;23475:36;23471:50;;;23520:1;23513:8;;;;;;23471:50;23542:23;23579:3;23568:8;:14;;;;:::i;:::-;23542:40;;23616:17;23654:11;23636:15;:29;;;;:::i;:::-;23616:49;;23676:19;23721:15;23713:4;23699:11;:18;;;;:::i;:::-;23698:38;;;;:::i;:::-;23676:60;;23766:11;23754:9;:23;;;;:::i;:::-;23747:30;;;;;;;23313:472;;;;:::o;9378:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3012:84::-;3061:5;3086:2;3079:9;;3012:84;:::o;18992:1074::-;1748:13;:11;:13::i;:::-;19100:1:::1;19088:9;:13;19080:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19177:1;19163:11;:15;19155:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19323:11;19288:4;19273:31;;;19313:4;19273:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;19251:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;19413:63;19430:4;19445:16;;;;;;;;;;;19464:11;19413:8;:63::i;:::-;19493:16;;;;;;;;;;;:32;;;19533:9;19566:4;19586:11;19612:1;19628::::0;19644:10:::1;19669:15;19493:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19489:412;;19788:53;19805:4;19820:16;;;;;;;;;;;19839:1;19788:8;:53::i;:::-;19856:33;;;;;;;;;;:::i;:::-;;;;;;;;19489:412;;;;19716:38;19731:11;19744:9;19716:38;;;;;;;:::i;:::-;;;;;;;;19913:20;19936:21;19913:44;;19987:1;19972:12;:16;19968:91;;;20013:10;20005:28;;:42;20034:12;20005:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19968:91;19069:997;18992:1074:::0;:::o;9238:25::-;;;;;;;;;;;;;:::o;20268:208::-;1748:13;:11;:13::i;:::-;20379:4:::1;20361:23;;:6;:23;;::::0;20353:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20434:6;20427:23;;;20451:7;:5;:7::i;:::-;20460;20427:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20268:208:::0;;:::o;20960:114::-;21018:7;21045:21;;21038:28;;20960:114;:::o;18818:96::-;18863:16;18899:7;18892:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18818:96;:::o;9140:41::-;;;;;;;;;;;;;:::o;3211:118::-;3276:7;3303:9;:18;3313:7;3303:18;;;;;;;;;;;;;;;;3296:25;;3211:118;;;:::o;18708:98::-;18757:7;18784;:14;;;;18777:21;;18708:98;:::o;20517:266::-;1748:13;:11;:13::i;:::-;20666:6:::1;20631:4;20616:31;;;20656:4;20616:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;20594:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;20731:44;20749:4;20756:10;20768:6;20731:9;:44::i;:::-;20517:266:::0;:::o;21139:254::-;1748:13;:11;:13::i;:::-;21241:1:::1;21215:23;;:27;:56;;;;21270:1;21246:21;;:25;21215:56;21207:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;21329:1;21312:7;:14;;;;:18;21304:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;21356:29;:27;:29::i;:::-;21139:254::o:0;9270:28::-;;;;;;;;;;;;;:::o;11051:709::-;1748:13;:11;:13::i;:::-;11112:12:::1;;;;;;;;;;;11111:13;11103:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;11157:4;11142:12;;:19;;;;;;;;;;;;;;;;;;11190:17;;;;;;;;;;;:28;;;11227:4;11234:10;;;;;;;;;;;11190:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11174:13;;:71;;;;;;;;;;;;;;;;;;11289:1;11264:27;;:13;;;;;;;;;;;:27;;::::0;11256:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11311:69;11328:4;11343:16;;;;;;;;;;;11362:17;11311:8;:69::i;:::-;11416:10;;;;;;;;;;;11409:26;;;11444:16;;;;;;;;;;;11463:17;11409:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11401:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11506:10;;;;;;;;;;;11499:26;;;11526:13;;;;;;;;;;;11541:17;11499:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11585:4;11570:29;;;11600:13;;;;;;;;;;;11615:17;11570:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11651:101;11679:16;;;;;;;;;;;11706:17;;;;;;;;;;;11726:10;;;;;;;;;;;11738:13;;;;;;;;;;;11651:101;;;;;;;;;:::i;:::-;;;;;;;;11051:709::o:0;1789:87::-;1835:7;1862:6;;;;;;;;;;;1855:13;;1789:87;:::o;2909:95::-;2956:13;2989:7;2982:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2909:95;:::o;22822:427::-;22870:19;22891;22924:16;22942;22979:13;;;;;;;;;;;22963:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22923:84;;;;;23018:14;23051:13;;;;;;;;;;;23035:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23018:56;;23107:4;23089:23;;:6;:23;;;23085:101;;23145:8;23137:17;;23164:8;23156:17;;23129:45;;;;;;;;;23085:101;23212:8;23204:17;;23231:8;23223:17;;23196:45;;;;;;;22822:427;;;:::o;3337:182::-;3407:4;3424:13;3440:10;3424:26;;3461:28;3471:5;3478:2;3482:6;3461:9;:28::i;:::-;3507:4;3500:11;;;3337:182;;;;:::o;21401:691::-;1748:13;:11;:13::i;:::-;21468:21:::1;21507:4;21492:31;;;21532:4;21547:16;;;;;;;;;;;21492:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21468:97;;8467:18;21580:13;:28;21576:125;;;21625:64;21642:4;21657:16;;;;;;;;;;;8467:18;21625:8;:64::i;:::-;21576:125;21713:19;21742:10;;;;;;;;;;;21735:28;;;21772:4;21735:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21713:65;;21807:1;21793:11;:15;21789:296;;;21825:21;21856:10;;;;;;;;;;;21849:28;;;21886:4;21901:16;;;;;;;;;;;21849:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21825:94;;21954:11;21938:13;:27;21934:140;;;21993:10;;;;;;;;;;;21986:26;;;22021:16;;;;;;;;;;;22040:17;21986:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21934:140;21810:275;21789:296;21457:635;;21401:691::o:0;20074:186::-;1748:13;:11;:13::i;:::-;20167:1:::1;20148:21;;:7;:21;;::::0;20140:56:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20244:7;20207:16;;:45;;;;;;;;;;;;;;;;;;20074:186:::0;:::o;9331:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;3527:142::-;3607:7;3634:11;:18;3646:5;3634:18;;;;;;;;;;;;;;;:27;3653:7;3634:27;;;;;;;;;;;;;;;;3627:34;;3527:142;;;;:::o;23823:406::-;1748:13;:11;:13::i;:::-;23884:69:::1;23901:4;23916:16;;;;;;;;;;;23935:17;23884:8;:69::i;:::-;23971:10;;;;;;;;;;;23964:26;;;23999:16;;;;;;;;;;;24018:17;23964:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24068:10;;;;;;;;;;;24061:26;;;24088:13;;;;;;;;;;;24103:17;24061:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;24057:76:::0;::::1;;;;24162:4;24147:29;;;24177:13;;;;;;;;;;;24192:17;24147:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;24143:79:::0;::::1;;;;23823:406::o:0;1992:165::-;1748:13;:11;:13::i;:::-;2101:1:::1;2081:22;;:8;:22;;::::0;2073:37:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2121:28;2140:8;2121:18;:28::i;:::-;1992:165:::0;:::o;9188:43::-;;;;;;;;;;;;;:::o;5056:256::-;5175:1;5158:19;;:5;:19;;;;:44;;;;;5200:1;5181:21;;:7;:21;;;;5158:44;5150:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;5250:6;5220:11;:18;5232:5;5220:18;;;;;;;;;;;;;;;:27;5239:7;5220:27;;;;;;;;;;;;;;;:36;;;;5288:7;5272:32;;5281:5;5272:32;;;5297:6;5272:32;;;;;;:::i;:::-;;;;;;;;5056:256;;;:::o;5320:392::-;5421:24;5448:25;5458:5;5465:7;5448:9;:25::i;:::-;5421:52;;5508:17;5488:16;:37;5484:221;;5570:6;5550:16;:26;;5542:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;5627:51;5636:5;5643:7;5671:6;5652:16;:25;5627:8;:51::i;:::-;5484:221;5410:302;5320:392;;;:::o;12172:1373::-;12328:1;12312:18;;:4;:18;;;;:38;;;;;12348:1;12334:16;;:2;:16;;;;12312:38;12304:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;12417:7;:5;:7::i;:::-;12409:15;;:4;:15;;;:32;;;;12434:7;:5;:7::i;:::-;12428:13;;:2;:13;;;12409:32;:57;;;;12461:4;12445:21;;:4;:21;;;12409:57;:80;;;;12484:4;12470:19;;:2;:19;;;12409:80;12405:233;;;12506:33;12522:4;12528:2;12532:6;12506:15;:33::i;:::-;12554:19;12568:4;12554:13;:19::i;:::-;12588:17;12602:2;12588:13;:17::i;:::-;12620:7;;12405:233;12650:16;12675:13;;;;;;;;;;;12669:19;;:2;:19;;;:44;;;;12700:13;;;;;;;;;;;12692:21;;:4;:21;;;12669:44;12650:63;;12728:11;12724:746;;;12756:16;12797:3;8528:1;12776:6;:17;;;;:::i;:::-;12775:25;;;;:::i;:::-;12756:44;;12815:22;12849:8;12840:6;:17;;;;:::i;:::-;12815:42;;12886:41;12902:4;12908:2;12912:14;12886:15;:41::i;:::-;12942:46;12958:4;12972;12979:8;12942:15;:46::i;:::-;13044:1;13033:8;:12;;;;:::i;:::-;13005:23;;:41;;;;;;;:::i;:::-;;;;;;;;13121:1;13110:8;:12;;;;:::i;:::-;13084:21;;:39;;;;;;;:::i;:::-;;;;;;;;8808:12;13168:23;;:49;;:118;;;;8808:12;13239:21;;:47;;13168:118;13167:160;;;;;13326:1;13309:7;:14;;;;:18;13167:160;13163:230;;;13348:29;:27;:29::i;:::-;13163:230;12741:663;;12724:746;;;13425:33;13441:4;13447:2;13451:6;13425:15;:33::i;:::-;12724:746;13490:19;13504:4;13490:13;:19::i;:::-;13520:17;13534:2;13520:13;:17::i;:::-;12293:1252;12172:1373;;;;:::o;1884:100::-;1959:10;1948:21;;:7;:5;:7::i;:::-;:21;;;1940:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;1884:100::o;14452:1305::-;14510:19;14558:21;;14532:23;;:47;;;;:::i;:::-;14510:69;;8808:12;14594:11;:36;:59;;;;14652:1;14634:7;:14;;;;:19;14594:59;14590:72;;;14655:7;;;14590:72;14687:43;14702:11;14715:7;:14;;;;14687:43;;;;;;;:::i;:::-;;;;;;;;14786:20;14843:3;8907:2;14810:11;:29;;;;:::i;:::-;14809:37;;;;:::i;:::-;14786:60;;14857:26;14900:12;14886:11;:26;;;;:::i;:::-;14857:55;;14951:1;14925:23;:27;;;;14987:1;14963:21;:25;;;;15042:21;15066:26;15079:12;15066;:26::i;:::-;15042:50;;15124:1;15107:13;:18;15103:167;;15168:18;15142:23;:44;;;;15225:12;15201:21;:36;;;;15252:7;;;;;;15103:167;15333:1;15312:18;:22;15308:219;;;15351:25;15420:3;8987:2;15380:13;:36;;;;:::i;:::-;15379:44;;;;:::i;:::-;15351:72;;15459:56;15477:18;15497:17;15459;:56::i;:::-;15336:191;15308:219;15589:22;15621:10;;;;;;;;;;;15614:28;;;15651:4;15614:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15589:68;;15689:1;15672:14;:18;15668:82;;;15707:31;15723:14;15707:15;:31::i;:::-;15668:82;14499:1258;;;;;14452:1305;:::o;2165:191::-;2239:16;2258:6;;;;;;;;;;;2239:25;;2284:8;2275:6;;:17;;;;;;;;;;;;;;;;;;2339:8;2308:40;;2329:8;2308:40;;;;;;;;;;;;2228:128;2165:191;:::o;4133:507::-;4246:1;4230:18;;:4;:18;;;;:38;;;;;4266:1;4252:16;;:2;:16;;;;4230:38;4222:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;4286:38;4307:4;4313:2;4317:6;4286:20;:38::i;:::-;4335:19;4357:9;:15;4367:4;4357:15;;;;;;;;;;;;;;;;4335:37;;4406:6;4391:11;:21;;4383:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;4487:6;4473:11;:20;4455:9;:15;4465:4;4455:15;;;;;;;;;;;;;;;:38;;;;4525:6;4508:9;:13;4518:2;4508:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;4573:2;4558:26;;4567:4;4558:26;;;4577:6;4558:26;;;;;;:::i;:::-;;;;;;;;4595:37;4615:4;4621:2;4625:6;4595:19;:37::i;:::-;4211:429;4133:507;;;:::o;13553:588::-;13627:13;;;;;;;;;;;13616:24;;:7;:24;;;;:52;;;;;13663:4;13644:24;;:7;:24;;;;13616:52;13612:522;;;13685:15;13703:18;13713:7;13703:9;:18::i;:::-;13685:36;;13736:22;13761:8;:17;13770:7;13761:17;;;;;;;;;;;;;;;;;;;;;;;;;13736:42;;8701:11;13811:7;:28;;:50;;;;;13844:17;13843:18;13811:50;13807:316;;;13902:4;13882:8;:17;13891:7;13882:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13925:7;13938;13925:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13807:316;;;8701:11;13972:7;:27;:48;;;;;14003:17;13972:48;13968:155;;;14061:5;14041:8;:17;14050:7;14041:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;14085:22;14099:7;14085:13;:22::i;:::-;13968:155;13807:316;13670:464;;13612:522;13553:588;:::o;15765:1186::-;15825:7;15864:1;15849:11;:16;15845:30;;15874:1;15867:8;;;;15845:30;15888:21;15926:1;15912:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15888:40;;15957:4;15939;15944:1;15939:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15983:10;;;;;;;;;;;15973:4;15978:1;15973:7;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;;;16034:24;16076:4;16061:31;;;16101:4;16116:16;;;;;;;;;;;16061:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16034:100;;16168:11;16149:16;:30;16145:132;;;16196:69;16213:4;16228:16;;;;;;;;;;;16247:17;16196:8;:69::i;:::-;16145:132;16293:16;;;;;;;;;;;:70;;;16378:11;16404:1;16471:4;16498;16536:3;16518:15;:21;;;;:::i;:::-;16293:257;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16289:655;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16794:18;16805:6;16794:18;;;;;;:::i;:::-;;;;;;;;16834:1;16827:8;;;;;;;16289:655;;;16874:35;;;;;;:::i;:::-;;;;;;;;16931:1;16924:8;;;;;;16289:655;16566:20;16596:10;;;;;;;;;;;16589:28;;;16626:4;16589:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16566:66;;16652:41;16667:11;16680:12;16652:41;;;;;;;:::i;:::-;;;;;;;;16715:12;16708:19;;;;;15765:1186;;;;:::o;16959:1054::-;17086:1;17064:18;:23;:49;;;;17112:1;17091:17;:22;17064:49;17115:7;17060:62;17169:70;17186:4;17201:16;;;;;;;;;;;17220:18;17169:8;:70::i;:::-;17257:10;;;;;;;;;;;17250:26;;;17285:16;;;;;;;;;;;17304:17;17250:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17339:16;;;;;;;;;;;:29;;;17391:4;17411:10;;;;;;;;;;;17436:18;17469:17;17545:3;9070:2;17523:3;:18;;;;:::i;:::-;17501;:41;;;;:::i;:::-;:47;;;;:::i;:::-;17632:3;9070:2;17610:3;:18;;;;:::i;:::-;17589:17;:40;;;;:::i;:::-;:46;;;;:::i;:::-;17685:4;17723:3;17705:15;:21;;;;:::i;:::-;17339:398;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;17335:671;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;17878:26;17897:6;17878:26;;;;;;:::i;:::-;;;;;;;;17824:92;17335:671;;;;;17943:51;;;;;;:::i;:::-;;;;;;;;17335:671;;;;;;;17758:53;17773:18;17793:17;17758:53;;;;;;;:::i;:::-;;;;;;;;17335:671;16959:1054;;;:::o;18021:656::-;18105:1;18090:11;:16;:39;;;;18128:1;18110:7;:14;;;;:19;18090:39;18131:7;18086:52;18158:23;18198:7;:14;;;;18184:11;:28;;;;:::i;:::-;18158:54;;18246:1;18227:15;:20;18223:33;;18249:7;;;18223:33;18273:9;18268:329;18292:7;:14;;;;18288:1;:18;:29;;;;;18314:3;18310:1;:7;18288:29;18268:329;;;18365:1;18343:24;;:7;18351:1;18343:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:24;;;18339:247;;18399:10;;;;;;;;;;;18392:27;;;18420:7;18428:1;18420:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18432:15;18392:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;18388:183;18543:8;18388:183;;18339:247;18268:329;18319:3;;;;;:::i;:::-;;;;18268:329;;;;18622:47;18641:11;18654:7;:14;;;;18622:47;;;;;;;:::i;:::-;;;;;;;;18075:602;18021:656;;:::o;11768:195::-;11911:44;11938:4;11944:2;11948:6;11911:26;:44::i;:::-;11768:195;;;:::o;11971:193::-;12113:43;12139:4;12145:2;12149:6;12113:25;:43::i;:::-;11971:193;;;:::o;14149:295::-;14213:9;14208:229;14232:7;:14;;;;14228:1;:18;14208:229;;;14286:7;14272:21;;:7;14280:1;14272:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:21;;;14268:158;;14327:7;14352:1;14335:7;:14;;;;:18;;;;:::i;:::-;14327:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14314:7;14322:1;14314:10;;;;;;;;:::i;:::-;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;14373:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;14405:5;;14268:158;14248:3;;;;;:::i;:::-;;;;14208:229;;;;14149:295;:::o;5720:91::-;;;;:::o;5819:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287: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;1349:77::-;1386:7;1415:5;1404:16;;1349:77;;;:::o;1432:118::-;1519:24;1537:5;1519:24;:::i;:::-;1514:3;1507:37;1432:118;;:::o;1556:222::-;1649:4;1687:2;1676:9;1672:18;1664:26;;1700:71;1768:1;1757:9;1753:17;1744:6;1700:71;:::i;:::-;1556:222;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:763::-;4149:4;4187:3;4176:9;4172:19;4164:27;;4201:71;4269:1;4258:9;4254:17;4245:6;4201:71;:::i;:::-;4282:72;4350:2;4339:9;4335:18;4326:6;4282:72;:::i;:::-;4364:66;4426:2;4415:9;4411:18;4402:6;4364:66;:::i;:::-;4440:72;4508:2;4497:9;4493:18;4484:6;4440:72;:::i;:::-;4522:73;4590:3;4579:9;4575:19;4566:6;4522:73;:::i;:::-;4605;4673:3;4662:9;4658:19;4649:6;4605:73;:::i;:::-;3922:763;;;;;;;;;:::o;4691:619::-;4768:6;4776;4784;4833:2;4821:9;4812:7;4808:23;4804:32;4801:119;;;4839:79;;:::i;:::-;4801:119;4959:1;4984:53;5029:7;5020:6;5009:9;5005:22;4984:53;:::i;:::-;4974:63;;4930:117;5086:2;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5057:118;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;4691:619;;;;;:::o;5316:329::-;5375:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:119;;;5430:79;;:::i;:::-;5392:119;5550:1;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5521:117;5316:329;;;;:::o;5651:222::-;5744:4;5782:2;5771:9;5767:18;5759:26;;5795:71;5863:1;5852:9;5848:17;5839:6;5795:71;:::i;:::-;5651:222;;;;:::o;5879:86::-;5914:7;5954:4;5947:5;5943:16;5932:27;;5879:86;;;:::o;5971:112::-;6054:22;6070:5;6054:22;:::i;:::-;6049:3;6042:35;5971:112;;:::o;6089:214::-;6178:4;6216:2;6205:9;6201:18;6193:26;;6229:67;6293:1;6282:9;6278:17;6269:6;6229:67;:::i;:::-;6089:214;;;;:::o;6309:114::-;6376:6;6410:5;6404:12;6394:22;;6309:114;;;:::o;6429:184::-;6528:11;6562:6;6557:3;6550:19;6602:4;6597:3;6593:14;6578:29;;6429:184;;;;:::o;6619:132::-;6686:4;6709:3;6701:11;;6739:4;6734:3;6730:14;6722:22;;6619:132;;;:::o;6757:108::-;6834:24;6852:5;6834:24;:::i;:::-;6829:3;6822:37;6757:108;;:::o;6871:179::-;6940:10;6961:46;7003:3;6995:6;6961:46;:::i;:::-;7039:4;7034:3;7030:14;7016:28;;6871:179;;;;:::o;7056:113::-;7126:4;7158;7153:3;7149:14;7141:22;;7056:113;;;:::o;7205:732::-;7324:3;7353:54;7401:5;7353:54;:::i;:::-;7423:86;7502:6;7497:3;7423:86;:::i;:::-;7416:93;;7533:56;7583:5;7533:56;:::i;:::-;7612:7;7643:1;7628:284;7653:6;7650:1;7647:13;7628:284;;;7729:6;7723:13;7756:63;7815:3;7800:13;7756:63;:::i;:::-;7749:70;;7842:60;7895:6;7842:60;:::i;:::-;7832:70;;7688:224;7675:1;7672;7668:9;7663:14;;7628:284;;;7632:14;7928:3;7921:10;;7329:608;;;7205:732;;;;:::o;7943:373::-;8086:4;8124:2;8113:9;8109:18;8101:26;;8173:9;8167:4;8163:20;8159:1;8148:9;8144:17;8137:47;8201:108;8304:4;8295:6;8201:108;:::i;:::-;8193:116;;7943:373;;;;:::o;8322:60::-;8350:3;8371:5;8364:12;;8322:60;;;:::o;8388:142::-;8438:9;8471:53;8489:34;8498:24;8516:5;8498:24;:::i;:::-;8489:34;:::i;:::-;8471:53;:::i;:::-;8458:66;;8388:142;;;:::o;8536:126::-;8586:9;8619:37;8650:5;8619:37;:::i;:::-;8606:50;;8536:126;;;:::o;8668:151::-;8743:9;8776:37;8807:5;8776:37;:::i;:::-;8763:50;;8668:151;;;:::o;8825:181::-;8937:62;8993:5;8937:62;:::i;:::-;8932:3;8925:75;8825:181;;:::o;9012:272::-;9130:4;9168:2;9157:9;9153:18;9145:26;;9181:96;9274:1;9263:9;9259:17;9250:6;9181:96;:::i;:::-;9012:272;;;;:::o;9290:329::-;9349:6;9398:2;9386:9;9377:7;9373:23;9369:32;9366:119;;;9404:79;;:::i;:::-;9366:119;9524:1;9549:53;9594:7;9585:6;9574:9;9570:22;9549:53;:::i;:::-;9539:63;;9495:117;9290:329;;;;:::o;9625:332::-;9746:4;9784:2;9773:9;9769:18;9761:26;;9797:71;9865:1;9854:9;9850:17;9841:6;9797:71;:::i;:::-;9878:72;9946:2;9935:9;9931:18;9922:6;9878:72;:::i;:::-;9625:332;;;;;:::o;9963:474::-;10031:6;10039;10088:2;10076:9;10067:7;10063:23;10059:32;10056:119;;;10094:79;;:::i;:::-;10056:119;10214:1;10239:53;10284:7;10275:6;10264:9;10260:22;10239:53;:::i;:::-;10229:63;;10185:117;10341:2;10367:53;10412:7;10403:6;10392:9;10388:22;10367:53;:::i;:::-;10357:63;;10312:118;9963:474;;;;;:::o;10443:152::-;10519:9;10552:37;10583:5;10552:37;:::i;:::-;10539:50;;10443:152;;;:::o;10601:183::-;10714:63;10771:5;10714:63;:::i;:::-;10709:3;10702:76;10601:183;;:::o;10790:274::-;10909:4;10947:2;10936:9;10932:18;10924:26;;10960:97;11054:1;11043:9;11039:17;11030:6;10960:97;:::i;:::-;10790:274;;;;:::o;11070:180::-;11118:77;11115:1;11108:88;11215:4;11212:1;11205:15;11239:4;11236:1;11229:15;11256:320;11300:6;11337:1;11331:4;11327:12;11317:22;;11384:1;11378:4;11374:12;11405:18;11395:81;;11461:4;11453:6;11449:17;11439:27;;11395:81;11523:2;11515:6;11512:14;11492:18;11489:38;11486:84;;11542:18;;:::i;:::-;11486:84;11307:269;11256:320;;;:::o;11582:143::-;11639:5;11670:6;11664:13;11655:22;;11686:33;11713:5;11686:33;:::i;:::-;11582:143;;;;:::o;11731:351::-;11801:6;11850:2;11838:9;11829:7;11825:23;11821:32;11818:119;;;11856:79;;:::i;:::-;11818:119;11976:1;12001:64;12057:7;12048:6;12037:9;12033:22;12001:64;:::i;:::-;11991:74;;11947:128;11731:351;;;;:::o;12088:332::-;12209:4;12247:2;12236:9;12232:18;12224:26;;12260:71;12328:1;12317:9;12313:17;12304:6;12260:71;:::i;:::-;12341:72;12409:2;12398:9;12394:18;12385:6;12341:72;:::i;:::-;12088:332;;;;;:::o;12426:143::-;12483:5;12514:6;12508:13;12499:22;;12530:33;12557:5;12530:33;:::i;:::-;12426:143;;;;:::o;12575:351::-;12645:6;12694:2;12682:9;12673:7;12669:23;12665:32;12662:119;;;12700:79;;:::i;:::-;12662:119;12820:1;12845:64;12901:7;12892:6;12881:9;12877:22;12845:64;:::i;:::-;12835:74;;12791:128;12575:351;;;;:::o;12932:180::-;12980:77;12977:1;12970:88;13077:4;13074:1;13067:15;13101:4;13098:1;13091:15;13118:410;13158:7;13181:20;13199:1;13181:20;:::i;:::-;13176:25;;13215:20;13233:1;13215:20;:::i;:::-;13210:25;;13270:1;13267;13263:9;13292:30;13310:11;13292:30;:::i;:::-;13281:41;;13471:1;13462:7;13458:15;13455:1;13452:22;13432:1;13425:9;13405:83;13382:139;;13501:18;;:::i;:::-;13382:139;13166:362;13118:410;;;;:::o;13534:191::-;13574:3;13593:20;13611:1;13593:20;:::i;:::-;13588:25;;13627:20;13645:1;13627:20;:::i;:::-;13622:25;;13670:1;13667;13663:9;13656:16;;13691:3;13688:1;13685:10;13682:36;;;13698:18;;:::i;:::-;13682:36;13534:191;;;;:::o;13731:180::-;13779:77;13776:1;13769:88;13876:4;13873:1;13866:15;13900:4;13897:1;13890:15;13917:185;13957:1;13974:20;13992:1;13974:20;:::i;:::-;13969:25;;14008:20;14026:1;14008:20;:::i;:::-;14003:25;;14047:1;14037:35;;14052:18;;:::i;:::-;14037:35;14094:1;14091;14087:9;14082:14;;13917:185;;;;:::o;14108:225::-;14248:34;14244:1;14236:6;14232:14;14225:58;14317:8;14312:2;14304:6;14300:15;14293:33;14108:225;:::o;14339:366::-;14481:3;14502:67;14566:2;14561:3;14502:67;:::i;:::-;14495:74;;14578:93;14667:3;14578:93;:::i;:::-;14696:2;14691:3;14687:12;14680:19;;14339:366;;;:::o;14711:419::-;14877:4;14915:2;14904:9;14900:18;14892:26;;14964:9;14958:4;14954:20;14950:1;14939:9;14935:17;14928:47;14992:131;15118:4;14992:131;:::i;:::-;14984:139;;14711:419;;;:::o;15136:234::-;15276:34;15272:1;15264:6;15260:14;15253:58;15345:17;15340:2;15332:6;15328:15;15321:42;15136:234;:::o;15376:366::-;15518:3;15539:67;15603:2;15598:3;15539:67;:::i;:::-;15532:74;;15615:93;15704:3;15615:93;:::i;:::-;15733:2;15728:3;15724:12;15717:19;;15376:366;;;:::o;15748:419::-;15914:4;15952:2;15941:9;15937:18;15929:26;;16001:9;15995:4;15991:20;15987:1;15976:9;15972:17;15965:47;16029:131;16155:4;16029:131;:::i;:::-;16021:139;;15748:419;;;:::o;16173:225::-;16313:34;16309:1;16301:6;16297:14;16290:58;16382:8;16377:2;16369:6;16365:15;16358:33;16173:225;:::o;16404:366::-;16546:3;16567:67;16631:2;16626:3;16567:67;:::i;:::-;16560:74;;16643:93;16732:3;16643:93;:::i;:::-;16761:2;16756:3;16752:12;16745:19;;16404:366;;;:::o;16776:419::-;16942:4;16980:2;16969:9;16965:18;16957:26;;17029:9;17023:4;17019:20;17015:1;17004:9;17000:17;16993:47;17057:131;17183:4;17057:131;:::i;:::-;17049:139;;16776:419;;;:::o;17201:85::-;17246:7;17275:5;17264:16;;17201:85;;;:::o;17292:158::-;17350:9;17383:61;17401:42;17410:32;17436:5;17410:32;:::i;:::-;17401:42;:::i;:::-;17383:61;:::i;:::-;17370:74;;17292:158;;;:::o;17456:147::-;17551:45;17590:5;17551:45;:::i;:::-;17546:3;17539:58;17456:147;;:::o;17609:807::-;17858:4;17896:3;17885:9;17881:19;17873:27;;17910:71;17978:1;17967:9;17963:17;17954:6;17910:71;:::i;:::-;17991:72;18059:2;18048:9;18044:18;18035:6;17991:72;:::i;:::-;18073:80;18149:2;18138:9;18134:18;18125:6;18073:80;:::i;:::-;18163;18239:2;18228:9;18224:18;18215:6;18163:80;:::i;:::-;18253:73;18321:3;18310:9;18306:19;18297:6;18253:73;:::i;:::-;18336;18404:3;18393:9;18389:19;18380:6;18336:73;:::i;:::-;17609:807;;;;;;;;;:::o;18422:663::-;18510:6;18518;18526;18575:2;18563:9;18554:7;18550:23;18546:32;18543:119;;;18581:79;;:::i;:::-;18543:119;18701:1;18726:64;18782:7;18773:6;18762:9;18758:22;18726:64;:::i;:::-;18716:74;;18672:128;18839:2;18865:64;18921:7;18912:6;18901:9;18897:22;18865:64;:::i;:::-;18855:74;;18810:129;18978:2;19004:64;19060:7;19051:6;19040:9;19036:22;19004:64;:::i;:::-;18994:74;;18949:129;18422:663;;;;;:::o;19091:173::-;19231:25;19227:1;19219:6;19215:14;19208:49;19091:173;:::o;19270:366::-;19412:3;19433:67;19497:2;19492:3;19433:67;:::i;:::-;19426:74;;19509:93;19598:3;19509:93;:::i;:::-;19627:2;19622:3;19618:12;19611:19;;19270:366;;;:::o;19642:419::-;19808:4;19846:2;19835:9;19831:18;19823:26;;19895:9;19889:4;19885:20;19881:1;19870:9;19866:17;19859:47;19923:131;20049:4;19923:131;:::i;:::-;19915:139;;19642:419;;;:::o;20067:177::-;20207:29;20203:1;20195:6;20191:14;20184:53;20067:177;:::o;20250:366::-;20392:3;20413:67;20477:2;20472:3;20413:67;:::i;:::-;20406:74;;20489:93;20578:3;20489:93;:::i;:::-;20607:2;20602:3;20598:12;20591:19;;20250:366;;;:::o;20622:419::-;20788:4;20826:2;20815:9;20811:18;20803:26;;20875:9;20869:4;20865:20;20861:1;20850:9;20846:17;20839:47;20903:131;21029:4;20903:131;:::i;:::-;20895:139;;20622:419;;;:::o;21047:332::-;21168:4;21206:2;21195:9;21191:18;21183:26;;21219:71;21287:1;21276:9;21272:17;21263:6;21219:71;:::i;:::-;21300:72;21368:2;21357:9;21353:18;21344:6;21300:72;:::i;:::-;21047:332;;;;;:::o;21385:116::-;21455:21;21470:5;21455:21;:::i;:::-;21448:5;21445:32;21435:60;;21491:1;21488;21481:12;21435:60;21385:116;:::o;21507:137::-;21561:5;21592:6;21586:13;21577:22;;21608:30;21632:5;21608:30;:::i;:::-;21507:137;;;;:::o;21650:345::-;21717:6;21766:2;21754:9;21745:7;21741:23;21737:32;21734:119;;;21772:79;;:::i;:::-;21734:119;21892:1;21917:61;21970:7;21961:6;21950:9;21946:22;21917:61;:::i;:::-;21907:71;;21863:125;21650:345;;;;:::o;22001:170::-;22141:22;22137:1;22129:6;22125:14;22118:46;22001:170;:::o;22177:366::-;22319:3;22340:67;22404:2;22399:3;22340:67;:::i;:::-;22333:74;;22416:93;22505:3;22416:93;:::i;:::-;22534:2;22529:3;22525:12;22518:19;;22177:366;;;:::o;22549:419::-;22715:4;22753:2;22742:9;22738:18;22730:26;;22802:9;22796:4;22792:20;22788:1;22777:9;22773:17;22766:47;22830:131;22956:4;22830:131;:::i;:::-;22822:139;;22549:419;;;:::o;22974:167::-;23114:19;23110:1;23102:6;23098:14;23091:43;22974:167;:::o;23147:366::-;23289:3;23310:67;23374:2;23369:3;23310:67;:::i;:::-;23303:74;;23386:93;23475:3;23386:93;:::i;:::-;23504:2;23499:3;23495:12;23488:19;;23147:366;;;:::o;23519:419::-;23685:4;23723:2;23712:9;23708:18;23700:26;;23772:9;23766:4;23762:20;23758:1;23747:9;23743:17;23736:47;23800:131;23926:4;23800:131;:::i;:::-;23792:139;;23519:419;;;:::o;23944:160::-;24084:12;24080:1;24072:6;24068:14;24061:36;23944:160;:::o;24110:366::-;24252:3;24273:67;24337:2;24332:3;24273:67;:::i;:::-;24266:74;;24349:93;24438:3;24349:93;:::i;:::-;24467:2;24462:3;24458:12;24451:19;;24110:366;;;:::o;24482:419::-;24648:4;24686:2;24675:9;24671:18;24663:26;;24735:9;24729:4;24725:20;24721:1;24710:9;24706:17;24699:47;24763:131;24889:4;24763:131;:::i;:::-;24755:139;;24482:419;;;:::o;24907:152::-;25047:4;25043:1;25035:6;25031:14;25024:28;24907:152;:::o;25065:365::-;25207:3;25228:66;25292:1;25287:3;25228:66;:::i;:::-;25221:73;;25303:93;25392:3;25303:93;:::i;:::-;25421:2;25416:3;25412:12;25405:19;;25065:365;;;:::o;25436:419::-;25602:4;25640:2;25629:9;25625:18;25617:26;;25689:9;25683:4;25679:20;25675:1;25664:9;25660:17;25653:47;25717:131;25843:4;25717:131;:::i;:::-;25709:139;;25436:419;;;:::o;25861:152::-;26001:4;25997:1;25989:6;25985:14;25978:28;25861:152;:::o;26019:365::-;26161:3;26182:66;26246:1;26241:3;26182:66;:::i;:::-;26175:73;;26257:93;26346:3;26257:93;:::i;:::-;26375:2;26370:3;26366:12;26359:19;;26019:365;;;:::o;26390:419::-;26556:4;26594:2;26583:9;26579:18;26571:26;;26643:9;26637:4;26633:20;26629:1;26618:9;26614:17;26607:47;26671:131;26797:4;26671:131;:::i;:::-;26663:139;;26390:419;;;:::o;26815:152::-;26955:4;26951:1;26943:6;26939:14;26932:28;26815:152;:::o;26973:365::-;27115:3;27136:66;27200:1;27195:3;27136:66;:::i;:::-;27129:73;;27211:93;27300:3;27211:93;:::i;:::-;27329:2;27324:3;27320:12;27313:19;;26973:365;;;:::o;27344:419::-;27510:4;27548:2;27537:9;27533:18;27525:26;;27597:9;27591:4;27587:20;27583:1;27572:9;27568:17;27561:47;27625:131;27751:4;27625:131;:::i;:::-;27617:139;;27344:419;;;:::o;27769:553::-;27946:4;27984:3;27973:9;27969:19;27961:27;;27998:71;28066:1;28055:9;28051:17;28042:6;27998:71;:::i;:::-;28079:72;28147:2;28136:9;28132:18;28123:6;28079:72;:::i;:::-;28161;28229:2;28218:9;28214:18;28205:6;28161:72;:::i;:::-;28243;28311:2;28300:9;28296:18;28287:6;28243:72;:::i;:::-;27769:553;;;;;;;:::o;28328:114::-;28365:7;28405:30;28398:5;28394:42;28383:53;;28328:114;;;:::o;28448:122::-;28521:24;28539:5;28521:24;:::i;:::-;28514:5;28511:35;28501:63;;28560:1;28557;28550:12;28501:63;28448:122;:::o;28576:143::-;28633:5;28664:6;28658:13;28649:22;;28680:33;28707:5;28680:33;:::i;:::-;28576:143;;;;:::o;28725:93::-;28761:7;28801:10;28794:5;28790:22;28779:33;;28725:93;;;:::o;28824:120::-;28896:23;28913:5;28896:23;:::i;:::-;28889:5;28886:34;28876:62;;28934:1;28931;28924:12;28876:62;28824:120;:::o;28950:141::-;29006:5;29037:6;29031:13;29022:22;;29053:32;29079:5;29053:32;:::i;:::-;28950:141;;;;:::o;29097:661::-;29184:6;29192;29200;29249:2;29237:9;29228:7;29224:23;29220:32;29217:119;;;29255:79;;:::i;:::-;29217:119;29375:1;29400:64;29456:7;29447:6;29436:9;29432:22;29400:64;:::i;:::-;29390:74;;29346:128;29513:2;29539:64;29595:7;29586:6;29575:9;29571:22;29539:64;:::i;:::-;29529:74;;29484:129;29652:2;29678:63;29733:7;29724:6;29713:9;29709:22;29678:63;:::i;:::-;29668:73;;29623:128;29097:661;;;;;:::o;29764:172::-;29904:24;29900:1;29892:6;29888:14;29881:48;29764:172;:::o;29942:366::-;30084:3;30105:67;30169:2;30164:3;30105:67;:::i;:::-;30098:74;;30181:93;30270:3;30181:93;:::i;:::-;30299:2;30294:3;30290:12;30283:19;;29942:366;;;:::o;30314:419::-;30480:4;30518:2;30507:9;30503:18;30495:26;;30567:9;30561:4;30557:20;30553:1;30542:9;30538:17;30531:47;30595:131;30721:4;30595:131;:::i;:::-;30587:139;;30314:419;;;:::o;30739:152::-;30879:4;30875:1;30867:6;30863:14;30856:28;30739:152;:::o;30897:365::-;31039:3;31060:66;31124:1;31119:3;31060:66;:::i;:::-;31053:73;;31135:93;31224:3;31135:93;:::i;:::-;31253:2;31248:3;31244:12;31237:19;;30897:365;;;:::o;31268:419::-;31434:4;31472:2;31461:9;31457:18;31449:26;;31521:9;31515:4;31511:20;31507:1;31496:9;31492:17;31485:47;31549:131;31675:4;31549:131;:::i;:::-;31541:139;;31268:419;;;:::o;31693:152::-;31833:4;31829:1;31821:6;31817:14;31810:28;31693:152;:::o;31851:365::-;31993:3;32014:66;32078:1;32073:3;32014:66;:::i;:::-;32007:73;;32089:93;32178:3;32089:93;:::i;:::-;32207:2;32202:3;32198:12;32191:19;;31851:365;;;:::o;32222:419::-;32388:4;32426:2;32415:9;32411:18;32403:26;;32475:9;32469:4;32465:20;32461:1;32450:9;32446:17;32439:47;32503:131;32629:4;32503:131;:::i;:::-;32495:139;;32222:419;;;:::o;32647:152::-;32787:4;32783:1;32775:6;32771:14;32764:28;32647:152;:::o;32805:365::-;32947:3;32968:66;33032:1;33027:3;32968:66;:::i;:::-;32961:73;;33043:93;33132:3;33043:93;:::i;:::-;33161:2;33156:3;33152:12;33145:19;;32805:365;;;:::o;33176:419::-;33342:4;33380:2;33369:9;33365:18;33357:26;;33429:9;33423:4;33419:20;33415:1;33404:9;33400:17;33393:47;33457:131;33583:4;33457:131;:::i;:::-;33449:139;;33176:419;;;:::o;33601:179::-;33741:31;33737:1;33729:6;33725:14;33718:55;33601:179;:::o;33786:366::-;33928:3;33949:67;34013:2;34008:3;33949:67;:::i;:::-;33942:74;;34025:93;34114:3;34025:93;:::i;:::-;34143:2;34138:3;34134:12;34127:19;;33786:366;;;:::o;34158:419::-;34324:4;34362:2;34351:9;34347:18;34339:26;;34411:9;34405:4;34401:20;34397:1;34386:9;34382:17;34375:47;34439:131;34565:4;34439:131;:::i;:::-;34431:139;;34158:419;;;:::o;34583:194::-;34623:4;34643:20;34661:1;34643:20;:::i;:::-;34638:25;;34677:20;34695:1;34677:20;:::i;:::-;34672:25;;34721:1;34718;34714:9;34706:17;;34745:1;34739:4;34736:11;34733:37;;;34750:18;;:::i;:::-;34733:37;34583:194;;;;:::o;34783:152::-;34923:4;34919:1;34911:6;34907:14;34900:28;34783:152;:::o;34941:365::-;35083:3;35104:66;35168:1;35163:3;35104:66;:::i;:::-;35097:73;;35179:93;35268:3;35179:93;:::i;:::-;35297:2;35292:3;35288:12;35281:19;;34941:365;;;:::o;35312:419::-;35478:4;35516:2;35505:9;35501:18;35493:26;;35565:9;35559:4;35555:20;35551:1;35540:9;35536:17;35529:47;35593:131;35719:4;35593:131;:::i;:::-;35585:139;;35312:419;;;:::o;35737:152::-;35877:4;35873:1;35865:6;35861:14;35854:28;35737:152;:::o;35895:365::-;36037:3;36058:66;36122:1;36117:3;36058:66;:::i;:::-;36051:73;;36133:93;36222:3;36133:93;:::i;:::-;36251:2;36246:3;36242:12;36235:19;;35895:365;;;:::o;36266:419::-;36432:4;36470:2;36459:9;36455:18;36447:26;;36519:9;36513:4;36509:20;36505:1;36494:9;36490:17;36483:47;36547:131;36673:4;36547:131;:::i;:::-;36539:139;;36266:419;;;:::o;36691:152::-;36831:4;36827:1;36819:6;36815:14;36808:28;36691:152;:::o;36849:365::-;36991:3;37012:66;37076:1;37071:3;37012:66;:::i;:::-;37005:73;;37087:93;37176:3;37087:93;:::i;:::-;37205:2;37200:3;37196:12;37189:19;;36849:365;;;:::o;37220:419::-;37386:4;37424:2;37413:9;37409:18;37401:26;;37473:9;37467:4;37463:20;37459:1;37448:9;37444:17;37437:47;37501:131;37627:4;37501:131;:::i;:::-;37493:139;;37220:419;;;:::o;37645:180::-;37693:77;37690:1;37683:88;37790:4;37787:1;37780:15;37814:4;37811:1;37804:15;37831:180;37879:77;37876:1;37869:88;37976:4;37973:1;37966:15;38000:4;37997:1;37990:15;38017:831;38280:4;38318:3;38307:9;38303:19;38295:27;;38332:71;38400:1;38389:9;38385:17;38376:6;38332:71;:::i;:::-;38413:80;38489:2;38478:9;38474:18;38465:6;38413:80;:::i;:::-;38540:9;38534:4;38530:20;38525:2;38514:9;38510:18;38503:48;38568:108;38671:4;38662:6;38568:108;:::i;:::-;38560:116;;38686:72;38754:2;38743:9;38739:18;38730:6;38686:72;:::i;:::-;38768:73;38836:3;38825:9;38821:19;38812:6;38768:73;:::i;:::-;38017:831;;;;;;;;:::o;38854:106::-;38898:8;38947:5;38942:3;38938:15;38917:36;;38854:106;;;:::o;38966:183::-;39001:3;39039:1;39021:16;39018:23;39015:128;;;39077:1;39074;39071;39056:23;39099:34;39130:1;39124:8;39099:34;:::i;:::-;39092:41;;39015:128;38966:183;:::o;39155:281::-;39238:27;39260:4;39238:27;:::i;:::-;39230:6;39226:40;39368:6;39356:10;39353:22;39332:18;39320:10;39317:34;39314:62;39311:88;;;39379:18;;:::i;:::-;39311:88;39419:10;39415:2;39408:22;39198:238;39155:281;;:::o;39442:711::-;39481:3;39519:4;39501:16;39498:26;39527:5;39495:39;39556:20;;:::i;:::-;39631:1;39613:16;39609:24;39606:1;39600:4;39585:49;39664:4;39658:11;39763:16;39756:4;39748:6;39744:17;39741:39;39708:18;39700:6;39697:30;39681:113;39678:146;;;39809:5;;;;39678:146;39855:6;39849:4;39845:17;39891:3;39885:10;39918:18;39910:6;39907:30;39904:43;;;39940:5;;;;;;39904:43;39988:6;39981:4;39976:3;39972:14;39968:27;40047:1;40029:16;40025:24;40019:4;40015:35;40010:3;40007:44;40004:57;;;40054:5;;;;;;;40004:57;40071;40119:6;40113:4;40109:17;40101:6;40097:30;40091:4;40071:57;:::i;:::-;40144:3;40137:10;;39485:668;;;;;39442:711;;:::o;40159:171::-;40299:23;40295:1;40287:6;40283:14;40276:47;40159:171;:::o;40336:366::-;40478:3;40499:67;40563:2;40558:3;40499:67;:::i;:::-;40492:74;;40575:93;40664:3;40575:93;:::i;:::-;40693:2;40688:3;40684:12;40677:19;;40336:366;;;:::o;40708:419::-;40874:4;40912:2;40901:9;40897:18;40889:26;;40961:9;40955:4;40951:20;40947:1;40936:9;40932:17;40925:47;40989:131;41115:4;40989:131;:::i;:::-;40981:139;;40708:419;;;:::o;41133:997::-;41422:4;41460:3;41449:9;41445:19;41437:27;;41474:71;41542:1;41531:9;41527:17;41518:6;41474:71;:::i;:::-;41555:72;41623:2;41612:9;41608:18;41599:6;41555:72;:::i;:::-;41637;41705:2;41694:9;41690:18;41681:6;41637:72;:::i;:::-;41719;41787:2;41776:9;41772:18;41763:6;41719:72;:::i;:::-;41801:73;41869:3;41858:9;41854:19;41845:6;41801:73;:::i;:::-;41884;41952:3;41941:9;41937:19;41928:6;41884:73;:::i;:::-;41967;42035:3;42024:9;42020:19;42011:6;41967:73;:::i;:::-;42050;42118:3;42107:9;42103:19;42094:6;42050:73;:::i;:::-;41133:997;;;;;;;;;;;:::o;42136:179::-;42276:31;42272:1;42264:6;42260:14;42253:55;42136:179;:::o;42321:366::-;42463:3;42484:67;42548:2;42543:3;42484:67;:::i;:::-;42477:74;;42560:93;42649:3;42560:93;:::i;:::-;42678:2;42673:3;42669:12;42662:19;;42321:366;;;:::o;42693:419::-;42859:4;42897:2;42886:9;42882:18;42874:26;;42946:9;42940:4;42936:20;42932:1;42921:9;42917:17;42910:47;42974:131;43100:4;42974:131;:::i;:::-;42966:139;;42693:419;;;:::o;43118:233::-;43157:3;43180:24;43198:5;43180:24;:::i;:::-;43171:33;;43226:66;43219:5;43216:77;43213:103;;43296:18;;:::i;:::-;43213:103;43343:1;43336:5;43332:13;43325:20;;43118:233;;;:::o;43357:180::-;43405:77;43402:1;43395:88;43502:4;43499:1;43492:15;43526:4;43523:1;43516:15
Swarm Source
ipfs://2a833c3844eb0f09a9e4cc285766be7749f0b9cfc84165df3336c47cec4185d2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.