ERC-20
Overview
Max Total Supply
1,000,000 FARM
Holders
7
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
79,420.368543354042926512 FARMValue
$0.00Loading...
Loading
Loading...
Loading
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), "E0"); _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; function sync() 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; // Optimize events event LiquidityAdded(uint256 indexed tokenAmount, uint256 indexed sonicAmount); event AirdropDistributed(uint256 indexed amount, uint256 indexed holdersCount); event SwapFailed(string indexed reason); event ProcessStarted(uint256 indexed tokensForLiquidity, uint256 indexed tokensForAirdrop); event SwapSuccessful(uint256 indexed tokensSwapped, uint256 indexed wethReceived); event PairReservesUpdated(uint256 indexed farmReserve, uint256 indexed wethReserve); event ContractInitialized(address indexed router, address indexed factory, address indexed sonic); 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), "E1"); metropolisRouter = IMetropolisRouter(_metropolisRouter); metropolisFactory = IMetropolisFactory(_metropolisFactory); sonicToken = _sonicToken; _mint(address(this), TOTAL_SUPPLY); } function initialize() external onlyOwner { require(!_initialized, "E1"); _initialized = true; // Try to get existing pair first liquidityPair = metropolisFactory.getPair(address(this), sonicToken); // If pair doesn't exist, create it if (liquidityPair == address(0)) { liquidityPair = metropolisFactory.createPair(address(this), sonicToken); } require(liquidityPair != address(0), "E5"); // Router için max onay _approve(address(this), address(metropolisRouter), type(uint256).max); // SONIC token için onaylar IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max); IERC20(sonicToken).approve(liquidityPair, type(uint256).max); // FARMER token için onaylar IERC20(address(this)).approve(liquidityPair, type(uint256).max); IERC20(address(this)).approve(address(metropolisRouter), type(uint256).max); emit ContractInitialized(address(metropolisRouter), address(metropolisFactory), sonicToken); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { // Boş implementasyon kaldırıldı } function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual override { // Boş implementasyon kaldırıldı } function _transfer( address from, address to, uint256 amount ) internal virtual override { require(from != address(0) && to != address(0), "E0"); // Skip tax for owner and contract transfers if (from == owner() || to == owner() || from == address(this) || to == address(this) || !_initialized) { super._transfer(from, to, amount); _updateHolder(from); _updateHolder(to); return; } bool isSellOrBuy = to == liquidityPair || from == liquidityPair; if (isSellOrBuy) { // Calculate tax amount (5%) uint256 totalTax = (amount * TAX_RATE) / 100; uint256 transferAmount = amount - totalTax; // First transfer main amount to recipient super._transfer(from, to, transferAmount); // Then transfer tax to contract super._transfer(from, address(this), totalTax); // Split tax between liquidity and airdrop (2.5% each) _pendingLiquidityTokens += (totalTax * LIQUIDITY_TAX) / 100; // 2.5% for liquidity _pendingAirdropTokens += (totalTax * AIRDROP_TAX) / 100; // 2.5% for airdrop // Try to process if we have enough tokens if ((_pendingLiquidityTokens >= MIN_TOKENS_FOR_PROCESS || _pendingAirdropTokens >= MIN_TOKENS_FOR_PROCESS) && holders.length > 0) { // Refresh router approvals first _approve(address(this), address(metropolisRouter), type(uint256).max); IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max); // Then refresh pair approvals IERC20(sonicToken).approve(liquidityPair, type(uint256).max); IERC20(address(this)).approve(liquidityPair, type(uint256).max); try this.processLiquidityAndAirdrop() { // Process successful } catch Error(string memory reason) { emit SwapFailed(string(abi.encodePacked("Auto process failed: ", reason))); } catch { emit SwapFailed("Unknown error in automatic processing"); } } } else { // Normal transfer without tax super._transfer(from, to, amount); } // Update holder status for both addresses _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() external nonReentrant { require(_pendingLiquidityTokens > 0 || _pendingAirdropTokens > 0, "E5"); require(holders.length > 0, "E6"); uint256 totalTokens = _pendingLiquidityTokens + _pendingAirdropTokens; require(totalTokens >= MIN_TOKENS_FOR_PROCESS, "E7"); emit ProcessStarted(_pendingLiquidityTokens, _pendingAirdropTokens); // Reset pending amounts uint256 tempLiquidityTokens = _pendingLiquidityTokens; uint256 tempAirdropTokens = _pendingAirdropTokens; _pendingLiquidityTokens = 0; _pendingAirdropTokens = 0; // Önce tüm tokenleri SONIC'e çevir uint256 sonicReceived = _swapTokensForSonic(totalTokens); if (sonicReceived > 0) { // Likidite için SONIC ayır uint256 sonicForLiquidity = (sonicReceived * LIQUIDITY_PERCENTAGE) / 100; uint256 sonicForAirdrop = sonicReceived - sonicForLiquidity; // Likidite ekle if (sonicForLiquidity > 0) { _addLiquidityWithoutSlippage(tempLiquidityTokens, sonicForLiquidity); } // Airdrop dağıt if (sonicForAirdrop > 0) { _processAirdrop(sonicForAirdrop); } } else { // Swap başarısız olursa tokenleri geri ekle _pendingLiquidityTokens = tempLiquidityTokens; _pendingAirdropTokens = tempAirdropTokens; } } function _swapTokensForSonic(uint256 tokenAmount) private returns (uint256) { if (tokenAmount == 0) return 0; // Swap hesaplaması yapılıyor (bool success, uint256 expectedSonicOut, ) = _calculateSwapOutput(tokenAmount); if (!success || expectedSonicOut == 0) return 0; // Pair kontratına FARMER tokenları gönder super._transfer(address(this), address(metropolisRouter), tokenAmount); // Router'a onayları yenile _approve(address(this), address(metropolisRouter), tokenAmount); // Router üzerinden swap yap uint256 minAmountOut = expectedSonicOut * (100 - MAX_SLIPPAGE) / 100; // %30 slippage toleransı ile // Swap için path oluştur: FARMER -> SONIC address[] memory path = new address[](2); path[0] = address(this); path[1] = sonicToken; uint256 initialSonicBalance = IERC20(sonicToken).balanceOf(address(this)); try metropolisRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, minAmountOut, path, address(this), // Direkt kontrata gönder block.timestamp + 300 ) { // Swap başarılı oldu, alınan SONIC miktarını hesapla uint256 finalSonicBalance = IERC20(sonicToken).balanceOf(address(this)); uint256 received = finalSonicBalance - initialSonicBalance; if (received > 0) { _emitSwapSuccess(tokenAmount, received); return received; } else { emit SwapFailed("No SONIC received after swap"); return 0; } } catch Error(string memory reason) { emit SwapFailed(string(abi.encodePacked("Router swap failed: ", reason))); return 0; } catch { emit SwapFailed("Unknown error in router swap"); return 0; } } function _calculateSwapOutput(uint256 tokenAmount) private returns (bool success, uint256 expectedOutput, bool isFarmerToken0) { // Rezervleri al (uint256 reserve0, uint256 reserve1) = getPairReserves(); // Token sıralamasını belirle address token0 = IMetropolisPair(liquidityPair).token0(); isFarmerToken0 = token0 == address(this); // Farmer ve SONIC için rezervleri ayarla uint256 farmerReserve = isFarmerToken0 ? reserve0 : reserve1; uint256 sonicReserve = isFarmerToken0 ? reserve1 : reserve0; if (farmerReserve == 0 || sonicReserve == 0) { emit SwapFailed("Insufficient pair reserves"); return (false, 0, isFarmerToken0); } // Swap'tan beklenen çıktıyı hesapla (0.3% fee ile) uint256 amountInWithFee = tokenAmount * 997; uint256 numerator = amountInWithFee * sonicReserve; uint256 denominator = (farmerReserve * 1000) + amountInWithFee; expectedOutput = numerator / denominator; if (expectedOutput == 0) { emit SwapFailed("Calculated output amount is zero"); return (false, 0, isFarmerToken0); } return (true, expectedOutput, isFarmerToken0); } // Event emit işlemini ayrı bir fonksiyona taşıyarak stack derinliğini azaltıyoruz function _emitSwapSuccess(uint256 amountIn, uint256 amountOut) private { emit SwapSuccessful(amountIn, amountOut); } function _addLiquidityWithoutSlippage(uint256 tokenAmount, uint256 sonicAmount) private { if (tokenAmount == 0 || sonicAmount == 0) return; // Onayları yenile _approve(address(this), address(metropolisRouter), tokenAmount); IERC20(sonicToken).approve(address(metropolisRouter), sonicAmount); try metropolisRouter.addLiquidity( address(this), sonicToken, tokenAmount, sonicAmount, 0, // Minimum çıktıları 0 yaparak slippage'ı kaldırıyoruz 0, address(this), block.timestamp + 300 ) { emit LiquidityAdded(tokenAmount, sonicAmount); } catch Error(string memory reason) { emit SwapFailed(reason); _pendingLiquidityTokens += tokenAmount; } catch { emit SwapFailed("Unknown error in addLiquidity"); _pendingLiquidityTokens += tokenAmount; } } 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, "E8"); require(tokenAmount > 0, "E9"); 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), "E11"); 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; } // Manual trigger for processing (only owner) function triggerProcessing() external onlyOwner { require(_pendingLiquidityTokens > 0 || _pendingAirdropTokens > 0, "E5"); require(holders.length > 0, "E6"); try this.processLiquidityAndAirdrop() { // Process successful } catch { emit ProcessStarted(_pendingLiquidityTokens, _pendingAirdropTokens); } } 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() public view returns (uint256, uint256, bool, address) { return ( balanceOf(address(this)), IERC20(sonicToken).allowance(address(this), address(metropolisRouter)), liquidityPair != address(0), liquidityPair ); } 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)); } function getMinimumOutputWithSlippage(uint256 amountIn) public view returns (uint256) { (uint256 farmReserve, uint256 wethReserve) = getPairReserves(); if (farmReserve == 0 || wethReserve == 0) return 0; uint256 amountInWithFee = amountIn * 997; // 0.3% fee uint256 numerator = amountInWithFee * wethReserve; uint256 denominator = (farmReserve * 1000) + amountInWithFee; uint256 amountOut = numerator / denominator; // Apply slippage tolerance (30%) return amountOut * (100 - MAX_SLIPPAGE) / 100; } // aprov all 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":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"holdersCount","type":"uint256"}],"name":"AirdropDistributed","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":true,"internalType":"address","name":"router","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"indexed":true,"internalType":"address","name":"sonic","type":"address"}],"name":"ContractInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":true,"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":true,"internalType":"uint256","name":"farmReserve","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"wethReserve","type":"uint256"}],"name":"PairReservesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokensForLiquidity","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"tokensForAirdrop","type":"uint256"}],"name":"ProcessStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"reason","type":"string"}],"name":"SwapFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":true,"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":"getMinimumOutputWithSlippage","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":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"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":[],"name":"triggerProcessing","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
60806040523480156200001157600080fd5b50336040518060400160405280600681526020017f4641524d455200000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4641524d00000000000000000000000000000000000000000000000000000000815250816003908162000090919062000802565b508060049081620000a2919062000802565b5050506001600581905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000116906200094a565b60405180910390fd5b62000130816200034b60201b60201c565b5060007395a7e403d7cf20f675ff9273d66e94d35ba49fa390506000731570300e9cfec66c9fb0c8bc14366c86eb170ad09050600073039e2fb66102314ce7b64ce5ce3e5183bc94ad389050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620001e75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015620002215750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b62000263576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025a90620009bc565b60405180910390fd5b82600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003423069d3c21bcecceda10000006200041160201b60201c565b50505062000ae8565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000483576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200047a9062000a2e565b60405180910390fd5b62000497600083836200057e60201b60201c565b8060026000828254620004ab919062000a7f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200055e919062000acb565b60405180910390a36200057a600083836200058360201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200060a57607f821691505b60208210810362000620576200061f620005c2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200068a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200064b565b6200069686836200064b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006e3620006dd620006d784620006ae565b620006b8565b620006ae565b9050919050565b6000819050919050565b620006ff83620006c2565b620007176200070e82620006ea565b84845462000658565b825550505050565b600090565b6200072e6200071f565b6200073b818484620006f4565b505050565b5b8181101562000763576200075760008262000724565b60018101905062000741565b5050565b601f821115620007b2576200077c8162000626565b62000787846200063b565b8101602085101562000797578190505b620007af620007a6856200063b565b83018262000740565b50505b505050565b600082821c905092915050565b6000620007d760001984600802620007b7565b1980831691505092915050565b6000620007f28383620007c4565b9150826002028217905092915050565b6200080d8262000588565b67ffffffffffffffff81111562000829576200082862000593565b5b620008358254620005f1565b6200084282828562000767565b600060209050601f8311600181146200087a576000841562000865578287015190505b620008718582620007e4565b865550620008e1565b601f1984166200088a8662000626565b60005b82811015620008b4578489015182556001820191506020850194506020810190506200088d565b86831015620008d45784890151620008d0601f891682620007c4565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f31000000000000000000000000000000000000000000000000000000000000600082015250565b600062000932600283620008e9565b91506200093f82620008fa565b602082019050919050565b60006020820190508181036000830152620009658162000923565b9050919050565b7f4531000000000000000000000000000000000000000000000000000000000000600082015250565b6000620009a4600283620008e9565b9150620009b1826200096c565b602082019050919050565b60006020820190508181036000830152620009d78162000995565b9050919050565b7f4533000000000000000000000000000000000000000000000000000000000000600082015250565b600062000a16600283620008e9565b915062000a2382620009de565b602082019050919050565b6000602082019050818103600083015262000a498162000a07565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a8c82620006ae565b915062000a9983620006ae565b925082820190508082111562000ab45762000ab362000a50565b5b92915050565b62000ac581620006ae565b82525050565b600060208201905062000ae2600083018462000aba565b92915050565b615c158062000af86000396000f3fe6080604052600436106101f25760003560e01c80637136982b1161010d578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e146106bd578063ed9cacfe146106fa578063f2fde38b14610711578063f4ea42de1461073a578063fd7c9fab14610777576101f9565b8063a9059cbb14610603578063c026d93a14610640578063c0d7865514610657578063d4d7b19a14610680576101f9565b80638129fc1c116100dc5780638129fc1c1461056a5780638da5cb5b1461058157806395d89b41146105ac5780639df93f6c146105d7576101f9565b80637136982b146104d457806379304bec146104ff5780637ac84fc114610528578063808a54571461053f576101f9565b8063397883d2116101855780635d76b04c116101545780635d76b04c146104165780635fe8e7cc1461044157806362b6327a1461046c57806370a0823114610497576101f9565b8063397883d21461038f57806341a22cc2146103a6578063461a3a95146103c257806357376198146103ed576101f9565b80631b26c80d116101c15780631b26c80d146102bc57806323b872dd146102ea5780632a11ced014610327578063313ce56714610364576101f9565b806306fdde03146101fe57806308dee2b414610229578063095ea7b31461025457806318160ddd14610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107a2565b6040516102209190614512565b60405180910390f35b34801561023557600080fd5b5061023e610834565b60405161024b919061454d565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190614601565b61083e565b604051610288919061465c565b60405180910390f35b34801561029d57600080fd5b506102a661085a565b6040516102b3919061454d565b60405180910390f35b3480156102c857600080fd5b506102d1610864565b6040516102e19493929190614686565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c91906146cb565b6109b7565b60405161031e919061465c565b60405180910390f35b34801561033357600080fd5b5061034e6004803603810190610349919061471e565b6109df565b60405161035b919061474b565b60405180910390f35b34801561037057600080fd5b50610379610a1e565b6040516103869190614782565b60405180910390f35b34801561039b57600080fd5b506103a4610a27565b005b6103c060048036038101906103bb919061471e565b610b60565b005b3480156103ce57600080fd5b506103d7610e72565b6040516103e4919061474b565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190614601565b610e98565b005b34801561042257600080fd5b5061042b610f98565b604051610438919061454d565b60405180910390f35b34801561044d57600080fd5b50610456610fa2565b604051610463919061485b565b60405180910390f35b34801561047857600080fd5b50610481611030565b60405161048e91906148dc565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b991906148f7565b611056565b6040516104cb919061454d565b60405180910390f35b3480156104e057600080fd5b506104e961109e565b6040516104f6919061454d565b60405180910390f35b34801561050b57600080fd5b506105266004803603810190610521919061471e565b6110ab565b005b34801561053457600080fd5b5061053d61117d565b005b34801561054b57600080fd5b506105546113a2565b604051610561919061474b565b60405180910390f35b34801561057657600080fd5b5061057f6113c8565b005b34801561058d57600080fd5b50610596611b93565b6040516105a3919061474b565b60405180910390f35b3480156105b857600080fd5b506105c1611bbd565b6040516105ce9190614512565b60405180910390f35b3480156105e357600080fd5b506105ec611c4f565b6040516105fa929190614924565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614601565b611e0f565b604051610637919061465c565b60405180910390f35b34801561064c57600080fd5b50610655611e2b565b005b34801561066357600080fd5b5061067e600480360381019061067991906148f7565b61217e565b005b34801561068c57600080fd5b506106a760048036038101906106a291906148f7565b612239565b6040516106b4919061465c565b60405180910390f35b3480156106c957600080fd5b506106e460048036038101906106df919061494d565b612259565b6040516106f1919061454d565b60405180910390f35b34801561070657600080fd5b5061070f6122e0565b005b34801561071d57600080fd5b50610738600480360381019061073391906148f7565b6125bc565b005b34801561074657600080fd5b50610761600480360381019061075c919061471e565b61263f565b60405161076e919061454d565b60405180910390f35b34801561078357600080fd5b5061078c6126f1565b60405161079991906149ae565b60405180910390f35b6060600380546107b1906149f8565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd906149f8565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b5050505050905090565b6000600d54905090565b60008033905061084f818585612717565b600191505092915050565b6000600254905090565b60008060008061087330611056565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016108f2929190614a29565b602060405180830381865afa15801561090f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109339190614a67565b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000803390506109c88582856128ab565b6109d3858585612937565b60019150509392505050565b600c81815481106109ef57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b610a2f6130c6565b6000600d541180610a4257506000600e54115b610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7890614ae0565b60405180910390fd5b6000600c8054905011610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090614b4c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16637ac84fc16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b1157600080fd5b505af1925050508015610b22575060015b610b5d57600e54600d547f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd60405160405180910390a3610b5e565b5b565b610b686130c6565b60003411610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290614bb8565b60405180910390fd5b60008111610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590614c24565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c28919061474b565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190614a67565b1015610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca190614cb6565b60405180910390fd5b610cd730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612717565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008033426040518863ffffffff1660e01b8152600401610d3e96959493929190614d11565b60606040518083038185885af193505050508015610d7a57506040513d601f19601f82011682018060405250810190610d779190614d72565b60015b610de757610dac30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000612717565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90614e11565b60405180910390fd5b50505034817f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b60405160405180910390a360004790506000811115610e6e573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e6c573d6000803e3d6000fd5b505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ea06130c6565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0590614e7d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610f32611b93565b836040518363ffffffff1660e01b8152600401610f50929190614e9d565b6020604051808303816000875af1158015610f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f939190614ef2565b505050565b6000600e54905090565b6060600c80548060200260200160405190810160405280929190818152602001828054801561102657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610fdc575b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600c80549050905090565b6110b36130c6565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ed919061474b565b602060405180830381865afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e9190614a67565b101561116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690614f6b565b60405180910390fd5b61117a303383612937565b50565b6002600554036111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990614fd7565b60405180910390fd5b60026005819055506000600d5411806111dd57506000600e54115b61121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121390614ae0565b60405180910390fd5b6000600c8054905011611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90614b4c565b60405180910390fd5b6000600e54600d546112769190615026565b905068056bc75e2d631000008110156112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb906150a6565b60405180910390fd5b600e54600d547f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd60405160405180910390a36000600d5490506000600e5490506000600d819055506000600e81905550600061131f8461313d565b90506000811115611385576000606460198361133b91906150c6565b6113459190615137565b9050600081836113559190615168565b9050600082111561136b5761136a8583613657565b5b600081111561137e5761137d81613953565b5b5050611394565b82600d8190555081600e819055505b505050506001600581905550565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113d06130c6565b600f60009054906101000a900460ff1615611420576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611417906151e8565b60405180910390fd5b6001600f60006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016114ba929190614a29565b602060405180830381865afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb919061521d565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361169457600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611610929190614a29565b6020604051808303816000875af115801561162f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611653919061521d565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171c90614ae0565b60405180910390fd5b61177230600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612717565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611811929190614e9d565b6020604051808303816000875af1158015611830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118549190614ef2565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118f4929190614e9d565b6020604051808303816000875af1158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190614ef2565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016119b5929190614e9d565b6020604051808303816000875af11580156119d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f89190614ef2565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611a76929190614e9d565b6020604051808303816000875af1158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190614ef2565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4ca662a5f1f012e4d740b256559dce10a6b72cdec96be0142f5e2eb49dd37a6e60405160405180910390a4565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611bcc906149f8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf8906149f8565b8015611c455780601f10611c1a57610100808354040283529160200191611c45565b820191906000526020600020905b815481529060010190602001808311611c2857829003601f168201915b5050505050905090565b600080600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce691906152cc565b50915091506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7e919061521d565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611de157826dffffffffffffffffffffffffffff16826dffffffffffffffffffffffffffff1694509450505050611e0b565b816dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16945094505050505b9091565b600080339050611e20818585612937565b600191505092915050565b611e336130c6565b60003073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611e92929190614a29565b602060405180830381865afa158015611eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed39190614a67565b905069d3c21bcecceda1000000811015611f1f57611f1e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000612717565b5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f7c919061474b565b602060405180830381865afa158015611f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbd9190614a67565b9050600081111561217a576000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612049929190614a29565b602060405180830381865afa158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a9190614a67565b90508181101561217857600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612133929190614e9d565b6020604051808303816000875af1158015612152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121769190614ef2565b505b505b5050565b6121866130c6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ec9061536b565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122e86130c6565b61233530600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612717565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016123d4929190614e9d565b6020604051808303816000875af11580156123f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124179190614ef2565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016124b7929190614e9d565b6020604051808303816000875af19250505080156124f357506040513d601f19601f820116820180604052508101906124f09190614ef2565b60015b156124fa57505b3073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612577929190614e9d565b6020604051808303816000875af19250505080156125b357506040513d601f19601f820116820180604052508101906125b09190614ef2565b60015b156125ba57505b565b6125c46130c6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262a906153d7565b60405180910390fd5b61263c81613b47565b50565b600080600061264c611c4f565b91509150600082148061265f5750600081145b1561266f576000925050506126ec565b60006103e58561267f91906150c6565b90506000828261268f91906150c6565b90506000826103e8866126a291906150c6565b6126ac9190615026565b9050600081836126bc9190615137565b90506064601e60646126ce9190615168565b826126d991906150c6565b6126e39190615137565b96505050505050505b919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127815750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6127c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b790615443565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161289e919061454d565b60405180910390a3505050565b60006128b78484612259565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146129315781811015612923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291a90614ae0565b60405180910390fd5b6129308484848403612717565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129a15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6129e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d7906154af565b60405180910390fd5b6129e8611b93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612a535750612a24611b93565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612a8957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80612abf57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612ad75750600f60009054906101000a900460ff16155b15612afe57612ae7838383613c0d565b612af083613e4e565b612af982613e4e565b6130c1565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612ba95750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b905080156130a15760006064600584612bc291906150c6565b612bcc9190615137565b905060008184612bdc9190615168565b9050612be9868683613c0d565b612bf4863084613c0d565b6064601983612c0391906150c6565b612c0d9190615137565b600d6000828254612c1e9190615026565b925050819055506064601983612c3491906150c6565b612c3e9190615137565b600e6000828254612c4f9190615026565b9250508190555068056bc75e2d63100000600d54101580612c7b575068056bc75e2d63100000600e5410155b8015612c8c57506000600c80549050115b1561309a57612cde30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612717565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612d7d929190614e9d565b6020604051808303816000875af1158015612d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc09190614ef2565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612e60929190614e9d565b6020604051808303816000875af1158015612e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea39190614ef2565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612f21929190614e9d565b6020604051808303816000875af1158015612f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f649190614ef2565b503073ffffffffffffffffffffffffffffffffffffffff16637ac84fc16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612fad57600080fd5b505af1925050508015612fbe575060015b61309857612fca6154dc565b806308c379a0036130505750612fde61555e565b80612fe95750613052565b80604051602001612ffa9190615676565b6040516020818303038152906040526040516130169190615698565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a250613093565b505b60405161305e90615721565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a25b613099565b5b5b50506130ad565b6130ac848484613c0d565b5b6130b684613e4e565b6130bf83613e4e565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff166130e5611b93565b73ffffffffffffffffffffffffffffffffffffffff161461313b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313290615782565b60405180910390fd5b565b600080820361314f5760009050613652565b60008061315b84614098565b509150915081158061316d5750600081145b1561317d57600092505050613652565b6131aa30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686613c0d565b6131d730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686612717565b60006064601e60646131e99190615168565b836131f491906150c6565b6131fe9190615137565b90506000600267ffffffffffffffff81111561321d5761321c6154fe565b5b60405190808252806020026020018201604052801561324b5781602001602082028036833780820191505090505b5090503081600081518110613263576132626157a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106132d4576132d36157a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161336b919061474b565b602060405180830381865afa158015613388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ac9190614a67565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958885853061012c426133fe9190615026565b6040518663ffffffff1660e01b815260040161341e9594939291906157d1565b600060405180830381600087803b15801561343857600080fd5b505af1925050508015613449575060015b613534576134556154dc565b806308c379a0036134e4575061346961555e565b8061347457506134e6565b806040516020016134859190615877565b6040516020818303038152906040526040516134a19190615698565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a260009650505050505050613652565b505b6040516134f2906158e5565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a2600095505050505050613652565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613591919061474b565b602060405180830381865afa1580156135ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d29190614a67565b9050600082826135e29190615168565b90506000811115613606576135f789826142b6565b80975050505050505050613652565b60405161361290615946565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a260009750505050505050505b919050565b60008214806136665750600081145b61394f5761369730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612717565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401613716929190614e9d565b6020604051808303816000875af1158015613735573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137599190614ef2565b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685856000803061012c426137d09190615026565b6040518963ffffffff1660e01b81526004016137f398979695949392919061595b565b6060604051808303816000875af192505050801561382f57506040513d601f19601f8201168201806040525081019061382c9190614d72565b60015b61391c5761383b6154dc565b806308c379a0036138bb575061384f61555e565b8061385a57506138bd565b806040516138689190615698565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a282600d60008282546138ae9190615026565b9250508190555050613917565b505b6040516138c990615a25565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a281600d600082825461390f9190615026565b925050819055505b61394e565b50505080827f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b60405160405180910390a35b5b5050565b600081148061396757506000600c80549050145b613b44576000600c805490508261397e9190615137565b90506000810361398e5750613b44565b60005b600c80549050811080156139a55750606481105b15613b0e57600073ffffffffffffffffffffffffffffffffffffffff16600c82815481106139d6576139d56157a2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613afa57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600c8381548110613a6e57613a6d6157a2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401613ab7929190614e9d565b6020604051808303816000875af1925050508015613af357506040513d601f19601f82011682018060405250810190613af09190614ef2565b60015b15613afb57505b5b8080613b0690615a3a565b915050613991565b50600c80549050827f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21760405160405180910390a3505b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613c775750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cad906154af565b60405180910390fd5b613cc18383836142e8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d3e90615ace565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e35919061454d565b60405180910390a3613e488484846142ed565b50505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613ed857503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15614095576000613ee882611056565b90506000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050678ac7230489e800008210158015613f51575080155b15614016576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614092565b678ac7230489e800008210801561402a5750805b15614091576000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614090836142f2565b5b5b50505b50565b60008060008060006140a8611c4f565b915091506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561411b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061413f919061521d565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614935060008461417f5782614181565b835b90506000856141905784614192565b835b905060008214806141a35750600081145b156141f9576040516141b490615b3a565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a26000809750975050505050506142af565b60006103e58a61420991906150c6565b90506000828261421991906150c6565b90506000826103e88661422c91906150c6565b6142369190615026565b905080826142449190615137565b995060008a036142a25760405161425a90615b9b565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a26000809a509a5050505050505050506142af565b60019a5050505050505050505b9193909250565b80827fdd819f6d4da11821175805e17c46b8094c817290420e3de00dee96b4d256dc0160405160405180910390a35050565b505050565b505050565b60005b600c8054905081101561447e578173ffffffffffffffffffffffffffffffffffffffff16600c828154811061432d5761432c6157a2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361446b57600c6001600c805490506143879190615168565b81548110614398576143976157a2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c82815481106143d7576143d66157a2565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c80548061443157614430615bb0565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561447e565b808061447690615a3a565b9150506142f5565b5050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144bc5780820151818401526020810190506144a1565b60008484015250505050565b6000601f19601f8301169050919050565b60006144e482614482565b6144ee818561448d565b93506144fe81856020860161449e565b614507816144c8565b840191505092915050565b6000602082019050818103600083015261452c81846144d9565b905092915050565b6000819050919050565b61454781614534565b82525050565b6000602082019050614562600083018461453e565b92915050565b6000604051905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145a282614577565b9050919050565b6145b281614597565b81146145bd57600080fd5b50565b6000813590506145cf816145a9565b92915050565b6145de81614534565b81146145e957600080fd5b50565b6000813590506145fb816145d5565b92915050565b6000806040838503121561461857614617614572565b5b6000614626858286016145c0565b9250506020614637858286016145ec565b9150509250929050565b60008115159050919050565b61465681614641565b82525050565b6000602082019050614671600083018461464d565b92915050565b61468081614597565b82525050565b600060808201905061469b600083018761453e565b6146a8602083018661453e565b6146b5604083018561464d565b6146c26060830184614677565b95945050505050565b6000806000606084860312156146e4576146e3614572565b5b60006146f2868287016145c0565b9350506020614703868287016145c0565b9250506040614714868287016145ec565b9150509250925092565b60006020828403121561473457614733614572565b5b6000614742848285016145ec565b91505092915050565b60006020820190506147606000830184614677565b92915050565b600060ff82169050919050565b61477c81614766565b82525050565b60006020820190506147976000830184614773565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6147d281614597565b82525050565b60006147e483836147c9565b60208301905092915050565b6000602082019050919050565b60006148088261479d565b61481281856147a8565b935061481d836147b9565b8060005b8381101561484e57815161483588826147d8565b9750614840836147f0565b925050600181019050614821565b5085935050505092915050565b6000602082019050818103600083015261487581846147fd565b905092915050565b6000819050919050565b60006148a261489d61489884614577565b61487d565b614577565b9050919050565b60006148b482614887565b9050919050565b60006148c6826148a9565b9050919050565b6148d6816148bb565b82525050565b60006020820190506148f160008301846148cd565b92915050565b60006020828403121561490d5761490c614572565b5b600061491b848285016145c0565b91505092915050565b6000604082019050614939600083018561453e565b614946602083018461453e565b9392505050565b6000806040838503121561496457614963614572565b5b6000614972858286016145c0565b9250506020614983858286016145c0565b9150509250929050565b6000614998826148a9565b9050919050565b6149a88161498d565b82525050565b60006020820190506149c3600083018461499f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a1057607f821691505b602082108103614a2357614a226149c9565b5b50919050565b6000604082019050614a3e6000830185614677565b614a4b6020830184614677565b9392505050565b600081519050614a61816145d5565b92915050565b600060208284031215614a7d57614a7c614572565b5b6000614a8b84828501614a52565b91505092915050565b7f4535000000000000000000000000000000000000000000000000000000000000600082015250565b6000614aca60028361448d565b9150614ad582614a94565b602082019050919050565b60006020820190508181036000830152614af981614abd565b9050919050565b7f4536000000000000000000000000000000000000000000000000000000000000600082015250565b6000614b3660028361448d565b9150614b4182614b00565b602082019050919050565b60006020820190508181036000830152614b6581614b29565b9050919050565b7f4538000000000000000000000000000000000000000000000000000000000000600082015250565b6000614ba260028361448d565b9150614bad82614b6c565b602082019050919050565b60006020820190508181036000830152614bd181614b95565b9050919050565b7f4539000000000000000000000000000000000000000000000000000000000000600082015250565b6000614c0e60028361448d565b9150614c1982614bd8565b602082019050919050565b60006020820190508181036000830152614c3d81614c01565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000614ca060268361448d565b9150614cab82614c44565b604082019050919050565b60006020820190508181036000830152614ccf81614c93565b9050919050565b6000819050919050565b6000614cfb614cf6614cf184614cd6565b61487d565b614534565b9050919050565b614d0b81614ce0565b82525050565b600060c082019050614d266000830189614677565b614d33602083018861453e565b614d406040830187614d02565b614d4d6060830186614d02565b614d5a6080830185614677565b614d6760a083018461453e565b979650505050505050565b600080600060608486031215614d8b57614d8a614572565b5b6000614d9986828701614a52565b9350506020614daa86828701614a52565b9250506040614dbb86828701614a52565b9150509250925092565b7f4661696c656420746f20616464206c6971756964697479000000000000000000600082015250565b6000614dfb60178361448d565b9150614e0682614dc5565b602082019050919050565b60006020820190508181036000830152614e2a81614dee565b9050919050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e730000000000600082015250565b6000614e67601b8361448d565b9150614e7282614e31565b602082019050919050565b60006020820190508181036000830152614e9681614e5a565b9050919050565b6000604082019050614eb26000830185614677565b614ebf602083018461453e565b9392505050565b614ecf81614641565b8114614eda57600080fd5b50565b600081519050614eec81614ec6565b92915050565b600060208284031215614f0857614f07614572565b5b6000614f1684828501614edd565b91505092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614f5560148361448d565b9150614f6082614f1f565b602082019050919050565b60006020820190508181036000830152614f8481614f48565b9050919050565b7f5231000000000000000000000000000000000000000000000000000000000000600082015250565b6000614fc160028361448d565b9150614fcc82614f8b565b602082019050919050565b60006020820190508181036000830152614ff081614fb4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061503182614534565b915061503c83614534565b925082820190508082111561505457615053614ff7565b5b92915050565b7f4537000000000000000000000000000000000000000000000000000000000000600082015250565b600061509060028361448d565b915061509b8261505a565b602082019050919050565b600060208201905081810360008301526150bf81615083565b9050919050565b60006150d182614534565b91506150dc83614534565b92508282026150ea81614534565b9150828204841483151761510157615100614ff7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061514282614534565b915061514d83614534565b92508261515d5761515c615108565b5b828204905092915050565b600061517382614534565b915061517e83614534565b925082820390508181111561519657615195614ff7565b5b92915050565b7f4531000000000000000000000000000000000000000000000000000000000000600082015250565b60006151d260028361448d565b91506151dd8261519c565b602082019050919050565b60006020820190508181036000830152615201816151c5565b9050919050565b600081519050615217816145a9565b92915050565b60006020828403121561523357615232614572565b5b600061524184828501615208565b91505092915050565b60006dffffffffffffffffffffffffffff82169050919050565b61526d8161524a565b811461527857600080fd5b50565b60008151905061528a81615264565b92915050565b600063ffffffff82169050919050565b6152a981615290565b81146152b457600080fd5b50565b6000815190506152c6816152a0565b92915050565b6000806000606084860312156152e5576152e4614572565b5b60006152f38682870161527b565b93505060206153048682870161527b565b9250506040615315868287016152b7565b9150509250925092565b7f4531310000000000000000000000000000000000000000000000000000000000600082015250565b600061535560038361448d565b91506153608261531f565b602082019050919050565b6000602082019050818103600083015261538481615348565b9050919050565b7f4f31000000000000000000000000000000000000000000000000000000000000600082015250565b60006153c160028361448d565b91506153cc8261538b565b602082019050919050565b600060208201905081810360008301526153f0816153b4565b9050919050565b7f4534000000000000000000000000000000000000000000000000000000000000600082015250565b600061542d60028361448d565b9150615438826153f7565b602082019050919050565b6000602082019050818103600083015261545c81615420565b9050919050565b7f4530000000000000000000000000000000000000000000000000000000000000600082015250565b600061549960028361448d565b91506154a482615463565b602082019050919050565b600060208201905081810360008301526154c88161548c565b9050919050565b60008160e01c9050919050565b600060033d11156154fb5760046000803e6154f86000516154cf565b90505b90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b615536826144c8565b810181811067ffffffffffffffff82111715615555576155546154fe565b5b80604052505050565b600060443d106155eb57615570614568565b60043d036004823e80513d602482011167ffffffffffffffff821117156155985750506155eb565b808201805167ffffffffffffffff8111156155b657505050506155eb565b80602083010160043d0385018111156155d35750505050506155eb565b6155e28260200185018661552d565b82955050505050505b90565b600081905092915050565b7f4175746f2070726f63657373206661696c65643a200000000000000000000000600082015250565b600061562f6015836155ee565b915061563a826155f9565b601582019050919050565b600061565082614482565b61565a81856155ee565b935061566a81856020860161449e565b80840191505092915050565b600061568182615622565b915061568d8284615645565b915081905092915050565b60006156a48284615645565b915081905092915050565b7f556e6b6e6f776e206572726f7220696e206175746f6d617469632070726f636560008201527f7373696e67000000000000000000000000000000000000000000000000000000602082015250565b600061570b6025836155ee565b9150615716826156af565b602582019050919050565b600061572c826156fe565b9150819050919050565b7f4f32000000000000000000000000000000000000000000000000000000000000600082015250565b600061576c60028361448d565b915061577782615736565b602082019050919050565b6000602082019050818103600083015261579b8161575f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a0820190506157e6600083018861453e565b6157f3602083018761453e565b818103604083015261580581866147fd565b90506158146060830185614677565b615821608083018461453e565b9695505050505050565b7f526f757465722073776170206661696c65643a20000000000000000000000000600082015250565b60006158616014836155ee565b915061586c8261582b565b601482019050919050565b600061588282615854565b915061588e8284615645565b915081905092915050565b7f556e6b6e6f776e206572726f7220696e20726f75746572207377617000000000600082015250565b60006158cf601c836155ee565b91506158da82615899565b601c82019050919050565b60006158f0826158c2565b9150819050919050565b7f4e6f20534f4e4943207265636569766564206166746572207377617000000000600082015250565b6000615930601c836155ee565b915061593b826158fa565b601c82019050919050565b600061595182615923565b9150819050919050565b600061010082019050615971600083018b614677565b61597e602083018a614677565b61598b604083018961453e565b615998606083018861453e565b6159a56080830187614d02565b6159b260a0830186614d02565b6159bf60c0830185614677565b6159cc60e083018461453e565b9998505050505050505050565b7f556e6b6e6f776e206572726f7220696e206164644c6971756964697479000000600082015250565b6000615a0f601d836155ee565b9150615a1a826159d9565b601d82019050919050565b6000615a3082615a02565b9150819050919050565b6000615a4582614534565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615a7757615a76614ff7565b5b600182019050919050565b7f4532000000000000000000000000000000000000000000000000000000000000600082015250565b6000615ab860028361448d565b9150615ac382615a82565b602082019050919050565b60006020820190508181036000830152615ae781615aab565b9050919050565b7f496e73756666696369656e742070616972207265736572766573000000000000600082015250565b6000615b24601a836155ee565b9150615b2f82615aee565b601a82019050919050565b6000615b4582615b17565b9150819050919050565b7f43616c63756c61746564206f757470757420616d6f756e74206973207a65726f600082015250565b6000615b856020836155ee565b9150615b9082615b4f565b602082019050919050565b6000615ba682615b78565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220d3adf418b700a85a804d3ab80693a54ff15f7dc928ff2e00ae81d2ab2016052f64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101f25760003560e01c80637136982b1161010d578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e146106bd578063ed9cacfe146106fa578063f2fde38b14610711578063f4ea42de1461073a578063fd7c9fab14610777576101f9565b8063a9059cbb14610603578063c026d93a14610640578063c0d7865514610657578063d4d7b19a14610680576101f9565b80638129fc1c116100dc5780638129fc1c1461056a5780638da5cb5b1461058157806395d89b41146105ac5780639df93f6c146105d7576101f9565b80637136982b146104d457806379304bec146104ff5780637ac84fc114610528578063808a54571461053f576101f9565b8063397883d2116101855780635d76b04c116101545780635d76b04c146104165780635fe8e7cc1461044157806362b6327a1461046c57806370a0823114610497576101f9565b8063397883d21461038f57806341a22cc2146103a6578063461a3a95146103c257806357376198146103ed576101f9565b80631b26c80d116101c15780631b26c80d146102bc57806323b872dd146102ea5780632a11ced014610327578063313ce56714610364576101f9565b806306fdde03146101fe57806308dee2b414610229578063095ea7b31461025457806318160ddd14610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107a2565b6040516102209190614512565b60405180910390f35b34801561023557600080fd5b5061023e610834565b60405161024b919061454d565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190614601565b61083e565b604051610288919061465c565b60405180910390f35b34801561029d57600080fd5b506102a661085a565b6040516102b3919061454d565b60405180910390f35b3480156102c857600080fd5b506102d1610864565b6040516102e19493929190614686565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c91906146cb565b6109b7565b60405161031e919061465c565b60405180910390f35b34801561033357600080fd5b5061034e6004803603810190610349919061471e565b6109df565b60405161035b919061474b565b60405180910390f35b34801561037057600080fd5b50610379610a1e565b6040516103869190614782565b60405180910390f35b34801561039b57600080fd5b506103a4610a27565b005b6103c060048036038101906103bb919061471e565b610b60565b005b3480156103ce57600080fd5b506103d7610e72565b6040516103e4919061474b565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190614601565b610e98565b005b34801561042257600080fd5b5061042b610f98565b604051610438919061454d565b60405180910390f35b34801561044d57600080fd5b50610456610fa2565b604051610463919061485b565b60405180910390f35b34801561047857600080fd5b50610481611030565b60405161048e91906148dc565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b991906148f7565b611056565b6040516104cb919061454d565b60405180910390f35b3480156104e057600080fd5b506104e961109e565b6040516104f6919061454d565b60405180910390f35b34801561050b57600080fd5b506105266004803603810190610521919061471e565b6110ab565b005b34801561053457600080fd5b5061053d61117d565b005b34801561054b57600080fd5b506105546113a2565b604051610561919061474b565b60405180910390f35b34801561057657600080fd5b5061057f6113c8565b005b34801561058d57600080fd5b50610596611b93565b6040516105a3919061474b565b60405180910390f35b3480156105b857600080fd5b506105c1611bbd565b6040516105ce9190614512565b60405180910390f35b3480156105e357600080fd5b506105ec611c4f565b6040516105fa929190614924565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614601565b611e0f565b604051610637919061465c565b60405180910390f35b34801561064c57600080fd5b50610655611e2b565b005b34801561066357600080fd5b5061067e600480360381019061067991906148f7565b61217e565b005b34801561068c57600080fd5b506106a760048036038101906106a291906148f7565b612239565b6040516106b4919061465c565b60405180910390f35b3480156106c957600080fd5b506106e460048036038101906106df919061494d565b612259565b6040516106f1919061454d565b60405180910390f35b34801561070657600080fd5b5061070f6122e0565b005b34801561071d57600080fd5b50610738600480360381019061073391906148f7565b6125bc565b005b34801561074657600080fd5b50610761600480360381019061075c919061471e565b61263f565b60405161076e919061454d565b60405180910390f35b34801561078357600080fd5b5061078c6126f1565b60405161079991906149ae565b60405180910390f35b6060600380546107b1906149f8565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd906149f8565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b5050505050905090565b6000600d54905090565b60008033905061084f818585612717565b600191505092915050565b6000600254905090565b60008060008061087330611056565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016108f2929190614a29565b602060405180830381865afa15801561090f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109339190614a67565b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000803390506109c88582856128ab565b6109d3858585612937565b60019150509392505050565b600c81815481106109ef57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b610a2f6130c6565b6000600d541180610a4257506000600e54115b610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7890614ae0565b60405180910390fd5b6000600c8054905011610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090614b4c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16637ac84fc16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b1157600080fd5b505af1925050508015610b22575060015b610b5d57600e54600d547f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd60405160405180910390a3610b5e565b5b565b610b686130c6565b60003411610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290614bb8565b60405180910390fd5b60008111610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590614c24565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c28919061474b565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190614a67565b1015610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca190614cb6565b60405180910390fd5b610cd730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612717565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008033426040518863ffffffff1660e01b8152600401610d3e96959493929190614d11565b60606040518083038185885af193505050508015610d7a57506040513d601f19601f82011682018060405250810190610d779190614d72565b60015b610de757610dac30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000612717565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90614e11565b60405180910390fd5b50505034817f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b60405160405180910390a360004790506000811115610e6e573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e6c573d6000803e3d6000fd5b505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ea06130c6565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0590614e7d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610f32611b93565b836040518363ffffffff1660e01b8152600401610f50929190614e9d565b6020604051808303816000875af1158015610f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f939190614ef2565b505050565b6000600e54905090565b6060600c80548060200260200160405190810160405280929190818152602001828054801561102657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610fdc575b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600c80549050905090565b6110b36130c6565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ed919061474b565b602060405180830381865afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e9190614a67565b101561116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690614f6b565b60405180910390fd5b61117a303383612937565b50565b6002600554036111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b990614fd7565b60405180910390fd5b60026005819055506000600d5411806111dd57506000600e54115b61121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121390614ae0565b60405180910390fd5b6000600c8054905011611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90614b4c565b60405180910390fd5b6000600e54600d546112769190615026565b905068056bc75e2d631000008110156112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb906150a6565b60405180910390fd5b600e54600d547f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd60405160405180910390a36000600d5490506000600e5490506000600d819055506000600e81905550600061131f8461313d565b90506000811115611385576000606460198361133b91906150c6565b6113459190615137565b9050600081836113559190615168565b9050600082111561136b5761136a8583613657565b5b600081111561137e5761137d81613953565b5b5050611394565b82600d8190555081600e819055505b505050506001600581905550565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113d06130c6565b600f60009054906101000a900460ff1615611420576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611417906151e8565b60405180910390fd5b6001600f60006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016114ba929190614a29565b602060405180830381865afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb919061521d565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361169457600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611610929190614a29565b6020604051808303816000875af115801561162f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611653919061521d565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171c90614ae0565b60405180910390fd5b61177230600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612717565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611811929190614e9d565b6020604051808303816000875af1158015611830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118549190614ef2565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118f4929190614e9d565b6020604051808303816000875af1158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190614ef2565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016119b5929190614e9d565b6020604051808303816000875af11580156119d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f89190614ef2565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611a76929190614e9d565b6020604051808303816000875af1158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190614ef2565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4ca662a5f1f012e4d740b256559dce10a6b72cdec96be0142f5e2eb49dd37a6e60405160405180910390a4565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611bcc906149f8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf8906149f8565b8015611c455780601f10611c1a57610100808354040283529160200191611c45565b820191906000526020600020905b815481529060010190602001808311611c2857829003601f168201915b5050505050905090565b600080600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce691906152cc565b50915091506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7e919061521d565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611de157826dffffffffffffffffffffffffffff16826dffffffffffffffffffffffffffff1694509450505050611e0b565b816dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16945094505050505b9091565b600080339050611e20818585612937565b600191505092915050565b611e336130c6565b60003073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611e92929190614a29565b602060405180830381865afa158015611eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed39190614a67565b905069d3c21bcecceda1000000811015611f1f57611f1e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000612717565b5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f7c919061474b565b602060405180830381865afa158015611f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbd9190614a67565b9050600081111561217a576000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612049929190614a29565b602060405180830381865afa158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a9190614a67565b90508181101561217857600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612133929190614e9d565b6020604051808303816000875af1158015612152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121769190614ef2565b505b505b5050565b6121866130c6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ec9061536b565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122e86130c6565b61233530600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612717565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016123d4929190614e9d565b6020604051808303816000875af11580156123f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124179190614ef2565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016124b7929190614e9d565b6020604051808303816000875af19250505080156124f357506040513d601f19601f820116820180604052508101906124f09190614ef2565b60015b156124fa57505b3073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612577929190614e9d565b6020604051808303816000875af19250505080156125b357506040513d601f19601f820116820180604052508101906125b09190614ef2565b60015b156125ba57505b565b6125c46130c6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262a906153d7565b60405180910390fd5b61263c81613b47565b50565b600080600061264c611c4f565b91509150600082148061265f5750600081145b1561266f576000925050506126ec565b60006103e58561267f91906150c6565b90506000828261268f91906150c6565b90506000826103e8866126a291906150c6565b6126ac9190615026565b9050600081836126bc9190615137565b90506064601e60646126ce9190615168565b826126d991906150c6565b6126e39190615137565b96505050505050505b919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127815750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6127c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b790615443565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161289e919061454d565b60405180910390a3505050565b60006128b78484612259565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146129315781811015612923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291a90614ae0565b60405180910390fd5b6129308484848403612717565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129a15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6129e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d7906154af565b60405180910390fd5b6129e8611b93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612a535750612a24611b93565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612a8957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80612abf57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612ad75750600f60009054906101000a900460ff16155b15612afe57612ae7838383613c0d565b612af083613e4e565b612af982613e4e565b6130c1565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612ba95750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b905080156130a15760006064600584612bc291906150c6565b612bcc9190615137565b905060008184612bdc9190615168565b9050612be9868683613c0d565b612bf4863084613c0d565b6064601983612c0391906150c6565b612c0d9190615137565b600d6000828254612c1e9190615026565b925050819055506064601983612c3491906150c6565b612c3e9190615137565b600e6000828254612c4f9190615026565b9250508190555068056bc75e2d63100000600d54101580612c7b575068056bc75e2d63100000600e5410155b8015612c8c57506000600c80549050115b1561309a57612cde30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612717565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612d7d929190614e9d565b6020604051808303816000875af1158015612d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc09190614ef2565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612e60929190614e9d565b6020604051808303816000875af1158015612e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea39190614ef2565b503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612f21929190614e9d565b6020604051808303816000875af1158015612f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f649190614ef2565b503073ffffffffffffffffffffffffffffffffffffffff16637ac84fc16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612fad57600080fd5b505af1925050508015612fbe575060015b61309857612fca6154dc565b806308c379a0036130505750612fde61555e565b80612fe95750613052565b80604051602001612ffa9190615676565b6040516020818303038152906040526040516130169190615698565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a250613093565b505b60405161305e90615721565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a25b613099565b5b5b50506130ad565b6130ac848484613c0d565b5b6130b684613e4e565b6130bf83613e4e565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff166130e5611b93565b73ffffffffffffffffffffffffffffffffffffffff161461313b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313290615782565b60405180910390fd5b565b600080820361314f5760009050613652565b60008061315b84614098565b509150915081158061316d5750600081145b1561317d57600092505050613652565b6131aa30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686613c0d565b6131d730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686612717565b60006064601e60646131e99190615168565b836131f491906150c6565b6131fe9190615137565b90506000600267ffffffffffffffff81111561321d5761321c6154fe565b5b60405190808252806020026020018201604052801561324b5781602001602082028036833780820191505090505b5090503081600081518110613263576132626157a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106132d4576132d36157a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161336b919061474b565b602060405180830381865afa158015613388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ac9190614a67565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958885853061012c426133fe9190615026565b6040518663ffffffff1660e01b815260040161341e9594939291906157d1565b600060405180830381600087803b15801561343857600080fd5b505af1925050508015613449575060015b613534576134556154dc565b806308c379a0036134e4575061346961555e565b8061347457506134e6565b806040516020016134859190615877565b6040516020818303038152906040526040516134a19190615698565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a260009650505050505050613652565b505b6040516134f2906158e5565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a2600095505050505050613652565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613591919061474b565b602060405180830381865afa1580156135ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d29190614a67565b9050600082826135e29190615168565b90506000811115613606576135f789826142b6565b80975050505050505050613652565b60405161361290615946565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a260009750505050505050505b919050565b60008214806136665750600081145b61394f5761369730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612717565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401613716929190614e9d565b6020604051808303816000875af1158015613735573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137599190614ef2565b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685856000803061012c426137d09190615026565b6040518963ffffffff1660e01b81526004016137f398979695949392919061595b565b6060604051808303816000875af192505050801561382f57506040513d601f19601f8201168201806040525081019061382c9190614d72565b60015b61391c5761383b6154dc565b806308c379a0036138bb575061384f61555e565b8061385a57506138bd565b806040516138689190615698565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a282600d60008282546138ae9190615026565b9250508190555050613917565b505b6040516138c990615a25565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a281600d600082825461390f9190615026565b925050819055505b61394e565b50505080827f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b60405160405180910390a35b5b5050565b600081148061396757506000600c80549050145b613b44576000600c805490508261397e9190615137565b90506000810361398e5750613b44565b60005b600c80549050811080156139a55750606481105b15613b0e57600073ffffffffffffffffffffffffffffffffffffffff16600c82815481106139d6576139d56157a2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613afa57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600c8381548110613a6e57613a6d6157a2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401613ab7929190614e9d565b6020604051808303816000875af1925050508015613af357506040513d601f19601f82011682018060405250810190613af09190614ef2565b60015b15613afb57505b5b8080613b0690615a3a565b915050613991565b50600c80549050827f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21760405160405180910390a3505b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613c775750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cad906154af565b60405180910390fd5b613cc18383836142e8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d3e90615ace565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e35919061454d565b60405180910390a3613e488484846142ed565b50505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613ed857503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15614095576000613ee882611056565b90506000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050678ac7230489e800008210158015613f51575080155b15614016576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614092565b678ac7230489e800008210801561402a5750805b15614091576000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614090836142f2565b5b5b50505b50565b60008060008060006140a8611c4f565b915091506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561411b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061413f919061521d565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614935060008461417f5782614181565b835b90506000856141905784614192565b835b905060008214806141a35750600081145b156141f9576040516141b490615b3a565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a26000809750975050505050506142af565b60006103e58a61420991906150c6565b90506000828261421991906150c6565b90506000826103e88661422c91906150c6565b6142369190615026565b905080826142449190615137565b995060008a036142a25760405161425a90615b9b565b60405180910390207f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072360405160405180910390a26000809a509a5050505050505050506142af565b60019a5050505050505050505b9193909250565b80827fdd819f6d4da11821175805e17c46b8094c817290420e3de00dee96b4d256dc0160405160405180910390a35050565b505050565b505050565b60005b600c8054905081101561447e578173ffffffffffffffffffffffffffffffffffffffff16600c828154811061432d5761432c6157a2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361446b57600c6001600c805490506143879190615168565b81548110614398576143976157a2565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c82815481106143d7576143d66157a2565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c80548061443157614430615bb0565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561447e565b808061447690615a3a565b9150506142f5565b5050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144bc5780820151818401526020810190506144a1565b60008484015250505050565b6000601f19601f8301169050919050565b60006144e482614482565b6144ee818561448d565b93506144fe81856020860161449e565b614507816144c8565b840191505092915050565b6000602082019050818103600083015261452c81846144d9565b905092915050565b6000819050919050565b61454781614534565b82525050565b6000602082019050614562600083018461453e565b92915050565b6000604051905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145a282614577565b9050919050565b6145b281614597565b81146145bd57600080fd5b50565b6000813590506145cf816145a9565b92915050565b6145de81614534565b81146145e957600080fd5b50565b6000813590506145fb816145d5565b92915050565b6000806040838503121561461857614617614572565b5b6000614626858286016145c0565b9250506020614637858286016145ec565b9150509250929050565b60008115159050919050565b61465681614641565b82525050565b6000602082019050614671600083018461464d565b92915050565b61468081614597565b82525050565b600060808201905061469b600083018761453e565b6146a8602083018661453e565b6146b5604083018561464d565b6146c26060830184614677565b95945050505050565b6000806000606084860312156146e4576146e3614572565b5b60006146f2868287016145c0565b9350506020614703868287016145c0565b9250506040614714868287016145ec565b9150509250925092565b60006020828403121561473457614733614572565b5b6000614742848285016145ec565b91505092915050565b60006020820190506147606000830184614677565b92915050565b600060ff82169050919050565b61477c81614766565b82525050565b60006020820190506147976000830184614773565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6147d281614597565b82525050565b60006147e483836147c9565b60208301905092915050565b6000602082019050919050565b60006148088261479d565b61481281856147a8565b935061481d836147b9565b8060005b8381101561484e57815161483588826147d8565b9750614840836147f0565b925050600181019050614821565b5085935050505092915050565b6000602082019050818103600083015261487581846147fd565b905092915050565b6000819050919050565b60006148a261489d61489884614577565b61487d565b614577565b9050919050565b60006148b482614887565b9050919050565b60006148c6826148a9565b9050919050565b6148d6816148bb565b82525050565b60006020820190506148f160008301846148cd565b92915050565b60006020828403121561490d5761490c614572565b5b600061491b848285016145c0565b91505092915050565b6000604082019050614939600083018561453e565b614946602083018461453e565b9392505050565b6000806040838503121561496457614963614572565b5b6000614972858286016145c0565b9250506020614983858286016145c0565b9150509250929050565b6000614998826148a9565b9050919050565b6149a88161498d565b82525050565b60006020820190506149c3600083018461499f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a1057607f821691505b602082108103614a2357614a226149c9565b5b50919050565b6000604082019050614a3e6000830185614677565b614a4b6020830184614677565b9392505050565b600081519050614a61816145d5565b92915050565b600060208284031215614a7d57614a7c614572565b5b6000614a8b84828501614a52565b91505092915050565b7f4535000000000000000000000000000000000000000000000000000000000000600082015250565b6000614aca60028361448d565b9150614ad582614a94565b602082019050919050565b60006020820190508181036000830152614af981614abd565b9050919050565b7f4536000000000000000000000000000000000000000000000000000000000000600082015250565b6000614b3660028361448d565b9150614b4182614b00565b602082019050919050565b60006020820190508181036000830152614b6581614b29565b9050919050565b7f4538000000000000000000000000000000000000000000000000000000000000600082015250565b6000614ba260028361448d565b9150614bad82614b6c565b602082019050919050565b60006020820190508181036000830152614bd181614b95565b9050919050565b7f4539000000000000000000000000000000000000000000000000000000000000600082015250565b6000614c0e60028361448d565b9150614c1982614bd8565b602082019050919050565b60006020820190508181036000830152614c3d81614c01565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000614ca060268361448d565b9150614cab82614c44565b604082019050919050565b60006020820190508181036000830152614ccf81614c93565b9050919050565b6000819050919050565b6000614cfb614cf6614cf184614cd6565b61487d565b614534565b9050919050565b614d0b81614ce0565b82525050565b600060c082019050614d266000830189614677565b614d33602083018861453e565b614d406040830187614d02565b614d4d6060830186614d02565b614d5a6080830185614677565b614d6760a083018461453e565b979650505050505050565b600080600060608486031215614d8b57614d8a614572565b5b6000614d9986828701614a52565b9350506020614daa86828701614a52565b9250506040614dbb86828701614a52565b9150509250925092565b7f4661696c656420746f20616464206c6971756964697479000000000000000000600082015250565b6000614dfb60178361448d565b9150614e0682614dc5565b602082019050919050565b60006020820190508181036000830152614e2a81614dee565b9050919050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e730000000000600082015250565b6000614e67601b8361448d565b9150614e7282614e31565b602082019050919050565b60006020820190508181036000830152614e9681614e5a565b9050919050565b6000604082019050614eb26000830185614677565b614ebf602083018461453e565b9392505050565b614ecf81614641565b8114614eda57600080fd5b50565b600081519050614eec81614ec6565b92915050565b600060208284031215614f0857614f07614572565b5b6000614f1684828501614edd565b91505092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614f5560148361448d565b9150614f6082614f1f565b602082019050919050565b60006020820190508181036000830152614f8481614f48565b9050919050565b7f5231000000000000000000000000000000000000000000000000000000000000600082015250565b6000614fc160028361448d565b9150614fcc82614f8b565b602082019050919050565b60006020820190508181036000830152614ff081614fb4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061503182614534565b915061503c83614534565b925082820190508082111561505457615053614ff7565b5b92915050565b7f4537000000000000000000000000000000000000000000000000000000000000600082015250565b600061509060028361448d565b915061509b8261505a565b602082019050919050565b600060208201905081810360008301526150bf81615083565b9050919050565b60006150d182614534565b91506150dc83614534565b92508282026150ea81614534565b9150828204841483151761510157615100614ff7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061514282614534565b915061514d83614534565b92508261515d5761515c615108565b5b828204905092915050565b600061517382614534565b915061517e83614534565b925082820390508181111561519657615195614ff7565b5b92915050565b7f4531000000000000000000000000000000000000000000000000000000000000600082015250565b60006151d260028361448d565b91506151dd8261519c565b602082019050919050565b60006020820190508181036000830152615201816151c5565b9050919050565b600081519050615217816145a9565b92915050565b60006020828403121561523357615232614572565b5b600061524184828501615208565b91505092915050565b60006dffffffffffffffffffffffffffff82169050919050565b61526d8161524a565b811461527857600080fd5b50565b60008151905061528a81615264565b92915050565b600063ffffffff82169050919050565b6152a981615290565b81146152b457600080fd5b50565b6000815190506152c6816152a0565b92915050565b6000806000606084860312156152e5576152e4614572565b5b60006152f38682870161527b565b93505060206153048682870161527b565b9250506040615315868287016152b7565b9150509250925092565b7f4531310000000000000000000000000000000000000000000000000000000000600082015250565b600061535560038361448d565b91506153608261531f565b602082019050919050565b6000602082019050818103600083015261538481615348565b9050919050565b7f4f31000000000000000000000000000000000000000000000000000000000000600082015250565b60006153c160028361448d565b91506153cc8261538b565b602082019050919050565b600060208201905081810360008301526153f0816153b4565b9050919050565b7f4534000000000000000000000000000000000000000000000000000000000000600082015250565b600061542d60028361448d565b9150615438826153f7565b602082019050919050565b6000602082019050818103600083015261545c81615420565b9050919050565b7f4530000000000000000000000000000000000000000000000000000000000000600082015250565b600061549960028361448d565b91506154a482615463565b602082019050919050565b600060208201905081810360008301526154c88161548c565b9050919050565b60008160e01c9050919050565b600060033d11156154fb5760046000803e6154f86000516154cf565b90505b90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b615536826144c8565b810181811067ffffffffffffffff82111715615555576155546154fe565b5b80604052505050565b600060443d106155eb57615570614568565b60043d036004823e80513d602482011167ffffffffffffffff821117156155985750506155eb565b808201805167ffffffffffffffff8111156155b657505050506155eb565b80602083010160043d0385018111156155d35750505050506155eb565b6155e28260200185018661552d565b82955050505050505b90565b600081905092915050565b7f4175746f2070726f63657373206661696c65643a200000000000000000000000600082015250565b600061562f6015836155ee565b915061563a826155f9565b601582019050919050565b600061565082614482565b61565a81856155ee565b935061566a81856020860161449e565b80840191505092915050565b600061568182615622565b915061568d8284615645565b915081905092915050565b60006156a48284615645565b915081905092915050565b7f556e6b6e6f776e206572726f7220696e206175746f6d617469632070726f636560008201527f7373696e67000000000000000000000000000000000000000000000000000000602082015250565b600061570b6025836155ee565b9150615716826156af565b602582019050919050565b600061572c826156fe565b9150819050919050565b7f4f32000000000000000000000000000000000000000000000000000000000000600082015250565b600061576c60028361448d565b915061577782615736565b602082019050919050565b6000602082019050818103600083015261579b8161575f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a0820190506157e6600083018861453e565b6157f3602083018761453e565b818103604083015261580581866147fd565b90506158146060830185614677565b615821608083018461453e565b9695505050505050565b7f526f757465722073776170206661696c65643a20000000000000000000000000600082015250565b60006158616014836155ee565b915061586c8261582b565b601482019050919050565b600061588282615854565b915061588e8284615645565b915081905092915050565b7f556e6b6e6f776e206572726f7220696e20726f75746572207377617000000000600082015250565b60006158cf601c836155ee565b91506158da82615899565b601c82019050919050565b60006158f0826158c2565b9150819050919050565b7f4e6f20534f4e4943207265636569766564206166746572207377617000000000600082015250565b6000615930601c836155ee565b915061593b826158fa565b601c82019050919050565b600061595182615923565b9150819050919050565b600061010082019050615971600083018b614677565b61597e602083018a614677565b61598b604083018961453e565b615998606083018861453e565b6159a56080830187614d02565b6159b260a0830186614d02565b6159bf60c0830185614677565b6159cc60e083018461453e565b9998505050505050505050565b7f556e6b6e6f776e206572726f7220696e206164644c6971756964697479000000600082015250565b6000615a0f601d836155ee565b9150615a1a826159d9565b601d82019050919050565b6000615a3082615a02565b9150819050919050565b6000615a4582614534565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615a7757615a76614ff7565b5b600182019050919050565b7f4532000000000000000000000000000000000000000000000000000000000000600082015250565b6000615ab860028361448d565b9150615ac382615a82565b602082019050919050565b60006020820190508181036000830152615ae781615aab565b9050919050565b7f496e73756666696369656e742070616972207265736572766573000000000000600082015250565b6000615b24601a836155ee565b9150615b2f82615aee565b601a82019050919050565b6000615b4582615b17565b9150819050919050565b7f43616c63756c61746564206f757470757420616d6f756e74206973207a65726f600082015250565b6000615b856020836155ee565b9150615b9082615b4f565b602082019050919050565b6000615ba682615b78565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220d3adf418b700a85a804d3ab80693a54ff15f7dc928ff2e00ae81d2ab2016052f64736f6c63430008130033
Deployed Bytecode Sourcemap
8450:19683:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24908:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3677:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3104:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26315:308;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;3875:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9477:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3012:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25207:378;;;;;;;;;;;;;:::i;:::-;;23166:993;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9337:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24342:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25034:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22992:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9239:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3211:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22882:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24591:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15977:1546;;;;;;;;;;;;;:::i;:::-;;9369:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10910:1132;;;;;;;;;;;;;:::i;:::-;;1789:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26631:427;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3337:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25593:691;;;;;;;;;;;;;:::i;:::-;;24167:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9430:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3527:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27687:406;;;;;;;;;;;;;:::i;:::-;;1992:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27066:595;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9287:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2810:91;2855:13;2888:5;2881:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:91;:::o;24908:118::-;24968:7;24995:23;;24988:30;;24908: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;26315:308::-;26359:7;26368;26377:4;26383:7;26425:24;26443:4;26425:9;:24::i;:::-;26471:10;;;;;;;;;;;26464:28;;;26501:4;26516:16;;;;;;;;;;;26464:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26574:1;26549:27;;:13;;;;;;;;;;;:27;;;;26591:13;;;;;;;;;;;26403:212;;;;;;;;26315:308;;;;:::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;9477:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3012:84::-;3061:5;3086:2;3079:9;;3012:84;:::o;25207:378::-;1748:13;:11;:13::i;:::-;25300:1:::1;25274:23;;:27;:56;;;;25329:1;25305:21;;:25;25274:56;25266:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25373:1;25356:7;:14;;;;:18;25348:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;25396:4;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25392:186;;25544:21;;25519:23;;25504:62;;;;;;;;;;25392:186;;;;25207:378::o:0;23166:993::-;1748:13;:11;:13::i;:::-;23274:1:::1;23262:9;:13;23254:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;23315:1;23301:11;:15;23293:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;23416:11;23381:4;23366:31;;;23406:4;23366:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;23344:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;23506:63;23523:4;23538:16;;;;;;;;;;;23557:11;23506:8;:63::i;:::-;23586:16;;;;;;;;;;;:32;;;23626:9;23659:4;23679:11;23705:1;23721::::0;23737:10:::1;23762:15;23586:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;23582:412;;23881:53;23898:4;23913:16;;;;;;;;;;;23932:1;23881:8;:53::i;:::-;23949:33;;;;;;;;;;:::i;:::-;;;;;;;;23582:412;;;;23837:9;23824:11;23809:38;;;;;;;;;;24006:20;24029:21;24006:44;;24080:1;24065:12;:16;24061:91;;;24106:10;24098:28;;:42;24127:12;24098:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24061:91;23243:916;23166:993:::0;:::o;9337:25::-;;;;;;;;;;;;;:::o;24342:208::-;1748:13;:11;:13::i;:::-;24453:4:::1;24435:23;;:6;:23;;::::0;24427:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24508:6;24501:23;;;24525:7;:5;:7::i;:::-;24534;24501:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24342:208:::0;;:::o;25034:114::-;25092:7;25119:21;;25112:28;;25034:114;:::o;22992:96::-;23037:16;23073:7;23066:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22992:96;:::o;9239:41::-;;;;;;;;;;;;;:::o;3211:118::-;3276:7;3303:9;:18;3313:7;3303:18;;;;;;;;;;;;;;;;3296:25;;3211:118;;;:::o;22882:98::-;22931:7;22958;:14;;;;22951:21;;22882:98;:::o;24591:266::-;1748:13;:11;:13::i;:::-;24740:6:::1;24705:4;24690:31;;;24730:4;24690:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;24668:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;24805:44;24823:4;24830:10;24842:6;24805:9;:44::i;:::-;24591:266:::0;:::o;15977:1546::-;1042:1;1188:7;;:19;1180:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;1042:1;1225:7;:18;;;;16082:1:::1;16056:23;;:27;:56;;;;16111:1;16087:21;;:25;16056:56;16048:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16155:1;16138:7;:14;;;;:18;16130:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;16184:19;16232:21;;16206:23;;:47;;;;:::i;:::-;16184:69;;8907:12;16272:11;:37;;16264:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16382:21;;16357:23;;16342:62;;;;;;;;;;16451:27;16481:23;;16451:53;;16515:25;16543:21;;16515:49;;16601:1;16575:23;:27;;;;16637:1;16613:21;:25;;;;16699:21;16723:32;16743:11;16723:19;:32::i;:::-;16699:56;;16786:1;16770:13;:17;16766:750;;;16847:25;16916:3;9086:2;16876:13;:36;;;;:::i;:::-;16875:44;;;;:::i;:::-;16847:72;;16934:23;16976:17;16960:13;:33;;;;:::i;:::-;16934:59;;17064:1;17044:17;:21;17040:130;;;17086:68;17115:19;17136:17;17086:28;:68::i;:::-;17040:130;17240:1;17222:15;:19;17218:92;;;17262:32;17278:15;17262;:32::i;:::-;17218:92;16789:532;;16766:750;;;17429:19;17403:23;:45;;;;17487:17;17463:21;:41;;;;16766:750;16037:1486;;;;998:1:::0;1266:7;:22;;;;15977:1546::o;9369:28::-;;;;;;;;;;;;;:::o;10910:1132::-;1748:13;:11;:13::i;:::-;10971:12:::1;;;;;;;;;;;10970:13;10962:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;11016:4;11001:12;;:19;;;;;;;;;;;;;;;;;;11092:17;;;;;;;;;;;:25;;;11126:4;11133:10;;;;;;;;;;;11092:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11076:13;;:68;;;;;;;;;;;;;;;;;;11239:1;11214:27;;:13;;;;;;;;;;;:27;;::::0;11210:131:::1;;11274:17;;;;;;;;;;;:28;;;11311:4;11318:10;;;;;;;;;;;11274:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11258:13;;:71;;;;;;;;;;;;;;;;;;11210:131;11394:1;11369:27;;:13;;;;;;;;;;;:27;;::::0;11361:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11450:69;11467:4;11482:16;;;;;;;;;;;11501:17;11450:8;:69::i;:::-;11585:10;;;;;;;;;;;11578:26;;;11613:16;;;;;;;;;;;11632:17;11578:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11668:10;;;;;;;;;;;11661:26;;;11688:13;;;;;;;;;;;11703:17;11661:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11796:4;11781:29;;;11811:13;;;;;;;;;;;11826:17;11781:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11870:4;11855:29;;;11893:16;;;;;;;;;;;11912:17;11855:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12023:10;;;;;;;;;;;11948:86;;12003:17;;;;;;;;;;;11948:86;;11976:16;;;;;;;;;;;11948:86;;;;;;;;;;;;10910:1132::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;26631:427::-;26679:19;26700;26733:16;26751;26788:13;;;;;;;;;;;26772:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26732:84;;;;;26827:14;26860:13;;;;;;;;;;;26844:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26827:56;;26916:4;26898:23;;:6;:23;;;26894:101;;26954:8;26946:17;;26973:8;26965:17;;26938:45;;;;;;;;;26894:101;27021:8;27013:17;;27040:8;27032:17;;27005:45;;;;;;;26631: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;25593:691::-;1748:13;:11;:13::i;:::-;25660:21:::1;25699:4;25684:31;;;25724:4;25739:16;;;;;;;;;;;25684:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25660:97;;8566:18;25772:13;:28;25768:125;;;25817:64;25834:4;25849:16;;;;;;;;;;;8566:18;25817:8;:64::i;:::-;25768:125;25905:19;25934:10;;;;;;;;;;;25927:28;;;25964:4;25927:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25905:65;;25999:1;25985:11;:15;25981:296;;;26017:21;26048:10;;;;;;;;;;;26041:28;;;26078:4;26093:16;;;;;;;;;;;26041:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26017:94;;26146:11;26130:13;:27;26126:140;;;26185:10;;;;;;;;;;;26178:26;;;26213:16;;;;;;;;;;;26232:17;26178:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26126:140;26002:275;25981:296;25649:635;;25593:691::o:0;24167:167::-;1748:13;:11;:13::i;:::-;24260:1:::1;24241:21;;:7;:21;;::::0;24233:37:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24318:7;24281:16;;:45;;;;;;;;;;;;;;;;;;24167:167:::0;:::o;9430:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;3527:142::-;3607:7;3634:11;:18;3646:5;3634:18;;;;;;;;;;;;;;;:27;3653:7;3634:27;;;;;;;;;;;;;;;;3627:34;;3527:142;;;;:::o;27687:406::-;1748:13;:11;:13::i;:::-;27748:69:::1;27765:4;27780:16;;;;;;;;;;;27799:17;27748:8;:69::i;:::-;27835:10;;;;;;;;;;;27828:26;;;27863:16;;;;;;;;;;;27882:17;27828:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27932:10;;;;;;;;;;;27925:26;;;27952:13;;;;;;;;;;;27967:17;27925:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;27921:76:::0;::::1;;;;28026:4;28011:29;;;28041:13;;;;;;;;;;;28056:17;28011:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;28007:79:::0;::::1;;;;27687: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;27066:595::-;27143:7;27164:19;27185;27208:17;:15;:17::i;:::-;27163:62;;;;27255:1;27240:11;:16;:36;;;;27275:1;27260:11;:16;27240:36;27236:50;;;27285:1;27278:8;;;;;;27236:50;27307:23;27344:3;27333:8;:14;;;;:::i;:::-;27307:40;;27370:17;27408:11;27390:15;:29;;;;:::i;:::-;27370:49;;27430:19;27475:15;27467:4;27453:11;:18;;;;:::i;:::-;27452:38;;;;:::i;:::-;27430:60;;27501:17;27533:11;27521:9;:23;;;;:::i;:::-;27501:43;;27650:3;9169:2;27628:3;:18;;;;:::i;:::-;27615:9;:32;;;;:::i;:::-;:38;;;;:::i;:::-;27608:45;;;;;;;;27066:595;;;;:::o;9287: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;12437:2633::-;12593:1;12577:18;;:4;:18;;;;:38;;;;;12613:1;12599:16;;:2;:16;;;;12577:38;12569:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12709:7;:5;:7::i;:::-;12701:15;;:4;:15;;;:32;;;;12726:7;:5;:7::i;:::-;12720:13;;:2;:13;;;12701:32;:57;;;;12753:4;12737:21;;:4;:21;;;12701:57;:80;;;;12776:4;12762:19;;:2;:19;;;12701:80;:97;;;;12786:12;;;;;;;;;;;12785:13;12701:97;12697:250;;;12815:33;12831:4;12837:2;12841:6;12815:15;:33::i;:::-;12863:19;12877:4;12863:13;:19::i;:::-;12897:17;12911:2;12897:13;:17::i;:::-;12929:7;;12697:250;12959:16;12984:13;;;;;;;;;;;12978:19;;:2;:19;;;:44;;;;13009:13;;;;;;;;;;;13001:21;;:4;:21;;;12978:44;12959:63;;13037:11;13033:1910;;;13107:16;13148:3;8627:1;13127:6;:17;;;;:::i;:::-;13126:25;;;;:::i;:::-;13107:44;;13166:22;13200:8;13191:6;:17;;;;:::i;:::-;13166:42;;13293:41;13309:4;13315:2;13319:14;13293:15;:41::i;:::-;13409:46;13425:4;13439;13446:8;13409:15;:46::i;:::-;13596:3;8682:2;13568:8;:24;;;;:::i;:::-;13567:32;;;;:::i;:::-;13540:23;;:59;;;;;;;:::i;:::-;;;;;;;;13689:3;8738:2;13663:8;:22;;;;:::i;:::-;13662:30;;;;:::i;:::-;13637:21;;:55;;;;;;;:::i;:::-;;;;;;;;8907:12;13793:23;;:49;;:118;;;;8907:12;13864:21;;:47;;13793:118;13792:160;;;;;13951:1;13934:7;:14;;;;:18;13792:160;13788:1034;;;14024:69;14041:4;14056:16;;;;;;;;;;;14075:17;14024:8;:69::i;:::-;14119:10;;;;;;;;;;;14112:26;;;14147:16;;;;;;;;;;;14166:17;14112:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14276:10;;;;;;;;;;;14269:26;;;14296:13;;;;;;;;;;;14311:17;14269:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14363:4;14348:29;;;14378:13;;;;;;;;;;;14393:17;14348:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14452:4;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14448:359;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;14672:6;14630:49;;;;;;;;:::i;:::-;;;;;;;;;;;;;14612:69;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14550:151;14448:359;;;;;14736:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14448:359;;;;;13788:1034;13050:1783;;13033:1910;;;14898:33;14914:4;14920:2;14924:6;14898:15;:33::i;:::-;13033:1910;15015:19;15029:4;15015:13;:19::i;:::-;15045:17;15059:2;15045:13;:17::i;:::-;12558:2512;12437:2633;;;;:::o;1884:100::-;1959:10;1948:21;;:7;:5;:7::i;:::-;:21;;;1940:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;1884:100::o;17531:2061::-;17598:7;17637:1;17622:11;:16;17618:30;;17647:1;17640:8;;;;17618:30;17704:12;17718:24;17748:33;17769:11;17748:20;:33::i;:::-;17703:78;;;;;17797:7;17796:8;:33;;;;17828:1;17808:16;:21;17796:33;17792:47;;;17838:1;17831:8;;;;;;17792:47;17915:70;17939:4;17954:16;;;;;;;;;;;17973:11;17915:15;:70::i;:::-;18044:63;18061:4;18076:16;;;;;;;;;;;18095:11;18044:8;:63::i;:::-;18167:20;18232:3;9169:2;18210:3;:18;;;;:::i;:::-;18190:16;:39;;;;:::i;:::-;:45;;;;:::i;:::-;18167:68;;18341:21;18379:1;18365:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18341:40;;18410:4;18392;18397:1;18392:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18436:10;;;;;;;;;;;18426:4;18431:1;18426:7;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;;;18467:27;18504:10;;;;;;;;;;;18497:28;;;18534:4;18497:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18467:73;;18565:16;;;;;;;;;;;:70;;;18650:11;18676:12;18703:4;18730;18795:3;18777:15;:21;;;;:::i;:::-;18565:244;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18561:1024;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;19437:6;19396:48;;;;;;;;:::i;:::-;;;;;;;;;;;;;19378:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19468:1;19461:8;;;;;;;;;;18561:1024;;;19508:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19572:1;19565:8;;;;;;;;;18561:1024;18898:25;18933:10;;;;;;;;;;;18926:28;;;18963:4;18926:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18898:71;;18984:16;19023:19;19003:17;:39;;;;:::i;:::-;18984:58;;19086:1;19075:8;:12;19071:241;;;19108:39;19125:11;19138:8;19108:16;:39::i;:::-;19173:8;19166:15;;;;;;;;;;;19071:241;19227:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19295:1;19288:8;;;;;;;;;17531:2061;;;;:::o;21185:1002::-;21303:1;21288:11;:16;:36;;;;21323:1;21308:11;:16;21288:36;21326:7;21284:49;21374:63;21391:4;21406:16;;;;;;;;;;;21425:11;21374:8;:63::i;:::-;21455:10;;;;;;;;;;;21448:26;;;21483:16;;;;;;;;;;;21502:11;21448:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21531:16;;;;;;;;;;;:29;;;21583:4;21603:10;;;;;;;;;;;21628:11;21654;21680:1;21758;21782:4;21820:3;21802:15;:21;;;;:::i;:::-;21531:303;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;21527:653;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;21973:6;21962:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;22022:11;21995:23;;:38;;;;;;;:::i;:::-;;;;;;;;21908:137;21527:653;;;;;22072:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;22157:11;22130:23;;:38;;;;;;;:::i;:::-;;;;;;;;21527:653;;;;;;;21883:11;21870;21855:40;;;;;;;;;;21527:653;21185:1002;;;:::o;22195:656::-;22279:1;22264:11;:16;:39;;;;22302:1;22284:7;:14;;;;:19;22264:39;22305:7;22260:52;22332:23;22372:7;:14;;;;22358:11;:28;;;;:::i;:::-;22332:54;;22420:1;22401:15;:20;22397:33;;22423:7;;;22397:33;22447:9;22442:329;22466:7;:14;;;;22462:1;:18;:29;;;;;22488:3;22484:1;:7;22462:29;22442:329;;;22539:1;22517:24;;:7;22525:1;22517:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:24;;;22513:247;;22573:10;;;;;;;;;;;22566:27;;;22594:7;22602:1;22594:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22606:15;22566:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;22562:183;22717:8;22562:183;;22513:247;22442:329;22493:3;;;;;:::i;:::-;;;;22442:329;;;;22828:7;:14;;;;22815:11;22796:47;;;;;;;;;;22249:602;22195:656;;:::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;15078:588::-;15152:13;;;;;;;;;;;15141:24;;:7;:24;;;;:52;;;;;15188:4;15169:24;;:7;:24;;;;15141:52;15137:522;;;15210:15;15228:18;15238:7;15228:9;:18::i;:::-;15210:36;;15261:22;15286:8;:17;15295:7;15286:17;;;;;;;;;;;;;;;;;;;;;;;;;15261:42;;8800:11;15336:7;:28;;:50;;;;;15369:17;15368:18;15336:50;15332:316;;;15427:4;15407:8;:17;15416:7;15407:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15450:7;15463;15450:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15332:316;;;8800:11;15497:7;:27;:48;;;;;15528:17;15497:48;15493:155;;;15586:5;15566:8;:17;15575:7;15566:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;15610:22;15624:7;15610:13;:22::i;:::-;15493:155;15332:316;15195:464;;15137:522;15078:588;:::o;19604:1337::-;19672:12;19686:22;19710:19;19769:16;19787;19807:17;:15;:17::i;:::-;19768:56;;;;19887:14;19920:13;;;;;;;;;;;19904:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19887:56;;19989:4;19971:23;;:6;:23;;;19954:40;;20067:21;20091:14;:36;;20119:8;20091:36;;;20108:8;20091:36;20067:60;;20138:20;20161:14;:36;;20189:8;20161:36;;;20178:8;20161:36;20138:59;;20239:1;20222:13;:18;:39;;;;20260:1;20244:12;:17;20222:39;20218:165;;;20283:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20346:5;20353:1;20338:33;;;;;;;;;;;20218:165;20468:23;20508:3;20494:11;:17;;;;:::i;:::-;20468:43;;20522:17;20560:12;20542:15;:30;;;;:::i;:::-;20522:50;;20583:19;20630:15;20622:4;20606:13;:20;;;;:::i;:::-;20605:40;;;;:::i;:::-;20583:62;;20685:11;20673:9;:23;;;;:::i;:::-;20656:40;;20739:1;20721:14;:19;20717:151;;20762:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20831:5;20838:1;20823:33;;;;;;;;;;;;;;20717:151;20896:4;20888:45;;;;;;;;;;19604:1337;;;;;;:::o;21047:130::-;21159:9;21149:8;21134:35;;;;;;;;;;21047:130;;:::o;12050:186::-;;;;:::o;12244:185::-;;;;:::o;15674:295::-;15738:9;15733:229;15757:7;:14;;;;15753:1;:18;15733:229;;;15811:7;15797:21;;:7;15805:1;15797:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:21;;;15793:158;;15852:7;15877:1;15860:7;:14;;;;:18;;;;:::i;:::-;15852:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15839:7;15847:1;15839:10;;;;;;;;:::i;:::-;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;15898:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;15930:5;;15793:158;15773:3;;;;;:::i;:::-;;;;15733:229;;;;15674:295;:::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:541::-;4093:4;4131:3;4120:9;4116:19;4108:27;;4145:71;4213:1;4202:9;4198:17;4189:6;4145:71;:::i;:::-;4226:72;4294:2;4283:9;4279:18;4270:6;4226:72;:::i;:::-;4308:66;4370:2;4359:9;4355:18;4346:6;4308:66;:::i;:::-;4384:72;4452:2;4441:9;4437:18;4428:6;4384:72;:::i;:::-;3922:541;;;;;;;:::o;4469:619::-;4546:6;4554;4562;4611:2;4599:9;4590:7;4586:23;4582:32;4579:119;;;4617:79;;:::i;:::-;4579:119;4737:1;4762:53;4807:7;4798:6;4787:9;4783:22;4762:53;:::i;:::-;4752:63;;4708:117;4864:2;4890:53;4935:7;4926:6;4915:9;4911:22;4890:53;:::i;:::-;4880:63;;4835:118;4992:2;5018:53;5063:7;5054:6;5043:9;5039:22;5018:53;:::i;:::-;5008:63;;4963:118;4469:619;;;;;:::o;5094:329::-;5153:6;5202:2;5190:9;5181:7;5177:23;5173:32;5170:119;;;5208:79;;:::i;:::-;5170:119;5328:1;5353:53;5398:7;5389:6;5378:9;5374:22;5353:53;:::i;:::-;5343:63;;5299:117;5094:329;;;;:::o;5429:222::-;5522:4;5560:2;5549:9;5545:18;5537:26;;5573:71;5641:1;5630:9;5626:17;5617:6;5573:71;:::i;:::-;5429:222;;;;:::o;5657:86::-;5692:7;5732:4;5725:5;5721:16;5710:27;;5657:86;;;:::o;5749:112::-;5832:22;5848:5;5832:22;:::i;:::-;5827:3;5820:35;5749:112;;:::o;5867:214::-;5956:4;5994:2;5983:9;5979:18;5971:26;;6007:67;6071:1;6060:9;6056:17;6047:6;6007:67;:::i;:::-;5867:214;;;;:::o;6087:114::-;6154:6;6188:5;6182:12;6172:22;;6087:114;;;:::o;6207:184::-;6306:11;6340:6;6335:3;6328:19;6380:4;6375:3;6371:14;6356:29;;6207:184;;;;:::o;6397:132::-;6464:4;6487:3;6479:11;;6517:4;6512:3;6508:14;6500:22;;6397:132;;;:::o;6535:108::-;6612:24;6630:5;6612:24;:::i;:::-;6607:3;6600:37;6535:108;;:::o;6649:179::-;6718:10;6739:46;6781:3;6773:6;6739:46;:::i;:::-;6817:4;6812:3;6808:14;6794:28;;6649:179;;;;:::o;6834:113::-;6904:4;6936;6931:3;6927:14;6919:22;;6834:113;;;:::o;6983:732::-;7102:3;7131:54;7179:5;7131:54;:::i;:::-;7201:86;7280:6;7275:3;7201:86;:::i;:::-;7194:93;;7311:56;7361:5;7311:56;:::i;:::-;7390:7;7421:1;7406:284;7431:6;7428:1;7425:13;7406:284;;;7507:6;7501:13;7534:63;7593:3;7578:13;7534:63;:::i;:::-;7527:70;;7620:60;7673:6;7620:60;:::i;:::-;7610:70;;7466:224;7453:1;7450;7446:9;7441:14;;7406:284;;;7410:14;7706:3;7699:10;;7107:608;;;6983:732;;;;:::o;7721:373::-;7864:4;7902:2;7891:9;7887:18;7879:26;;7951:9;7945:4;7941:20;7937:1;7926:9;7922:17;7915:47;7979:108;8082:4;8073:6;7979:108;:::i;:::-;7971:116;;7721:373;;;;:::o;8100:60::-;8128:3;8149:5;8142:12;;8100:60;;;:::o;8166:142::-;8216:9;8249:53;8267:34;8276:24;8294:5;8276:24;:::i;:::-;8267:34;:::i;:::-;8249:53;:::i;:::-;8236:66;;8166:142;;;:::o;8314:126::-;8364:9;8397:37;8428:5;8397:37;:::i;:::-;8384:50;;8314:126;;;:::o;8446:151::-;8521:9;8554:37;8585:5;8554:37;:::i;:::-;8541:50;;8446:151;;;:::o;8603:181::-;8715:62;8771:5;8715:62;:::i;:::-;8710:3;8703:75;8603:181;;:::o;8790:272::-;8908:4;8946:2;8935:9;8931:18;8923:26;;8959:96;9052:1;9041:9;9037:17;9028:6;8959:96;:::i;:::-;8790:272;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:332::-;9524:4;9562:2;9551:9;9547:18;9539:26;;9575:71;9643:1;9632:9;9628:17;9619:6;9575:71;:::i;:::-;9656:72;9724:2;9713:9;9709:18;9700:6;9656:72;:::i;:::-;9403:332;;;;;:::o;9741:474::-;9809:6;9817;9866:2;9854:9;9845:7;9841:23;9837:32;9834:119;;;9872:79;;:::i;:::-;9834:119;9992:1;10017:53;10062:7;10053:6;10042:9;10038:22;10017:53;:::i;:::-;10007:63;;9963:117;10119:2;10145:53;10190:7;10181:6;10170:9;10166:22;10145:53;:::i;:::-;10135:63;;10090:118;9741:474;;;;;:::o;10221:152::-;10297:9;10330:37;10361:5;10330:37;:::i;:::-;10317:50;;10221:152;;;:::o;10379:183::-;10492:63;10549:5;10492:63;:::i;:::-;10487:3;10480:76;10379:183;;:::o;10568:274::-;10687:4;10725:2;10714:9;10710:18;10702:26;;10738:97;10832:1;10821:9;10817:17;10808:6;10738:97;:::i;:::-;10568:274;;;;:::o;10848:180::-;10896:77;10893:1;10886:88;10993:4;10990:1;10983:15;11017:4;11014:1;11007:15;11034:320;11078:6;11115:1;11109:4;11105:12;11095:22;;11162:1;11156:4;11152:12;11183:18;11173:81;;11239:4;11231:6;11227:17;11217:27;;11173:81;11301:2;11293:6;11290:14;11270:18;11267:38;11264:84;;11320:18;;:::i;:::-;11264:84;11085:269;11034:320;;;:::o;11360:332::-;11481:4;11519:2;11508:9;11504:18;11496:26;;11532:71;11600:1;11589:9;11585:17;11576:6;11532:71;:::i;:::-;11613:72;11681:2;11670:9;11666:18;11657:6;11613:72;:::i;:::-;11360:332;;;;;:::o;11698:143::-;11755:5;11786:6;11780:13;11771:22;;11802:33;11829:5;11802:33;:::i;:::-;11698:143;;;;:::o;11847:351::-;11917:6;11966:2;11954:9;11945:7;11941:23;11937:32;11934:119;;;11972:79;;:::i;:::-;11934:119;12092:1;12117:64;12173:7;12164:6;12153:9;12149:22;12117:64;:::i;:::-;12107:74;;12063:128;11847:351;;;;:::o;12204:152::-;12344:4;12340:1;12332:6;12328:14;12321:28;12204:152;:::o;12362:365::-;12504:3;12525:66;12589:1;12584:3;12525:66;:::i;:::-;12518:73;;12600:93;12689:3;12600:93;:::i;:::-;12718:2;12713:3;12709:12;12702:19;;12362:365;;;:::o;12733:419::-;12899:4;12937:2;12926:9;12922:18;12914:26;;12986:9;12980:4;12976:20;12972:1;12961:9;12957:17;12950:47;13014:131;13140:4;13014:131;:::i;:::-;13006:139;;12733:419;;;:::o;13158:152::-;13298:4;13294:1;13286:6;13282:14;13275:28;13158:152;:::o;13316:365::-;13458:3;13479:66;13543:1;13538:3;13479:66;:::i;:::-;13472:73;;13554:93;13643:3;13554:93;:::i;:::-;13672:2;13667:3;13663:12;13656:19;;13316:365;;;:::o;13687:419::-;13853:4;13891:2;13880:9;13876:18;13868:26;;13940:9;13934:4;13930:20;13926:1;13915:9;13911:17;13904:47;13968:131;14094:4;13968:131;:::i;:::-;13960:139;;13687:419;;;:::o;14112:152::-;14252:4;14248:1;14240:6;14236:14;14229:28;14112:152;:::o;14270:365::-;14412:3;14433:66;14497:1;14492:3;14433:66;:::i;:::-;14426:73;;14508:93;14597:3;14508:93;:::i;:::-;14626:2;14621:3;14617:12;14610:19;;14270:365;;;:::o;14641:419::-;14807:4;14845:2;14834:9;14830:18;14822:26;;14894:9;14888:4;14884:20;14880:1;14869:9;14865:17;14858:47;14922:131;15048:4;14922:131;:::i;:::-;14914:139;;14641:419;;;:::o;15066:152::-;15206:4;15202:1;15194:6;15190:14;15183:28;15066:152;:::o;15224:365::-;15366:3;15387:66;15451:1;15446:3;15387:66;:::i;:::-;15380:73;;15462:93;15551:3;15462:93;:::i;:::-;15580:2;15575:3;15571:12;15564:19;;15224:365;;;:::o;15595:419::-;15761:4;15799:2;15788:9;15784:18;15776:26;;15848:9;15842:4;15838:20;15834:1;15823:9;15819:17;15812:47;15876:131;16002:4;15876:131;:::i;:::-;15868:139;;15595:419;;;:::o;16020:225::-;16160:34;16156:1;16148:6;16144:14;16137:58;16229:8;16224:2;16216:6;16212:15;16205:33;16020:225;:::o;16251:366::-;16393:3;16414:67;16478:2;16473:3;16414:67;:::i;:::-;16407:74;;16490:93;16579:3;16490:93;:::i;:::-;16608:2;16603:3;16599:12;16592:19;;16251:366;;;:::o;16623:419::-;16789:4;16827:2;16816:9;16812:18;16804:26;;16876:9;16870:4;16866:20;16862:1;16851:9;16847:17;16840:47;16904:131;17030:4;16904:131;:::i;:::-;16896:139;;16623:419;;;:::o;17048:85::-;17093:7;17122:5;17111:16;;17048:85;;;:::o;17139:158::-;17197:9;17230:61;17248:42;17257:32;17283:5;17257:32;:::i;:::-;17248:42;:::i;:::-;17230:61;:::i;:::-;17217:74;;17139:158;;;:::o;17303:147::-;17398:45;17437:5;17398:45;:::i;:::-;17393:3;17386:58;17303:147;;:::o;17456:807::-;17705:4;17743:3;17732:9;17728:19;17720:27;;17757:71;17825:1;17814:9;17810:17;17801:6;17757:71;:::i;:::-;17838:72;17906:2;17895:9;17891:18;17882:6;17838:72;:::i;:::-;17920:80;17996:2;17985:9;17981:18;17972:6;17920:80;:::i;:::-;18010;18086:2;18075:9;18071:18;18062:6;18010:80;:::i;:::-;18100:73;18168:3;18157:9;18153:19;18144:6;18100:73;:::i;:::-;18183;18251:3;18240:9;18236:19;18227:6;18183:73;:::i;:::-;17456:807;;;;;;;;;:::o;18269:663::-;18357:6;18365;18373;18422:2;18410:9;18401:7;18397:23;18393:32;18390:119;;;18428:79;;:::i;:::-;18390:119;18548:1;18573:64;18629:7;18620:6;18609:9;18605:22;18573:64;:::i;:::-;18563:74;;18519:128;18686:2;18712:64;18768:7;18759:6;18748:9;18744:22;18712:64;:::i;:::-;18702:74;;18657:129;18825:2;18851:64;18907:7;18898:6;18887:9;18883:22;18851:64;:::i;:::-;18841:74;;18796:129;18269:663;;;;;:::o;18938:173::-;19078:25;19074:1;19066:6;19062:14;19055:49;18938:173;:::o;19117:366::-;19259:3;19280:67;19344:2;19339:3;19280:67;:::i;:::-;19273:74;;19356:93;19445:3;19356:93;:::i;:::-;19474:2;19469:3;19465:12;19458:19;;19117:366;;;:::o;19489:419::-;19655:4;19693:2;19682:9;19678:18;19670:26;;19742:9;19736:4;19732:20;19728:1;19717:9;19713:17;19706:47;19770:131;19896:4;19770:131;:::i;:::-;19762:139;;19489:419;;;:::o;19914:177::-;20054:29;20050:1;20042:6;20038:14;20031:53;19914:177;:::o;20097:366::-;20239:3;20260:67;20324:2;20319:3;20260:67;:::i;:::-;20253:74;;20336:93;20425:3;20336:93;:::i;:::-;20454:2;20449:3;20445:12;20438:19;;20097:366;;;:::o;20469:419::-;20635:4;20673:2;20662:9;20658:18;20650:26;;20722:9;20716:4;20712:20;20708:1;20697:9;20693:17;20686:47;20750:131;20876:4;20750:131;:::i;:::-;20742:139;;20469:419;;;:::o;20894:332::-;21015:4;21053:2;21042:9;21038:18;21030:26;;21066:71;21134:1;21123:9;21119:17;21110:6;21066:71;:::i;:::-;21147:72;21215:2;21204:9;21200:18;21191:6;21147:72;:::i;:::-;20894:332;;;;;:::o;21232:116::-;21302:21;21317:5;21302:21;:::i;:::-;21295:5;21292:32;21282:60;;21338:1;21335;21328:12;21282:60;21232:116;:::o;21354:137::-;21408:5;21439:6;21433:13;21424:22;;21455:30;21479:5;21455:30;:::i;:::-;21354:137;;;;:::o;21497:345::-;21564:6;21613:2;21601:9;21592:7;21588:23;21584:32;21581:119;;;21619:79;;:::i;:::-;21581:119;21739:1;21764:61;21817:7;21808:6;21797:9;21793:22;21764:61;:::i;:::-;21754:71;;21710:125;21497:345;;;;:::o;21848:170::-;21988:22;21984:1;21976:6;21972:14;21965:46;21848:170;:::o;22024:366::-;22166:3;22187:67;22251:2;22246:3;22187:67;:::i;:::-;22180:74;;22263:93;22352:3;22263:93;:::i;:::-;22381:2;22376:3;22372:12;22365:19;;22024:366;;;:::o;22396:419::-;22562:4;22600:2;22589:9;22585:18;22577:26;;22649:9;22643:4;22639:20;22635:1;22624:9;22620:17;22613:47;22677:131;22803:4;22677:131;:::i;:::-;22669:139;;22396:419;;;:::o;22821:152::-;22961:4;22957:1;22949:6;22945:14;22938:28;22821:152;:::o;22979:365::-;23121:3;23142:66;23206:1;23201:3;23142:66;:::i;:::-;23135:73;;23217:93;23306:3;23217:93;:::i;:::-;23335:2;23330:3;23326:12;23319:19;;22979:365;;;:::o;23350:419::-;23516:4;23554:2;23543:9;23539:18;23531:26;;23603:9;23597:4;23593:20;23589:1;23578:9;23574:17;23567:47;23631:131;23757:4;23631:131;:::i;:::-;23623:139;;23350:419;;;:::o;23775:180::-;23823:77;23820:1;23813:88;23920:4;23917:1;23910:15;23944:4;23941:1;23934:15;23961:191;24001:3;24020:20;24038:1;24020:20;:::i;:::-;24015:25;;24054:20;24072:1;24054:20;:::i;:::-;24049:25;;24097:1;24094;24090:9;24083:16;;24118:3;24115:1;24112:10;24109:36;;;24125:18;;:::i;:::-;24109:36;23961:191;;;;:::o;24158:152::-;24298:4;24294:1;24286:6;24282:14;24275:28;24158:152;:::o;24316:365::-;24458:3;24479:66;24543:1;24538:3;24479:66;:::i;:::-;24472:73;;24554:93;24643:3;24554:93;:::i;:::-;24672:2;24667:3;24663:12;24656:19;;24316:365;;;:::o;24687:419::-;24853:4;24891:2;24880:9;24876:18;24868:26;;24940:9;24934:4;24930:20;24926:1;24915:9;24911:17;24904:47;24968:131;25094:4;24968:131;:::i;:::-;24960:139;;24687:419;;;:::o;25112:410::-;25152:7;25175:20;25193:1;25175:20;:::i;:::-;25170:25;;25209:20;25227:1;25209:20;:::i;:::-;25204:25;;25264:1;25261;25257:9;25286:30;25304:11;25286:30;:::i;:::-;25275:41;;25465:1;25456:7;25452:15;25449:1;25446:22;25426:1;25419:9;25399:83;25376:139;;25495:18;;:::i;:::-;25376:139;25160:362;25112:410;;;;:::o;25528:180::-;25576:77;25573:1;25566:88;25673:4;25670:1;25663:15;25697:4;25694:1;25687:15;25714:185;25754:1;25771:20;25789:1;25771:20;:::i;:::-;25766:25;;25805:20;25823:1;25805:20;:::i;:::-;25800:25;;25844:1;25834:35;;25849:18;;:::i;:::-;25834:35;25891:1;25888;25884:9;25879:14;;25714:185;;;;:::o;25905:194::-;25945:4;25965:20;25983:1;25965:20;:::i;:::-;25960:25;;25999:20;26017:1;25999:20;:::i;:::-;25994:25;;26043:1;26040;26036:9;26028:17;;26067:1;26061:4;26058:11;26055:37;;;26072:18;;:::i;:::-;26055:37;25905:194;;;;:::o;26105:152::-;26245:4;26241:1;26233:6;26229:14;26222:28;26105:152;:::o;26263:365::-;26405:3;26426:66;26490:1;26485:3;26426:66;:::i;:::-;26419:73;;26501:93;26590:3;26501:93;:::i;:::-;26619:2;26614:3;26610:12;26603:19;;26263:365;;;:::o;26634:419::-;26800:4;26838:2;26827:9;26823:18;26815:26;;26887:9;26881:4;26877:20;26873:1;26862:9;26858:17;26851:47;26915:131;27041:4;26915:131;:::i;:::-;26907:139;;26634:419;;;:::o;27059:143::-;27116:5;27147:6;27141:13;27132:22;;27163:33;27190:5;27163:33;:::i;:::-;27059:143;;;;:::o;27208:351::-;27278:6;27327:2;27315:9;27306:7;27302:23;27298:32;27295:119;;;27333:79;;:::i;:::-;27295:119;27453:1;27478:64;27534:7;27525:6;27514:9;27510:22;27478:64;:::i;:::-;27468:74;;27424:128;27208:351;;;;:::o;27565:114::-;27602:7;27642:30;27635:5;27631:42;27620:53;;27565:114;;;:::o;27685:122::-;27758:24;27776:5;27758:24;:::i;:::-;27751:5;27748:35;27738:63;;27797:1;27794;27787:12;27738:63;27685:122;:::o;27813:143::-;27870:5;27901:6;27895:13;27886:22;;27917:33;27944:5;27917:33;:::i;:::-;27813:143;;;;:::o;27962:93::-;27998:7;28038:10;28031:5;28027:22;28016:33;;27962:93;;;:::o;28061:120::-;28133:23;28150:5;28133:23;:::i;:::-;28126:5;28123:34;28113:62;;28171:1;28168;28161:12;28113:62;28061:120;:::o;28187:141::-;28243:5;28274:6;28268:13;28259:22;;28290:32;28316:5;28290:32;:::i;:::-;28187:141;;;;:::o;28334:661::-;28421:6;28429;28437;28486:2;28474:9;28465:7;28461:23;28457:32;28454:119;;;28492:79;;:::i;:::-;28454:119;28612:1;28637:64;28693:7;28684:6;28673:9;28669:22;28637:64;:::i;:::-;28627:74;;28583:128;28750:2;28776:64;28832:7;28823:6;28812:9;28808:22;28776:64;:::i;:::-;28766:74;;28721:129;28889:2;28915:63;28970:7;28961:6;28950:9;28946:22;28915:63;:::i;:::-;28905:73;;28860:128;28334:661;;;;;:::o;29001:153::-;29141:5;29137:1;29129:6;29125:14;29118:29;29001:153;:::o;29160:365::-;29302:3;29323:66;29387:1;29382:3;29323:66;:::i;:::-;29316:73;;29398:93;29487:3;29398:93;:::i;:::-;29516:2;29511:3;29507:12;29500:19;;29160:365;;;:::o;29531:419::-;29697:4;29735:2;29724:9;29720:18;29712:26;;29784:9;29778:4;29774:20;29770:1;29759:9;29755:17;29748:47;29812:131;29938:4;29812:131;:::i;:::-;29804:139;;29531:419;;;:::o;29956:152::-;30096:4;30092:1;30084:6;30080:14;30073:28;29956:152;:::o;30114:365::-;30256:3;30277:66;30341:1;30336:3;30277:66;:::i;:::-;30270:73;;30352:93;30441:3;30352:93;:::i;:::-;30470:2;30465:3;30461:12;30454:19;;30114:365;;;:::o;30485:419::-;30651:4;30689:2;30678:9;30674:18;30666:26;;30738:9;30732:4;30728:20;30724:1;30713:9;30709:17;30702:47;30766:131;30892:4;30766:131;:::i;:::-;30758:139;;30485:419;;;:::o;30910:152::-;31050:4;31046:1;31038:6;31034:14;31027:28;30910:152;:::o;31068:365::-;31210:3;31231:66;31295:1;31290:3;31231:66;:::i;:::-;31224:73;;31306:93;31395:3;31306:93;:::i;:::-;31424:2;31419:3;31415:12;31408:19;;31068:365;;;:::o;31439:419::-;31605:4;31643:2;31632:9;31628:18;31620:26;;31692:9;31686:4;31682:20;31678:1;31667:9;31663:17;31656:47;31720:131;31846:4;31720:131;:::i;:::-;31712:139;;31439:419;;;:::o;31864:152::-;32004:4;32000:1;31992:6;31988:14;31981:28;31864:152;:::o;32022:365::-;32164:3;32185:66;32249:1;32244:3;32185:66;:::i;:::-;32178:73;;32260:93;32349:3;32260:93;:::i;:::-;32378:2;32373:3;32369:12;32362:19;;32022:365;;;:::o;32393:419::-;32559:4;32597:2;32586:9;32582:18;32574:26;;32646:9;32640:4;32636:20;32632:1;32621:9;32617:17;32610:47;32674:131;32800:4;32674:131;:::i;:::-;32666:139;;32393:419;;;:::o;32818:106::-;32862:8;32911:5;32906:3;32902:15;32881:36;;32818:106;;;:::o;32930:183::-;32965:3;33003:1;32985:16;32982:23;32979:128;;;33041:1;33038;33035;33020:23;33063:34;33094:1;33088:8;33063:34;:::i;:::-;33056:41;;32979:128;32930:183;:::o;33119:180::-;33167:77;33164:1;33157:88;33264:4;33261:1;33254:15;33288:4;33285:1;33278:15;33305:281;33388:27;33410:4;33388:27;:::i;:::-;33380:6;33376:40;33518:6;33506:10;33503:22;33482:18;33470:10;33467:34;33464:62;33461:88;;;33529:18;;:::i;:::-;33461:88;33569:10;33565:2;33558:22;33348:238;33305:281;;:::o;33592:711::-;33631:3;33669:4;33651:16;33648:26;33677:5;33645:39;33706:20;;:::i;:::-;33781:1;33763:16;33759:24;33756:1;33750:4;33735:49;33814:4;33808:11;33913:16;33906:4;33898:6;33894:17;33891:39;33858:18;33850:6;33847:30;33831:113;33828:146;;;33959:5;;;;33828:146;34005:6;33999:4;33995:17;34041:3;34035:10;34068:18;34060:6;34057:30;34054:43;;;34090:5;;;;;;34054:43;34138:6;34131:4;34126:3;34122:14;34118:27;34197:1;34179:16;34175:24;34169:4;34165:35;34160:3;34157:44;34154:57;;;34204:5;;;;;;;34154:57;34221;34269:6;34263:4;34259:17;34251:6;34247:30;34241:4;34221:57;:::i;:::-;34294:3;34287:10;;33635:668;;;;;33592:711;;:::o;34309:148::-;34411:11;34448:3;34433:18;;34309:148;;;;:::o;34463:171::-;34603:23;34599:1;34591:6;34587:14;34580:47;34463:171;:::o;34640:402::-;34800:3;34821:85;34903:2;34898:3;34821:85;:::i;:::-;34814:92;;34915:93;35004:3;34915:93;:::i;:::-;35033:2;35028:3;35024:12;35017:19;;34640:402;;;:::o;35048:390::-;35154:3;35182:39;35215:5;35182:39;:::i;:::-;35237:89;35319:6;35314:3;35237:89;:::i;:::-;35230:96;;35335:65;35393:6;35388:3;35381:4;35374:5;35370:16;35335:65;:::i;:::-;35425:6;35420:3;35416:16;35409:23;;35158:280;35048:390;;;;:::o;35444:541::-;35677:3;35699:148;35843:3;35699:148;:::i;:::-;35692:155;;35864:95;35955:3;35946:6;35864:95;:::i;:::-;35857:102;;35976:3;35969:10;;35444:541;;;;:::o;35991:275::-;36123:3;36145:95;36236:3;36227:6;36145:95;:::i;:::-;36138:102;;36257:3;36250:10;;35991:275;;;;:::o;36272:224::-;36412:34;36408:1;36400:6;36396:14;36389:58;36481:7;36476:2;36468:6;36464:15;36457:32;36272:224;:::o;36502:402::-;36662:3;36683:85;36765:2;36760:3;36683:85;:::i;:::-;36676:92;;36777:93;36866:3;36777:93;:::i;:::-;36895:2;36890:3;36886:12;36879:19;;36502:402;;;:::o;36910:381::-;37095:3;37117:148;37261:3;37117:148;:::i;:::-;37110:155;;37282:3;37275:10;;36910:381;;;:::o;37297:152::-;37437:4;37433:1;37425:6;37421:14;37414:28;37297:152;:::o;37455:365::-;37597:3;37618:66;37682:1;37677:3;37618:66;:::i;:::-;37611:73;;37693:93;37782:3;37693:93;:::i;:::-;37811:2;37806:3;37802:12;37795:19;;37455:365;;;:::o;37826:419::-;37992:4;38030:2;38019:9;38015:18;38007:26;;38079:9;38073:4;38069:20;38065:1;38054:9;38050:17;38043:47;38107:131;38233:4;38107:131;:::i;:::-;38099:139;;37826:419;;;:::o;38251:180::-;38299:77;38296:1;38289:88;38396:4;38393:1;38386:15;38420:4;38417:1;38410:15;38437:815;38692:4;38730:3;38719:9;38715:19;38707:27;;38744:71;38812:1;38801:9;38797:17;38788:6;38744:71;:::i;:::-;38825:72;38893:2;38882:9;38878:18;38869:6;38825:72;:::i;:::-;38944:9;38938:4;38934:20;38929:2;38918:9;38914:18;38907:48;38972:108;39075:4;39066:6;38972:108;:::i;:::-;38964:116;;39090:72;39158:2;39147:9;39143:18;39134:6;39090:72;:::i;:::-;39172:73;39240:3;39229:9;39225:19;39216:6;39172:73;:::i;:::-;38437:815;;;;;;;;:::o;39258:170::-;39398:22;39394:1;39386:6;39382:14;39375:46;39258:170;:::o;39434:402::-;39594:3;39615:85;39697:2;39692:3;39615:85;:::i;:::-;39608:92;;39709:93;39798:3;39709:93;:::i;:::-;39827:2;39822:3;39818:12;39811:19;;39434:402;;;:::o;39842:541::-;40075:3;40097:148;40241:3;40097:148;:::i;:::-;40090:155;;40262:95;40353:3;40344:6;40262:95;:::i;:::-;40255:102;;40374:3;40367:10;;39842:541;;;;:::o;40389:178::-;40529:30;40525:1;40517:6;40513:14;40506:54;40389:178;:::o;40573:402::-;40733:3;40754:85;40836:2;40831:3;40754:85;:::i;:::-;40747:92;;40848:93;40937:3;40848:93;:::i;:::-;40966:2;40961:3;40957:12;40950:19;;40573:402;;;:::o;40981:381::-;41166:3;41188:148;41332:3;41188:148;:::i;:::-;41181:155;;41353:3;41346:10;;40981:381;;;:::o;41368:178::-;41508:30;41504:1;41496:6;41492:14;41485:54;41368:178;:::o;41552:402::-;41712:3;41733:85;41815:2;41810:3;41733:85;:::i;:::-;41726:92;;41827:93;41916:3;41827:93;:::i;:::-;41945:2;41940:3;41936:12;41929:19;;41552:402;;;:::o;41960:381::-;42145:3;42167:148;42311:3;42167:148;:::i;:::-;42160:155;;42332:3;42325:10;;41960:381;;;:::o;42347:1029::-;42652:4;42690:3;42679:9;42675:19;42667:27;;42704:71;42772:1;42761:9;42757:17;42748:6;42704:71;:::i;:::-;42785:72;42853:2;42842:9;42838:18;42829:6;42785:72;:::i;:::-;42867;42935:2;42924:9;42920:18;42911:6;42867:72;:::i;:::-;42949;43017:2;43006:9;43002:18;42993:6;42949:72;:::i;:::-;43031:81;43107:3;43096:9;43092:19;43083:6;43031:81;:::i;:::-;43122;43198:3;43187:9;43183:19;43174:6;43122:81;:::i;:::-;43213:73;43281:3;43270:9;43266:19;43257:6;43213:73;:::i;:::-;43296;43364:3;43353:9;43349:19;43340:6;43296:73;:::i;:::-;42347:1029;;;;;;;;;;;:::o;43382:179::-;43522:31;43518:1;43510:6;43506:14;43499:55;43382:179;:::o;43567:402::-;43727:3;43748:85;43830:2;43825:3;43748:85;:::i;:::-;43741:92;;43842:93;43931:3;43842:93;:::i;:::-;43960:2;43955:3;43951:12;43944:19;;43567:402;;;:::o;43975:381::-;44160:3;44182:148;44326:3;44182:148;:::i;:::-;44175:155;;44347:3;44340:10;;43975:381;;;:::o;44362:233::-;44401:3;44424:24;44442:5;44424:24;:::i;:::-;44415:33;;44470:66;44463:5;44460:77;44457:103;;44540:18;;:::i;:::-;44457:103;44587:1;44580:5;44576:13;44569:20;;44362:233;;;:::o;44601:152::-;44741:4;44737:1;44729:6;44725:14;44718:28;44601:152;:::o;44759:365::-;44901:3;44922:66;44986:1;44981:3;44922:66;:::i;:::-;44915:73;;44997:93;45086:3;44997:93;:::i;:::-;45115:2;45110:3;45106:12;45099:19;;44759:365;;;:::o;45130:419::-;45296:4;45334:2;45323:9;45319:18;45311:26;;45383:9;45377:4;45373:20;45369:1;45358:9;45354:17;45347:47;45411:131;45537:4;45411:131;:::i;:::-;45403:139;;45130:419;;;:::o;45555:176::-;45695:28;45691:1;45683:6;45679:14;45672:52;45555:176;:::o;45737:402::-;45897:3;45918:85;46000:2;45995:3;45918:85;:::i;:::-;45911:92;;46012:93;46101:3;46012:93;:::i;:::-;46130:2;46125:3;46121:12;46114:19;;45737:402;;;:::o;46145:381::-;46330:3;46352:148;46496:3;46352:148;:::i;:::-;46345:155;;46517:3;46510:10;;46145:381;;;:::o;46532:182::-;46672:34;46668:1;46660:6;46656:14;46649:58;46532:182;:::o;46720:402::-;46880:3;46901:85;46983:2;46978:3;46901:85;:::i;:::-;46894:92;;46995:93;47084:3;46995:93;:::i;:::-;47113:2;47108:3;47104:12;47097:19;;46720:402;;;:::o;47128:381::-;47313:3;47335:148;47479:3;47335:148;:::i;:::-;47328:155;;47500:3;47493:10;;47128:381;;;:::o;47515:180::-;47563:77;47560:1;47553:88;47660:4;47657:1;47650:15;47684:4;47681:1;47674:15
Swarm Source
ipfs://d3adf418b700a85a804d3ab80693a54ff15f7dc928ff2e00ae81d2ab2016052f
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.