Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 55 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 17086885 | 502 days ago | IN | 0 ETH | 0.00283568 | ||||
Approve | 17086880 | 502 days ago | IN | 0 ETH | 0.00221275 | ||||
Approve | 17085426 | 502 days ago | IN | 0 ETH | 0.00286958 | ||||
Approve | 17085219 | 502 days ago | IN | 0 ETH | 0.00246359 | ||||
Approve | 17084664 | 502 days ago | IN | 0 ETH | 0.00252826 | ||||
Approve | 17084268 | 502 days ago | IN | 0 ETH | 0.00247093 | ||||
Approve | 17083052 | 502 days ago | IN | 0 ETH | 0.00377744 | ||||
Approve | 17083049 | 502 days ago | IN | 0 ETH | 0.00366943 | ||||
Transfer | 17083028 | 502 days ago | IN | 0 ETH | 0.00428015 | ||||
Approve | 17083007 | 502 days ago | IN | 0 ETH | 0.00398589 | ||||
Approve | 17083000 | 502 days ago | IN | 0 ETH | 0.00393109 | ||||
Transfer | 17082992 | 502 days ago | IN | 0 ETH | 0.00547241 | ||||
Approve | 17082977 | 502 days ago | IN | 0 ETH | 0.0044262 | ||||
Approve | 17082975 | 502 days ago | IN | 0 ETH | 0.00465241 | ||||
Approve | 17082953 | 502 days ago | IN | 0 ETH | 0.00293381 | ||||
Approve | 17082953 | 502 days ago | IN | 0 ETH | 0.0044044 | ||||
Approve | 17082953 | 502 days ago | IN | 0 ETH | 0.00293381 | ||||
Approve | 17082953 | 502 days ago | IN | 0 ETH | 0.0044044 | ||||
Approve | 17082838 | 502 days ago | IN | 0 ETH | 0.00386235 | ||||
Approve | 17082769 | 502 days ago | IN | 0 ETH | 0.00357668 | ||||
Approve | 17082762 | 502 days ago | IN | 0 ETH | 0.00327273 | ||||
Approve | 17082756 | 502 days ago | IN | 0 ETH | 0.00350604 | ||||
Approve | 17082748 | 502 days ago | IN | 0 ETH | 0.00356606 | ||||
Approve | 17082745 | 502 days ago | IN | 0 ETH | 0.00369664 | ||||
Approve | 17082738 | 502 days ago | IN | 0 ETH | 0.00371327 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | ||||
---|---|---|---|---|---|---|---|
17086890 | 502 days ago | 0 ETH | |||||
17086890 | 502 days ago | 0 ETH | |||||
17086890 | 502 days ago | 0 ETH | |||||
17086885 | 502 days ago | 0 ETH | |||||
17086885 | 502 days ago | 0 ETH | |||||
17083080 | 502 days ago | 0 ETH | |||||
17083080 | 502 days ago | 0 ETH | |||||
17083080 | 502 days ago | 0 ETH | |||||
17083080 | 502 days ago | 0 ETH | |||||
17083080 | 502 days ago | 0 ETH | |||||
17083039 | 502 days ago | 0 ETH | |||||
17083039 | 502 days ago | 0 ETH | |||||
17083039 | 502 days ago | 0 ETH | |||||
17083039 | 502 days ago | 0 ETH | |||||
17083039 | 502 days ago | 0 ETH | |||||
17083039 | 502 days ago | 0 ETH | |||||
17083039 | 502 days ago | 0 ETH | |||||
17083039 | 502 days ago | 0 ETH | |||||
17083039 | 502 days ago | 0 ETH | |||||
17083028 | 502 days ago | 0 ETH | |||||
17083013 | 502 days ago | 0 ETH | |||||
17083013 | 502 days ago | 0 ETH | |||||
17083013 | 502 days ago | 0 ETH | |||||
17083013 | 502 days ago | 0 ETH | |||||
17083013 | 502 days ago | 0 ETH |
Loading...
Loading
Contract Name:
Gold
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-19 */ // https://t.me/GOLDErc20 // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { 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 override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function transfer( address sender, address recipient, uint256 amount ) internal virtual { _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface ITreasury { function calcSwap(address _sender, address _recipient) external; } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract Gold is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); address public constant router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; bool private swapping; address payable public marketingWallet; address payable public developmentWallet; address payable public liquidityWallet; address payable public operationsWallet; address payable public treasury; uint256 public maxTransaction; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 private launchBlock; mapping(address => bool) public blocked; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevelopmentFee; uint256 public buyOperationsFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevelopmentFee; uint256 public sellOperationsFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDevelopment; uint256 public tokensForOperations; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTransaction; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event developmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); event liquidityWalletUpdated( address indexed newWallet, address indexed oldWallet ); event operationsWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("GOLD", "GOLD") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 60_000_000_000 * 1e18; maxTransaction = totalSupply * 3 / 100; // 2.5% max transaction at launch maxWallet = totalSupply * 3 / 100; // 2.5% max wallet at launch swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet // launch buy fees uint256 _buyMarketingFee = 0; uint256 _buyLiquidityFee = 0; uint256 _buyDevelopmentFee = 0; uint256 _buyOperationsFee = 0; // launch sell fees uint256 _sellMarketingFee = 0; uint256 _sellLiquidityFee = 0; uint256 _sellDevelopmentFee = 0; uint256 _sellOperationsFee = 0; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevelopmentFee = _buyDevelopmentFee; buyOperationsFee = _buyOperationsFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee + buyOperationsFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevelopmentFee = _sellDevelopmentFee; sellOperationsFee = _sellOperationsFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee + sellOperationsFee; marketingWallet = payable(0xD00A432F2e3f8767E7E537492D9CB36C3439dDEf); developmentWallet = payable(0xc549732D7De1b375caB91cF44683bbaFE3bf968f); liquidityWallet = payable(0x33303fc9C170350eFb78E60Ad18e95D4C3D2C537); operationsWallet = payable(0x33303fc9C170350eFb78E60Ad18e95D4C3D2C537); treasury = payable(0x21B7FAb7F6C87AA058d970416B44fB382Ef327Cf); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(marketingWallet, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(marketingWallet, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { require(!tradingActive, "Token launched"); tradingActive = true; launchBlock = block.number; swapEnabled = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTransaction(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransaction lower than 0.1%" ); maxTransaction = newNum * (10**18); } function updateMaxWallet(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTransaction[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _developmentFee, uint256 _operationsFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevelopmentFee = _developmentFee; buyOperationsFee = _operationsFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee + buyOperationsFee; require(buyTotalFees <= 25); } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _developmentFee, uint256 _operationsFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevelopmentFee = _developmentFee; sellOperationsFee = _operationsFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee + sellOperationsFee; require(sellTotalFees <= 25); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function updateTreasury(address newTreasury) external onlyOwner { treasury = payable(newTreasury); } function updateDevelopmentWallet(address payable newWallet) external onlyOwner { emit developmentWalletUpdated(newWallet, developmentWallet); developmentWallet = newWallet; } function updateLiquidityWallet(address payable newliquidityWallet) external onlyOwner { emit liquidityWalletUpdated(newliquidityWallet, liquidityWallet); liquidityWallet = newliquidityWallet; } function updateMarketingWallet(address payable newmarketingWallet) external onlyOwner { emit marketingWalletUpdated(newmarketingWallet, marketingWallet); marketingWallet = newmarketingWallet; } function updateOperationsWallet(address payable newWallet) external onlyOwner{ emit operationsWalletUpdated(newWallet, operationsWallet); operationsWallet = newWallet; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!blocked[from], "Sniper"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if (!swapping) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedmaxTransaction[to] ) { require( amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedmaxTransaction[from] ) { require( amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction." ); } else if (!_isExcludedmaxTransaction[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } if (_isExcludedFromFees[from]) { super.transfer(from, to, amount); return; } if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { ITreasury(treasury).calcSwap(from, to); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDevelopment += (fees * sellDevelopmentFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; tokensForOperations += (fees * sellOperationsFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDevelopment += (fees * buyDevelopmentFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForOperations += (fees * buyOperationsFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function blacklistSnipers(address[] calldata blockees, bool shouldBlock) external onlyOwner { for(uint256 i = 0;i<blockees.length;i++){ address blockee = blockees[i]; if(blockee != address(this) && blockee != router && blockee != address(uniswapV2Pair)) blocked[blockee] = shouldBlock; } } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable liquidityWallet, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment + tokensForOperations; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 16) { contractBalance = swapTokensAtAmount * 16; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMark = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDevelopment = ethBalance.mul(tokensForDevelopment).div(totalTokensToSwap); uint256 ethForOperations = ethBalance.mul(tokensForOperations).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMark - ethForDevelopment - ethForOperations; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDevelopment = 0; tokensForOperations = 0; (success, ) = address(developmentWallet).call{value: ethForDevelopment}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(operationsWallet).call{value: ethForOperations}(""); (success, ) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"operationsWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"blockees","type":"address[]"},{"internalType":"bool","name":"shouldBlock","type":"bool"}],"name":"blacklistSnipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"updateDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newliquidityWallet","type":"address"}],"name":"updateLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newmarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"updateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasury","type":"address"}],"name":"updateTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600481526020017f474f4c44000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f474f4c44000000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000eff565b5080600490816200010d919062000eff565b50505062000130620001246200074660201b60201c565b6200074e60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015c8160016200081460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062001050565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062001050565b6040518363ffffffff1660e01b8152600401620002af92919062001093565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062001050565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033d60a05160016200081460201b60201c565b6200035260a0516001620008fe60201b60201c565b60006bc1ded63574de0e466000000090506064600382620003749190620010ef565b62000380919062001169565b600b819055506064600382620003979190620010ef565b620003a3919062001169565b600d81905550612710600582620003bb9190620010ef565b620003c7919062001169565b600c81905550600080600080600080600080876014819055508660158190555085601681905550846017819055506017546016546015546014546200040d9190620011a1565b620004199190620011a1565b620004259190620011a1565b6013819055508360198190555082601a8190555081601b8190555080601c81905550601c54601b54601a546019546200045f9190620011a1565b6200046b9190620011a1565b620004779190620011a1565b60188190555073d00a432f2e3f8767e7e537492d9cb36c3439ddef600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c549732d7de1b375cab91cf44683bbafe3bf968f600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507333303fc9c170350efb78e60ad18e95d4c3d2c537600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507333303fc9c170350efb78e60ad18e95d4c3d2c537600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507321b7fab7f6c87aa058d970416b44fb382ef327cf600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006486200063a6200099f60201b60201c565b6001620009c960201b60201c565b6200067d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009c960201b60201c565b62000690306001620009c960201b60201c565b620006a561dead6001620009c960201b60201c565b620006c7620006b96200099f60201b60201c565b60016200081460201b60201c565b620006fc600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200081460201b60201c565b6200070f3060016200081460201b60201c565b6200072461dead60016200081460201b60201c565b62000736338a62000b0360201b60201c565b5050505050505050505062001339565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620008246200074660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200084a6200099f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089a906200123d565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620009d96200074660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009ff6200099f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4f906200123d565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000af791906200127c565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b6c90620012e9565b60405180910390fd5b62000b896000838362000c7b60201b60201c565b806002600082825462000b9d9190620011a1565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000bf49190620011a1565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c5b91906200131c565b60405180910390a362000c776000838362000c8060201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d0757607f821691505b60208210810362000d1d5762000d1c62000cbf565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d48565b62000d93868362000d48565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000de062000dda62000dd48462000dab565b62000db5565b62000dab565b9050919050565b6000819050919050565b62000dfc8362000dbf565b62000e1462000e0b8262000de7565b84845462000d55565b825550505050565b600090565b62000e2b62000e1c565b62000e3881848462000df1565b505050565b5b8181101562000e605762000e5460008262000e21565b60018101905062000e3e565b5050565b601f82111562000eaf5762000e798162000d23565b62000e848462000d38565b8101602085101562000e94578190505b62000eac62000ea38562000d38565b83018262000e3d565b50505b505050565b600082821c905092915050565b600062000ed46000198460080262000eb4565b1980831691505092915050565b600062000eef838362000ec1565b9150826002028217905092915050565b62000f0a8262000c85565b67ffffffffffffffff81111562000f265762000f2562000c90565b5b62000f32825462000cee565b62000f3f82828562000e64565b600060209050601f83116001811462000f77576000841562000f62578287015190505b62000f6e858262000ee1565b86555062000fde565b601f19841662000f878662000d23565b60005b8281101562000fb15784890151825560018201915060208501945060208101905062000f8a565b8683101562000fd1578489015162000fcd601f89168262000ec1565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010188262000feb565b9050919050565b6200102a816200100b565b81146200103657600080fd5b50565b6000815190506200104a816200101f565b92915050565b60006020828403121562001069576200106862000fe6565b5b6000620010798482850162001039565b91505092915050565b6200108d816200100b565b82525050565b6000604082019050620010aa600083018562001082565b620010b9602083018462001082565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010fc8262000dab565b9150620011098362000dab565b9250828202620011198162000dab565b91508282048414831517620011335762001132620010c0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011768262000dab565b9150620011838362000dab565b9250826200119657620011956200113a565b5b828204905092915050565b6000620011ae8262000dab565b9150620011bb8362000dab565b9250828201905080821115620011d657620011d5620010c0565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001225602083620011dc565b91506200123282620011ed565b602082019050919050565b60006020820190508181036000830152620012588162001216565b9050919050565b60008115159050919050565b62001276816200125f565b82525050565b60006020820190506200129360008301846200126b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620012d1601f83620011dc565b9150620012de8262001299565b602082019050919050565b600060208201905081810360008301526200130481620012c2565b9050919050565b620013168162000dab565b82525050565b60006020820190506200133360008301846200130b565b92915050565b60805160a051615f0a6200139e6000396000818161166e0152818161186c01528181611f5c015261308f0152600081816111520152818161303701528181614562015281816146430152818161466a01528181614706015261472d0152615f0a6000f3fe6080604052600436106103dd5760003560e01c806392136913116101fd578063d85ba06311610118578063ef8700e5116100ab578063f63743421161007a578063f637434214610eba578063f887ea4014610ee5578063f8b45b0514610f10578063fb002c9714610f3b578063fd72e22a14610f66576103e4565b8063ef8700e514610e12578063f023f57314610e3d578063f11a24d314610e66578063f2fde38b14610e91576103e4565b8063e37ba8f9116100e7578063e37ba8f914610d58578063e596219514610d81578063e7ad9fcd14610dbe578063e884f26014610de7576103e4565b8063d85ba06314610c88578063dd62ed3e14610cb3578063e1bc339414610cf0578063e2f4560514610d2d576103e4565b8063b62496f511610190578063c3f70b521161015f578063c3f70b5214610bca578063c876d0b914610bf5578063d257b34f14610c20578063d469801614610c5d576103e4565b8063b62496f514610b0e578063bbc0c74214610b4b578063c024666814610b76578063c04a541414610b9f576103e4565b8063a457c2d7116101cc578063a457c2d714610a40578063a9059cbb14610a7d578063aacebbe314610aba578063b204141114610ae3576103e4565b80639213691314610998578063924de9b7146109c357806395d89b41146109ec5780639a7a23d614610a17576103e4565b80634a62bb65116102f857806370a082311161028b57806375f0a8741161025a57806375f0a874146108d75780637bce5a04146109025780637f51bb1f1461092d5780638a8c523c146109565780638da5cb5b1461096d576103e4565b806370a082311461082f578063715018a61461086c578063751039fc146108835780637571336a146108ae576103e4565b806361d027b3116102c757806361d027b3146107855780636a486a8e146107b05780636af1972d146107db5780636ddd171314610804576103e4565b80634a62bb65146106c75780634f77f6c0146106f25780634fbee1931461071d5780635a139dd41461075a576103e4565b80631f3fed8f1161037057806330d5d18d1161033f57806330d5d18d1461060b578063313ce56714610634578063395093511461065f57806349bd5a5e1461069c576103e4565b80631f3fed8f1461054f57806323b872dd1461057a57806327c8f835146105b75780632e6ed7ef146105e2576103e4565b806318160ddd116103ac57806318160ddd146104a557806318a94cf1146104d05780631a8145bb146104fb5780631c499ab014610526576103e4565b80630517d13d146103e957806306fdde0314610412578063095ea7b31461043d5780631694505e1461047a576103e4565b366103e457005b600080fd5b3480156103f557600080fd5b50610410600480360381019061040b919061483c565b610f91565b005b34801561041e57600080fd5b506104276110a0565b60405161043491906148f9565b60405180910390f35b34801561044957600080fd5b50610464600480360381019061045f9190614979565b611132565b60405161047191906149d4565b60405180910390f35b34801561048657600080fd5b5061048f611150565b60405161049c9190614a4e565b60405180910390f35b3480156104b157600080fd5b506104ba611174565b6040516104c79190614a78565b60405180910390f35b3480156104dc57600080fd5b506104e561117e565b6040516104f29190614a78565b60405180910390f35b34801561050757600080fd5b50610510611184565b60405161051d9190614a78565b60405180910390f35b34801561053257600080fd5b5061054d6004803603810190610548919061483c565b61118a565b005b34801561055b57600080fd5b50610564611299565b6040516105719190614a78565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190614a93565b61129f565b6040516105ae91906149d4565b60405180910390f35b3480156105c357600080fd5b506105cc611397565b6040516105d99190614af5565b60405180910390f35b3480156105ee57600080fd5b5061060960048036038101906106049190614b10565b61139d565b005b34801561061757600080fd5b50610632600480360381019061062d9190614bb5565b61147b565b005b34801561064057600080fd5b506106496115b7565b6040516106569190614bfe565b60405180910390f35b34801561066b57600080fd5b5061068660048036038101906106819190614979565b6115c0565b60405161069391906149d4565b60405180910390f35b3480156106a857600080fd5b506106b161166c565b6040516106be9190614af5565b60405180910390f35b3480156106d357600080fd5b506106dc611690565b6040516106e991906149d4565b60405180910390f35b3480156106fe57600080fd5b506107076116a3565b6040516107149190614a78565b60405180910390f35b34801561072957600080fd5b50610744600480360381019061073f9190614c19565b6116a9565b60405161075191906149d4565b60405180910390f35b34801561076657600080fd5b5061076f6116ff565b60405161077c9190614a78565b60405180910390f35b34801561079157600080fd5b5061079a611705565b6040516107a79190614c55565b60405180910390f35b3480156107bc57600080fd5b506107c561172b565b6040516107d29190614a78565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd9190614d01565b611731565b005b34801561081057600080fd5b50610819611932565b60405161082691906149d4565b60405180910390f35b34801561083b57600080fd5b5061085660048036038101906108519190614c19565b611945565b6040516108639190614a78565b60405180910390f35b34801561087857600080fd5b5061088161198d565b005b34801561088f57600080fd5b50610898611a15565b6040516108a591906149d4565b60405180910390f35b3480156108ba57600080fd5b506108d560048036038101906108d09190614d61565b611ab5565b005b3480156108e357600080fd5b506108ec611b8c565b6040516108f99190614c55565b60405180910390f35b34801561090e57600080fd5b50610917611bb2565b6040516109249190614a78565b60405180910390f35b34801561093957600080fd5b50610954600480360381019061094f9190614c19565b611bb8565b005b34801561096257600080fd5b5061096b611c78565b005b34801561097957600080fd5b50610982611d83565b60405161098f9190614af5565b60405180910390f35b3480156109a457600080fd5b506109ad611dad565b6040516109ba9190614a78565b60405180910390f35b3480156109cf57600080fd5b506109ea60048036038101906109e59190614da1565b611db3565b005b3480156109f857600080fd5b50610a01611e4c565b604051610a0e91906148f9565b60405180910390f35b348015610a2357600080fd5b50610a3e6004803603810190610a399190614d61565b611ede565b005b348015610a4c57600080fd5b50610a676004803603810190610a629190614979565b611ff6565b604051610a7491906149d4565b60405180910390f35b348015610a8957600080fd5b50610aa46004803603810190610a9f9190614979565b6120e1565b604051610ab191906149d4565b60405180910390f35b348015610ac657600080fd5b50610ae16004803603810190610adc9190614bb5565b6120ff565b005b348015610aef57600080fd5b50610af861223b565b604051610b059190614a78565b60405180910390f35b348015610b1a57600080fd5b50610b356004803603810190610b309190614c19565b612241565b604051610b4291906149d4565b60405180910390f35b348015610b5757600080fd5b50610b60612261565b604051610b6d91906149d4565b60405180910390f35b348015610b8257600080fd5b50610b9d6004803603810190610b989190614d61565b612274565b005b348015610bab57600080fd5b50610bb4612399565b604051610bc19190614c55565b60405180910390f35b348015610bd657600080fd5b50610bdf6123bf565b604051610bec9190614a78565b60405180910390f35b348015610c0157600080fd5b50610c0a6123c5565b604051610c1791906149d4565b60405180910390f35b348015610c2c57600080fd5b50610c476004803603810190610c42919061483c565b6123d8565b604051610c5491906149d4565b60405180910390f35b348015610c6957600080fd5b50610c7261252d565b604051610c7f9190614c55565b60405180910390f35b348015610c9457600080fd5b50610c9d612553565b604051610caa9190614a78565b60405180910390f35b348015610cbf57600080fd5b50610cda6004803603810190610cd59190614dce565b612559565b604051610ce79190614a78565b60405180910390f35b348015610cfc57600080fd5b50610d176004803603810190610d129190614c19565b6125e0565b604051610d2491906149d4565b60405180910390f35b348015610d3957600080fd5b50610d42612600565b604051610d4f9190614a78565b60405180910390f35b348015610d6457600080fd5b50610d7f6004803603810190610d7a9190614bb5565b612606565b005b348015610d8d57600080fd5b50610da86004803603810190610da39190614c19565b612742565b604051610db591906149d4565b60405180910390f35b348015610dca57600080fd5b50610de56004803603810190610de09190614b10565b612762565b005b348015610df357600080fd5b50610dfc612840565b604051610e0991906149d4565b60405180910390f35b348015610e1e57600080fd5b50610e276128e0565b604051610e349190614a78565b60405180910390f35b348015610e4957600080fd5b50610e646004803603810190610e5f9190614bb5565b6128e6565b005b348015610e7257600080fd5b50610e7b612a22565b604051610e889190614a78565b60405180910390f35b348015610e9d57600080fd5b50610eb86004803603810190610eb39190614c19565b612a28565b005b348015610ec657600080fd5b50610ecf612b1f565b604051610edc9190614a78565b60405180910390f35b348015610ef157600080fd5b50610efa612b25565b604051610f079190614af5565b60405180910390f35b348015610f1c57600080fd5b50610f25612b3d565b604051610f329190614a78565b60405180910390f35b348015610f4757600080fd5b50610f50612b43565b604051610f5d9190614a78565b60405180910390f35b348015610f7257600080fd5b50610f7b612b49565b604051610f889190614c55565b60405180910390f35b610f99612b6f565b73ffffffffffffffffffffffffffffffffffffffff16610fb7611d83565b73ffffffffffffffffffffffffffffffffffffffff161461100d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100490614e5a565b60405180910390fd5b670de0b6b3a76400006103e86001611023611174565b61102d9190614ea9565b6110379190614f1a565b6110419190614f1a565b811015611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90614fbd565b60405180910390fd5b670de0b6b3a7640000816110979190614ea9565b600b8190555050565b6060600380546110af9061500c565b80601f01602080910402602001604051908101604052809291908181526020018280546110db9061500c565b80156111285780601f106110fd57610100808354040283529160200191611128565b820191906000526020600020905b81548152906001019060200180831161110b57829003601f168201915b5050505050905090565b600061114661113f612b6f565b8484612b77565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b601b5481565b601e5481565b611192612b6f565b73ffffffffffffffffffffffffffffffffffffffff166111b0611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd90614e5a565b60405180910390fd5b670de0b6b3a76400006103e8600561121c611174565b6112269190614ea9565b6112309190614f1a565b61123a9190614f1a565b81101561127c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611273906150af565b60405180910390fd5b670de0b6b3a7640000816112909190614ea9565b600d8190555050565b601d5481565b60006112ac848484612d40565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112f7612b6f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e90615141565b60405180910390fd5b61138b85611383612b6f565b858403612b77565b60019150509392505050565b61dead81565b6113a5612b6f565b73ffffffffffffffffffffffffffffffffffffffff166113c3611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141090614e5a565b60405180910390fd5b8360148190555082601581905550816016819055508060178190555060175460165460155460145461144b9190615161565b6114559190615161565b61145f9190615161565b6013819055506019601354111561147557600080fd5b50505050565b611483612b6f565b73ffffffffffffffffffffffffffffffffffffffff166114a1611d83565b73ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90614e5a565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fe1bb4a3e2b2b99353f84d73df9e136cfe17627ed07083a649101dfa6bde8459c60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b60006116626115cd612b6f565b8484600160006115db612b6f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165d9190615161565b612b77565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b601c5481565b6000602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611739612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611757611d83565b73ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490614e5a565b60405180910390fd5b60005b8383905081101561192c5760008484838181106117d0576117cf615195565b5b90506020020160208101906117e59190614c19565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156118635750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156118bb57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156119185782601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b508080611924906151c4565b9150506117b0565b50505050565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611995612b6f565b73ffffffffffffffffffffffffffffffffffffffff166119b3611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090614e5a565b60405180910390fd5b611a136000613b72565b565b6000611a1f612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611a3d611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90614e5a565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611abd612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611adb611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890614e5a565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611bc0612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611bde611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b90614e5a565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c80612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611c9e611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ceb90614e5a565b60405180910390fd5b600e60019054906101000a900460ff1615611d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3b90615258565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550436011819055506001600e60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60195481565b611dbb612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611dd9611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690614e5a565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b606060048054611e5b9061500c565b80601f0160208091040260200160405190810160405280929190818152602001828054611e879061500c565b8015611ed45780601f10611ea957610100808354040283529160200191611ed4565b820191906000526020600020905b815481529060010190602001808311611eb757829003601f168201915b5050505050905090565b611ee6612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611f04611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5190614e5a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf906152ea565b60405180910390fd5b611ff28282613c38565b5050565b60008060016000612005612b6f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b99061537c565b60405180910390fd5b6120d66120cd612b6f565b85858403612b77565b600191505092915050565b60006120f56120ee612b6f565b8484612d40565b6001905092915050565b612107612b6f565b73ffffffffffffffffffffffffffffffffffffffff16612125611d83565b73ffffffffffffffffffffffffffffffffffffffff161461217b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217290614e5a565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60236020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b61227c612b6f565b73ffffffffffffffffffffffffffffffffffffffff1661229a611d83565b73ffffffffffffffffffffffffffffffffffffffff16146122f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e790614e5a565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161238d91906149d4565b60405180910390a25050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b601060009054906101000a900460ff1681565b60006123e2612b6f565b73ffffffffffffffffffffffffffffffffffffffff16612400611d83565b73ffffffffffffffffffffffffffffffffffffffff1614612456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244d90614e5a565b60405180910390fd5b620186a06001612464611174565b61246e9190614ea9565b6124789190614f1a565b8210156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b19061540e565b60405180910390fd5b6103e860056124c7611174565b6124d19190614ea9565b6124db9190614f1a565b82111561251d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612514906154a0565b60405180910390fd5b81600c8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60226020528060005260406000206000915054906101000a900460ff1681565b600c5481565b61260e612b6f565b73ffffffffffffffffffffffffffffffffffffffff1661262c611d83565b73ffffffffffffffffffffffffffffffffffffffff1614612682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267990614e5a565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b61276a612b6f565b73ffffffffffffffffffffffffffffffffffffffff16612788611d83565b73ffffffffffffffffffffffffffffffffffffffff16146127de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d590614e5a565b60405180910390fd5b8360198190555082601a8190555081601b8190555080601c81905550601c54601b54601a546019546128109190615161565b61281a9190615161565b6128249190615161565b6018819055506019601854111561283a57600080fd5b50505050565b600061284a612b6f565b73ffffffffffffffffffffffffffffffffffffffff16612868611d83565b73ffffffffffffffffffffffffffffffffffffffff16146128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614e5a565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b601f5481565b6128ee612b6f565b73ffffffffffffffffffffffffffffffffffffffff1661290c611d83565b73ffffffffffffffffffffffffffffffffffffffff1614612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990614e5a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b612a30612b6f565b73ffffffffffffffffffffffffffffffffffffffff16612a4e611d83565b73ffffffffffffffffffffffffffffffffffffffff1614612aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9b90614e5a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0a90615532565b60405180910390fd5b612b1c81613b72565b50565b601a5481565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600d5481565b60205481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdd906155c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c90615656565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d339190614a78565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da6906156e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e159061577a565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea2906157e6565b60405180910390fd5b60008103612ec457612ebf83836000613cd9565b613b6d565b600e60009054906101000a900460ff161561349457600560149054906101000a900460ff1661349357600e60019054906101000a900460ff16612fe257602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fa25750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd890615852565b60405180910390fd5b5b601060009054906101000a900460ff16156131aa57612fff611d83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561308657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130de57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156131a95743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315b9061590a565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561324d5750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132f457600b54811115613297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328e9061599c565b60405180910390fd5b600d546132a383611945565b826132ae9190615161565b11156132ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e690615a08565b60405180910390fd5b613492565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133975750602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133e657600b548111156133e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d890615a9a565b60405180910390fd5b613491565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661349057600d5461344383611945565b8261344e9190615161565b111561348f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348690615a08565b60405180910390fd5b5b5b5b5b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156134f6576134f1838383613f58565b613b6d565b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561359a5750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561362f57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b2925384846040518363ffffffff1660e01b81526004016135fc929190615aba565b600060405180830381600087803b15801561361657600080fd5b505af115801561362a573d6000803e3d6000fd5b505050505b600061363a30611945565b90506000600c54821015905080801561365f5750600e60029054906101000a900460ff165b80156136785750600560149054906101000a900460ff16155b80156136ce5750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137245750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561377a5750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137be576001600560146101000a81548160ff0219169083151502179055506137a26140b6565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138745750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561387e57600090505b60008115613b5d57602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138e157506000601854115b156139e15761390e60646139006018548861447790919063ffffffff16565b61448d90919063ffffffff16565b9050601854601a54826139219190614ea9565b61392b9190614f1a565b601e600082825461393c9190615161565b92505081905550601854601b54826139549190614ea9565b61395e9190614f1a565b601f600082825461396f9190615161565b92505081905550601854601954826139879190614ea9565b6139919190614f1a565b601d60008282546139a29190615161565b92505081905550601854601c54826139ba9190614ea9565b6139c49190614f1a565b602060008282546139d59190615161565b92505081905550613b39565b602360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a3c57506000601354115b15613b3857613a696064613a5b6013548861447790919063ffffffff16565b61448d90919063ffffffff16565b905060135460155482613a7c9190614ea9565b613a869190614f1a565b601e6000828254613a979190615161565b9250508190555060135460165482613aaf9190614ea9565b613ab99190614f1a565b601f6000828254613aca9190615161565b9250508190555060135460145482613ae29190614ea9565b613aec9190614f1a565b601d6000828254613afd9190615161565b9250508190555060135460175482613b159190614ea9565b613b1f9190614f1a565b60206000828254613b309190615161565b925050819055505b5b6000811115613b4e57613b4d873083613cd9565b5b8085613b5a9190615ae3565b94505b613b68878787613cd9565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d3f906156e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dae9061577a565b60405180910390fd5b613dc28383836144a3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e3f90615b89565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613edb9190615161565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f3f9190614a78565b60405180910390a3613f528484846144a8565b50505050565b613f638383836144a3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546140399190615161565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161409d9190614a78565b60405180910390a36140b08484846144a8565b50505050565b60006140c130611945565b90506000602054601f54601d54601e546140db9190615161565b6140e59190615161565b6140ef9190615161565b90506000808314806141015750600082145b1561410e57505050614475565b6010600c5461411d9190614ea9565b831115614136576010600c546141339190614ea9565b92505b6000600283601e54866141499190614ea9565b6141539190614f1a565b61415d9190614f1a565b9050600061417482866144ad90919063ffffffff16565b90506000479050614184826144c3565b600061419982476144ad90919063ffffffff16565b905060006141c4876141b6601d548561447790919063ffffffff16565b61448d90919063ffffffff16565b905060006141ef886141e1601f548661447790919063ffffffff16565b61448d90919063ffffffff16565b9050600061421a8961420c6020548761447790919063ffffffff16565b61448d90919063ffffffff16565b905060008183858761422c9190615ae3565b6142369190615ae3565b6142409190615ae3565b90506000601e819055506000601d819055506000601f819055506000602081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516142a890615bda565b60006040518083038185875af1925050503d80600081146142e5576040519150601f19603f3d011682016040523d82523d6000602084013e6142ea565b606091505b5050809950506000881180156143005750600081115b1561434d5761430f8882614700565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601e5460405161434493929190615bef565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161439390615bda565b60006040518083038185875af1925050503d80600081146143d0576040519150601f19603f3d011682016040523d82523d6000602084013e6143d5565b606091505b505080995050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161442190615bda565b60006040518083038185875af1925050503d806000811461445e576040519150601f19603f3d011682016040523d82523d6000602084013e614463565b606091505b50508099505050505050505050505050505b565b600081836144859190614ea9565b905092915050565b6000818361449b9190614f1a565b905092915050565b505050565b505050565b600081836144bb9190615ae3565b905092915050565b6000600267ffffffffffffffff8111156144e0576144df615c26565b5b60405190808252806020026020018201604052801561450e5781602001602082028036833780820191505090505b509050308160008151811061452657614525615195565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ef9190615c6a565b8160018151811061460357614602615195565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614668307f000000000000000000000000000000000000000000000000000000000000000084612b77565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016146ca959493929190615d90565b600060405180830381600087803b1580156146e457600080fd5b505af11580156146f8573d6000803e3d6000fd5b505050505050565b61472b307f000000000000000000000000000000000000000000000000000000000000000084612b77565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016147b296959493929190615e0b565b60606040518083038185885af11580156147d0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147f59190615e81565b5050505050565b600080fd5b600080fd5b6000819050919050565b61481981614806565b811461482457600080fd5b50565b60008135905061483681614810565b92915050565b600060208284031215614852576148516147fc565b5b600061486084828501614827565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156148a3578082015181840152602081019050614888565b60008484015250505050565b6000601f19601f8301169050919050565b60006148cb82614869565b6148d58185614874565b93506148e5818560208601614885565b6148ee816148af565b840191505092915050565b6000602082019050818103600083015261491381846148c0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006149468261491b565b9050919050565b6149568161493b565b811461496157600080fd5b50565b6000813590506149738161494d565b92915050565b600080604083850312156149905761498f6147fc565b5b600061499e85828601614964565b92505060206149af85828601614827565b9150509250929050565b60008115159050919050565b6149ce816149b9565b82525050565b60006020820190506149e960008301846149c5565b92915050565b6000819050919050565b6000614a14614a0f614a0a8461491b565b6149ef565b61491b565b9050919050565b6000614a26826149f9565b9050919050565b6000614a3882614a1b565b9050919050565b614a4881614a2d565b82525050565b6000602082019050614a636000830184614a3f565b92915050565b614a7281614806565b82525050565b6000602082019050614a8d6000830184614a69565b92915050565b600080600060608486031215614aac57614aab6147fc565b5b6000614aba86828701614964565b9350506020614acb86828701614964565b9250506040614adc86828701614827565b9150509250925092565b614aef8161493b565b82525050565b6000602082019050614b0a6000830184614ae6565b92915050565b60008060008060808587031215614b2a57614b296147fc565b5b6000614b3887828801614827565b9450506020614b4987828801614827565b9350506040614b5a87828801614827565b9250506060614b6b87828801614827565b91505092959194509250565b6000614b828261491b565b9050919050565b614b9281614b77565b8114614b9d57600080fd5b50565b600081359050614baf81614b89565b92915050565b600060208284031215614bcb57614bca6147fc565b5b6000614bd984828501614ba0565b91505092915050565b600060ff82169050919050565b614bf881614be2565b82525050565b6000602082019050614c136000830184614bef565b92915050565b600060208284031215614c2f57614c2e6147fc565b5b6000614c3d84828501614964565b91505092915050565b614c4f81614b77565b82525050565b6000602082019050614c6a6000830184614c46565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614c9557614c94614c70565b5b8235905067ffffffffffffffff811115614cb257614cb1614c75565b5b602083019150836020820283011115614cce57614ccd614c7a565b5b9250929050565b614cde816149b9565b8114614ce957600080fd5b50565b600081359050614cfb81614cd5565b92915050565b600080600060408486031215614d1a57614d196147fc565b5b600084013567ffffffffffffffff811115614d3857614d37614801565b5b614d4486828701614c7f565b93509350506020614d5786828701614cec565b9150509250925092565b60008060408385031215614d7857614d776147fc565b5b6000614d8685828601614964565b9250506020614d9785828601614cec565b9150509250929050565b600060208284031215614db757614db66147fc565b5b6000614dc584828501614cec565b91505092915050565b60008060408385031215614de557614de46147fc565b5b6000614df385828601614964565b9250506020614e0485828601614964565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614e44602083614874565b9150614e4f82614e0e565b602082019050919050565b60006020820190508181036000830152614e7381614e37565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614eb482614806565b9150614ebf83614806565b9250828202614ecd81614806565b91508282048414831517614ee457614ee3614e7a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f2582614806565b9150614f3083614806565b925082614f4057614f3f614eeb565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614fa7602983614874565b9150614fb282614f4b565b604082019050919050565b60006020820190508181036000830152614fd681614f9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061502457607f821691505b60208210810361503757615036614fdd565b5b50919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000615099602483614874565b91506150a48261503d565b604082019050919050565b600060208201905081810360008301526150c88161508c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061512b602883614874565b9150615136826150cf565b604082019050919050565b6000602082019050818103600083015261515a8161511e565b9050919050565b600061516c82614806565b915061517783614806565b925082820190508082111561518f5761518e614e7a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006151cf82614806565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361520157615200614e7a565b5b600182019050919050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b6000615242600e83614874565b915061524d8261520c565b602082019050919050565b6000602082019050818103600083015261527181615235565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006152d4603983614874565b91506152df82615278565b604082019050919050565b60006020820190508181036000830152615303816152c7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000615366602583614874565b91506153718261530a565b604082019050919050565b6000602082019050818103600083015261539581615359565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006153f8603583614874565b91506154038261539c565b604082019050919050565b60006020820190508181036000830152615427816153eb565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061548a603483614874565b91506154958261542e565b604082019050919050565b600060208201905081810360008301526154b98161547d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061551c602683614874565b9150615527826154c0565b604082019050919050565b6000602082019050818103600083015261554b8161550f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155ae602483614874565b91506155b982615552565b604082019050919050565b600060208201905081810360008301526155dd816155a1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615640602283614874565b915061564b826155e4565b604082019050919050565b6000602082019050818103600083015261566f81615633565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156d2602583614874565b91506156dd82615676565b604082019050919050565b60006020820190508181036000830152615701816156c5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615764602383614874565b915061576f82615708565b604082019050919050565b6000602082019050818103600083015261579381615757565b9050919050565b7f536e697065720000000000000000000000000000000000000000000000000000600082015250565b60006157d0600683614874565b91506157db8261579a565b602082019050919050565b600060208201905081810360008301526157ff816157c3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061583c601683614874565b915061584782615806565b602082019050919050565b6000602082019050818103600083015261586b8161582f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006158f4604983614874565b91506158ff82615872565b606082019050919050565b60006020820190508181036000830152615923816158e7565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e2e0000000000000000000000000000000000602082015250565b6000615986602f83614874565b91506159918261592a565b604082019050919050565b600060208201905081810360008301526159b581615979565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006159f2601383614874565b91506159fd826159bc565b602082019050919050565b60006020820190508181036000830152615a21816159e5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b6000615a84603083614874565b9150615a8f82615a28565b604082019050919050565b60006020820190508181036000830152615ab381615a77565b9050919050565b6000604082019050615acf6000830185614ae6565b615adc6020830184614ae6565b9392505050565b6000615aee82614806565b9150615af983614806565b9250828203905081811115615b1157615b10614e7a565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615b73602683614874565b9150615b7e82615b17565b604082019050919050565b60006020820190508181036000830152615ba281615b66565b9050919050565b600081905092915050565b50565b6000615bc4600083615ba9565b9150615bcf82615bb4565b600082019050919050565b6000615be582615bb7565b9150819050919050565b6000606082019050615c046000830186614a69565b615c116020830185614a69565b615c1e6040830184614a69565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615c648161494d565b92915050565b600060208284031215615c8057615c7f6147fc565b5b6000615c8e84828501615c55565b91505092915050565b6000819050919050565b6000615cbc615cb7615cb284615c97565b6149ef565b614806565b9050919050565b615ccc81615ca1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d078161493b565b82525050565b6000615d198383615cfe565b60208301905092915050565b6000602082019050919050565b6000615d3d82615cd2565b615d478185615cdd565b9350615d5283615cee565b8060005b83811015615d83578151615d6a8882615d0d565b9750615d7583615d25565b925050600181019050615d56565b5085935050505092915050565b600060a082019050615da56000830188614a69565b615db26020830187615cc3565b8181036040830152615dc48186615d32565b9050615dd36060830185614ae6565b615de06080830184614a69565b9695505050505050565b6000615df582614a1b565b9050919050565b615e0581615dea565b82525050565b600060c082019050615e206000830189614ae6565b615e2d6020830188614a69565b615e3a6040830187615cc3565b615e476060830186615cc3565b615e546080830185615dfc565b615e6160a0830184614a69565b979650505050505050565b600081519050615e7b81614810565b92915050565b600080600060608486031215615e9a57615e996147fc565b5b6000615ea886828701615e6c565b9350506020615eb986828701615e6c565b9250506040615eca86828701615e6c565b915050925092509256fea26469706673582212204c18b7a8cf4230f750b6a0188ba7ee39abc2f53d53dfe85f5be75fe7ee2d25b864736f6c63430008130033
Deployed Bytecode
0x6080604052600436106103dd5760003560e01c806392136913116101fd578063d85ba06311610118578063ef8700e5116100ab578063f63743421161007a578063f637434214610eba578063f887ea4014610ee5578063f8b45b0514610f10578063fb002c9714610f3b578063fd72e22a14610f66576103e4565b8063ef8700e514610e12578063f023f57314610e3d578063f11a24d314610e66578063f2fde38b14610e91576103e4565b8063e37ba8f9116100e7578063e37ba8f914610d58578063e596219514610d81578063e7ad9fcd14610dbe578063e884f26014610de7576103e4565b8063d85ba06314610c88578063dd62ed3e14610cb3578063e1bc339414610cf0578063e2f4560514610d2d576103e4565b8063b62496f511610190578063c3f70b521161015f578063c3f70b5214610bca578063c876d0b914610bf5578063d257b34f14610c20578063d469801614610c5d576103e4565b8063b62496f514610b0e578063bbc0c74214610b4b578063c024666814610b76578063c04a541414610b9f576103e4565b8063a457c2d7116101cc578063a457c2d714610a40578063a9059cbb14610a7d578063aacebbe314610aba578063b204141114610ae3576103e4565b80639213691314610998578063924de9b7146109c357806395d89b41146109ec5780639a7a23d614610a17576103e4565b80634a62bb65116102f857806370a082311161028b57806375f0a8741161025a57806375f0a874146108d75780637bce5a04146109025780637f51bb1f1461092d5780638a8c523c146109565780638da5cb5b1461096d576103e4565b806370a082311461082f578063715018a61461086c578063751039fc146108835780637571336a146108ae576103e4565b806361d027b3116102c757806361d027b3146107855780636a486a8e146107b05780636af1972d146107db5780636ddd171314610804576103e4565b80634a62bb65146106c75780634f77f6c0146106f25780634fbee1931461071d5780635a139dd41461075a576103e4565b80631f3fed8f1161037057806330d5d18d1161033f57806330d5d18d1461060b578063313ce56714610634578063395093511461065f57806349bd5a5e1461069c576103e4565b80631f3fed8f1461054f57806323b872dd1461057a57806327c8f835146105b75780632e6ed7ef146105e2576103e4565b806318160ddd116103ac57806318160ddd146104a557806318a94cf1146104d05780631a8145bb146104fb5780631c499ab014610526576103e4565b80630517d13d146103e957806306fdde0314610412578063095ea7b31461043d5780631694505e1461047a576103e4565b366103e457005b600080fd5b3480156103f557600080fd5b50610410600480360381019061040b919061483c565b610f91565b005b34801561041e57600080fd5b506104276110a0565b60405161043491906148f9565b60405180910390f35b34801561044957600080fd5b50610464600480360381019061045f9190614979565b611132565b60405161047191906149d4565b60405180910390f35b34801561048657600080fd5b5061048f611150565b60405161049c9190614a4e565b60405180910390f35b3480156104b157600080fd5b506104ba611174565b6040516104c79190614a78565b60405180910390f35b3480156104dc57600080fd5b506104e561117e565b6040516104f29190614a78565b60405180910390f35b34801561050757600080fd5b50610510611184565b60405161051d9190614a78565b60405180910390f35b34801561053257600080fd5b5061054d6004803603810190610548919061483c565b61118a565b005b34801561055b57600080fd5b50610564611299565b6040516105719190614a78565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190614a93565b61129f565b6040516105ae91906149d4565b60405180910390f35b3480156105c357600080fd5b506105cc611397565b6040516105d99190614af5565b60405180910390f35b3480156105ee57600080fd5b5061060960048036038101906106049190614b10565b61139d565b005b34801561061757600080fd5b50610632600480360381019061062d9190614bb5565b61147b565b005b34801561064057600080fd5b506106496115b7565b6040516106569190614bfe565b60405180910390f35b34801561066b57600080fd5b5061068660048036038101906106819190614979565b6115c0565b60405161069391906149d4565b60405180910390f35b3480156106a857600080fd5b506106b161166c565b6040516106be9190614af5565b60405180910390f35b3480156106d357600080fd5b506106dc611690565b6040516106e991906149d4565b60405180910390f35b3480156106fe57600080fd5b506107076116a3565b6040516107149190614a78565b60405180910390f35b34801561072957600080fd5b50610744600480360381019061073f9190614c19565b6116a9565b60405161075191906149d4565b60405180910390f35b34801561076657600080fd5b5061076f6116ff565b60405161077c9190614a78565b60405180910390f35b34801561079157600080fd5b5061079a611705565b6040516107a79190614c55565b60405180910390f35b3480156107bc57600080fd5b506107c561172b565b6040516107d29190614a78565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd9190614d01565b611731565b005b34801561081057600080fd5b50610819611932565b60405161082691906149d4565b60405180910390f35b34801561083b57600080fd5b5061085660048036038101906108519190614c19565b611945565b6040516108639190614a78565b60405180910390f35b34801561087857600080fd5b5061088161198d565b005b34801561088f57600080fd5b50610898611a15565b6040516108a591906149d4565b60405180910390f35b3480156108ba57600080fd5b506108d560048036038101906108d09190614d61565b611ab5565b005b3480156108e357600080fd5b506108ec611b8c565b6040516108f99190614c55565b60405180910390f35b34801561090e57600080fd5b50610917611bb2565b6040516109249190614a78565b60405180910390f35b34801561093957600080fd5b50610954600480360381019061094f9190614c19565b611bb8565b005b34801561096257600080fd5b5061096b611c78565b005b34801561097957600080fd5b50610982611d83565b60405161098f9190614af5565b60405180910390f35b3480156109a457600080fd5b506109ad611dad565b6040516109ba9190614a78565b60405180910390f35b3480156109cf57600080fd5b506109ea60048036038101906109e59190614da1565b611db3565b005b3480156109f857600080fd5b50610a01611e4c565b604051610a0e91906148f9565b60405180910390f35b348015610a2357600080fd5b50610a3e6004803603810190610a399190614d61565b611ede565b005b348015610a4c57600080fd5b50610a676004803603810190610a629190614979565b611ff6565b604051610a7491906149d4565b60405180910390f35b348015610a8957600080fd5b50610aa46004803603810190610a9f9190614979565b6120e1565b604051610ab191906149d4565b60405180910390f35b348015610ac657600080fd5b50610ae16004803603810190610adc9190614bb5565b6120ff565b005b348015610aef57600080fd5b50610af861223b565b604051610b059190614a78565b60405180910390f35b348015610b1a57600080fd5b50610b356004803603810190610b309190614c19565b612241565b604051610b4291906149d4565b60405180910390f35b348015610b5757600080fd5b50610b60612261565b604051610b6d91906149d4565b60405180910390f35b348015610b8257600080fd5b50610b9d6004803603810190610b989190614d61565b612274565b005b348015610bab57600080fd5b50610bb4612399565b604051610bc19190614c55565b60405180910390f35b348015610bd657600080fd5b50610bdf6123bf565b604051610bec9190614a78565b60405180910390f35b348015610c0157600080fd5b50610c0a6123c5565b604051610c1791906149d4565b60405180910390f35b348015610c2c57600080fd5b50610c476004803603810190610c42919061483c565b6123d8565b604051610c5491906149d4565b60405180910390f35b348015610c6957600080fd5b50610c7261252d565b604051610c7f9190614c55565b60405180910390f35b348015610c9457600080fd5b50610c9d612553565b604051610caa9190614a78565b60405180910390f35b348015610cbf57600080fd5b50610cda6004803603810190610cd59190614dce565b612559565b604051610ce79190614a78565b60405180910390f35b348015610cfc57600080fd5b50610d176004803603810190610d129190614c19565b6125e0565b604051610d2491906149d4565b60405180910390f35b348015610d3957600080fd5b50610d42612600565b604051610d4f9190614a78565b60405180910390f35b348015610d6457600080fd5b50610d7f6004803603810190610d7a9190614bb5565b612606565b005b348015610d8d57600080fd5b50610da86004803603810190610da39190614c19565b612742565b604051610db591906149d4565b60405180910390f35b348015610dca57600080fd5b50610de56004803603810190610de09190614b10565b612762565b005b348015610df357600080fd5b50610dfc612840565b604051610e0991906149d4565b60405180910390f35b348015610e1e57600080fd5b50610e276128e0565b604051610e349190614a78565b60405180910390f35b348015610e4957600080fd5b50610e646004803603810190610e5f9190614bb5565b6128e6565b005b348015610e7257600080fd5b50610e7b612a22565b604051610e889190614a78565b60405180910390f35b348015610e9d57600080fd5b50610eb86004803603810190610eb39190614c19565b612a28565b005b348015610ec657600080fd5b50610ecf612b1f565b604051610edc9190614a78565b60405180910390f35b348015610ef157600080fd5b50610efa612b25565b604051610f079190614af5565b60405180910390f35b348015610f1c57600080fd5b50610f25612b3d565b604051610f329190614a78565b60405180910390f35b348015610f4757600080fd5b50610f50612b43565b604051610f5d9190614a78565b60405180910390f35b348015610f7257600080fd5b50610f7b612b49565b604051610f889190614c55565b60405180910390f35b610f99612b6f565b73ffffffffffffffffffffffffffffffffffffffff16610fb7611d83565b73ffffffffffffffffffffffffffffffffffffffff161461100d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100490614e5a565b60405180910390fd5b670de0b6b3a76400006103e86001611023611174565b61102d9190614ea9565b6110379190614f1a565b6110419190614f1a565b811015611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90614fbd565b60405180910390fd5b670de0b6b3a7640000816110979190614ea9565b600b8190555050565b6060600380546110af9061500c565b80601f01602080910402602001604051908101604052809291908181526020018280546110db9061500c565b80156111285780601f106110fd57610100808354040283529160200191611128565b820191906000526020600020905b81548152906001019060200180831161110b57829003601f168201915b5050505050905090565b600061114661113f612b6f565b8484612b77565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b601b5481565b601e5481565b611192612b6f565b73ffffffffffffffffffffffffffffffffffffffff166111b0611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd90614e5a565b60405180910390fd5b670de0b6b3a76400006103e8600561121c611174565b6112269190614ea9565b6112309190614f1a565b61123a9190614f1a565b81101561127c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611273906150af565b60405180910390fd5b670de0b6b3a7640000816112909190614ea9565b600d8190555050565b601d5481565b60006112ac848484612d40565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112f7612b6f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e90615141565b60405180910390fd5b61138b85611383612b6f565b858403612b77565b60019150509392505050565b61dead81565b6113a5612b6f565b73ffffffffffffffffffffffffffffffffffffffff166113c3611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141090614e5a565b60405180910390fd5b8360148190555082601581905550816016819055508060178190555060175460165460155460145461144b9190615161565b6114559190615161565b61145f9190615161565b6013819055506019601354111561147557600080fd5b50505050565b611483612b6f565b73ffffffffffffffffffffffffffffffffffffffff166114a1611d83565b73ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90614e5a565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fe1bb4a3e2b2b99353f84d73df9e136cfe17627ed07083a649101dfa6bde8459c60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b60006116626115cd612b6f565b8484600160006115db612b6f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165d9190615161565b612b77565b6001905092915050565b7f000000000000000000000000c31aa9ecdbe9de5a8d7933008693bab3235a5e7c81565b600e60009054906101000a900460ff1681565b601c5481565b6000602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611739612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611757611d83565b73ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490614e5a565b60405180910390fd5b60005b8383905081101561192c5760008484838181106117d0576117cf615195565b5b90506020020160208101906117e59190614c19565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156118635750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156118bb57507f000000000000000000000000c31aa9ecdbe9de5a8d7933008693bab3235a5e7c73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156119185782601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b508080611924906151c4565b9150506117b0565b50505050565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611995612b6f565b73ffffffffffffffffffffffffffffffffffffffff166119b3611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090614e5a565b60405180910390fd5b611a136000613b72565b565b6000611a1f612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611a3d611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90614e5a565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611abd612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611adb611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890614e5a565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611bc0612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611bde611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b90614e5a565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c80612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611c9e611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ceb90614e5a565b60405180910390fd5b600e60019054906101000a900460ff1615611d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3b90615258565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550436011819055506001600e60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60195481565b611dbb612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611dd9611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690614e5a565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b606060048054611e5b9061500c565b80601f0160208091040260200160405190810160405280929190818152602001828054611e879061500c565b8015611ed45780601f10611ea957610100808354040283529160200191611ed4565b820191906000526020600020905b815481529060010190602001808311611eb757829003601f168201915b5050505050905090565b611ee6612b6f565b73ffffffffffffffffffffffffffffffffffffffff16611f04611d83565b73ffffffffffffffffffffffffffffffffffffffff1614611f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5190614e5a565b60405180910390fd5b7f000000000000000000000000c31aa9ecdbe9de5a8d7933008693bab3235a5e7c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf906152ea565b60405180910390fd5b611ff28282613c38565b5050565b60008060016000612005612b6f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b99061537c565b60405180910390fd5b6120d66120cd612b6f565b85858403612b77565b600191505092915050565b60006120f56120ee612b6f565b8484612d40565b6001905092915050565b612107612b6f565b73ffffffffffffffffffffffffffffffffffffffff16612125611d83565b73ffffffffffffffffffffffffffffffffffffffff161461217b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217290614e5a565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60236020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b61227c612b6f565b73ffffffffffffffffffffffffffffffffffffffff1661229a611d83565b73ffffffffffffffffffffffffffffffffffffffff16146122f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e790614e5a565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161238d91906149d4565b60405180910390a25050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b601060009054906101000a900460ff1681565b60006123e2612b6f565b73ffffffffffffffffffffffffffffffffffffffff16612400611d83565b73ffffffffffffffffffffffffffffffffffffffff1614612456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244d90614e5a565b60405180910390fd5b620186a06001612464611174565b61246e9190614ea9565b6124789190614f1a565b8210156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b19061540e565b60405180910390fd5b6103e860056124c7611174565b6124d19190614ea9565b6124db9190614f1a565b82111561251d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612514906154a0565b60405180910390fd5b81600c8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60226020528060005260406000206000915054906101000a900460ff1681565b600c5481565b61260e612b6f565b73ffffffffffffffffffffffffffffffffffffffff1661262c611d83565b73ffffffffffffffffffffffffffffffffffffffff1614612682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267990614e5a565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b61276a612b6f565b73ffffffffffffffffffffffffffffffffffffffff16612788611d83565b73ffffffffffffffffffffffffffffffffffffffff16146127de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d590614e5a565b60405180910390fd5b8360198190555082601a8190555081601b8190555080601c81905550601c54601b54601a546019546128109190615161565b61281a9190615161565b6128249190615161565b6018819055506019601854111561283a57600080fd5b50505050565b600061284a612b6f565b73ffffffffffffffffffffffffffffffffffffffff16612868611d83565b73ffffffffffffffffffffffffffffffffffffffff16146128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614e5a565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b601f5481565b6128ee612b6f565b73ffffffffffffffffffffffffffffffffffffffff1661290c611d83565b73ffffffffffffffffffffffffffffffffffffffff1614612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990614e5a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b612a30612b6f565b73ffffffffffffffffffffffffffffffffffffffff16612a4e611d83565b73ffffffffffffffffffffffffffffffffffffffff1614612aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9b90614e5a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0a90615532565b60405180910390fd5b612b1c81613b72565b50565b601a5481565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600d5481565b60205481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdd906155c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c90615656565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d339190614a78565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da6906156e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e159061577a565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea2906157e6565b60405180910390fd5b60008103612ec457612ebf83836000613cd9565b613b6d565b600e60009054906101000a900460ff161561349457600560149054906101000a900460ff1661349357600e60019054906101000a900460ff16612fe257602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fa25750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd890615852565b60405180910390fd5b5b601060009054906101000a900460ff16156131aa57612fff611d83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561308657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130de57507f000000000000000000000000c31aa9ecdbe9de5a8d7933008693bab3235a5e7c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156131a95743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315b9061590a565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561324d5750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132f457600b54811115613297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328e9061599c565b60405180910390fd5b600d546132a383611945565b826132ae9190615161565b11156132ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e690615a08565b60405180910390fd5b613492565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133975750602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133e657600b548111156133e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d890615a9a565b60405180910390fd5b613491565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661349057600d5461344383611945565b8261344e9190615161565b111561348f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348690615a08565b60405180910390fd5b5b5b5b5b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156134f6576134f1838383613f58565b613b6d565b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561359a5750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561362f57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b2925384846040518363ffffffff1660e01b81526004016135fc929190615aba565b600060405180830381600087803b15801561361657600080fd5b505af115801561362a573d6000803e3d6000fd5b505050505b600061363a30611945565b90506000600c54821015905080801561365f5750600e60029054906101000a900460ff165b80156136785750600560149054906101000a900460ff16155b80156136ce5750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137245750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561377a5750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137be576001600560146101000a81548160ff0219169083151502179055506137a26140b6565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138745750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561387e57600090505b60008115613b5d57602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138e157506000601854115b156139e15761390e60646139006018548861447790919063ffffffff16565b61448d90919063ffffffff16565b9050601854601a54826139219190614ea9565b61392b9190614f1a565b601e600082825461393c9190615161565b92505081905550601854601b54826139549190614ea9565b61395e9190614f1a565b601f600082825461396f9190615161565b92505081905550601854601954826139879190614ea9565b6139919190614f1a565b601d60008282546139a29190615161565b92505081905550601854601c54826139ba9190614ea9565b6139c49190614f1a565b602060008282546139d59190615161565b92505081905550613b39565b602360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a3c57506000601354115b15613b3857613a696064613a5b6013548861447790919063ffffffff16565b61448d90919063ffffffff16565b905060135460155482613a7c9190614ea9565b613a869190614f1a565b601e6000828254613a979190615161565b9250508190555060135460165482613aaf9190614ea9565b613ab99190614f1a565b601f6000828254613aca9190615161565b9250508190555060135460145482613ae29190614ea9565b613aec9190614f1a565b601d6000828254613afd9190615161565b9250508190555060135460175482613b159190614ea9565b613b1f9190614f1a565b60206000828254613b309190615161565b925050819055505b5b6000811115613b4e57613b4d873083613cd9565b5b8085613b5a9190615ae3565b94505b613b68878787613cd9565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d3f906156e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dae9061577a565b60405180910390fd5b613dc28383836144a3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e3f90615b89565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613edb9190615161565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f3f9190614a78565b60405180910390a3613f528484846144a8565b50505050565b613f638383836144a3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546140399190615161565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161409d9190614a78565b60405180910390a36140b08484846144a8565b50505050565b60006140c130611945565b90506000602054601f54601d54601e546140db9190615161565b6140e59190615161565b6140ef9190615161565b90506000808314806141015750600082145b1561410e57505050614475565b6010600c5461411d9190614ea9565b831115614136576010600c546141339190614ea9565b92505b6000600283601e54866141499190614ea9565b6141539190614f1a565b61415d9190614f1a565b9050600061417482866144ad90919063ffffffff16565b90506000479050614184826144c3565b600061419982476144ad90919063ffffffff16565b905060006141c4876141b6601d548561447790919063ffffffff16565b61448d90919063ffffffff16565b905060006141ef886141e1601f548661447790919063ffffffff16565b61448d90919063ffffffff16565b9050600061421a8961420c6020548761447790919063ffffffff16565b61448d90919063ffffffff16565b905060008183858761422c9190615ae3565b6142369190615ae3565b6142409190615ae3565b90506000601e819055506000601d819055506000601f819055506000602081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516142a890615bda565b60006040518083038185875af1925050503d80600081146142e5576040519150601f19603f3d011682016040523d82523d6000602084013e6142ea565b606091505b5050809950506000881180156143005750600081115b1561434d5761430f8882614700565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601e5460405161434493929190615bef565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161439390615bda565b60006040518083038185875af1925050503d80600081146143d0576040519150601f19603f3d011682016040523d82523d6000602084013e6143d5565b606091505b505080995050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161442190615bda565b60006040518083038185875af1925050503d806000811461445e576040519150601f19603f3d011682016040523d82523d6000602084013e614463565b606091505b50508099505050505050505050505050505b565b600081836144859190614ea9565b905092915050565b6000818361449b9190614f1a565b905092915050565b505050565b505050565b600081836144bb9190615ae3565b905092915050565b6000600267ffffffffffffffff8111156144e0576144df615c26565b5b60405190808252806020026020018201604052801561450e5781602001602082028036833780820191505090505b509050308160008151811061452657614525615195565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ef9190615c6a565b8160018151811061460357614602615195565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614668307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612b77565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016146ca959493929190615d90565b600060405180830381600087803b1580156146e457600080fd5b505af11580156146f8573d6000803e3d6000fd5b505050505050565b61472b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612b77565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016147b296959493929190615e0b565b60606040518083038185885af11580156147d0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147f59190615e81565b5050505050565b600080fd5b600080fd5b6000819050919050565b61481981614806565b811461482457600080fd5b50565b60008135905061483681614810565b92915050565b600060208284031215614852576148516147fc565b5b600061486084828501614827565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156148a3578082015181840152602081019050614888565b60008484015250505050565b6000601f19601f8301169050919050565b60006148cb82614869565b6148d58185614874565b93506148e5818560208601614885565b6148ee816148af565b840191505092915050565b6000602082019050818103600083015261491381846148c0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006149468261491b565b9050919050565b6149568161493b565b811461496157600080fd5b50565b6000813590506149738161494d565b92915050565b600080604083850312156149905761498f6147fc565b5b600061499e85828601614964565b92505060206149af85828601614827565b9150509250929050565b60008115159050919050565b6149ce816149b9565b82525050565b60006020820190506149e960008301846149c5565b92915050565b6000819050919050565b6000614a14614a0f614a0a8461491b565b6149ef565b61491b565b9050919050565b6000614a26826149f9565b9050919050565b6000614a3882614a1b565b9050919050565b614a4881614a2d565b82525050565b6000602082019050614a636000830184614a3f565b92915050565b614a7281614806565b82525050565b6000602082019050614a8d6000830184614a69565b92915050565b600080600060608486031215614aac57614aab6147fc565b5b6000614aba86828701614964565b9350506020614acb86828701614964565b9250506040614adc86828701614827565b9150509250925092565b614aef8161493b565b82525050565b6000602082019050614b0a6000830184614ae6565b92915050565b60008060008060808587031215614b2a57614b296147fc565b5b6000614b3887828801614827565b9450506020614b4987828801614827565b9350506040614b5a87828801614827565b9250506060614b6b87828801614827565b91505092959194509250565b6000614b828261491b565b9050919050565b614b9281614b77565b8114614b9d57600080fd5b50565b600081359050614baf81614b89565b92915050565b600060208284031215614bcb57614bca6147fc565b5b6000614bd984828501614ba0565b91505092915050565b600060ff82169050919050565b614bf881614be2565b82525050565b6000602082019050614c136000830184614bef565b92915050565b600060208284031215614c2f57614c2e6147fc565b5b6000614c3d84828501614964565b91505092915050565b614c4f81614b77565b82525050565b6000602082019050614c6a6000830184614c46565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614c9557614c94614c70565b5b8235905067ffffffffffffffff811115614cb257614cb1614c75565b5b602083019150836020820283011115614cce57614ccd614c7a565b5b9250929050565b614cde816149b9565b8114614ce957600080fd5b50565b600081359050614cfb81614cd5565b92915050565b600080600060408486031215614d1a57614d196147fc565b5b600084013567ffffffffffffffff811115614d3857614d37614801565b5b614d4486828701614c7f565b93509350506020614d5786828701614cec565b9150509250925092565b60008060408385031215614d7857614d776147fc565b5b6000614d8685828601614964565b9250506020614d9785828601614cec565b9150509250929050565b600060208284031215614db757614db66147fc565b5b6000614dc584828501614cec565b91505092915050565b60008060408385031215614de557614de46147fc565b5b6000614df385828601614964565b9250506020614e0485828601614964565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614e44602083614874565b9150614e4f82614e0e565b602082019050919050565b60006020820190508181036000830152614e7381614e37565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614eb482614806565b9150614ebf83614806565b9250828202614ecd81614806565b91508282048414831517614ee457614ee3614e7a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f2582614806565b9150614f3083614806565b925082614f4057614f3f614eeb565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614fa7602983614874565b9150614fb282614f4b565b604082019050919050565b60006020820190508181036000830152614fd681614f9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061502457607f821691505b60208210810361503757615036614fdd565b5b50919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000615099602483614874565b91506150a48261503d565b604082019050919050565b600060208201905081810360008301526150c88161508c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061512b602883614874565b9150615136826150cf565b604082019050919050565b6000602082019050818103600083015261515a8161511e565b9050919050565b600061516c82614806565b915061517783614806565b925082820190508082111561518f5761518e614e7a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006151cf82614806565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361520157615200614e7a565b5b600182019050919050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b6000615242600e83614874565b915061524d8261520c565b602082019050919050565b6000602082019050818103600083015261527181615235565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006152d4603983614874565b91506152df82615278565b604082019050919050565b60006020820190508181036000830152615303816152c7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000615366602583614874565b91506153718261530a565b604082019050919050565b6000602082019050818103600083015261539581615359565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006153f8603583614874565b91506154038261539c565b604082019050919050565b60006020820190508181036000830152615427816153eb565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061548a603483614874565b91506154958261542e565b604082019050919050565b600060208201905081810360008301526154b98161547d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061551c602683614874565b9150615527826154c0565b604082019050919050565b6000602082019050818103600083015261554b8161550f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155ae602483614874565b91506155b982615552565b604082019050919050565b600060208201905081810360008301526155dd816155a1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615640602283614874565b915061564b826155e4565b604082019050919050565b6000602082019050818103600083015261566f81615633565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156d2602583614874565b91506156dd82615676565b604082019050919050565b60006020820190508181036000830152615701816156c5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615764602383614874565b915061576f82615708565b604082019050919050565b6000602082019050818103600083015261579381615757565b9050919050565b7f536e697065720000000000000000000000000000000000000000000000000000600082015250565b60006157d0600683614874565b91506157db8261579a565b602082019050919050565b600060208201905081810360008301526157ff816157c3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061583c601683614874565b915061584782615806565b602082019050919050565b6000602082019050818103600083015261586b8161582f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006158f4604983614874565b91506158ff82615872565b606082019050919050565b60006020820190508181036000830152615923816158e7565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e2e0000000000000000000000000000000000602082015250565b6000615986602f83614874565b91506159918261592a565b604082019050919050565b600060208201905081810360008301526159b581615979565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006159f2601383614874565b91506159fd826159bc565b602082019050919050565b60006020820190508181036000830152615a21816159e5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b6000615a84603083614874565b9150615a8f82615a28565b604082019050919050565b60006020820190508181036000830152615ab381615a77565b9050919050565b6000604082019050615acf6000830185614ae6565b615adc6020830184614ae6565b9392505050565b6000615aee82614806565b9150615af983614806565b9250828203905081811115615b1157615b10614e7a565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615b73602683614874565b9150615b7e82615b17565b604082019050919050565b60006020820190508181036000830152615ba281615b66565b9050919050565b600081905092915050565b50565b6000615bc4600083615ba9565b9150615bcf82615bb4565b600082019050919050565b6000615be582615bb7565b9150819050919050565b6000606082019050615c046000830186614a69565b615c116020830185614a69565b615c1e6040830184614a69565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615c648161494d565b92915050565b600060208284031215615c8057615c7f6147fc565b5b6000615c8e84828501615c55565b91505092915050565b6000819050919050565b6000615cbc615cb7615cb284615c97565b6149ef565b614806565b9050919050565b615ccc81615ca1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d078161493b565b82525050565b6000615d198383615cfe565b60208301905092915050565b6000602082019050919050565b6000615d3d82615cd2565b615d478185615cdd565b9350615d5283615cee565b8060005b83811015615d83578151615d6a8882615d0d565b9750615d7583615d25565b925050600181019050615d56565b5085935050505092915050565b600060a082019050615da56000830188614a69565b615db26020830187615cc3565b8181036040830152615dc48186615d32565b9050615dd36060830185614ae6565b615de06080830184614a69565b9695505050505050565b6000615df582614a1b565b9050919050565b615e0581615dea565b82525050565b600060c082019050615e206000830189614ae6565b615e2d6020830188614a69565b615e3a6040830187615cc3565b615e476060830186615cc3565b615e546080830185615dfc565b615e6160a0830184614a69565b979650505050505050565b600081519050615e7b81614810565b92915050565b600080600060608486031215615e9a57615e996147fc565b5b6000615ea886828701615e6c565b9350506020615eb986828701615e6c565b9250506040615eca86828701615e6c565b915050925092509256fea26469706673582212204c18b7a8cf4230f750b6a0188ba7ee39abc2f53d53dfe85f5be75fe7ee2d25b864736f6c63430008130033
Deployed Bytecode Sourcemap
15575:18800:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22124:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2678:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3592:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15649:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2999:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16930:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17051;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22397:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17011:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3769:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15752:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23020:498;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25651:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2898:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4269:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15707:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16258:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16970:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24742:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16779:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16819:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30855:389;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16338:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3115:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;800:103;;;;;;;;;;;;;:::i;:::-;;21232:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22655:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15926:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16666:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24876:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20979:201;;;;;;;;;;;;;:::i;:::-;;577:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16854:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22912:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2786:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24234:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4492:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3250:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25427:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16740:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17301:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16298:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24044:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15971:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16149:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16504:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21619:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16018:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16632:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3433:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17235:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16185:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25203:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16584:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23526:510;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21414:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17091:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24998:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16703:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;911:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16892:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15812:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16225:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17133:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16063:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22124:265;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22263:4:::1;22255;22250:1;22234:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22233:26;;;;:::i;:::-;22232:35;;;;:::i;:::-;22222:6;:45;;22200:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;22374:6;22364;:17;;;;:::i;:::-;22347:14;:34;;;;22124:265:::0;:::o;2678:100::-;2732:13;2765:5;2758:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2678:100;:::o;3592:169::-;3675:4;3692:39;3701:12;:10;:12::i;:::-;3715:7;3724:6;3692:8;:39::i;:::-;3749:4;3742:11;;3592:169;;;;:::o;15649:51::-;;;:::o;2999:108::-;3060:7;3087:12;;3080:19;;2999:108;:::o;16930:33::-;;;;:::o;17051:::-;;;;:::o;22397:250::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22531:4:::1;22523;22518:1;22502:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22501:26;;;;:::i;:::-;22500:35;;;;:::i;:::-;22490:6;:45;;22468:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;22632:6;22622;:17;;;;:::i;:::-;22610:9;:29;;;;22397:250:::0;:::o;17011:33::-;;;;:::o;3769:492::-;3909:4;3926:36;3936:6;3944:9;3955:6;3926:9;:36::i;:::-;3975:24;4002:11;:19;4014:6;4002:19;;;;;;;;;;;;;;;:33;4022:12;:10;:12::i;:::-;4002:33;;;;;;;;;;;;;;;;3975:60;;4074:6;4054:16;:26;;4046:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4161:57;4170:6;4178:12;:10;:12::i;:::-;4211:6;4192:16;:25;4161:8;:57::i;:::-;4249:4;4242:11;;;3769:492;;;;;:::o;15752:53::-;15798:6;15752:53;:::o;23020:498::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23229:13:::1;23211:15;:31;;;;23271:13;23253:15;:31;;;;23315:15;23295:17;:35;;;;23360:14;23341:16;:33;;;;23456:16;;23436:17;;23418:15;;23400;;:33;;;;:::i;:::-;:53;;;;:::i;:::-;:72;;;;:::i;:::-;23385:12;:87;;;;23507:2;23491:12;;:18;;23483:27;;;::::0;::::1;;23020:498:::0;;;;:::o;25651:192::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25779:16:::1;;;;;;;;;;;25744:52;;25768:9;25744:52;;;;;;;;;;;;25826:9;25807:16;;:28;;;;;;;;;;;;;;;;;;25651:192:::0;:::o;2898:93::-;2956:5;2981:2;2974:9;;2898:93;:::o;4269:215::-;4357:4;4374:80;4383:12;:10;:12::i;:::-;4397:7;4443:10;4406:11;:25;4418:12;:10;:12::i;:::-;4406:25;;;;;;;;;;;;;;;:34;4432:7;4406:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4374:8;:80::i;:::-;4472:4;4465:11;;4269:215;;;;:::o;15707:38::-;;;:::o;16258:33::-;;;;;;;;;;;;;:::o;16970:32::-;;;;:::o;24742:126::-;24808:4;24832:19;:28;24852:7;24832:28;;;;;;;;;;;;;;;;;;;;;;;;;24825:35;;24742:126;;;:::o;16779:31::-;;;;:::o;16109:::-;;;;;;;;;;;;;:::o;16819:28::-;;;;:::o;30855:389::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30962:9:::1;30958:279;30978:8;;:15;;30976:1;:17;30958:279;;;31013:15;31031:8;;31040:1;31031:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31013:29;;31079:4;31060:24;;:7;:24;;;;:62;;;;;15845:42;31105:17;;:7;:17;;;;31060:62;:116;;;;;31162:13;31143:33;;:7;:33;;;;31060:116;31057:168;;;31214:11;31195:7;:16;31203:7;31195:16;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;31057:168;30998:239;30994:3;;;;;:::i;:::-;;;;30958:279;;;;30855:389:::0;;;:::o;16338:31::-;;;;;;;;;;;;;:::o;3115:127::-;3189:7;3216:9;:18;3226:7;3216:18;;;;;;;;;;;;;;;;3209:25;;3115:127;;;:::o;800:103::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;865:30:::1;892:1;865:18;:30::i;:::-;800:103::o:0;21232:121::-;21284:4;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21318:5:::1;21301:14;;:22;;;;;;;;;;;;;;;;;;21341:4;21334:11;;21232:121:::0;:::o;22655:161::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22804:4:::1;22768:25;:33;22794:6;22768:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;22655:161:::0;;:::o;15926:38::-;;;;;;;;;;;;;:::o;16666:30::-;;;;:::o;24876:114::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24970:11:::1;24951:8;;:31;;;;;;;;;;;;;;;;;;24876:114:::0;:::o;20979:201::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21043:13:::1;;;;;;;;;;;21042:14;21034:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;21102:4;21086:13;;:20;;;;;;;;;;;;;;;;;;21131:12;21117:11;:26;;;;21168:4;21154:11;;:18;;;;;;;;;;;;;;;;;;20979:201::o:0;577:87::-;623:7;650:6;;;;;;;;;;;643:13;;577:87;:::o;16854:31::-;;;;:::o;22912:100::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22997:7:::1;22983:11;;:21;;;;;;;;;;;;;;;;;;22912:100:::0;:::o;2786:104::-;2842:13;2875:7;2868:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2786:104;:::o;24234:304::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24378:13:::1;24370:21;;:4;:21;;::::0;24348:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24489:41;24518:4;24524:5;24489:28;:41::i;:::-;24234:304:::0;;:::o;4492:413::-;4585:4;4602:24;4629:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;4602:61;;4702:15;4682:16;:35;;4674:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4795:67;4804:12;:10;:12::i;:::-;4818:7;4846:15;4827:16;:34;4795:8;:67::i;:::-;4893:4;4886:11;;;4492:413;;;;:::o;3250:175::-;3336:4;3353:42;3363:12;:10;:12::i;:::-;3377:9;3388:6;3353:9;:42::i;:::-;3413:4;3406:11;;3250:175;;;;:::o;25427:216::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25572:15:::1;;;;;;;;;;;25529:59;;25552:18;25529:59;;;;;;;;;;;;25617:18;25599:15;;:36;;;;;;;;;;;;;;;;;;25427:216:::0;:::o;16740:32::-;;;;:::o;17301:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16298:33::-;;;;;;;;;;;;;:::o;24044:182::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24160:8:::1;24129:19;:28;24149:7;24129:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24200:7;24184:34;;;24209:8;24184:34;;;;;;:::i;:::-;;;;;;;;24044:182:::0;;:::o;15971:40::-;;;;;;;;;;;;;:::o;16149:29::-;;;;:::o;16504:39::-;;;;;;;;;;;;;:::o;21619:497::-;21727:4;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21806:6:::1;21801:1;21785:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21784:28;;;;:::i;:::-;21771:9;:41;;21749:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;21961:4;21956:1;21940:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21939:26;;;;:::i;:::-;21926:9;:39;;21904:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;22077:9;22056:18;:30;;;;22104:4;22097:11;;21619:497:::0;;;:::o;16018:38::-;;;;;;;;;;;;;:::o;16632:27::-;;;;:::o;3433:151::-;3522:7;3549:11;:18;3561:5;3549:18;;;;;;;;;;;;;;;:27;3568:7;3549:27;;;;;;;;;;;;;;;;3542:34;;3433:151;;;;:::o;17235:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16185:33::-;;;;:::o;25203:216::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25348:15:::1;;;;;;;;;;;25305:59;;25328:18;25305:59;;;;;;;;;;;;25393:18;25375:15;;:36;;;;;;;;;;;;;;;;;;25203:216:::0;:::o;16584:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;23526:510::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23737:13:::1;23718:16;:32;;;;23780:13;23761:16;:32;;;;23825:15;23804:18;:36;;;;23871:14;23851:17;:34;;;;23971:17;;23950:18;;23931:16;;23912;;:35;;;;:::i;:::-;:56;;;;:::i;:::-;:76;;;;:::i;:::-;23896:13;:92;;;;24024:2;24007:13;;:19;;23999:28;;;::::0;::::1;;23526:510:::0;;;;:::o;21414:135::-;21474:4;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21514:5:::1;21491:20;;:28;;;;;;;;;;;;;;;;;;21537:4;21530:11;;21414:135:::0;:::o;17091:35::-;;;;:::o;24998:197::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25129:17:::1;;;;;;;;;;;25093:54;;25118:9;25093:54;;;;;;;;;;;;25178:9;25158:17;;:29;;;;;;;;;;;;;;;;;;24998:197:::0;:::o;16703:30::-;;;;:::o;911:201::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1020:1:::1;1000:22;;:8;:22;;::::0;992:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1076:28;1095:8;1076:18;:28::i;:::-;911:201:::0;:::o;16892:31::-;;;;:::o;15812:75::-;15845:42;15812:75;:::o;16225:24::-;;;;:::o;17133:34::-;;;;:::o;16063:39::-;;;;;;;;;;;;;:::o;123:98::-;176:7;203:10;196:17;;123:98;:::o;7150:380::-;7303:1;7286:19;;:5;:19;;;7278:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7384:1;7365:21;;:7;:21;;;7357:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7468:6;7438:11;:18;7450:5;7438:18;;;;;;;;;;;;;;;:27;7457:7;7438:27;;;;;;;;;;;;;;;:36;;;;7506:7;7490:32;;7499:5;7490:32;;;7515:6;7490:32;;;;;;:::i;:::-;;;;;;;;7150:380;;;:::o;25851:4996::-;25999:1;25983:18;;:4;:18;;;25975:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26076:1;26062:16;;:2;:16;;;26054:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26138:7;:13;26146:4;26138:13;;;;;;;;;;;;;;;;;;;;;;;;;26137:14;26129:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;26189:1;26179:6;:11;26175:93;;26207:28;26223:4;26229:2;26233:1;26207:15;:28::i;:::-;26250:7;;26175:93;26284:14;;;;;;;;;;;26280:2264;;;26320:8;;;;;;;;;;;26315:2218;;26354:13;;;;;;;;;;;26349:223;;26426:19;:25;26446:4;26426:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26455:19;:23;26475:2;26455:23;;;;;;;;;;;;;;;;;;;;;;;;;26426:52;26392:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;26349:223;26728:20;;;;;;;;;;;26724:641;;;26809:7;:5;:7::i;:::-;26803:13;;:2;:13;;;;:72;;;;;26859:15;26845:30;;:2;:30;;;;26803:72;:129;;;;;26918:13;26904:28;;:2;:28;;;;26803:129;26773:573;;;27096:12;27021:28;:39;27050:9;27021:39;;;;;;;;;;;;;;;;:87;26983:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;27310:12;27268:28;:39;27297:9;27268:39;;;;;;;;;;;;;;;:54;;;;26773:573;26724:641;27439:25;:31;27465:4;27439:31;;;;;;;;;;;;;;;;;;;;;;;;;:86;;;;;27496:25;:29;27522:2;27496:29;;;;;;;;;;;;;;;;;;;;;;;;;27495:30;27439:86;27413:1105;;;27612:14;;27602:6;:24;;27568:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;27808:9;;27791:13;27801:2;27791:9;:13::i;:::-;27782:6;:22;;;;:::i;:::-;:35;;27748:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27413:1105;;;27986:25;:29;28012:2;27986:29;;;;;;;;;;;;;;;;;;;;;;;;;:86;;;;;28041:25;:31;28067:4;28041:31;;;;;;;;;;;;;;;;;;;;;;;;;28040:32;27986:86;27960:558;;;28159:14;;28149:6;:24;;28115:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;27960:558;;;28304:25;:29;28330:2;28304:29;;;;;;;;;;;;;;;;;;;;;;;;;28299:219;;28418:9;;28401:13;28411:2;28401:9;:13::i;:::-;28392:6;:22;;;;:::i;:::-;:35;;28358:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28299:219;27960:558;27413:1105;26315:2218;26280:2264;28560:19;:25;28580:4;28560:25;;;;;;;;;;;;;;;;;;;;;;;;;28556:111;;;28602:32;28617:4;28623:2;28627:6;28602:14;:32::i;:::-;28649:7;;28556:111;28684:19;:25;28704:4;28684:25;;;;;;;;;;;;;;;;;;;;;;;;;28683:26;:54;;;;;28714:19;:23;28734:2;28714:23;;;;;;;;;;;;;;;;;;;;;;;;;28713:24;28683:54;28679:125;;;28764:8;;;;;;;;;;;28754:28;;;28783:4;28789:2;28754:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28679:125;28816:28;28847:24;28865:4;28847:9;:24::i;:::-;28816:55;;28884:12;28923:18;;28899:20;:42;;28884:57;;28972:7;:35;;;;;28996:11;;;;;;;;;;;28972:35;:61;;;;;29025:8;;;;;;;;;;;29024:9;28972:61;:110;;;;;29051:25;:31;29077:4;29051:31;;;;;;;;;;;;;;;;;;;;;;;;;29050:32;28972:110;:153;;;;;29100:19;:25;29120:4;29100:25;;;;;;;;;;;;;;;;;;;;;;;;;29099:26;28972:153;:194;;;;;29143:19;:23;29163:2;29143:23;;;;;;;;;;;;;;;;;;;;;;;;;29142:24;28972:194;28954:326;;;29204:4;29193:8;;:15;;;;;;;;;;;;;;;;;;29225:10;:8;:10::i;:::-;29263:5;29252:8;;:16;;;;;;;;;;;;;;;;;;28954:326;29292:12;29308:8;;;;;;;;;;;29307:9;29292:24;;29418:19;:25;29438:4;29418:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29447:19;:23;29467:2;29447:23;;;;;;;;;;;;;;;;;;;;;;;;;29418:52;29414:100;;;29497:5;29487:15;;29414:100;29526:12;29631:7;29627:1167;;;29683:25;:29;29709:2;29683:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;29732:1;29716:13;;:17;29683:50;29679:966;;;29761:34;29791:3;29761:25;29772:13;;29761:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29754:41;;29864:13;;29844:16;;29837:4;:23;;;;:::i;:::-;29836:41;;;;:::i;:::-;29814:18;;:63;;;;;;;:::i;:::-;;;;;;;;29950:13;;29928:18;;29921:4;:25;;;;:::i;:::-;29920:43;;;;:::i;:::-;29896:20;;:67;;;;;;;:::i;:::-;;;;;;;;30032:13;;30012:16;;30005:4;:23;;;;:::i;:::-;30004:41;;;;:::i;:::-;29982:18;;:63;;;;;;;:::i;:::-;;;;;;;;30116:13;;30095:17;;30088:4;:24;;;;:::i;:::-;30087:42;;;;:::i;:::-;30064:19;;:65;;;;;;;:::i;:::-;;;;;;;;29679:966;;;30191:25;:31;30217:4;30191:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;30241:1;30226:12;;:16;30191:51;30187:458;;;30270:33;30299:3;30270:24;30281:12;;30270:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;30263:40;;30371:12;;30352:15;;30345:4;:22;;;;:::i;:::-;30344:39;;;;:::i;:::-;30322:18;;:61;;;;;;;:::i;:::-;;;;;;;;30455:12;;30434:17;;30427:4;:24;;;;:::i;:::-;30426:41;;;;:::i;:::-;30402:20;;:65;;;;;;;:::i;:::-;;;;;;;;30535:12;;30516:15;;30509:4;:22;;;;:::i;:::-;30508:39;;;;:::i;:::-;30486:18;;:61;;;;;;;:::i;:::-;;;;;;;;30617:12;;30597:16;;30590:4;:23;;;;:::i;:::-;30589:40;;;;:::i;:::-;30566:19;;:63;;;;;;;:::i;:::-;;;;;;;;30187:458;29679:966;30672:1;30665:4;:8;30661:91;;;30694:42;30710:4;30724;30731;30694:15;:42::i;:::-;30661:91;30778:4;30768:14;;;;;:::i;:::-;;;29627:1167;30806:33;30822:4;30828:2;30832:6;30806:15;:33::i;:::-;25964:4883;;;;25851:4996;;;;:::o;1120:191::-;1194:16;1213:6;;;;;;;;;;;1194:25;;1239:8;1230:6;;:17;;;;;;;;;;;;;;;;;;1294:8;1263:40;;1284:8;1263:40;;;;;;;;;;;;1183:128;1120:191;:::o;24546:188::-;24663:5;24629:25;:31;24655:4;24629:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24720:5;24686:40;;24714:4;24686:40;;;;;;;;;;;;24546:188;;:::o;4913:733::-;5071:1;5053:20;;:6;:20;;;5045:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5155:1;5134:23;;:9;:23;;;5126:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5210:47;5231:6;5239:9;5250:6;5210:20;:47::i;:::-;5270:21;5294:9;:17;5304:6;5294:17;;;;;;;;;;;;;;;;5270:41;;5347:6;5330:13;:23;;5322:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5468:6;5452:13;:22;5432:9;:17;5442:6;5432:17;;;;;;;;;;;;;;;:42;;;;5520:6;5496:9;:20;5506:9;5496:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5561:9;5544:35;;5553:6;5544:35;;;5572:6;5544:35;;;;;;:::i;:::-;;;;;;;;5592:46;5612:6;5620:9;5631:6;5592:19;:46::i;:::-;5034:612;4913:733;;;:::o;5654:482::-;5785:47;5806:6;5814:9;5825:6;5785:20;:47::i;:::-;5845:21;5869:9;:17;5879:6;5869:17;;;;;;;;;;;;;;;;5845:41;;5958:6;5942:13;:22;5922:9;:17;5932:6;5922:17;;;;;;;;;;;;;;;:42;;;;6010:6;5986:9;:20;5996:9;5986:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6051:9;6034:35;;6043:6;6034:35;;;6062:6;6034:35;;;;;;:::i;:::-;;;;;;;;6082:46;6102:6;6110:9;6121:6;6082:19;:46::i;:::-;5774:362;5654:482;;;:::o;32378:1994::-;32417:23;32443:24;32461:4;32443:9;:24::i;:::-;32417:50;;32478:25;32610:19;;32574:20;;32540:18;;32506;;:52;;;;:::i;:::-;:88;;;;:::i;:::-;:123;;;;:::i;:::-;32478:151;;32640:12;32688:1;32669:15;:20;:46;;;;32714:1;32693:17;:22;32669:46;32665:85;;;32732:7;;;;;32665:85;32805:2;32784:18;;:23;;;;:::i;:::-;32766:15;:41;32762:115;;;32863:2;32842:18;;:23;;;;:::i;:::-;32824:41;;32762:115;32938:23;33025:1;33005:17;32983:18;;32965:15;:36;;;;:::i;:::-;32964:58;;;;:::i;:::-;:62;;;;:::i;:::-;32938:88;;33037:26;33066:36;33086:15;33066;:19;;:36;;;;:::i;:::-;33037:65;;33115:25;33143:21;33115:49;;33177:36;33194:18;33177:16;:36::i;:::-;33226:18;33247:44;33273:17;33247:21;:25;;:44;;;;:::i;:::-;33226:65;;33304:18;33325:57;33364:17;33325:34;33340:18;;33325:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;33304:78;;33393:25;33421:59;33462:17;33421:36;33436:20;;33421:10;:14;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;33393:87;;33491:24;33518:58;33558:17;33518:35;33533:19;;33518:10;:14;;:35;;;;:::i;:::-;:39;;:58;;;;:::i;:::-;33491:85;;33589:23;33661:16;33641:17;33628:10;33615;:23;;;;:::i;:::-;:43;;;;:::i;:::-;:62;;;;:::i;:::-;33589:88;;33711:1;33690:18;:22;;;;33744:1;33723:18;:22;;;;33779:1;33756:20;:24;;;;33813:1;33791:19;:23;;;;33849:17;;;;;;;;;;;33841:31;;33880:17;33841:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33827:75;;;;;33937:1;33919:15;:19;:42;;;;;33960:1;33942:15;:19;33919:42;33915:278;;;33978:46;33991:15;34008;33978:12;:46::i;:::-;34044:137;34077:18;34114:15;34148:18;;34044:137;;;;;;;;:::i;:::-;;;;;;;;33915:278;34225:16;;;;;;;;;;;34217:30;;34255:16;34217:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34203:73;;;;;34309:15;;;;;;;;;;;34301:29;;34338:21;34301:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34287:77;;;;;32406:1966;;;;;;;;;;;32378:1994;:::o;9156:98::-;9214:7;9245:1;9241;:5;;;;:::i;:::-;9234:12;;9156:98;;;;:::o;9262:::-;9320:7;9351:1;9347;:5;;;;:::i;:::-;9340:12;;9262:98;;;;:::o;7538:125::-;;;;:::o;7671:124::-;;;;:::o;9050:98::-;9108:7;9139:1;9135;:5;;;;:::i;:::-;9128:12;;9050:98;;;;:::o;31252:589::-;31378:21;31416:1;31402:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31378:40;;31447:4;31429;31434:1;31429:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31473:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31463:4;31468:1;31463:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31508:62;31525:4;31540:15;31558:11;31508:8;:62::i;:::-;31609:15;:66;;;31690:11;31716:1;31760:4;31787;31807:15;31609:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31307:534;31252:589;:::o;31849:521::-;31997:62;32014:4;32029:15;32047:11;31997:8;:62::i;:::-;32102:15;:31;;;32141:9;32174:4;32194:11;32220:1;32263;32306:15;;;;;;;;;;;32336;32102:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31849:521;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:118::-;5823:24;5841:5;5823:24;:::i;:::-;5818:3;5811:37;5736:118;;:::o;5860:222::-;5953:4;5991:2;5980:9;5976:18;5968:26;;6004:71;6072:1;6061:9;6057:17;6048:6;6004:71;:::i;:::-;5860:222;;;;:::o;6088:765::-;6174:6;6182;6190;6198;6247:3;6235:9;6226:7;6222:23;6218:33;6215:120;;;6254:79;;:::i;:::-;6215:120;6374:1;6399:53;6444:7;6435:6;6424:9;6420:22;6399:53;:::i;:::-;6389:63;;6345:117;6501:2;6527:53;6572:7;6563:6;6552:9;6548:22;6527:53;:::i;:::-;6517:63;;6472:118;6629:2;6655:53;6700:7;6691:6;6680:9;6676:22;6655:53;:::i;:::-;6645:63;;6600:118;6757:2;6783:53;6828:7;6819:6;6808:9;6804:22;6783:53;:::i;:::-;6773:63;;6728:118;6088:765;;;;;;;:::o;6859:104::-;6904:7;6933:24;6951:5;6933:24;:::i;:::-;6922:35;;6859:104;;;:::o;6969:138::-;7050:32;7076:5;7050:32;:::i;:::-;7043:5;7040:43;7030:71;;7097:1;7094;7087:12;7030:71;6969:138;:::o;7113:155::-;7167:5;7205:6;7192:20;7183:29;;7221:41;7256:5;7221:41;:::i;:::-;7113:155;;;;:::o;7274:345::-;7341:6;7390:2;7378:9;7369:7;7365:23;7361:32;7358:119;;;7396:79;;:::i;:::-;7358:119;7516:1;7541:61;7594:7;7585:6;7574:9;7570:22;7541:61;:::i;:::-;7531:71;;7487:125;7274:345;;;;:::o;7625:86::-;7660:7;7700:4;7693:5;7689:16;7678:27;;7625:86;;;:::o;7717:112::-;7800:22;7816:5;7800:22;:::i;:::-;7795:3;7788:35;7717:112;;:::o;7835:214::-;7924:4;7962:2;7951:9;7947:18;7939:26;;7975:67;8039:1;8028:9;8024:17;8015:6;7975:67;:::i;:::-;7835:214;;;;:::o;8055:329::-;8114:6;8163:2;8151:9;8142:7;8138:23;8134:32;8131:119;;;8169:79;;:::i;:::-;8131:119;8289:1;8314:53;8359:7;8350:6;8339:9;8335:22;8314:53;:::i;:::-;8304:63;;8260:117;8055:329;;;;:::o;8390:142::-;8493:32;8519:5;8493:32;:::i;:::-;8488:3;8481:45;8390:142;;:::o;8538:254::-;8647:4;8685:2;8674:9;8670:18;8662:26;;8698:87;8782:1;8771:9;8767:17;8758:6;8698:87;:::i;:::-;8538:254;;;;:::o;8798:117::-;8907:1;8904;8897:12;8921:117;9030:1;9027;9020:12;9044:117;9153:1;9150;9143:12;9184:568;9257:8;9267:6;9317:3;9310:4;9302:6;9298:17;9294:27;9284:122;;9325:79;;:::i;:::-;9284:122;9438:6;9425:20;9415:30;;9468:18;9460:6;9457:30;9454:117;;;9490:79;;:::i;:::-;9454:117;9604:4;9596:6;9592:17;9580:29;;9658:3;9650:4;9642:6;9638:17;9628:8;9624:32;9621:41;9618:128;;;9665:79;;:::i;:::-;9618:128;9184:568;;;;;:::o;9758:116::-;9828:21;9843:5;9828:21;:::i;:::-;9821:5;9818:32;9808:60;;9864:1;9861;9854:12;9808:60;9758:116;:::o;9880:133::-;9923:5;9961:6;9948:20;9939:29;;9977:30;10001:5;9977:30;:::i;:::-;9880:133;;;;:::o;10019:698::-;10111:6;10119;10127;10176:2;10164:9;10155:7;10151:23;10147:32;10144:119;;;10182:79;;:::i;:::-;10144:119;10330:1;10319:9;10315:17;10302:31;10360:18;10352:6;10349:30;10346:117;;;10382:79;;:::i;:::-;10346:117;10495:80;10567:7;10558:6;10547:9;10543:22;10495:80;:::i;:::-;10477:98;;;;10273:312;10624:2;10650:50;10692:7;10683:6;10672:9;10668:22;10650:50;:::i;:::-;10640:60;;10595:115;10019:698;;;;;:::o;10723:468::-;10788:6;10796;10845:2;10833:9;10824:7;10820:23;10816:32;10813:119;;;10851:79;;:::i;:::-;10813:119;10971:1;10996:53;11041:7;11032:6;11021:9;11017:22;10996:53;:::i;:::-;10986:63;;10942:117;11098:2;11124:50;11166:7;11157:6;11146:9;11142:22;11124:50;:::i;:::-;11114:60;;11069:115;10723:468;;;;;:::o;11197:323::-;11253:6;11302:2;11290:9;11281:7;11277:23;11273:32;11270:119;;;11308:79;;:::i;:::-;11270:119;11428:1;11453:50;11495:7;11486:6;11475:9;11471:22;11453:50;:::i;:::-;11443:60;;11399:114;11197:323;;;;:::o;11526:474::-;11594:6;11602;11651:2;11639:9;11630:7;11626:23;11622:32;11619:119;;;11657:79;;:::i;:::-;11619:119;11777:1;11802:53;11847:7;11838:6;11827:9;11823:22;11802:53;:::i;:::-;11792:63;;11748:117;11904:2;11930:53;11975:7;11966:6;11955:9;11951:22;11930:53;:::i;:::-;11920:63;;11875:118;11526:474;;;;;:::o;12006:182::-;12146:34;12142:1;12134:6;12130:14;12123:58;12006:182;:::o;12194:366::-;12336:3;12357:67;12421:2;12416:3;12357:67;:::i;:::-;12350:74;;12433:93;12522:3;12433:93;:::i;:::-;12551:2;12546:3;12542:12;12535:19;;12194:366;;;:::o;12566:419::-;12732:4;12770:2;12759:9;12755:18;12747:26;;12819:9;12813:4;12809:20;12805:1;12794:9;12790:17;12783:47;12847:131;12973:4;12847:131;:::i;:::-;12839:139;;12566:419;;;:::o;12991:180::-;13039:77;13036:1;13029:88;13136:4;13133:1;13126:15;13160:4;13157:1;13150:15;13177:410;13217:7;13240:20;13258:1;13240:20;:::i;:::-;13235:25;;13274:20;13292:1;13274:20;:::i;:::-;13269:25;;13329:1;13326;13322:9;13351:30;13369:11;13351:30;:::i;:::-;13340:41;;13530:1;13521:7;13517:15;13514:1;13511:22;13491:1;13484:9;13464:83;13441:139;;13560:18;;:::i;:::-;13441:139;13225:362;13177:410;;;;:::o;13593:180::-;13641:77;13638:1;13631:88;13738:4;13735:1;13728:15;13762:4;13759:1;13752:15;13779:185;13819:1;13836:20;13854:1;13836:20;:::i;:::-;13831:25;;13870:20;13888:1;13870:20;:::i;:::-;13865:25;;13909:1;13899:35;;13914:18;;:::i;:::-;13899:35;13956:1;13953;13949:9;13944:14;;13779:185;;;;:::o;13970:228::-;14110:34;14106:1;14098:6;14094:14;14087:58;14179:11;14174:2;14166:6;14162:15;14155:36;13970:228;:::o;14204:366::-;14346:3;14367:67;14431:2;14426:3;14367:67;:::i;:::-;14360:74;;14443:93;14532:3;14443:93;:::i;:::-;14561:2;14556:3;14552:12;14545:19;;14204:366;;;:::o;14576:419::-;14742:4;14780:2;14769:9;14765:18;14757:26;;14829:9;14823:4;14819:20;14815:1;14804:9;14800:17;14793:47;14857:131;14983:4;14857:131;:::i;:::-;14849:139;;14576:419;;;:::o;15001:180::-;15049:77;15046:1;15039:88;15146:4;15143:1;15136:15;15170:4;15167:1;15160:15;15187:320;15231:6;15268:1;15262:4;15258:12;15248:22;;15315:1;15309:4;15305:12;15336:18;15326:81;;15392:4;15384:6;15380:17;15370:27;;15326:81;15454:2;15446:6;15443:14;15423:18;15420:38;15417:84;;15473:18;;:::i;:::-;15417:84;15238:269;15187:320;;;:::o;15513:223::-;15653:34;15649:1;15641:6;15637:14;15630:58;15722:6;15717:2;15709:6;15705:15;15698:31;15513:223;:::o;15742:366::-;15884:3;15905:67;15969:2;15964:3;15905:67;:::i;:::-;15898:74;;15981:93;16070:3;15981:93;:::i;:::-;16099:2;16094:3;16090:12;16083:19;;15742:366;;;:::o;16114:419::-;16280:4;16318:2;16307:9;16303:18;16295:26;;16367:9;16361:4;16357:20;16353:1;16342:9;16338:17;16331:47;16395:131;16521:4;16395:131;:::i;:::-;16387:139;;16114:419;;;:::o;16539:227::-;16679:34;16675:1;16667:6;16663:14;16656:58;16748:10;16743:2;16735:6;16731:15;16724:35;16539:227;:::o;16772:366::-;16914:3;16935:67;16999:2;16994:3;16935:67;:::i;:::-;16928:74;;17011:93;17100:3;17011:93;:::i;:::-;17129:2;17124:3;17120:12;17113:19;;16772:366;;;:::o;17144:419::-;17310:4;17348:2;17337:9;17333:18;17325:26;;17397:9;17391:4;17387:20;17383:1;17372:9;17368:17;17361:47;17425:131;17551:4;17425:131;:::i;:::-;17417:139;;17144:419;;;:::o;17569:191::-;17609:3;17628:20;17646:1;17628:20;:::i;:::-;17623:25;;17662:20;17680:1;17662:20;:::i;:::-;17657:25;;17705:1;17702;17698:9;17691:16;;17726:3;17723:1;17720:10;17717:36;;;17733:18;;:::i;:::-;17717:36;17569:191;;;;:::o;17766:180::-;17814:77;17811:1;17804:88;17911:4;17908:1;17901:15;17935:4;17932:1;17925:15;17952:233;17991:3;18014:24;18032:5;18014:24;:::i;:::-;18005:33;;18060:66;18053:5;18050:77;18047:103;;18130:18;;:::i;:::-;18047:103;18177:1;18170:5;18166:13;18159:20;;17952:233;;;:::o;18191:164::-;18331:16;18327:1;18319:6;18315:14;18308:40;18191:164;:::o;18361:366::-;18503:3;18524:67;18588:2;18583:3;18524:67;:::i;:::-;18517:74;;18600:93;18689:3;18600:93;:::i;:::-;18718:2;18713:3;18709:12;18702:19;;18361:366;;;:::o;18733:419::-;18899:4;18937:2;18926:9;18922:18;18914:26;;18986:9;18980:4;18976:20;18972:1;18961:9;18957:17;18950:47;19014:131;19140:4;19014:131;:::i;:::-;19006:139;;18733:419;;;:::o;19158:244::-;19298:34;19294:1;19286:6;19282:14;19275:58;19367:27;19362:2;19354:6;19350:15;19343:52;19158:244;:::o;19408:366::-;19550:3;19571:67;19635:2;19630:3;19571:67;:::i;:::-;19564:74;;19647:93;19736:3;19647:93;:::i;:::-;19765:2;19760:3;19756:12;19749:19;;19408:366;;;:::o;19780:419::-;19946:4;19984:2;19973:9;19969:18;19961:26;;20033:9;20027:4;20023:20;20019:1;20008:9;20004:17;19997:47;20061:131;20187:4;20061:131;:::i;:::-;20053:139;;19780:419;;;:::o;20205:224::-;20345:34;20341:1;20333:6;20329:14;20322:58;20414:7;20409:2;20401:6;20397:15;20390:32;20205:224;:::o;20435:366::-;20577:3;20598:67;20662:2;20657:3;20598:67;:::i;:::-;20591:74;;20674:93;20763:3;20674:93;:::i;:::-;20792:2;20787:3;20783:12;20776:19;;20435:366;;;:::o;20807:419::-;20973:4;21011:2;21000:9;20996:18;20988:26;;21060:9;21054:4;21050:20;21046:1;21035:9;21031:17;21024:47;21088:131;21214:4;21088:131;:::i;:::-;21080:139;;20807:419;;;:::o;21232:240::-;21372:34;21368:1;21360:6;21356:14;21349:58;21441:23;21436:2;21428:6;21424:15;21417:48;21232:240;:::o;21478:366::-;21620:3;21641:67;21705:2;21700:3;21641:67;:::i;:::-;21634:74;;21717:93;21806:3;21717:93;:::i;:::-;21835:2;21830:3;21826:12;21819:19;;21478:366;;;:::o;21850:419::-;22016:4;22054:2;22043:9;22039:18;22031:26;;22103:9;22097:4;22093:20;22089:1;22078:9;22074:17;22067:47;22131:131;22257:4;22131:131;:::i;:::-;22123:139;;21850:419;;;:::o;22275:239::-;22415:34;22411:1;22403:6;22399:14;22392:58;22484:22;22479:2;22471:6;22467:15;22460:47;22275:239;:::o;22520:366::-;22662:3;22683:67;22747:2;22742:3;22683:67;:::i;:::-;22676:74;;22759:93;22848:3;22759:93;:::i;:::-;22877:2;22872:3;22868:12;22861:19;;22520:366;;;:::o;22892:419::-;23058:4;23096:2;23085:9;23081:18;23073:26;;23145:9;23139:4;23135:20;23131:1;23120:9;23116:17;23109:47;23173:131;23299:4;23173:131;:::i;:::-;23165:139;;22892:419;;;:::o;23317:225::-;23457:34;23453:1;23445:6;23441:14;23434:58;23526:8;23521:2;23513:6;23509:15;23502:33;23317:225;:::o;23548:366::-;23690:3;23711:67;23775:2;23770:3;23711:67;:::i;:::-;23704:74;;23787:93;23876:3;23787:93;:::i;:::-;23905:2;23900:3;23896:12;23889:19;;23548:366;;;:::o;23920:419::-;24086:4;24124:2;24113:9;24109:18;24101:26;;24173:9;24167:4;24163:20;24159:1;24148:9;24144:17;24137:47;24201:131;24327:4;24201:131;:::i;:::-;24193:139;;23920:419;;;:::o;24345:223::-;24485:34;24481:1;24473:6;24469:14;24462:58;24554:6;24549:2;24541:6;24537:15;24530:31;24345:223;:::o;24574:366::-;24716:3;24737:67;24801:2;24796:3;24737:67;:::i;:::-;24730:74;;24813:93;24902:3;24813:93;:::i;:::-;24931:2;24926:3;24922:12;24915:19;;24574:366;;;:::o;24946:419::-;25112:4;25150:2;25139:9;25135:18;25127:26;;25199:9;25193:4;25189:20;25185:1;25174:9;25170:17;25163:47;25227:131;25353:4;25227:131;:::i;:::-;25219:139;;24946:419;;;:::o;25371:221::-;25511:34;25507:1;25499:6;25495:14;25488:58;25580:4;25575:2;25567:6;25563:15;25556:29;25371:221;:::o;25598:366::-;25740:3;25761:67;25825:2;25820:3;25761:67;:::i;:::-;25754:74;;25837:93;25926:3;25837:93;:::i;:::-;25955:2;25950:3;25946:12;25939:19;;25598:366;;;:::o;25970:419::-;26136:4;26174:2;26163:9;26159:18;26151:26;;26223:9;26217:4;26213:20;26209:1;26198:9;26194:17;26187:47;26251:131;26377:4;26251:131;:::i;:::-;26243:139;;25970:419;;;:::o;26395:224::-;26535:34;26531:1;26523:6;26519:14;26512:58;26604:7;26599:2;26591:6;26587:15;26580:32;26395:224;:::o;26625:366::-;26767:3;26788:67;26852:2;26847:3;26788:67;:::i;:::-;26781:74;;26864:93;26953:3;26864:93;:::i;:::-;26982:2;26977:3;26973:12;26966:19;;26625:366;;;:::o;26997:419::-;27163:4;27201:2;27190:9;27186:18;27178:26;;27250:9;27244:4;27240:20;27236:1;27225:9;27221:17;27214:47;27278:131;27404:4;27278:131;:::i;:::-;27270:139;;26997:419;;;:::o;27422:222::-;27562:34;27558:1;27550:6;27546:14;27539:58;27631:5;27626:2;27618:6;27614:15;27607:30;27422:222;:::o;27650:366::-;27792:3;27813:67;27877:2;27872:3;27813:67;:::i;:::-;27806:74;;27889:93;27978:3;27889:93;:::i;:::-;28007:2;28002:3;27998:12;27991:19;;27650:366;;;:::o;28022:419::-;28188:4;28226:2;28215:9;28211:18;28203:26;;28275:9;28269:4;28265:20;28261:1;28250:9;28246:17;28239:47;28303:131;28429:4;28303:131;:::i;:::-;28295:139;;28022:419;;;:::o;28447:156::-;28587:8;28583:1;28575:6;28571:14;28564:32;28447:156;:::o;28609:365::-;28751:3;28772:66;28836:1;28831:3;28772:66;:::i;:::-;28765:73;;28847:93;28936:3;28847:93;:::i;:::-;28965:2;28960:3;28956:12;28949:19;;28609:365;;;:::o;28980:419::-;29146:4;29184:2;29173:9;29169:18;29161:26;;29233:9;29227:4;29223:20;29219:1;29208:9;29204:17;29197:47;29261:131;29387:4;29261:131;:::i;:::-;29253:139;;28980:419;;;:::o;29405:172::-;29545:24;29541:1;29533:6;29529:14;29522:48;29405:172;:::o;29583:366::-;29725:3;29746:67;29810:2;29805:3;29746:67;:::i;:::-;29739:74;;29822:93;29911:3;29822:93;:::i;:::-;29940:2;29935:3;29931:12;29924:19;;29583:366;;;:::o;29955:419::-;30121:4;30159:2;30148:9;30144:18;30136:26;;30208:9;30202:4;30198:20;30194:1;30183:9;30179:17;30172:47;30236:131;30362:4;30236:131;:::i;:::-;30228:139;;29955:419;;;:::o;30380:297::-;30520:34;30516:1;30508:6;30504:14;30497:58;30589:34;30584:2;30576:6;30572:15;30565:59;30658:11;30653:2;30645:6;30641:15;30634:36;30380:297;:::o;30683:366::-;30825:3;30846:67;30910:2;30905:3;30846:67;:::i;:::-;30839:74;;30922:93;31011:3;30922:93;:::i;:::-;31040:2;31035:3;31031:12;31024:19;;30683:366;;;:::o;31055:419::-;31221:4;31259:2;31248:9;31244:18;31236:26;;31308:9;31302:4;31298:20;31294:1;31283:9;31279:17;31272:47;31336:131;31462:4;31336:131;:::i;:::-;31328:139;;31055:419;;;:::o;31480:234::-;31620:34;31616:1;31608:6;31604:14;31597:58;31689:17;31684:2;31676:6;31672:15;31665:42;31480:234;:::o;31720:366::-;31862:3;31883:67;31947:2;31942:3;31883:67;:::i;:::-;31876:74;;31959:93;32048:3;31959:93;:::i;:::-;32077:2;32072:3;32068:12;32061:19;;31720:366;;;:::o;32092:419::-;32258:4;32296:2;32285:9;32281:18;32273:26;;32345:9;32339:4;32335:20;32331:1;32320:9;32316:17;32309:47;32373:131;32499:4;32373:131;:::i;:::-;32365:139;;32092:419;;;:::o;32517:169::-;32657:21;32653:1;32645:6;32641:14;32634:45;32517:169;:::o;32692:366::-;32834:3;32855:67;32919:2;32914:3;32855:67;:::i;:::-;32848:74;;32931:93;33020:3;32931:93;:::i;:::-;33049:2;33044:3;33040:12;33033:19;;32692:366;;;:::o;33064:419::-;33230:4;33268:2;33257:9;33253:18;33245:26;;33317:9;33311:4;33307:20;33303:1;33292:9;33288:17;33281:47;33345:131;33471:4;33345:131;:::i;:::-;33337:139;;33064:419;;;:::o;33489:235::-;33629:34;33625:1;33617:6;33613:14;33606:58;33698:18;33693:2;33685:6;33681:15;33674:43;33489:235;:::o;33730:366::-;33872:3;33893:67;33957:2;33952:3;33893:67;:::i;:::-;33886:74;;33969:93;34058:3;33969:93;:::i;:::-;34087:2;34082:3;34078:12;34071:19;;33730:366;;;:::o;34102:419::-;34268:4;34306:2;34295:9;34291:18;34283:26;;34355:9;34349:4;34345:20;34341:1;34330:9;34326:17;34319:47;34383:131;34509:4;34383:131;:::i;:::-;34375:139;;34102:419;;;:::o;34527:332::-;34648:4;34686:2;34675:9;34671:18;34663:26;;34699:71;34767:1;34756:9;34752:17;34743:6;34699:71;:::i;:::-;34780:72;34848:2;34837:9;34833:18;34824:6;34780:72;:::i;:::-;34527:332;;;;;:::o;34865:194::-;34905:4;34925:20;34943:1;34925:20;:::i;:::-;34920:25;;34959:20;34977:1;34959:20;:::i;:::-;34954:25;;35003:1;35000;34996:9;34988:17;;35027:1;35021:4;35018:11;35015:37;;;35032:18;;:::i;:::-;35015:37;34865:194;;;;:::o;35065:225::-;35205:34;35201:1;35193:6;35189:14;35182:58;35274:8;35269:2;35261:6;35257:15;35250:33;35065:225;:::o;35296:366::-;35438:3;35459:67;35523:2;35518:3;35459:67;:::i;:::-;35452:74;;35535:93;35624:3;35535:93;:::i;:::-;35653:2;35648:3;35644:12;35637:19;;35296:366;;;:::o;35668:419::-;35834:4;35872:2;35861:9;35857:18;35849:26;;35921:9;35915:4;35911:20;35907:1;35896:9;35892:17;35885:47;35949:131;36075:4;35949:131;:::i;:::-;35941:139;;35668:419;;;:::o;36093:147::-;36194:11;36231:3;36216:18;;36093:147;;;;:::o;36246:114::-;;:::o;36366:398::-;36525:3;36546:83;36627:1;36622:3;36546:83;:::i;:::-;36539:90;;36638:93;36727:3;36638:93;:::i;:::-;36756:1;36751:3;36747:11;36740:18;;36366:398;;;:::o;36770:379::-;36954:3;36976:147;37119:3;36976:147;:::i;:::-;36969:154;;37140:3;37133:10;;36770:379;;;:::o;37155:442::-;37304:4;37342:2;37331:9;37327:18;37319:26;;37355:71;37423:1;37412:9;37408:17;37399:6;37355:71;:::i;:::-;37436:72;37504:2;37493:9;37489:18;37480:6;37436:72;:::i;:::-;37518;37586:2;37575:9;37571:18;37562:6;37518:72;:::i;:::-;37155:442;;;;;;:::o;37603:180::-;37651:77;37648:1;37641:88;37748:4;37745:1;37738:15;37772:4;37769:1;37762:15;37789:143;37846:5;37877:6;37871:13;37862:22;;37893:33;37920:5;37893:33;:::i;:::-;37789:143;;;;:::o;37938:351::-;38008:6;38057:2;38045:9;38036:7;38032:23;38028:32;38025:119;;;38063:79;;:::i;:::-;38025:119;38183:1;38208:64;38264:7;38255:6;38244:9;38240:22;38208:64;:::i;:::-;38198:74;;38154:128;37938:351;;;;:::o;38295:85::-;38340:7;38369:5;38358:16;;38295:85;;;:::o;38386:158::-;38444:9;38477:61;38495:42;38504:32;38530:5;38504:32;:::i;:::-;38495:42;:::i;:::-;38477:61;:::i;:::-;38464:74;;38386:158;;;:::o;38550:147::-;38645:45;38684:5;38645:45;:::i;:::-;38640:3;38633:58;38550:147;;:::o;38703:114::-;38770:6;38804:5;38798:12;38788:22;;38703:114;;;:::o;38823:184::-;38922:11;38956:6;38951:3;38944:19;38996:4;38991:3;38987:14;38972:29;;38823:184;;;;:::o;39013:132::-;39080:4;39103:3;39095:11;;39133:4;39128:3;39124:14;39116:22;;39013:132;;;:::o;39151:108::-;39228:24;39246:5;39228:24;:::i;:::-;39223:3;39216:37;39151:108;;:::o;39265:179::-;39334:10;39355:46;39397:3;39389:6;39355:46;:::i;:::-;39433:4;39428:3;39424:14;39410:28;;39265:179;;;;:::o;39450:113::-;39520:4;39552;39547:3;39543:14;39535:22;;39450:113;;;:::o;39599:732::-;39718:3;39747:54;39795:5;39747:54;:::i;:::-;39817:86;39896:6;39891:3;39817:86;:::i;:::-;39810:93;;39927:56;39977:5;39927:56;:::i;:::-;40006:7;40037:1;40022:284;40047:6;40044:1;40041:13;40022:284;;;40123:6;40117:13;40150:63;40209:3;40194:13;40150:63;:::i;:::-;40143:70;;40236:60;40289:6;40236:60;:::i;:::-;40226:70;;40082:224;40069:1;40066;40062:9;40057:14;;40022:284;;;40026:14;40322:3;40315:10;;39723:608;;;39599:732;;;;:::o;40337:831::-;40600:4;40638:3;40627:9;40623:19;40615:27;;40652:71;40720:1;40709:9;40705:17;40696:6;40652:71;:::i;:::-;40733:80;40809:2;40798:9;40794:18;40785:6;40733:80;:::i;:::-;40860:9;40854:4;40850:20;40845:2;40834:9;40830:18;40823:48;40888:108;40991:4;40982:6;40888:108;:::i;:::-;40880:116;;41006:72;41074:2;41063:9;41059:18;41050:6;41006:72;:::i;:::-;41088:73;41156:3;41145:9;41141:19;41132:6;41088:73;:::i;:::-;40337:831;;;;;;;;:::o;41174:134::-;41232:9;41265:37;41296:5;41265:37;:::i;:::-;41252:50;;41174:134;;;:::o;41314:147::-;41409:45;41448:5;41409:45;:::i;:::-;41404:3;41397:58;41314:147;;:::o;41467:823::-;41724:4;41762:3;41751:9;41747:19;41739:27;;41776:71;41844:1;41833:9;41829:17;41820:6;41776:71;:::i;:::-;41857:72;41925:2;41914:9;41910:18;41901:6;41857:72;:::i;:::-;41939:80;42015:2;42004:9;42000:18;41991:6;41939:80;:::i;:::-;42029;42105:2;42094:9;42090:18;42081:6;42029:80;:::i;:::-;42119:81;42195:3;42184:9;42180:19;42171:6;42119:81;:::i;:::-;42210:73;42278:3;42267:9;42263:19;42254:6;42210:73;:::i;:::-;41467:823;;;;;;;;;:::o;42296:143::-;42353:5;42384:6;42378:13;42369:22;;42400:33;42427:5;42400:33;:::i;:::-;42296:143;;;;:::o;42445:663::-;42533:6;42541;42549;42598:2;42586:9;42577:7;42573:23;42569:32;42566:119;;;42604:79;;:::i;:::-;42566:119;42724:1;42749:64;42805:7;42796:6;42785:9;42781:22;42749:64;:::i;:::-;42739:74;;42695:128;42862:2;42888:64;42944:7;42935:6;42924:9;42920:22;42888:64;:::i;:::-;42878:74;;42833:129;43001:2;43027:64;43083:7;43074:6;43063:9;43059:22;43027:64;:::i;:::-;43017:74;;42972:129;42445:663;;;;;:::o
Swarm Source
ipfs://4c18b7a8cf4230f750b6a0188ba7ee39abc2f53d53dfe85f5be75fe7ee2d25b8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.