More Info
Private Name Tags
ContractCreator
TokenTracker
Multichain Info
No addresses found
Latest 25 from a total of 50 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15510271 | 928 days ago | IN | 0 ETH | 0.00042682 | ||||
Approve | 15412847 | 943 days ago | IN | 0 ETH | 0.00094524 | ||||
Approve | 15408422 | 944 days ago | IN | 0 ETH | 0.00035854 | ||||
Approve | 15407947 | 944 days ago | IN | 0 ETH | 0.00037977 | ||||
Approve | 15407943 | 944 days ago | IN | 0 ETH | 0.00032099 | ||||
Approve | 15407938 | 944 days ago | IN | 0 ETH | 0.00033398 | ||||
Approve | 15407637 | 944 days ago | IN | 0 ETH | 0.00030734 | ||||
Approve | 15407616 | 944 days ago | IN | 0 ETH | 0.00035856 | ||||
Renounce Ownersh... | 15407614 | 944 days ago | IN | 0 ETH | 0.00019499 | ||||
Remove Limits | 15407611 | 944 days ago | IN | 0 ETH | 0.00020992 | ||||
Approve | 15407607 | 944 days ago | IN | 0 ETH | 0.00026665 | ||||
Approve | 15407571 | 944 days ago | IN | 0 ETH | 0.00037729 | ||||
Approve | 15407569 | 944 days ago | IN | 0 ETH | 0.0003945 | ||||
Approve | 15407567 | 944 days ago | IN | 0 ETH | 0.00036587 | ||||
Approve | 15407566 | 944 days ago | IN | 0 ETH | 0.00035988 | ||||
Approve | 15407563 | 944 days ago | IN | 0 ETH | 0.00038839 | ||||
Approve | 15407556 | 944 days ago | IN | 0 ETH | 0.00042883 | ||||
Approve | 15407554 | 944 days ago | IN | 0 ETH | 0.00043794 | ||||
Approve | 15407551 | 944 days ago | IN | 0 ETH | 0.0004686 | ||||
Approve | 15407551 | 944 days ago | IN | 0 ETH | 0.00103976 | ||||
Approve | 15407547 | 944 days ago | IN | 0 ETH | 0.00050243 | ||||
Approve | 15407547 | 944 days ago | IN | 0 ETH | 0.00050243 | ||||
Approve | 15407547 | 944 days ago | IN | 0 ETH | 0.00050243 | ||||
Approve | 15407547 | 944 days ago | IN | 0 ETH | 0.00137152 | ||||
Approve | 15407546 | 944 days ago | IN | 0 ETH | 0.00047262 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 15441074 | 939 days ago | 0.00018327 ETH | ||||
Transfer | 15441074 | 939 days ago | 0.00018327 ETH | ||||
Add Liquidity ET... | 15441074 | 939 days ago | 0.00148632 ETH | ||||
Transfer | 15441074 | 939 days ago | 0.00024772 ETH | ||||
Transfer | 15441074 | 939 days ago | 0.00173405 ETH | ||||
Transfer | 15436378 | 940 days ago | 0.0001932 ETH | ||||
Transfer | 15436378 | 940 days ago | 0.0001932 ETH | ||||
Add Liquidity ET... | 15436378 | 940 days ago | 0.0015665 ETH | ||||
Transfer | 15436378 | 940 days ago | 0.00026108 ETH | ||||
Transfer | 15436378 | 940 days ago | 0.00182759 ETH | ||||
Transfer | 15409209 | 944 days ago | 0.00020396 ETH | ||||
Transfer | 15409209 | 944 days ago | 0.00020396 ETH | ||||
Add Liquidity ET... | 15409209 | 944 days ago | 0.00165343 ETH | ||||
Transfer | 15409209 | 944 days ago | 0.00027557 ETH | ||||
Transfer | 15409209 | 944 days ago | 0.001929 ETH | ||||
Transfer | 15409198 | 944 days ago | 0.00023826 ETH | ||||
Transfer | 15409198 | 944 days ago | 0.00023826 ETH | ||||
Add Liquidity ET... | 15409198 | 944 days ago | 0.00192938 ETH | ||||
Transfer | 15409198 | 944 days ago | 0.00032156 ETH | ||||
Transfer | 15409198 | 944 days ago | 0.00225095 ETH | ||||
Transfer | 15409106 | 944 days ago | 0.00018079 ETH | ||||
Transfer | 15409106 | 944 days ago | 0.00018079 ETH | ||||
Add Liquidity ET... | 15409106 | 944 days ago | 0.00146748 ETH | ||||
Transfer | 15409106 | 944 days ago | 0.00024458 ETH | ||||
Transfer | 15409106 | 944 days ago | 0.00171206 ETH |
Loading...
Loading
Contract Name:
TIMEREUM
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-25 */ // // "$TIME is an illusion". Albert Einstein // // Website: https://timereum.xyz/ // // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint 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 (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint 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 (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); 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 (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); 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(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } 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 { using SafeMath for uint256; 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); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); 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); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(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 = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(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); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(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 {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract TIMEREUM is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address private marketingWallet; address private devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public enableEarlySellTax = true; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch // Seller Map mapping (address => uint256) private _holderFirstBuyTimestamp; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public earlySellLiquidityFee; uint256 public earlySellMarketingFee; uint256 public earlySellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount 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 devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("TIMEREUM", "TIME") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 0; uint256 _buyLiquidityFee = 6; uint256 _buyDevFee = 1; uint256 _sellMarketingFee = 0; uint256 _sellLiquidityFee = 6; uint256 _sellDevFee = 1; uint256 _earlySellLiquidityFee = 6; uint256 _earlySellMarketingFee = 0; uint256 _earlySellDevFee = 1; uint256 totalSupply = 1 * 1e6 * 1e18; maxTransactionAmount = totalSupply * 2 / 100; maxWallet = totalSupply * 3 / 100; swapTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellMarketingFee = _earlySellMarketingFee; earlySellDevFee = _earlySellDevFee; marketingWallet = address(owner()); // set as marketing wallet devWallet = address(owner()); // set as dev wallet excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function setEarlySellTax(bool onoff) external onlyOwner { enableEarlySellTax = onoff; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(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 { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner(){ buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 10, "Must keep buy fees at 10% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _earlySellLiquidityFee, uint256 _earlySellMarketingFee, uint256 _earlySellDevFee) external onlyOwner(){ sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellMarketingFee = _earlySellMarketingFee; earlySellDevFee = _earlySellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 10, "Must keep sell fees at 10% or less"); uint256 earlySellTotalFees = _earlySellMarketingFee + _earlySellLiquidityFee + _earlySellDevFee; require(earlySellTotalFees <= 10, "Must keep early sell fee at 10% or less"); } 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 updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; excludeFromFees(marketingWallet,true); excludeFromMaxTransaction(marketingWallet,true); } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; excludeFromFees(devWallet,true); excludeFromMaxTransaction(devWallet,true); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !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] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } bool isBuy = from == uniswapV2Pair; if (!isBuy && enableEarlySellTax) { if (_holderFirstBuyTimestamp[from] != 0 && (_holderFirstBuyTimestamp[from] + (24 hours) >= block.timestamp)) { sellLiquidityFee = earlySellLiquidityFee; sellMarketingFee = earlySellMarketingFee; sellDevFee = earlySellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } else { sellLiquidityFee = 6; sellMarketingFee = 0; sellDevFee = 1; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } } else { if (_holderFirstBuyTimestamp[to] == 0) { _holderFirstBuyTimestamp[to] = block.timestamp; } if (!enableEarlySellTax) { sellLiquidityFee = 6; sellMarketingFee = 0; sellDevFee = 1; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } } 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(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } 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 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"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":"devWalletUpdated","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","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":[],"name":"buyDevFee","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":"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":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"maxTransactionAmount","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":"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":"sellDevFee","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":"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":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","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":"tokensForDev","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":"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":"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":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600b60036101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200009857600080fd5b506040518060400160405280600881526020017f54494d455245554d0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f54494d450000000000000000000000000000000000000000000000000000000081525081600390805190602001906200011d92919062000bf4565b5080600490805190602001906200013692919062000bf4565b50505060006200014b620006c060201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000216816001620006c860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029157600080fd5b505afa158015620002a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cc919062000d0e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000d0e565b6040518363ffffffff1660e01b81526004016200038992919062000d51565b602060405180830381600087803b158015620003a457600080fd5b505af1158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df919062000d0e565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200042760a0516001620006c860201b60201c565b6200043c60a0516001620007c560201b60201c565b600080600690506000600190506000806006905060006001905060006006905060008060019050600069d3c21bcecceda10000009050606460028262000483919062000db7565b6200048f919062000e47565b6008819055506064600382620004a6919062000db7565b620004b2919062000e47565b600a81905550612710600a82620004ca919062000db7565b620004d6919062000e47565b60098190555089601081905550886011819055508760128190555060125460115460105462000506919062000e7f565b62000512919062000e7f565b600f8190555086601481905550856015819055508460168190555060165460155460145462000542919062000e7f565b6200054e919062000e7f565b601381905550836017819055508260188190555081601981905550620005796200086660201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005c96200086660201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200062b6200061d6200086660201b60201c565b60016200089060201b60201c565b6200063e3060016200089060201b60201c565b6200065361dead60016200089060201b60201c565b62000675620006676200086660201b60201c565b6001620006c860201b60201c565b62000688306001620006c860201b60201c565b6200069d61dead6001620006c860201b60201c565b620006af3382620009dd60201b60201c565b505050505050505050505062001110565b600033905090565b620006d8620006c060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200076a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007619062000f3d565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008a0620006c060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000932576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009299062000f3d565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009d1919062000f7c565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a479062000fe9565b60405180910390fd5b62000a646000838362000b8c60201b60201c565b62000a808160025462000b9160201b620026591790919060201c565b60028190555062000ade816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b9160201b620026591790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b8091906200101c565b60405180910390a35050565b505050565b600080828462000ba2919062000e7f565b90508381101562000bea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000be19062001089565b60405180910390fd5b8091505092915050565b82805462000c0290620010da565b90600052602060002090601f01602090048101928262000c26576000855562000c72565b82601f1062000c4157805160ff191683800117855562000c72565b8280016001018555821562000c72579182015b8281111562000c7157825182559160200191906001019062000c54565b5b50905062000c81919062000c85565b5090565b5b8082111562000ca057600081600090555060010162000c86565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cd68262000ca9565b9050919050565b62000ce88162000cc9565b811462000cf457600080fd5b50565b60008151905062000d088162000cdd565b92915050565b60006020828403121562000d275762000d2662000ca4565b5b600062000d378482850162000cf7565b91505092915050565b62000d4b8162000cc9565b82525050565b600060408201905062000d68600083018562000d40565b62000d77602083018462000d40565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000dc48262000d7e565b915062000dd18362000d7e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e0d5762000e0c62000d88565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e548262000d7e565b915062000e618362000d7e565b92508262000e745762000e7362000e18565b5b828204905092915050565b600062000e8c8262000d7e565b915062000e998362000d7e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ed15762000ed062000d88565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f2560208362000edc565b915062000f328262000eed565b602082019050919050565b6000602082019050818103600083015262000f588162000f16565b9050919050565b60008115159050919050565b62000f768162000f5f565b82525050565b600060208201905062000f93600083018462000f6b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fd1601f8362000edc565b915062000fde8262000f99565b602082019050919050565b60006020820190508181036000830152620010048162000fc2565b9050919050565b620010168162000d7e565b82525050565b60006020820190506200103360008301846200100b565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001071601b8362000edc565b91506200107e8262001039565b602082019050919050565b60006020820190508181036000830152620010a48162001062565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010f357607f821691505b602082108114156200110a5762001109620010ab565b5b50919050565b60805160a051615819620011756000396000818161147101528181611c6601528181612c42015261304b015260008181610e2901528181612bea01528181613fcf015281816140bf015281816140e60152818161418201526141a901526158196000f3fe60806040526004361061036f5760003560e01c80638da5cb5b116101c6578063b62496f5116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610cad578063f2fde38b14610cd8578063f637434214610d01578063f8b45b0514610d2c57610376565b8063dd62ed3e14610c1a578063e2f4560514610c57578063e884f26014610c8257610376565b8063c18bc195116100d1578063c18bc19514610b70578063c876d0b914610b99578063c8c8ebe414610bc4578063d85ba06314610bef57610376565b8063b62496f514610adf578063bbc0c74214610b1c578063c024666814610b4757610376565b8063a0d82dc511610164578063a4d15b641161013e578063a4d15b6414610a23578063a7fc9e2114610a4e578063a9059cbb14610a79578063aacebbe314610ab657610376565b8063a0d82dc514610992578063a2657778146109bd578063a457c2d7146109e657610376565b806395d89b41116101a057806395d89b41146108e85780639a7a23d6146109135780639c3b4fdc1461093c5780639fccce321461096757610376565b80638da5cb5b146108695780639213691314610894578063924de9b7146108bf57610376565b806339509351116102a057806370a082311161023e5780637571336a116102185780637571336a146107d55780637bce5a04146107fe5780638095d564146108295780638a8c523c1461085257610376565b806370a0823114610756578063715018a614610793578063751039fc146107aa57610376565b80634fbee1931161027a5780634fbee19314610698578063541a43cf146106d55780636a486a8e146107005780636ddd17131461072b57610376565b8063395093511461060557806349bd5a5e146106425780634a62bb651461066d57610376565b80631f3fed8f1161030d57806323b872dd116102e757806323b872dd1461054757806327c8f835146105845780632bf3d42d146105af578063313ce567146105da57610376565b80631f3fed8f146104ca578063203e727e146104f557806322d3e2aa1461051e57610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631816467f146104765780631a8145bb1461049f57610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d57565b60405161039d9190614363565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061441e565b610de9565b6040516103da9190614479565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614494565b610e07565b6040516104179190614479565b60405180910390f35b34801561042c57600080fd5b50610435610e27565b6040516104429190614520565b60405180910390f35b34801561045757600080fd5b50610460610e4b565b60405161046d919061454a565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190614494565b610e55565b005b3480156104ab57600080fd5b506104b4611006565b6040516104c1919061454a565b60405180910390f35b3480156104d657600080fd5b506104df61100c565b6040516104ec919061454a565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190614565565b611012565b005b34801561052a57600080fd5b5061054560048036038101906105409190614592565b61113c565b005b34801561055357600080fd5b5061056e6004803603810190610569919061461f565b6112ce565b60405161057b9190614479565b60405180910390f35b34801561059057600080fd5b506105996113a7565b6040516105a69190614681565b60405180910390f35b3480156105bb57600080fd5b506105c46113ad565b6040516105d1919061454a565b60405180910390f35b3480156105e657600080fd5b506105ef6113b3565b6040516105fc91906146b8565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061441e565b6113bc565b6040516106399190614479565b60405180910390f35b34801561064e57600080fd5b5061065761146f565b6040516106649190614681565b60405180910390f35b34801561067957600080fd5b50610682611493565b60405161068f9190614479565b60405180910390f35b3480156106a457600080fd5b506106bf60048036038101906106ba9190614494565b6114a6565b6040516106cc9190614479565b60405180910390f35b3480156106e157600080fd5b506106ea6114fc565b6040516106f7919061454a565b60405180910390f35b34801561070c57600080fd5b50610715611502565b604051610722919061454a565b60405180910390f35b34801561073757600080fd5b50610740611508565b60405161074d9190614479565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190614494565b61151b565b60405161078a919061454a565b60405180910390f35b34801561079f57600080fd5b506107a8611563565b005b3480156107b657600080fd5b506107bf6116bb565b6040516107cc9190614479565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906146ff565b611776565b005b34801561080a57600080fd5b50610813611868565b604051610820919061454a565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b919061473f565b61186e565b005b34801561085e57600080fd5b50610867611988565b005b34801561087557600080fd5b5061087e611a57565b60405161088b9190614681565b60405180910390f35b3480156108a057600080fd5b506108a9611a81565b6040516108b6919061454a565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e19190614792565b611a87565b005b3480156108f457600080fd5b506108fd611b3b565b60405161090a9190614363565b60405180910390f35b34801561091f57600080fd5b5061093a600480360381019061093591906146ff565b611bcd565b005b34801561094857600080fd5b50610951611d01565b60405161095e919061454a565b60405180910390f35b34801561097357600080fd5b5061097c611d07565b604051610989919061454a565b60405180910390f35b34801561099e57600080fd5b506109a7611d0d565b6040516109b4919061454a565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190614792565b611d13565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061441e565b611dc7565b604051610a1a9190614479565b60405180910390f35b348015610a2f57600080fd5b50610a38611e94565b604051610a459190614479565b60405180910390f35b348015610a5a57600080fd5b50610a63611ea7565b604051610a70919061454a565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b919061441e565b611ead565b604051610aad9190614479565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614494565b611ecb565b005b348015610aeb57600080fd5b50610b066004803603810190610b019190614494565b61207c565b604051610b139190614479565b60405180910390f35b348015610b2857600080fd5b50610b3161209c565b604051610b3e9190614479565b60405180910390f35b348015610b5357600080fd5b50610b6e6004803603810190610b6991906146ff565b6120af565b005b348015610b7c57600080fd5b50610b976004803603810190610b929190614565565b6121ef565b005b348015610ba557600080fd5b50610bae612319565b604051610bbb9190614479565b60405180910390f35b348015610bd057600080fd5b50610bd961232c565b604051610be6919061454a565b60405180910390f35b348015610bfb57600080fd5b50610c04612332565b604051610c11919061454a565b60405180910390f35b348015610c2657600080fd5b50610c416004803603810190610c3c91906147bf565b612338565b604051610c4e919061454a565b60405180910390f35b348015610c6357600080fd5b50610c6c6123bf565b604051610c79919061454a565b60405180910390f35b348015610c8e57600080fd5b50610c976123c5565b604051610ca49190614479565b60405180910390f35b348015610cb957600080fd5b50610cc2612480565b604051610ccf919061454a565b60405180910390f35b348015610ce457600080fd5b50610cff6004803603810190610cfa9190614494565b612486565b005b348015610d0d57600080fd5b50610d1661264d565b604051610d23919061454a565b60405180910390f35b348015610d3857600080fd5b50610d41612653565b604051610d4e919061454a565b60405180910390f35b606060038054610d669061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d929061482e565b8015610ddf5780601f10610db457610100808354040283529160200191610ddf565b820191906000526020600020905b815481529060010190602001808311610dc257829003601f168201915b5050505050905090565b6000610dfd610df66126b7565b84846126bf565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610e5d6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906148ac565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b611003600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601b5481565b601a5481565b61101a6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906148ac565b60405180910390fd5b670de0b6b3a76400006103e860056110bf610e4b565b6110c991906148fb565b6110d39190614984565b6110dd9190614984565b81101561111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690614a27565b60405180910390fd5b670de0b6b3a76400008161113391906148fb565b60088190555050565b6111446126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906148ac565b60405180910390fd5b8560148190555084601581905550836016819055508260178190555081601881905550806019819055506016546015546014546112109190614a47565b61121a9190614a47565b601381905550600a6013541115611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90614b0f565b60405180910390fd5b60008184846112759190614a47565b61127f9190614a47565b9050600a8111156112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90614ba1565b60405180910390fd5b50505050505050565b60006112db84848461288a565b61139c846112e76126b7565b6113978560405180606001604052806028815260200161579760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061134d6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b600190509392505050565b61dead81565b60185481565b60006012905090565b60006114656113c96126b7565b8461146085600160006113da6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6126bf565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b60135481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61156b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f1906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006116c56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b906148ac565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61177e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906148ac565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b6118766126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc906148ac565b60405180910390fd5b82601081905550816011819055508060128190555060125460115460105461192d9190614a47565b6119379190614a47565b600f81905550600a600f541115611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614c33565b60405180910390fd5b505050565b6119906126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a16906148ac565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b611a8f6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b15906148ac565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611b4a9061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b769061482e565b8015611bc35780601f10611b9857610100808354040283529160200191611bc3565b820191906000526020600020905b815481529060010190602001808311611ba657829003601f168201915b5050505050905090565b611bd56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b906148ac565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614cc5565b60405180910390fd5b611cfd82826137ff565b5050565b60125481565b601c5481565b60165481565b611d1b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da1906148ac565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b6000611e8a611dd46126b7565b84611e85856040518060600160405280602581526020016157bf6025913960016000611dfe6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b6001905092915050565b600b60039054906101000a900460ff1681565b60195481565b6000611ec1611eba6126b7565b848461288a565b6001905092915050565b611ed36126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906148ac565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061204c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b612079600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601f6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b6120b76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d906148ac565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121e39190614479565b60405180910390a25050565b6121f76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d906148ac565b60405180910390fd5b670de0b6b3a76400006103e8600561229c610e4b565b6122a691906148fb565b6122b09190614984565b6122ba9190614984565b8110156122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614d57565b60405180910390fd5b670de0b6b3a76400008161231091906148fb565b600a8190555050565b600e60009054906101000a900460ff1681565b60085481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006123cf6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906148ac565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b61248e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612514906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561258d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258490614de9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600a5481565b60008082846126689190614a47565b9050838110156126ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a490614e55565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561272f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272690614ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690614f79565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161287d919061454a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f19061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561296a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129619061509d565b60405180910390fd5b60008114156129845761297f838360006138a0565b613796565b600b60009054906101000a900460ff1615613047576129a1611a57565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0f57506129df611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a485750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a82575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a9b5750600560149054906101000a900460ff16155b1561304657600b60019054906101000a900460ff16612b9557601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b555750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8b90615109565b60405180910390fd5b5b600e60009054906101000a900460ff1615612d5d57612bb2611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c3957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c9157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d5c5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e906151c1565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e005750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ea757600854811115612e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4190615253565b60405180910390fd5b600a54612e568361151b565b82612e619190614a47565b1115612ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e99906152bf565b60405180910390fd5b613045565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f4a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f9957600854811115612f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8b90615351565b60405180910390fd5b613044565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661304357600a54612ff68361151b565b826130019190614a47565b1115613042576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613039906152bf565b60405180910390fd5b5b5b5b5b5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156130b45750600b60039054906101000a900460ff165b156131df576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561315657504262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131539190614a47565b10155b1561319e576017546015819055506018546014819055506019546016819055506016546015546014546131899190614a47565b6131939190614a47565b6013819055506131da565b6006601581905550600060148190555060016016819055506016546015546014546131c99190614a47565b6131d39190614a47565b6013819055505b6132bd565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561326c5742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60039054906101000a900460ff166132bc576006601581905550600060148190555060016016819055506016546015546014546132ab9190614a47565b6132b59190614a47565b6013819055505b5b60006132c83061151b565b9050600060095482101590508080156132ed5750600b60029054906101000a900460ff165b80156133065750600560149054906101000a900460ff16155b801561335c5750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133b25750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134085750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561344c576001600560146101000a81548160ff021916908315150217905550613430613b35565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135025750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561350c57600090505b6000811561378557601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561356f57506000601354115b1561363c5761359c606461358e60135489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050601354601554826135af91906148fb565b6135b99190614984565b601b60008282546135ca9190614a47565b92505081905550601354601654826135e291906148fb565b6135ec9190614984565b601c60008282546135fd9190614a47565b925050819055506013546014548261361591906148fb565b61361f9190614984565b601a60008282546136309190614a47565b92505081905550613761565b601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561369757506000600f54115b15613760576136c460646136b6600f5489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050600f54601154826136d791906148fb565b6136e19190614984565b601b60008282546136f29190614a47565b92505081905550600f546012548261370a91906148fb565b6137149190614984565b601c60008282546137259190614a47565b92505081905550600f546010548261373d91906148fb565b6137479190614984565b601a60008282546137589190614a47565b925050819055505b5b6000811115613776576137758830836138a0565b5b80866137829190615371565b95505b6137908888886138a0565b50505050505b505050565b60008383111582906137e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137da9190614363565b60405180910390fd5b50600083856137f29190615371565b9050809150509392505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139079061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613980576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139779061509d565b60405180910390fd5b61398b838383613ee1565b6139f681604051806060016040528060268152602001615771602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a89816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b28919061454a565b60405180910390a3505050565b6000613b403061151b565b90506000601c54601a54601b54613b579190614a47565b613b619190614a47565b9050600080831480613b735750600082145b15613b8057505050613e1a565b6014600954613b8f91906148fb565b831115613ba8576014600954613ba591906148fb565b92505b6000600283601b5486613bbb91906148fb565b613bc59190614984565b613bcf9190614984565b90506000613be68286613ee690919063ffffffff16565b90506000479050613bf682613f30565b6000613c0b8247613ee690919063ffffffff16565b90506000613c3687613c28601a5485613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000613c6188613c53601c5486613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000818385613c729190615371565b613c7c9190615371565b90506000601b819055506000601a819055506000601c81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613cdc906153d6565b60006040518083038185875af1925050503d8060008114613d19576040519150601f19603f3d011682016040523d82523d6000602084013e613d1e565b606091505b505080985050600087118015613d345750600081115b15613d8157613d43878261417c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613d78939291906153eb565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613dc7906153d6565b60006040518083038185875af1925050503d8060008114613e04576040519150601f19603f3d011682016040523d82523d6000602084013e613e09565b606091505b505080985050505050505050505050505b565b600080831415613e2f5760009050613e91565b60008284613e3d91906148fb565b9050828482613e4c9190614984565b14613e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e8390615494565b60405180910390fd5b809150505b92915050565b6000613ed983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b905092915050565b505050565b6000613f2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061379b565b905092915050565b6000600267ffffffffffffffff811115613f4d57613f4c6154b4565b5b604051908082528060200260200182016040528015613f7b5781602001602082028036833780820191505090505b5090503081600081518110613f9357613f926154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561403357600080fd5b505afa158015614047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406b9190615527565b8160018151811061407f5761407e6154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140e4307f0000000000000000000000000000000000000000000000000000000000000000846126bf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161414695949392919061564d565b600060405180830381600087803b15801561416057600080fd5b505af1158015614174573d6000803e3d6000fd5b505050505050565b6141a7307f0000000000000000000000000000000000000000000000000000000000000000846126bf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161420e969594939291906156a7565b6060604051808303818588803b15801561422757600080fd5b505af115801561423b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614260919061571d565b5050505050565b600080831182906142ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142a59190614363565b60405180910390fd5b50600083856142bd9190614984565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143045780820151818401526020810190506142e9565b83811115614313576000848401525b50505050565b6000601f19601f8301169050919050565b6000614335826142ca565b61433f81856142d5565b935061434f8185602086016142e6565b61435881614319565b840191505092915050565b6000602082019050818103600083015261437d818461432a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143b58261438a565b9050919050565b6143c5816143aa565b81146143d057600080fd5b50565b6000813590506143e2816143bc565b92915050565b6000819050919050565b6143fb816143e8565b811461440657600080fd5b50565b600081359050614418816143f2565b92915050565b6000806040838503121561443557614434614385565b5b6000614443858286016143d3565b925050602061445485828601614409565b9150509250929050565b60008115159050919050565b6144738161445e565b82525050565b600060208201905061448e600083018461446a565b92915050565b6000602082840312156144aa576144a9614385565b5b60006144b8848285016143d3565b91505092915050565b6000819050919050565b60006144e66144e16144dc8461438a565b6144c1565b61438a565b9050919050565b60006144f8826144cb565b9050919050565b600061450a826144ed565b9050919050565b61451a816144ff565b82525050565b60006020820190506145356000830184614511565b92915050565b614544816143e8565b82525050565b600060208201905061455f600083018461453b565b92915050565b60006020828403121561457b5761457a614385565b5b600061458984828501614409565b91505092915050565b60008060008060008060c087890312156145af576145ae614385565b5b60006145bd89828a01614409565b96505060206145ce89828a01614409565b95505060406145df89828a01614409565b94505060606145f089828a01614409565b935050608061460189828a01614409565b92505060a061461289828a01614409565b9150509295509295509295565b60008060006060848603121561463857614637614385565b5b6000614646868287016143d3565b9350506020614657868287016143d3565b925050604061466886828701614409565b9150509250925092565b61467b816143aa565b82525050565b60006020820190506146966000830184614672565b92915050565b600060ff82169050919050565b6146b28161469c565b82525050565b60006020820190506146cd60008301846146a9565b92915050565b6146dc8161445e565b81146146e757600080fd5b50565b6000813590506146f9816146d3565b92915050565b6000806040838503121561471657614715614385565b5b6000614724858286016143d3565b9250506020614735858286016146ea565b9150509250929050565b60008060006060848603121561475857614757614385565b5b600061476686828701614409565b935050602061477786828701614409565b925050604061478886828701614409565b9150509250925092565b6000602082840312156147a8576147a7614385565b5b60006147b6848285016146ea565b91505092915050565b600080604083850312156147d6576147d5614385565b5b60006147e4858286016143d3565b92505060206147f5858286016143d3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061484657607f821691505b6020821081141561485a576148596147ff565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148966020836142d5565b91506148a182614860565b602082019050919050565b600060208201905081810360008301526148c581614889565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614906826143e8565b9150614911836143e8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561494a576149496148cc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061498f826143e8565b915061499a836143e8565b9250826149aa576149a9614955565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614a11602f836142d5565b9150614a1c826149b5565b604082019050919050565b60006020820190508181036000830152614a4081614a04565b9050919050565b6000614a52826143e8565b9150614a5d836143e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9257614a916148cc565b5b828201905092915050565b7f4d757374206b6565702073656c6c206665657320617420313025206f72206c6560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614af96022836142d5565b9150614b0482614a9d565b604082019050919050565b60006020820190508181036000830152614b2881614aec565b9050919050565b7f4d757374206b656570206561726c792073656c6c20666565206174203130252060008201527f6f72206c65737300000000000000000000000000000000000000000000000000602082015250565b6000614b8b6027836142d5565b9150614b9682614b2f565b604082019050919050565b60006020820190508181036000830152614bba81614b7e565b9050919050565b7f4d757374206b65657020627579206665657320617420313025206f72206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c1d6021836142d5565b9150614c2882614bc1565b604082019050919050565b60006020820190508181036000830152614c4c81614c10565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614caf6039836142d5565b9150614cba82614c53565b604082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d416024836142d5565b9150614d4c82614ce5565b604082019050919050565b60006020820190508181036000830152614d7081614d34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614dd36026836142d5565b9150614dde82614d77565b604082019050919050565b60006020820190508181036000830152614e0281614dc6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e3f601b836142d5565b9150614e4a82614e09565b602082019050919050565b60006020820190508181036000830152614e6e81614e32565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ed16024836142d5565b9150614edc82614e75565b604082019050919050565b60006020820190508181036000830152614f0081614ec4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f636022836142d5565b9150614f6e82614f07565b604082019050919050565b60006020820190508181036000830152614f9281614f56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ff56025836142d5565b915061500082614f99565b604082019050919050565b6000602082019050818103600083015261502481614fe8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150876023836142d5565b91506150928261502b565b604082019050919050565b600060208201905081810360008301526150b68161507a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150f36016836142d5565b91506150fe826150bd565b602082019050919050565b60006020820190508181036000830152615122816150e6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006151ab6049836142d5565b91506151b682615129565b606082019050919050565b600060208201905081810360008301526151da8161519e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061523d6035836142d5565b9150615248826151e1565b604082019050919050565b6000602082019050818103600083015261526c81615230565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006152a96013836142d5565b91506152b482615273565b602082019050919050565b600060208201905081810360008301526152d88161529c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061533b6036836142d5565b9150615346826152df565b604082019050919050565b6000602082019050818103600083015261536a8161532e565b9050919050565b600061537c826143e8565b9150615387836143e8565b92508282101561539a576153996148cc565b5b828203905092915050565b600081905092915050565b50565b60006153c06000836153a5565b91506153cb826153b0565b600082019050919050565b60006153e1826153b3565b9150819050919050565b6000606082019050615400600083018661453b565b61540d602083018561453b565b61541a604083018461453b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061547e6021836142d5565b915061548982615422565b604082019050919050565b600060208201905081810360008301526154ad81615471565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615521816143bc565b92915050565b60006020828403121561553d5761553c614385565b5b600061554b84828501615512565b91505092915050565b6000819050919050565b600061557961557461556f84615554565b6144c1565b6143e8565b9050919050565b6155898161555e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155c4816143aa565b82525050565b60006155d683836155bb565b60208301905092915050565b6000602082019050919050565b60006155fa8261558f565b615604818561559a565b935061560f836155ab565b8060005b8381101561564057815161562788826155ca565b9750615632836155e2565b925050600181019050615613565b5085935050505092915050565b600060a082019050615662600083018861453b565b61566f6020830187615580565b818103604083015261568181866155ef565b90506156906060830185614672565b61569d608083018461453b565b9695505050505050565b600060c0820190506156bc6000830189614672565b6156c9602083018861453b565b6156d66040830187615580565b6156e36060830186615580565b6156f06080830185614672565b6156fd60a083018461453b565b979650505050505050565b600081519050615717816143f2565b92915050565b60008060006060848603121561573657615735614385565b5b600061574486828701615708565b935050602061575586828701615708565b925050604061576686828701615708565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220de7791d0e35985a8c07a69e454fdd69b3948c5bf04cad96e609b95b60d6eb41f64736f6c63430008090033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c80638da5cb5b116101c6578063b62496f5116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610cad578063f2fde38b14610cd8578063f637434214610d01578063f8b45b0514610d2c57610376565b8063dd62ed3e14610c1a578063e2f4560514610c57578063e884f26014610c8257610376565b8063c18bc195116100d1578063c18bc19514610b70578063c876d0b914610b99578063c8c8ebe414610bc4578063d85ba06314610bef57610376565b8063b62496f514610adf578063bbc0c74214610b1c578063c024666814610b4757610376565b8063a0d82dc511610164578063a4d15b641161013e578063a4d15b6414610a23578063a7fc9e2114610a4e578063a9059cbb14610a79578063aacebbe314610ab657610376565b8063a0d82dc514610992578063a2657778146109bd578063a457c2d7146109e657610376565b806395d89b41116101a057806395d89b41146108e85780639a7a23d6146109135780639c3b4fdc1461093c5780639fccce321461096757610376565b80638da5cb5b146108695780639213691314610894578063924de9b7146108bf57610376565b806339509351116102a057806370a082311161023e5780637571336a116102185780637571336a146107d55780637bce5a04146107fe5780638095d564146108295780638a8c523c1461085257610376565b806370a0823114610756578063715018a614610793578063751039fc146107aa57610376565b80634fbee1931161027a5780634fbee19314610698578063541a43cf146106d55780636a486a8e146107005780636ddd17131461072b57610376565b8063395093511461060557806349bd5a5e146106425780634a62bb651461066d57610376565b80631f3fed8f1161030d57806323b872dd116102e757806323b872dd1461054757806327c8f835146105845780632bf3d42d146105af578063313ce567146105da57610376565b80631f3fed8f146104ca578063203e727e146104f557806322d3e2aa1461051e57610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631816467f146104765780631a8145bb1461049f57610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d57565b60405161039d9190614363565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061441e565b610de9565b6040516103da9190614479565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614494565b610e07565b6040516104179190614479565b60405180910390f35b34801561042c57600080fd5b50610435610e27565b6040516104429190614520565b60405180910390f35b34801561045757600080fd5b50610460610e4b565b60405161046d919061454a565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190614494565b610e55565b005b3480156104ab57600080fd5b506104b4611006565b6040516104c1919061454a565b60405180910390f35b3480156104d657600080fd5b506104df61100c565b6040516104ec919061454a565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190614565565b611012565b005b34801561052a57600080fd5b5061054560048036038101906105409190614592565b61113c565b005b34801561055357600080fd5b5061056e6004803603810190610569919061461f565b6112ce565b60405161057b9190614479565b60405180910390f35b34801561059057600080fd5b506105996113a7565b6040516105a69190614681565b60405180910390f35b3480156105bb57600080fd5b506105c46113ad565b6040516105d1919061454a565b60405180910390f35b3480156105e657600080fd5b506105ef6113b3565b6040516105fc91906146b8565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061441e565b6113bc565b6040516106399190614479565b60405180910390f35b34801561064e57600080fd5b5061065761146f565b6040516106649190614681565b60405180910390f35b34801561067957600080fd5b50610682611493565b60405161068f9190614479565b60405180910390f35b3480156106a457600080fd5b506106bf60048036038101906106ba9190614494565b6114a6565b6040516106cc9190614479565b60405180910390f35b3480156106e157600080fd5b506106ea6114fc565b6040516106f7919061454a565b60405180910390f35b34801561070c57600080fd5b50610715611502565b604051610722919061454a565b60405180910390f35b34801561073757600080fd5b50610740611508565b60405161074d9190614479565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190614494565b61151b565b60405161078a919061454a565b60405180910390f35b34801561079f57600080fd5b506107a8611563565b005b3480156107b657600080fd5b506107bf6116bb565b6040516107cc9190614479565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906146ff565b611776565b005b34801561080a57600080fd5b50610813611868565b604051610820919061454a565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b919061473f565b61186e565b005b34801561085e57600080fd5b50610867611988565b005b34801561087557600080fd5b5061087e611a57565b60405161088b9190614681565b60405180910390f35b3480156108a057600080fd5b506108a9611a81565b6040516108b6919061454a565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e19190614792565b611a87565b005b3480156108f457600080fd5b506108fd611b3b565b60405161090a9190614363565b60405180910390f35b34801561091f57600080fd5b5061093a600480360381019061093591906146ff565b611bcd565b005b34801561094857600080fd5b50610951611d01565b60405161095e919061454a565b60405180910390f35b34801561097357600080fd5b5061097c611d07565b604051610989919061454a565b60405180910390f35b34801561099e57600080fd5b506109a7611d0d565b6040516109b4919061454a565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190614792565b611d13565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061441e565b611dc7565b604051610a1a9190614479565b60405180910390f35b348015610a2f57600080fd5b50610a38611e94565b604051610a459190614479565b60405180910390f35b348015610a5a57600080fd5b50610a63611ea7565b604051610a70919061454a565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b919061441e565b611ead565b604051610aad9190614479565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614494565b611ecb565b005b348015610aeb57600080fd5b50610b066004803603810190610b019190614494565b61207c565b604051610b139190614479565b60405180910390f35b348015610b2857600080fd5b50610b3161209c565b604051610b3e9190614479565b60405180910390f35b348015610b5357600080fd5b50610b6e6004803603810190610b6991906146ff565b6120af565b005b348015610b7c57600080fd5b50610b976004803603810190610b929190614565565b6121ef565b005b348015610ba557600080fd5b50610bae612319565b604051610bbb9190614479565b60405180910390f35b348015610bd057600080fd5b50610bd961232c565b604051610be6919061454a565b60405180910390f35b348015610bfb57600080fd5b50610c04612332565b604051610c11919061454a565b60405180910390f35b348015610c2657600080fd5b50610c416004803603810190610c3c91906147bf565b612338565b604051610c4e919061454a565b60405180910390f35b348015610c6357600080fd5b50610c6c6123bf565b604051610c79919061454a565b60405180910390f35b348015610c8e57600080fd5b50610c976123c5565b604051610ca49190614479565b60405180910390f35b348015610cb957600080fd5b50610cc2612480565b604051610ccf919061454a565b60405180910390f35b348015610ce457600080fd5b50610cff6004803603810190610cfa9190614494565b612486565b005b348015610d0d57600080fd5b50610d1661264d565b604051610d23919061454a565b60405180910390f35b348015610d3857600080fd5b50610d41612653565b604051610d4e919061454a565b60405180910390f35b606060038054610d669061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d929061482e565b8015610ddf5780601f10610db457610100808354040283529160200191610ddf565b820191906000526020600020905b815481529060010190602001808311610dc257829003601f168201915b5050505050905090565b6000610dfd610df66126b7565b84846126bf565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610e5d6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906148ac565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b611003600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601b5481565b601a5481565b61101a6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906148ac565b60405180910390fd5b670de0b6b3a76400006103e860056110bf610e4b565b6110c991906148fb565b6110d39190614984565b6110dd9190614984565b81101561111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690614a27565b60405180910390fd5b670de0b6b3a76400008161113391906148fb565b60088190555050565b6111446126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906148ac565b60405180910390fd5b8560148190555084601581905550836016819055508260178190555081601881905550806019819055506016546015546014546112109190614a47565b61121a9190614a47565b601381905550600a6013541115611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90614b0f565b60405180910390fd5b60008184846112759190614a47565b61127f9190614a47565b9050600a8111156112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90614ba1565b60405180910390fd5b50505050505050565b60006112db84848461288a565b61139c846112e76126b7565b6113978560405180606001604052806028815260200161579760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061134d6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b600190509392505050565b61dead81565b60185481565b60006012905090565b60006114656113c96126b7565b8461146085600160006113da6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6126bf565b6001905092915050565b7f00000000000000000000000054fea3d6a2958414a47963e9af0ea0b8eda8d53381565b600b60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b60135481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61156b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f1906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006116c56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b906148ac565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61177e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906148ac565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b6118766126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc906148ac565b60405180910390fd5b82601081905550816011819055508060128190555060125460115460105461192d9190614a47565b6119379190614a47565b600f81905550600a600f541115611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614c33565b60405180910390fd5b505050565b6119906126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a16906148ac565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b611a8f6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b15906148ac565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611b4a9061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b769061482e565b8015611bc35780601f10611b9857610100808354040283529160200191611bc3565b820191906000526020600020905b815481529060010190602001808311611ba657829003601f168201915b5050505050905090565b611bd56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b906148ac565b60405180910390fd5b7f00000000000000000000000054fea3d6a2958414a47963e9af0ea0b8eda8d53373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614cc5565b60405180910390fd5b611cfd82826137ff565b5050565b60125481565b601c5481565b60165481565b611d1b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da1906148ac565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b6000611e8a611dd46126b7565b84611e85856040518060600160405280602581526020016157bf6025913960016000611dfe6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b6001905092915050565b600b60039054906101000a900460ff1681565b60195481565b6000611ec1611eba6126b7565b848461288a565b6001905092915050565b611ed36126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906148ac565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061204c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b612079600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601f6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b6120b76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d906148ac565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121e39190614479565b60405180910390a25050565b6121f76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d906148ac565b60405180910390fd5b670de0b6b3a76400006103e8600561229c610e4b565b6122a691906148fb565b6122b09190614984565b6122ba9190614984565b8110156122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614d57565b60405180910390fd5b670de0b6b3a76400008161231091906148fb565b600a8190555050565b600e60009054906101000a900460ff1681565b60085481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006123cf6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906148ac565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b61248e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612514906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561258d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258490614de9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600a5481565b60008082846126689190614a47565b9050838110156126ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a490614e55565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561272f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272690614ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690614f79565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161287d919061454a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f19061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561296a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129619061509d565b60405180910390fd5b60008114156129845761297f838360006138a0565b613796565b600b60009054906101000a900460ff1615613047576129a1611a57565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0f57506129df611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a485750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a82575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a9b5750600560149054906101000a900460ff16155b1561304657600b60019054906101000a900460ff16612b9557601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b555750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8b90615109565b60405180910390fd5b5b600e60009054906101000a900460ff1615612d5d57612bb2611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c3957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c9157507f00000000000000000000000054fea3d6a2958414a47963e9af0ea0b8eda8d53373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d5c5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e906151c1565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e005750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ea757600854811115612e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4190615253565b60405180910390fd5b600a54612e568361151b565b82612e619190614a47565b1115612ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e99906152bf565b60405180910390fd5b613045565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f4a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f9957600854811115612f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8b90615351565b60405180910390fd5b613044565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661304357600a54612ff68361151b565b826130019190614a47565b1115613042576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613039906152bf565b60405180910390fd5b5b5b5b5b5b60007f00000000000000000000000054fea3d6a2958414a47963e9af0ea0b8eda8d53373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156130b45750600b60039054906101000a900460ff165b156131df576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561315657504262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131539190614a47565b10155b1561319e576017546015819055506018546014819055506019546016819055506016546015546014546131899190614a47565b6131939190614a47565b6013819055506131da565b6006601581905550600060148190555060016016819055506016546015546014546131c99190614a47565b6131d39190614a47565b6013819055505b6132bd565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561326c5742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60039054906101000a900460ff166132bc576006601581905550600060148190555060016016819055506016546015546014546132ab9190614a47565b6132b59190614a47565b6013819055505b5b60006132c83061151b565b9050600060095482101590508080156132ed5750600b60029054906101000a900460ff165b80156133065750600560149054906101000a900460ff16155b801561335c5750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133b25750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134085750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561344c576001600560146101000a81548160ff021916908315150217905550613430613b35565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135025750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561350c57600090505b6000811561378557601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561356f57506000601354115b1561363c5761359c606461358e60135489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050601354601554826135af91906148fb565b6135b99190614984565b601b60008282546135ca9190614a47565b92505081905550601354601654826135e291906148fb565b6135ec9190614984565b601c60008282546135fd9190614a47565b925050819055506013546014548261361591906148fb565b61361f9190614984565b601a60008282546136309190614a47565b92505081905550613761565b601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561369757506000600f54115b15613760576136c460646136b6600f5489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050600f54601154826136d791906148fb565b6136e19190614984565b601b60008282546136f29190614a47565b92505081905550600f546012548261370a91906148fb565b6137149190614984565b601c60008282546137259190614a47565b92505081905550600f546010548261373d91906148fb565b6137479190614984565b601a60008282546137589190614a47565b925050819055505b5b6000811115613776576137758830836138a0565b5b80866137829190615371565b95505b6137908888886138a0565b50505050505b505050565b60008383111582906137e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137da9190614363565b60405180910390fd5b50600083856137f29190615371565b9050809150509392505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139079061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613980576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139779061509d565b60405180910390fd5b61398b838383613ee1565b6139f681604051806060016040528060268152602001615771602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a89816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b28919061454a565b60405180910390a3505050565b6000613b403061151b565b90506000601c54601a54601b54613b579190614a47565b613b619190614a47565b9050600080831480613b735750600082145b15613b8057505050613e1a565b6014600954613b8f91906148fb565b831115613ba8576014600954613ba591906148fb565b92505b6000600283601b5486613bbb91906148fb565b613bc59190614984565b613bcf9190614984565b90506000613be68286613ee690919063ffffffff16565b90506000479050613bf682613f30565b6000613c0b8247613ee690919063ffffffff16565b90506000613c3687613c28601a5485613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000613c6188613c53601c5486613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000818385613c729190615371565b613c7c9190615371565b90506000601b819055506000601a819055506000601c81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613cdc906153d6565b60006040518083038185875af1925050503d8060008114613d19576040519150601f19603f3d011682016040523d82523d6000602084013e613d1e565b606091505b505080985050600087118015613d345750600081115b15613d8157613d43878261417c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613d78939291906153eb565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613dc7906153d6565b60006040518083038185875af1925050503d8060008114613e04576040519150601f19603f3d011682016040523d82523d6000602084013e613e09565b606091505b505080985050505050505050505050505b565b600080831415613e2f5760009050613e91565b60008284613e3d91906148fb565b9050828482613e4c9190614984565b14613e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e8390615494565b60405180910390fd5b809150505b92915050565b6000613ed983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b905092915050565b505050565b6000613f2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061379b565b905092915050565b6000600267ffffffffffffffff811115613f4d57613f4c6154b4565b5b604051908082528060200260200182016040528015613f7b5781602001602082028036833780820191505090505b5090503081600081518110613f9357613f926154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561403357600080fd5b505afa158015614047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406b9190615527565b8160018151811061407f5761407e6154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140e4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126bf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161414695949392919061564d565b600060405180830381600087803b15801561416057600080fd5b505af1158015614174573d6000803e3d6000fd5b505050505050565b6141a7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126bf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161420e969594939291906156a7565b6060604051808303818588803b15801561422757600080fd5b505af115801561423b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614260919061571d565b5050505050565b600080831182906142ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142a59190614363565b60405180910390fd5b50600083856142bd9190614984565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143045780820151818401526020810190506142e9565b83811115614313576000848401525b50505050565b6000601f19601f8301169050919050565b6000614335826142ca565b61433f81856142d5565b935061434f8185602086016142e6565b61435881614319565b840191505092915050565b6000602082019050818103600083015261437d818461432a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143b58261438a565b9050919050565b6143c5816143aa565b81146143d057600080fd5b50565b6000813590506143e2816143bc565b92915050565b6000819050919050565b6143fb816143e8565b811461440657600080fd5b50565b600081359050614418816143f2565b92915050565b6000806040838503121561443557614434614385565b5b6000614443858286016143d3565b925050602061445485828601614409565b9150509250929050565b60008115159050919050565b6144738161445e565b82525050565b600060208201905061448e600083018461446a565b92915050565b6000602082840312156144aa576144a9614385565b5b60006144b8848285016143d3565b91505092915050565b6000819050919050565b60006144e66144e16144dc8461438a565b6144c1565b61438a565b9050919050565b60006144f8826144cb565b9050919050565b600061450a826144ed565b9050919050565b61451a816144ff565b82525050565b60006020820190506145356000830184614511565b92915050565b614544816143e8565b82525050565b600060208201905061455f600083018461453b565b92915050565b60006020828403121561457b5761457a614385565b5b600061458984828501614409565b91505092915050565b60008060008060008060c087890312156145af576145ae614385565b5b60006145bd89828a01614409565b96505060206145ce89828a01614409565b95505060406145df89828a01614409565b94505060606145f089828a01614409565b935050608061460189828a01614409565b92505060a061461289828a01614409565b9150509295509295509295565b60008060006060848603121561463857614637614385565b5b6000614646868287016143d3565b9350506020614657868287016143d3565b925050604061466886828701614409565b9150509250925092565b61467b816143aa565b82525050565b60006020820190506146966000830184614672565b92915050565b600060ff82169050919050565b6146b28161469c565b82525050565b60006020820190506146cd60008301846146a9565b92915050565b6146dc8161445e565b81146146e757600080fd5b50565b6000813590506146f9816146d3565b92915050565b6000806040838503121561471657614715614385565b5b6000614724858286016143d3565b9250506020614735858286016146ea565b9150509250929050565b60008060006060848603121561475857614757614385565b5b600061476686828701614409565b935050602061477786828701614409565b925050604061478886828701614409565b9150509250925092565b6000602082840312156147a8576147a7614385565b5b60006147b6848285016146ea565b91505092915050565b600080604083850312156147d6576147d5614385565b5b60006147e4858286016143d3565b92505060206147f5858286016143d3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061484657607f821691505b6020821081141561485a576148596147ff565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148966020836142d5565b91506148a182614860565b602082019050919050565b600060208201905081810360008301526148c581614889565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614906826143e8565b9150614911836143e8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561494a576149496148cc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061498f826143e8565b915061499a836143e8565b9250826149aa576149a9614955565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614a11602f836142d5565b9150614a1c826149b5565b604082019050919050565b60006020820190508181036000830152614a4081614a04565b9050919050565b6000614a52826143e8565b9150614a5d836143e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9257614a916148cc565b5b828201905092915050565b7f4d757374206b6565702073656c6c206665657320617420313025206f72206c6560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614af96022836142d5565b9150614b0482614a9d565b604082019050919050565b60006020820190508181036000830152614b2881614aec565b9050919050565b7f4d757374206b656570206561726c792073656c6c20666565206174203130252060008201527f6f72206c65737300000000000000000000000000000000000000000000000000602082015250565b6000614b8b6027836142d5565b9150614b9682614b2f565b604082019050919050565b60006020820190508181036000830152614bba81614b7e565b9050919050565b7f4d757374206b65657020627579206665657320617420313025206f72206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c1d6021836142d5565b9150614c2882614bc1565b604082019050919050565b60006020820190508181036000830152614c4c81614c10565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614caf6039836142d5565b9150614cba82614c53565b604082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d416024836142d5565b9150614d4c82614ce5565b604082019050919050565b60006020820190508181036000830152614d7081614d34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614dd36026836142d5565b9150614dde82614d77565b604082019050919050565b60006020820190508181036000830152614e0281614dc6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e3f601b836142d5565b9150614e4a82614e09565b602082019050919050565b60006020820190508181036000830152614e6e81614e32565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ed16024836142d5565b9150614edc82614e75565b604082019050919050565b60006020820190508181036000830152614f0081614ec4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f636022836142d5565b9150614f6e82614f07565b604082019050919050565b60006020820190508181036000830152614f9281614f56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ff56025836142d5565b915061500082614f99565b604082019050919050565b6000602082019050818103600083015261502481614fe8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150876023836142d5565b91506150928261502b565b604082019050919050565b600060208201905081810360008301526150b68161507a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150f36016836142d5565b91506150fe826150bd565b602082019050919050565b60006020820190508181036000830152615122816150e6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006151ab6049836142d5565b91506151b682615129565b606082019050919050565b600060208201905081810360008301526151da8161519e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061523d6035836142d5565b9150615248826151e1565b604082019050919050565b6000602082019050818103600083015261526c81615230565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006152a96013836142d5565b91506152b482615273565b602082019050919050565b600060208201905081810360008301526152d88161529c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061533b6036836142d5565b9150615346826152df565b604082019050919050565b6000602082019050818103600083015261536a8161532e565b9050919050565b600061537c826143e8565b9150615387836143e8565b92508282101561539a576153996148cc565b5b828203905092915050565b600081905092915050565b50565b60006153c06000836153a5565b91506153cb826153b0565b600082019050919050565b60006153e1826153b3565b9150819050919050565b6000606082019050615400600083018661453b565b61540d602083018561453b565b61541a604083018461453b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061547e6021836142d5565b915061548982615422565b604082019050919050565b600060208201905081810360008301526154ad81615471565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615521816143bc565b92915050565b60006020828403121561553d5761553c614385565b5b600061554b84828501615512565b91505092915050565b6000819050919050565b600061557961557461556f84615554565b6144c1565b6143e8565b9050919050565b6155898161555e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155c4816143aa565b82525050565b60006155d683836155bb565b60208301905092915050565b6000602082019050919050565b60006155fa8261558f565b615604818561559a565b935061560f836155ab565b8060005b8381101561564057815161562788826155ca565b9750615632836155e2565b925050600181019050615613565b5085935050505092915050565b600060a082019050615662600083018861453b565b61566f6020830187615580565b818103604083015261568181866155ef565b90506156906060830185614672565b61569d608083018461453b565b9695505050505050565b600060c0820190506156bc6000830189614672565b6156c9602083018861453b565b6156d66040830187615580565b6156e36060830186615580565b6156f06080830185614672565b6156fd60a083018461453b565b979650505050505050565b600081519050615717816143f2565b92915050565b60008060006060848603121561573657615735614385565b5b600061574486828701615708565b935050602061575586828701615708565b925050604061576686828701615708565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220de7791d0e35985a8c07a69e454fdd69b3948c5bf04cad96e609b95b60d6eb41f64736f6c63430008090033
Deployed Bytecode Sourcemap
18046:16158:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4995:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5916:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19670:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18125:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5319:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26331:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19451:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19411;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23420:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24533:823;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6094:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18228:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19328:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5217:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6458:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18183:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18511:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26594:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19285:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19139:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18591:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5436:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11219:148;;;;;;;;;;;;;:::i;:::-;;23037:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23887:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19031:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24150:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22916:112;;;;;;;;;;;;;:::i;:::-;;11003:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19174:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24040:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5104:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25556:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19105:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19491:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19250:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23309:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6685:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18629:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19371:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5572:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26008:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19893:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18551:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25365:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23663:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18948:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18395:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18997:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5756:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18437:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23166:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19068:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11376:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19212:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18477:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4995:100;5049:13;5082:5;5075:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4995:100;:::o;5916:169::-;5999:4;6016:39;6025:12;:10;:12::i;:::-;6039:7;6048:6;6016:8;:39::i;:::-;6073:4;6066:11;;5916:169;;;;:::o;19670:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;18125:51::-;;;:::o;5319:108::-;5380:7;5407:12;;5400:19;;5319:108;:::o;26331:251::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26438:9:::1;;;;;;;;;;;26410:38;;26427:9;26410:38;;;;;;;;;;;;26471:9;26459;;:21;;;;;;;;;;;;;;;;;;26491:31;26507:9;;;;;;;;;;;26517:4;26491:15;:31::i;:::-;26533:41;26559:9;;;;;;;;;;;26569:4;26533:25;:41::i;:::-;26331:251:::0;:::o;19451:33::-;;;;:::o;19411:::-;;;;:::o;23420:234::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23539:4:::1;23533;23529:1;23513:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23512:31;;;;:::i;:::-;23502:6;:41;;23494:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;23639:6;23629;:17;;;;:::i;:::-;23606:20;:40;;;;23420:234:::0;:::o;24533:823::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24760:13:::1;24741:16;:32;;;;24803:13;24784:16;:32;;;;24840:7;24827:10;:20;;;;24882:22;24858:21;:46;;;;24939:22;24915:21;:46;;;;24987:16;24969:15;:34;;;;25068:10;;25049:16;;25030;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;25014:13;:64;;;;25114:2;25097:13;;:19;;25089:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25166:26;25245:16;25220:22;25195;:47;;;;:::i;:::-;:66;;;;:::i;:::-;25166:95;;25302:2;25280:18;:24;;25272:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24730:626;24533:823:::0;;;;;;:::o;6094:355::-;6234:4;6251:36;6261:6;6269:9;6280:6;6251:9;:36::i;:::-;6298:121;6307:6;6315:12;:10;:12::i;:::-;6329:89;6367:6;6329:89;;;;;;;;;;;;;;;;;:11;:19;6341:6;6329:19;;;;;;;;;;;;;;;:33;6349:12;:10;:12::i;:::-;6329:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6298:8;:121::i;:::-;6437:4;6430:11;;6094:355;;;;;:::o;18228:53::-;18274:6;18228:53;:::o;19328:36::-;;;;:::o;5217:93::-;5275:5;5300:2;5293:9;;5217:93;:::o;6458:218::-;6546:4;6563:83;6572:12;:10;:12::i;:::-;6586:7;6595:50;6634:10;6595:11;:25;6607:12;:10;:12::i;:::-;6595:25;;;;;;;;;;;;;;;:34;6621:7;6595:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6563:8;:83::i;:::-;6664:4;6657:11;;6458:218;;;;:::o;18183:38::-;;;:::o;18511:33::-;;;;;;;;;;;;;:::o;26594:125::-;26659:4;26683:19;:28;26703:7;26683:28;;;;;;;;;;;;;;;;;;;;;;;;;26676:35;;26594:125;;;:::o;19285:36::-;;;;:::o;19139:28::-;;;;:::o;18591:31::-;;;;;;;;;;;;;:::o;5436:127::-;5510:7;5537:9;:18;5547:7;5537:18;;;;;;;;;;;;;;;;5530:25;;5436:127;;;:::o;11219:148::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11326:1:::1;11289:40;;11310:6;;;;;;;;;;;11289:40;;;;;;;;;;;;11357:1;11340:6;;:19;;;;;;;;;;;;;;;;;;11219:148::o:0;23037:120::-;23089:4;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23122:5:::1;23105:14;;:22;;;;;;;;;;;;;;;;;;23145:4;23138:11;;23037:120:::0;:::o;23887:144::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24019:4:::1;23977:31;:39;24009:6;23977:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23887:144:::0;;:::o;19031:30::-;;;;:::o;24150:374::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24285:13:::1;24267:15;:31;;;;24327:13;24309:15;:31;;;;24363:7;24351:9;:19;;;;24432:9;;24414:15;;24396;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;24381:12;:60;;;;24476:2;24460:12;;:18;;24452:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24150:374:::0;;;:::o;22916:112::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22987:4:::1;22971:13;;:20;;;;;;;;;;;;;;;;;;23016:4;23002:11;;:18;;;;;;;;;;;;;;;;;;22916:112::o:0;11003:79::-;11041:7;11068:6;;;;;;;;;;;11061:13;;11003:79;:::o;19174:31::-;;;;:::o;24040:101::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24126:7:::1;24112:11;;:21;;;;;;;;;;;;;;;;;;24040:101:::0;:::o;5104:104::-;5160:13;5193:7;5186:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:104;:::o;25556:245::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25663:13:::1;25655:21;;:4;:21;;;;25647:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25752:41;25781:4;25787:5;25752:28;:41::i;:::-;25556:245:::0;;:::o;19105:24::-;;;;:::o;19491:27::-;;;;:::o;19250:25::-;;;;:::o;23309:102::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23398:5:::1;23377:18;;:26;;;;;;;;;;;;;;;;;;23309:102:::0;:::o;6685:269::-;6778:4;6795:129;6804:12;:10;:12::i;:::-;6818:7;6827:96;6866:15;6827:96;;;;;;;;;;;;;;;;;:11;:25;6839:12;:10;:12::i;:::-;6827:25;;;;;;;;;;;;;;;:34;6853:7;6827:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6795:8;:129::i;:::-;6942:4;6935:11;;6685:269;;;;:::o;18629:37::-;;;;;;;;;;;;;:::o;19371:30::-;;;;:::o;5572:175::-;5658:4;5675:42;5685:12;:10;:12::i;:::-;5699:9;5710:6;5675:9;:42::i;:::-;5735:4;5728:11;;5572:175;;;;:::o;26008:314::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26145:15:::1;;;;;;;;;;;26102:59;;26125:18;26102:59;;;;;;;;;;;;26190:18;26172:15;;:36;;;;;;;;;;;;;;;;;;26219:37;26235:15;;;;;;;;;;;26251:4;26219:15;:37::i;:::-;26267:47;26293:15;;;;;;;;;;;26309:4;26267:25;:47::i;:::-;26008:314:::0;:::o;19893:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;18551:33::-;;;;;;;;;;;;;:::o;25365:182::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25481:8:::1;25450:19;:28;25470:7;25450:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25521:7;25505:34;;;25530:8;25505:34;;;;;;:::i;:::-;;;;;;;;25365:182:::0;;:::o;23663:215::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23785:4:::1;23779;23775:1;23759:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23758:31;;;;:::i;:::-;23748:6;:41;;23740:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;23863:6;23853;:17;;;;:::i;:::-;23841:9;:29;;;;23663:215:::0;:::o;18948:39::-;;;;;;;;;;;;;:::o;18395:35::-;;;;:::o;18997:27::-;;;;:::o;5756:151::-;5845:7;5872:11;:18;5884:5;5872:18;;;;;;;;;;;;;;;:27;5891:7;5872:27;;;;;;;;;;;;;;;;5865:34;;5756:151;;;;:::o;18437:33::-;;;;:::o;23166:134::-;23226:4;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23265:5:::1;23242:20;;:28;;;;;;;;;;;;;;;;;;23288:4;23281:11;;23166:134:::0;:::o;19068:30::-;;;;:::o;11376:244::-;11141:12;:10;:12::i;:::-;11131:22;;:6;;;;;;;;;;;:22;;;11123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11485:1:::1;11465:22;;:8;:22;;;;11457:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11575:8;11546:38;;11567:6;;;;;;;;;;;11546:38;;;;;;;;;;;;11604:8;11595:6;;:17;;;;;;;;;;;;;;;;;;11376:244:::0;:::o;19212:31::-;;;;:::o;18477:24::-;;;;:::o;8918:182::-;8976:7;8996:9;9012:1;9008;:5;;;;:::i;:::-;8996:17;;9037:1;9032;:6;;9024:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9091:1;9084:8;;;8918:182;;;;:::o;196:98::-;249:7;276:10;269:17;;196:98;:::o;8365:381::-;8518:1;8501:19;;:5;:19;;;;8493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8599:1;8580:21;;:7;:21;;;;8572:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8684:6;8654:11;:18;8666:5;8654:18;;;;;;;;;;;;;;;:27;8673:7;8654:27;;;;;;;;;;;;;;;:36;;;;8722:7;8706:32;;8715:5;8706:32;;;8731:6;8706:32;;;;;;:::i;:::-;;;;;;;;8365:381;;;:::o;26728:4993::-;26876:1;26860:18;;:4;:18;;;;26852:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26953:1;26939:16;;:2;:16;;;;26931:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27019:1;27009:6;:11;27006:92;;;27037:28;27053:4;27059:2;27063:1;27037:15;:28::i;:::-;27080:7;;27006:92;27114:14;;;;;;;;;;;27111:1811;;;27174:7;:5;:7::i;:::-;27166:15;;:4;:15;;;;:49;;;;;27208:7;:5;:7::i;:::-;27202:13;;:2;:13;;;;27166:49;:86;;;;;27250:1;27236:16;;:2;:16;;;;27166:86;:128;;;;;27287:6;27273:21;;:2;:21;;;;27166:128;:158;;;;;27316:8;;;;;;;;;;;27315:9;27166:158;27144:1767;;;27362:13;;;;;;;;;;;27358:148;;27407:19;:25;27427:4;27407:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27436:19;:23;27456:2;27436:23;;;;;;;;;;;;;;;;;;;;;;;;;27407:52;27399:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27358:148;27665:20;;;;;;;;;;;27661:423;;;27719:7;:5;:7::i;:::-;27713:13;;:2;:13;;;;:47;;;;;27744:15;27730:30;;:2;:30;;;;27713:47;:79;;;;;27778:13;27764:28;;:2;:28;;;;27713:79;27709:356;;;27870:12;27828:28;:39;27857:9;27828:39;;;;;;;;;;;;;;;;:54;27820:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28029:12;27987:28;:39;28016:9;27987:39;;;;;;;;;;;;;;;:54;;;;27709:356;27661:423;28137:25;:31;28163:4;28137:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28173:31;:35;28205:2;28173:35;;;;;;;;;;;;;;;;;;;;;;;;;28172:36;28137:71;28133:763;;;28255:20;;28245:6;:30;;28237:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;28394:9;;28377:13;28387:2;28377:9;:13::i;:::-;28368:6;:22;;;;:::i;:::-;:35;;28360:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28133:763;;;28506:25;:29;28532:2;28506:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28540:31;:37;28572:4;28540:37;;;;;;;;;;;;;;;;;;;;;;;;;28539:38;28506:71;28502:394;;;28624:20;;28614:6;:30;;28606:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;28502:394;;;28750:31;:35;28782:2;28750:35;;;;;;;;;;;;;;;;;;;;;;;;;28746:150;;28843:9;;28826:13;28836:2;28826:9;:13::i;:::-;28817:6;:22;;;;:::i;:::-;:35;;28809:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28746:150;28502:394;28133:763;27144:1767;27111:1811;28935:10;28956:13;28948:21;;:4;:21;;;28935:34;;28985:5;28984:6;:28;;;;;28994:18;;;;;;;;;;;28984:28;28980:1059;;;29067:1;29033:24;:30;29058:4;29033:30;;;;;;;;;;;;;;;;:35;;:120;;;;;29137:15;29124:8;29090:24;:30;29115:4;29090:30;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:62;;29033:120;29029:601;;;29194:21;;29175:16;:40;;;;29253:21;;29234:16;:40;;;;29300:15;;29287:10;:28;;;;29388:10;;29369:16;;29350;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;29334:13;:64;;;;29029:601;;;29458:1;29439:16;:20;;;;29497:1;29478:16;:20;;;;29530:1;29517:10;:14;;;;29604:10;;29585:16;;29566;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;29550:13;:64;;;;29029:601;28980:1059;;;29698:1;29666:24;:28;29691:2;29666:28;;;;;;;;;;;;;;;;:33;29662:120;;;29751:15;29720:24;:28;29745:2;29720:28;;;;;;;;;;;;;;;:46;;;;29662:120;29804:18;;;;;;;;;;;29799:229;;29862:1;29843:16;:20;;;;29901:1;29882:16;:20;;;;29928:1;29915:10;:14;;;;30002:10;;29983:16;;29964;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;29948:13;:64;;;;29799:229;28980:1059;30052:28;30083:24;30101:4;30083:9;:24::i;:::-;30052:55;;30121:12;30160:18;;30136:20;:42;;30121:57;;30210:7;:35;;;;;30234:11;;;;;;;;;;;30210:35;:61;;;;;30263:8;;;;;;;;;;;30262:9;30210:61;:110;;;;;30289:25;:31;30315:4;30289:31;;;;;;;;;;;;;;;;;;;;;;;;;30288:32;30210:110;:153;;;;;30338:19;:25;30358:4;30338:25;;;;;;;;;;;;;;;;;;;;;;;;;30337:26;30210:153;:194;;;;;30381:19;:23;30401:2;30381:23;;;;;;;;;;;;;;;;;;;;;;;;;30380:24;30210:194;30192:328;;;30442:4;30431:8;;:15;;;;;;;;;;;;;;;;;;30464:10;:8;:10::i;:::-;30503:5;30492:8;;:16;;;;;;;;;;;;;;;;;;30192:328;30533:12;30549:8;;;;;;;;;;;30548:9;30533:24;;30574:19;:25;30594:4;30574:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30603:19;:23;30623:2;30603:23;;;;;;;;;;;;;;;;;;;;;;;;;30574:52;30571:99;;;30653:5;30643:15;;30571:99;30683:12;30713:7;30710:957;;;30764:25;:29;30790:2;30764:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;30813:1;30797:13;;:17;30764:50;30760:754;;;30841:34;30871:3;30841:25;30852:13;;30841:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;30834:41;;30942:13;;30923:16;;30916:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;30894:18;;:61;;;;;;;:::i;:::-;;;;;;;;31010:13;;30997:10;;30990:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;30974:12;;:49;;;;;;;:::i;:::-;;;;;;;;31090:13;;31071:16;;31064:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;31042:18;;:61;;;;;;;:::i;:::-;;;;;;;;30760:754;;;31164:25;:31;31190:4;31164:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;31214:1;31199:12;;:16;31164:51;31161:353;;;31243:33;31272:3;31243:24;31254:12;;31243:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;31236:40;;31342:12;;31324:15;;31317:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31295:18;;:59;;;;;;;:::i;:::-;;;;;;;;31408:12;;31396:9;;31389:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;31373:12;;:47;;;;;;;:::i;:::-;;;;;;;;31486:12;;31468:15;;31461:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31439:18;;:59;;;;;;;:::i;:::-;;;;;;;;31161:353;30760:754;31541:1;31534:4;:8;31531:93;;;31566:42;31582:4;31596;31603;31566:15;:42::i;:::-;31531:93;31651:4;31641:14;;;;;:::i;:::-;;;30710:957;31680:33;31696:4;31702:2;31706:6;31680:15;:33::i;:::-;26841:4880;;;;;26728:4993;;;;:::o;9254:193::-;9340:7;9373:1;9368;:6;;9376:12;9360:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9400:9;9416:1;9412;:5;;;;:::i;:::-;9400:17;;9438:1;9431:8;;;9254:193;;;;;:::o;25810:189::-;25927:5;25893:25;:31;25919:4;25893:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25985:5;25951:40;;25979:4;25951:40;;;;;;;;;;;;25810:189;;:::o;6963:575::-;7121:1;7103:20;;:6;:20;;;;7095:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7205:1;7184:23;;:9;:23;;;;7176:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7261:47;7282:6;7290:9;7301:6;7261:20;:47::i;:::-;7342:71;7364:6;7342:71;;;;;;;;;;;;;;;;;:9;:17;7352:6;7342:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7322:9;:17;7332:6;7322:17;;;;;;;;;;;;;;;:91;;;;7447:32;7472:6;7447:9;:20;7457:9;7447:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7424:9;:20;7434:9;7424:20;;;;;;;;;;;;;;;:55;;;;7512:9;7495:35;;7504:6;7495:35;;;7523:6;7495:35;;;;;;:::i;:::-;;;;;;;;6963:575;;;:::o;32680:1519::-;32719:23;32745:24;32763:4;32745:9;:24::i;:::-;32719:50;;32780:25;32850:12;;32829:18;;32808;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;32780:82;;32873:12;32921:1;32902:15;:20;:46;;;;32947:1;32926:17;:22;32902:46;32899:60;;;32951:7;;;;;32899:60;33014:2;32993:18;;:23;;;;:::i;:::-;32975:15;:41;32972:111;;;33069:2;33048:18;;:23;;;;:::i;:::-;33030:41;;32972:111;33096:23;33181:1;33161:17;33140:18;;33122:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;33096:86;;33193:26;33222:36;33242:15;33222;:19;;:36;;;;:::i;:::-;33193:65;;33272:25;33300:21;33272:49;;33335:36;33352:18;33335:16;:36::i;:::-;33386:18;33407:44;33433:17;33407:21;:25;;:44;;;;:::i;:::-;33386:65;;33465:23;33491:57;33530:17;33491:34;33506:18;;33491:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;33465:83;;33559:17;33579:51;33612:17;33579:28;33594:12;;33579:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;33559:71;;33641:23;33698:9;33680:15;33667:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;33641:66;;33745:1;33724:18;:22;;;;33778:1;33757:18;:22;;;;33805:1;33790:12;:16;;;;33841:9;;;;;;;;;;;33833:23;;33864:9;33833:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33820:58;;;;;33913:1;33895:15;:19;:42;;;;;33936:1;33918:15;:19;33895:42;33892:210;;;33953:46;33966:15;33983;33953:12;:46::i;:::-;34019:71;34034:18;34054:15;34071:18;;34019:71;;;;;;;;:::i;:::-;;;;;;;;33892:210;34136:15;;;;;;;;;;;34128:29;;34165:21;34128:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34115:76;;;;;32708:1491;;;;;;;;;;32680:1519;:::o;9456:473::-;9514:7;9764:1;9759;:6;9755:47;;;9789:1;9782:8;;;;9755:47;9815:9;9831:1;9827;:5;;;;:::i;:::-;9815:17;;9860:1;9855;9851;:5;;;;:::i;:::-;:10;9843:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9920:1;9913:8;;;9456:473;;;;;:::o;9938:132::-;9996:7;10023:39;10027:1;10030;10023:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10016:46;;9938:132;;;;:::o;8755:125::-;;;;:::o;9109:136::-;9167:7;9194:43;9198:1;9201;9194:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9187:50;;9109:136;;;;:::o;31730:511::-;31799:21;31837:1;31823:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31799:40;;31868:4;31850;31855:1;31850:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31894:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31884:4;31889:1;31884:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31930:62;31947:4;31962:15;31980:11;31930:8;:62::i;:::-;32006:15;:66;;;32087:11;32113:1;32157:4;32184;32204:15;32006:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31785:456;31730:511;:::o;32250:421::-;32331:62;32348:4;32363:15;32381:11;32331:8;:62::i;:::-;32407:15;:31;;;32446:9;32479:4;32499:11;32525:1;32568;18274:6;32637:15;32407:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32250:421;;:::o;10079:279::-;10165:7;10197:1;10193;:5;10200:12;10185:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10224:9;10240:1;10236;:5;;;;:::i;:::-;10224:17;;10349:1;10342:8;;;10079:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:1057::-;5598:6;5606;5614;5622;5630;5638;5687:3;5675:9;5666:7;5662:23;5658:33;5655:120;;;5694:79;;:::i;:::-;5655:120;5814:1;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5785:117;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;6069:2;6095:53;6140:7;6131:6;6120:9;6116:22;6095:53;:::i;:::-;6085:63;;6040:118;6197:2;6223:53;6268:7;6259:6;6248:9;6244:22;6223:53;:::i;:::-;6213:63;;6168:118;6325:3;6352:53;6397:7;6388:6;6377:9;6373:22;6352:53;:::i;:::-;6342:63;;6296:119;6454:3;6481:53;6526:7;6517:6;6506:9;6502:22;6481:53;:::i;:::-;6471:63;;6425:119;5494:1057;;;;;;;;:::o;6557:619::-;6634:6;6642;6650;6699:2;6687:9;6678:7;6674:23;6670:32;6667:119;;;6705:79;;:::i;:::-;6667:119;6825:1;6850:53;6895:7;6886:6;6875:9;6871:22;6850:53;:::i;:::-;6840:63;;6796:117;6952:2;6978:53;7023:7;7014:6;7003:9;6999:22;6978:53;:::i;:::-;6968:63;;6923:118;7080:2;7106:53;7151:7;7142:6;7131:9;7127:22;7106:53;:::i;:::-;7096:63;;7051:118;6557:619;;;;;:::o;7182:118::-;7269:24;7287:5;7269:24;:::i;:::-;7264:3;7257:37;7182:118;;:::o;7306:222::-;7399:4;7437:2;7426:9;7422:18;7414:26;;7450:71;7518:1;7507:9;7503:17;7494:6;7450:71;:::i;:::-;7306:222;;;;:::o;7534:86::-;7569:7;7609:4;7602:5;7598:16;7587:27;;7534:86;;;:::o;7626:112::-;7709:22;7725:5;7709:22;:::i;:::-;7704:3;7697:35;7626:112;;:::o;7744:214::-;7833:4;7871:2;7860:9;7856:18;7848:26;;7884:67;7948:1;7937:9;7933:17;7924:6;7884:67;:::i;:::-;7744:214;;;;:::o;7964:116::-;8034:21;8049:5;8034:21;:::i;:::-;8027:5;8024:32;8014:60;;8070:1;8067;8060:12;8014:60;7964:116;:::o;8086:133::-;8129:5;8167:6;8154:20;8145:29;;8183:30;8207:5;8183:30;:::i;:::-;8086:133;;;;:::o;8225:468::-;8290:6;8298;8347:2;8335:9;8326:7;8322:23;8318:32;8315:119;;;8353:79;;:::i;:::-;8315:119;8473:1;8498:53;8543:7;8534:6;8523:9;8519:22;8498:53;:::i;:::-;8488:63;;8444:117;8600:2;8626:50;8668:7;8659:6;8648:9;8644:22;8626:50;:::i;:::-;8616:60;;8571:115;8225:468;;;;;:::o;8699:619::-;8776:6;8784;8792;8841:2;8829:9;8820:7;8816:23;8812:32;8809:119;;;8847:79;;:::i;:::-;8809:119;8967:1;8992:53;9037:7;9028:6;9017:9;9013:22;8992:53;:::i;:::-;8982:63;;8938:117;9094:2;9120:53;9165:7;9156:6;9145:9;9141:22;9120:53;:::i;:::-;9110:63;;9065:118;9222:2;9248:53;9293:7;9284:6;9273:9;9269:22;9248:53;:::i;:::-;9238:63;;9193:118;8699:619;;;;;:::o;9324:323::-;9380:6;9429:2;9417:9;9408:7;9404:23;9400:32;9397:119;;;9435:79;;:::i;:::-;9397:119;9555:1;9580:50;9622:7;9613:6;9602:9;9598:22;9580:50;:::i;:::-;9570:60;;9526:114;9324:323;;;;:::o;9653:474::-;9721:6;9729;9778:2;9766:9;9757:7;9753:23;9749:32;9746:119;;;9784:79;;:::i;:::-;9746:119;9904:1;9929:53;9974:7;9965:6;9954:9;9950:22;9929:53;:::i;:::-;9919:63;;9875:117;10031:2;10057:53;10102:7;10093:6;10082:9;10078:22;10057:53;:::i;:::-;10047:63;;10002:118;9653:474;;;;;:::o;10133:180::-;10181:77;10178:1;10171:88;10278:4;10275:1;10268:15;10302:4;10299:1;10292:15;10319:320;10363:6;10400:1;10394:4;10390:12;10380:22;;10447:1;10441:4;10437:12;10468:18;10458:81;;10524:4;10516:6;10512:17;10502:27;;10458:81;10586:2;10578:6;10575:14;10555:18;10552:38;10549:84;;;10605:18;;:::i;:::-;10549:84;10370:269;10319:320;;;:::o;10645:182::-;10785:34;10781:1;10773:6;10769:14;10762:58;10645:182;:::o;10833:366::-;10975:3;10996:67;11060:2;11055:3;10996:67;:::i;:::-;10989:74;;11072:93;11161:3;11072:93;:::i;:::-;11190:2;11185:3;11181:12;11174:19;;10833:366;;;:::o;11205:419::-;11371:4;11409:2;11398:9;11394:18;11386:26;;11458:9;11452:4;11448:20;11444:1;11433:9;11429:17;11422:47;11486:131;11612:4;11486:131;:::i;:::-;11478:139;;11205:419;;;:::o;11630:180::-;11678:77;11675:1;11668:88;11775:4;11772:1;11765:15;11799:4;11796:1;11789:15;11816:348;11856:7;11879:20;11897:1;11879:20;:::i;:::-;11874:25;;11913:20;11931:1;11913:20;:::i;:::-;11908:25;;12101:1;12033:66;12029:74;12026:1;12023:81;12018:1;12011:9;12004:17;12000:105;11997:131;;;12108:18;;:::i;:::-;11997:131;12156:1;12153;12149:9;12138:20;;11816:348;;;;:::o;12170:180::-;12218:77;12215:1;12208:88;12315:4;12312:1;12305:15;12339:4;12336:1;12329:15;12356:185;12396:1;12413:20;12431:1;12413:20;:::i;:::-;12408:25;;12447:20;12465:1;12447:20;:::i;:::-;12442:25;;12486:1;12476:35;;12491:18;;:::i;:::-;12476:35;12533:1;12530;12526:9;12521:14;;12356:185;;;;:::o;12547:234::-;12687:34;12683:1;12675:6;12671:14;12664:58;12756:17;12751:2;12743:6;12739:15;12732:42;12547:234;:::o;12787:366::-;12929:3;12950:67;13014:2;13009:3;12950:67;:::i;:::-;12943:74;;13026:93;13115:3;13026:93;:::i;:::-;13144:2;13139:3;13135:12;13128:19;;12787:366;;;:::o;13159:419::-;13325:4;13363:2;13352:9;13348:18;13340:26;;13412:9;13406:4;13402:20;13398:1;13387:9;13383:17;13376:47;13440:131;13566:4;13440:131;:::i;:::-;13432:139;;13159:419;;;:::o;13584:305::-;13624:3;13643:20;13661:1;13643:20;:::i;:::-;13638:25;;13677:20;13695:1;13677:20;:::i;:::-;13672:25;;13831:1;13763:66;13759:74;13756:1;13753:81;13750:107;;;13837:18;;:::i;:::-;13750:107;13881:1;13878;13874:9;13867:16;;13584:305;;;;:::o;13895:221::-;14035:34;14031:1;14023:6;14019:14;14012:58;14104:4;14099:2;14091:6;14087:15;14080:29;13895:221;:::o;14122:366::-;14264:3;14285:67;14349:2;14344:3;14285:67;:::i;:::-;14278:74;;14361:93;14450:3;14361:93;:::i;:::-;14479:2;14474:3;14470:12;14463:19;;14122:366;;;:::o;14494:419::-;14660:4;14698:2;14687:9;14683:18;14675:26;;14747:9;14741:4;14737:20;14733:1;14722:9;14718:17;14711:47;14775:131;14901:4;14775:131;:::i;:::-;14767:139;;14494:419;;;:::o;14919:226::-;15059:34;15055:1;15047:6;15043:14;15036:58;15128:9;15123:2;15115:6;15111:15;15104:34;14919:226;:::o;15151:366::-;15293:3;15314:67;15378:2;15373:3;15314:67;:::i;:::-;15307:74;;15390:93;15479:3;15390:93;:::i;:::-;15508:2;15503:3;15499:12;15492:19;;15151:366;;;:::o;15523:419::-;15689:4;15727:2;15716:9;15712:18;15704:26;;15776:9;15770:4;15766:20;15762:1;15751:9;15747:17;15740:47;15804:131;15930:4;15804:131;:::i;:::-;15796:139;;15523:419;;;:::o;15948:220::-;16088:34;16084:1;16076:6;16072:14;16065:58;16157:3;16152:2;16144:6;16140:15;16133:28;15948:220;:::o;16174:366::-;16316:3;16337:67;16401:2;16396:3;16337:67;:::i;:::-;16330:74;;16413:93;16502:3;16413:93;:::i;:::-;16531:2;16526:3;16522:12;16515:19;;16174:366;;;:::o;16546:419::-;16712:4;16750:2;16739:9;16735:18;16727:26;;16799:9;16793:4;16789:20;16785:1;16774:9;16770:17;16763:47;16827:131;16953:4;16827:131;:::i;:::-;16819:139;;16546:419;;;:::o;16971:244::-;17111:34;17107:1;17099:6;17095:14;17088:58;17180:27;17175:2;17167:6;17163:15;17156:52;16971:244;:::o;17221:366::-;17363:3;17384:67;17448:2;17443:3;17384:67;:::i;:::-;17377:74;;17460:93;17549:3;17460:93;:::i;:::-;17578:2;17573:3;17569:12;17562:19;;17221:366;;;:::o;17593:419::-;17759:4;17797:2;17786:9;17782:18;17774:26;;17846:9;17840:4;17836:20;17832:1;17821:9;17817:17;17810:47;17874:131;18000:4;17874:131;:::i;:::-;17866:139;;17593:419;;;:::o;18018:223::-;18158:34;18154:1;18146:6;18142:14;18135:58;18227:6;18222:2;18214:6;18210:15;18203:31;18018:223;:::o;18247:366::-;18389:3;18410:67;18474:2;18469:3;18410:67;:::i;:::-;18403:74;;18486:93;18575:3;18486:93;:::i;:::-;18604:2;18599:3;18595:12;18588:19;;18247:366;;;:::o;18619:419::-;18785:4;18823:2;18812:9;18808:18;18800:26;;18872:9;18866:4;18862:20;18858:1;18847:9;18843:17;18836:47;18900:131;19026:4;18900:131;:::i;:::-;18892:139;;18619:419;;;:::o;19044:225::-;19184:34;19180:1;19172:6;19168:14;19161:58;19253:8;19248:2;19240:6;19236:15;19229:33;19044:225;:::o;19275:366::-;19417:3;19438:67;19502:2;19497:3;19438:67;:::i;:::-;19431:74;;19514:93;19603:3;19514:93;:::i;:::-;19632:2;19627:3;19623:12;19616:19;;19275:366;;;:::o;19647:419::-;19813:4;19851:2;19840:9;19836:18;19828:26;;19900:9;19894:4;19890:20;19886:1;19875:9;19871:17;19864:47;19928:131;20054:4;19928:131;:::i;:::-;19920:139;;19647:419;;;:::o;20072:177::-;20212:29;20208:1;20200:6;20196:14;20189:53;20072:177;:::o;20255:366::-;20397:3;20418:67;20482:2;20477:3;20418:67;:::i;:::-;20411:74;;20494:93;20583:3;20494:93;:::i;:::-;20612:2;20607:3;20603:12;20596:19;;20255:366;;;:::o;20627:419::-;20793:4;20831:2;20820:9;20816:18;20808:26;;20880:9;20874:4;20870:20;20866:1;20855:9;20851:17;20844:47;20908:131;21034:4;20908:131;:::i;:::-;20900:139;;20627:419;;;:::o;21052:223::-;21192:34;21188:1;21180:6;21176:14;21169:58;21261:6;21256:2;21248:6;21244:15;21237:31;21052:223;:::o;21281:366::-;21423:3;21444:67;21508:2;21503:3;21444:67;:::i;:::-;21437:74;;21520:93;21609:3;21520:93;:::i;:::-;21638:2;21633:3;21629:12;21622:19;;21281:366;;;:::o;21653:419::-;21819:4;21857:2;21846:9;21842:18;21834:26;;21906:9;21900:4;21896:20;21892:1;21881:9;21877:17;21870:47;21934:131;22060:4;21934:131;:::i;:::-;21926:139;;21653:419;;;:::o;22078:221::-;22218:34;22214:1;22206:6;22202:14;22195:58;22287:4;22282:2;22274:6;22270:15;22263:29;22078:221;:::o;22305:366::-;22447:3;22468:67;22532:2;22527:3;22468:67;:::i;:::-;22461:74;;22544:93;22633:3;22544:93;:::i;:::-;22662:2;22657:3;22653:12;22646:19;;22305:366;;;:::o;22677:419::-;22843:4;22881:2;22870:9;22866:18;22858:26;;22930:9;22924:4;22920:20;22916:1;22905:9;22901:17;22894:47;22958:131;23084:4;22958:131;:::i;:::-;22950:139;;22677:419;;;:::o;23102:224::-;23242:34;23238:1;23230:6;23226:14;23219:58;23311:7;23306:2;23298:6;23294:15;23287:32;23102:224;:::o;23332:366::-;23474:3;23495:67;23559:2;23554:3;23495:67;:::i;:::-;23488:74;;23571:93;23660:3;23571:93;:::i;:::-;23689:2;23684:3;23680:12;23673:19;;23332:366;;;:::o;23704:419::-;23870:4;23908:2;23897:9;23893:18;23885:26;;23957:9;23951:4;23947:20;23943:1;23932:9;23928:17;23921:47;23985:131;24111:4;23985:131;:::i;:::-;23977:139;;23704:419;;;:::o;24129:222::-;24269:34;24265:1;24257:6;24253:14;24246:58;24338:5;24333:2;24325:6;24321:15;24314:30;24129:222;:::o;24357:366::-;24499:3;24520:67;24584:2;24579:3;24520:67;:::i;:::-;24513:74;;24596:93;24685:3;24596:93;:::i;:::-;24714:2;24709:3;24705:12;24698:19;;24357:366;;;:::o;24729:419::-;24895:4;24933:2;24922:9;24918:18;24910:26;;24982:9;24976:4;24972:20;24968:1;24957:9;24953:17;24946:47;25010:131;25136:4;25010:131;:::i;:::-;25002:139;;24729:419;;;:::o;25154:172::-;25294:24;25290:1;25282:6;25278:14;25271:48;25154:172;:::o;25332:366::-;25474:3;25495:67;25559:2;25554:3;25495:67;:::i;:::-;25488:74;;25571:93;25660:3;25571:93;:::i;:::-;25689:2;25684:3;25680:12;25673:19;;25332:366;;;:::o;25704:419::-;25870:4;25908:2;25897:9;25893:18;25885:26;;25957:9;25951:4;25947:20;25943:1;25932:9;25928:17;25921:47;25985:131;26111:4;25985:131;:::i;:::-;25977:139;;25704:419;;;:::o;26129:297::-;26269:34;26265:1;26257:6;26253:14;26246:58;26338:34;26333:2;26325:6;26321:15;26314:59;26407:11;26402:2;26394:6;26390:15;26383:36;26129:297;:::o;26432:366::-;26574:3;26595:67;26659:2;26654:3;26595:67;:::i;:::-;26588:74;;26671:93;26760:3;26671:93;:::i;:::-;26789:2;26784:3;26780:12;26773:19;;26432:366;;;:::o;26804:419::-;26970:4;27008:2;26997:9;26993:18;26985:26;;27057:9;27051:4;27047:20;27043:1;27032:9;27028:17;27021:47;27085:131;27211:4;27085:131;:::i;:::-;27077:139;;26804:419;;;:::o;27229:240::-;27369:34;27365:1;27357:6;27353:14;27346:58;27438:23;27433:2;27425:6;27421:15;27414:48;27229:240;:::o;27475:366::-;27617:3;27638:67;27702:2;27697:3;27638:67;:::i;:::-;27631:74;;27714:93;27803:3;27714:93;:::i;:::-;27832:2;27827:3;27823:12;27816:19;;27475:366;;;:::o;27847:419::-;28013:4;28051:2;28040:9;28036:18;28028:26;;28100:9;28094:4;28090:20;28086:1;28075:9;28071:17;28064:47;28128:131;28254:4;28128:131;:::i;:::-;28120:139;;27847:419;;;:::o;28272:169::-;28412:21;28408:1;28400:6;28396:14;28389:45;28272:169;:::o;28447:366::-;28589:3;28610:67;28674:2;28669:3;28610:67;:::i;:::-;28603:74;;28686:93;28775:3;28686:93;:::i;:::-;28804:2;28799:3;28795:12;28788:19;;28447:366;;;:::o;28819:419::-;28985:4;29023:2;29012:9;29008:18;29000:26;;29072:9;29066:4;29062:20;29058:1;29047:9;29043:17;29036:47;29100:131;29226:4;29100:131;:::i;:::-;29092:139;;28819:419;;;:::o;29244:241::-;29384:34;29380:1;29372:6;29368:14;29361:58;29453:24;29448:2;29440:6;29436:15;29429:49;29244:241;:::o;29491:366::-;29633:3;29654:67;29718:2;29713:3;29654:67;:::i;:::-;29647:74;;29730:93;29819:3;29730:93;:::i;:::-;29848:2;29843:3;29839:12;29832:19;;29491:366;;;:::o;29863:419::-;30029:4;30067:2;30056:9;30052:18;30044:26;;30116:9;30110:4;30106:20;30102:1;30091:9;30087:17;30080:47;30144:131;30270:4;30144:131;:::i;:::-;30136:139;;29863:419;;;:::o;30288:191::-;30328:4;30348:20;30366:1;30348:20;:::i;:::-;30343:25;;30382:20;30400:1;30382:20;:::i;:::-;30377:25;;30421:1;30418;30415:8;30412:34;;;30426:18;;:::i;:::-;30412:34;30471:1;30468;30464:9;30456:17;;30288:191;;;;:::o;30485:147::-;30586:11;30623:3;30608:18;;30485:147;;;;:::o;30638:114::-;;:::o;30758:398::-;30917:3;30938:83;31019:1;31014:3;30938:83;:::i;:::-;30931:90;;31030:93;31119:3;31030:93;:::i;:::-;31148:1;31143:3;31139:11;31132:18;;30758:398;;;:::o;31162:379::-;31346:3;31368:147;31511:3;31368:147;:::i;:::-;31361:154;;31532:3;31525:10;;31162:379;;;:::o;31547:442::-;31696:4;31734:2;31723:9;31719:18;31711:26;;31747:71;31815:1;31804:9;31800:17;31791:6;31747:71;:::i;:::-;31828:72;31896:2;31885:9;31881:18;31872:6;31828:72;:::i;:::-;31910;31978:2;31967:9;31963:18;31954:6;31910:72;:::i;:::-;31547:442;;;;;;:::o;31995:220::-;32135:34;32131:1;32123:6;32119:14;32112:58;32204:3;32199:2;32191:6;32187:15;32180:28;31995:220;:::o;32221:366::-;32363:3;32384:67;32448:2;32443:3;32384:67;:::i;:::-;32377:74;;32460:93;32549:3;32460:93;:::i;:::-;32578:2;32573:3;32569:12;32562:19;;32221:366;;;:::o;32593:419::-;32759:4;32797:2;32786:9;32782:18;32774:26;;32846:9;32840:4;32836:20;32832:1;32821:9;32817:17;32810:47;32874:131;33000:4;32874:131;:::i;:::-;32866:139;;32593:419;;;:::o;33018:180::-;33066:77;33063:1;33056:88;33163:4;33160:1;33153:15;33187:4;33184:1;33177:15;33204:180;33252:77;33249:1;33242:88;33349:4;33346:1;33339:15;33373:4;33370:1;33363:15;33390:143;33447:5;33478:6;33472:13;33463:22;;33494:33;33521:5;33494:33;:::i;:::-;33390:143;;;;:::o;33539:351::-;33609:6;33658:2;33646:9;33637:7;33633:23;33629:32;33626:119;;;33664:79;;:::i;:::-;33626:119;33784:1;33809:64;33865:7;33856:6;33845:9;33841:22;33809:64;:::i;:::-;33799:74;;33755:128;33539:351;;;;:::o;33896:85::-;33941:7;33970:5;33959:16;;33896:85;;;:::o;33987:158::-;34045:9;34078:61;34096:42;34105:32;34131:5;34105:32;:::i;:::-;34096:42;:::i;:::-;34078:61;:::i;:::-;34065:74;;33987:158;;;:::o;34151:147::-;34246:45;34285:5;34246:45;:::i;:::-;34241:3;34234:58;34151:147;;:::o;34304:114::-;34371:6;34405:5;34399:12;34389:22;;34304:114;;;:::o;34424:184::-;34523:11;34557:6;34552:3;34545:19;34597:4;34592:3;34588:14;34573:29;;34424:184;;;;:::o;34614:132::-;34681:4;34704:3;34696:11;;34734:4;34729:3;34725:14;34717:22;;34614:132;;;:::o;34752:108::-;34829:24;34847:5;34829:24;:::i;:::-;34824:3;34817:37;34752:108;;:::o;34866:179::-;34935:10;34956:46;34998:3;34990:6;34956:46;:::i;:::-;35034:4;35029:3;35025:14;35011:28;;34866:179;;;;:::o;35051:113::-;35121:4;35153;35148:3;35144:14;35136:22;;35051:113;;;:::o;35200:732::-;35319:3;35348:54;35396:5;35348:54;:::i;:::-;35418:86;35497:6;35492:3;35418:86;:::i;:::-;35411:93;;35528:56;35578:5;35528:56;:::i;:::-;35607:7;35638:1;35623:284;35648:6;35645:1;35642:13;35623:284;;;35724:6;35718:13;35751:63;35810:3;35795:13;35751:63;:::i;:::-;35744:70;;35837:60;35890:6;35837:60;:::i;:::-;35827:70;;35683:224;35670:1;35667;35663:9;35658:14;;35623:284;;;35627:14;35923:3;35916:10;;35324:608;;;35200:732;;;;:::o;35938:831::-;36201:4;36239:3;36228:9;36224:19;36216:27;;36253:71;36321:1;36310:9;36306:17;36297:6;36253:71;:::i;:::-;36334:80;36410:2;36399:9;36395:18;36386:6;36334:80;:::i;:::-;36461:9;36455:4;36451:20;36446:2;36435:9;36431:18;36424:48;36489:108;36592:4;36583:6;36489:108;:::i;:::-;36481:116;;36607:72;36675:2;36664:9;36660:18;36651:6;36607:72;:::i;:::-;36689:73;36757:3;36746:9;36742:19;36733:6;36689:73;:::i;:::-;35938:831;;;;;;;;:::o;36775:807::-;37024:4;37062:3;37051:9;37047:19;37039:27;;37076:71;37144:1;37133:9;37129:17;37120:6;37076:71;:::i;:::-;37157:72;37225:2;37214:9;37210:18;37201:6;37157:72;:::i;:::-;37239:80;37315:2;37304:9;37300:18;37291:6;37239:80;:::i;:::-;37329;37405:2;37394:9;37390:18;37381:6;37329:80;:::i;:::-;37419:73;37487:3;37476:9;37472:19;37463:6;37419:73;:::i;:::-;37502;37570:3;37559:9;37555:19;37546:6;37502:73;:::i;:::-;36775:807;;;;;;;;;:::o;37588:143::-;37645:5;37676:6;37670:13;37661:22;;37692:33;37719:5;37692:33;:::i;:::-;37588:143;;;;:::o;37737:663::-;37825:6;37833;37841;37890:2;37878:9;37869:7;37865:23;37861:32;37858:119;;;37896:79;;:::i;:::-;37858:119;38016:1;38041:64;38097:7;38088:6;38077:9;38073:22;38041:64;:::i;:::-;38031:74;;37987:128;38154:2;38180:64;38236:7;38227:6;38216:9;38212:22;38180:64;:::i;:::-;38170:74;;38125:129;38293:2;38319:64;38375:7;38366:6;38355:9;38351:22;38319:64;:::i;:::-;38309:74;;38264:129;37737:663;;;;;:::o
Swarm Source
ipfs://de7791d0e35985a8c07a69e454fdd69b3948c5bf04cad96e609b95b60d6eb41f
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.