More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 109 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15863700 | 772 days ago | IN | 0 ETH | 0.00033899 | ||||
Approve | 15863691 | 772 days ago | IN | 0 ETH | 0.00032068 | ||||
Approve | 15862660 | 773 days ago | IN | 0 ETH | 0.00034156 | ||||
Approve | 15846426 | 775 days ago | IN | 0 ETH | 0.00063655 | ||||
Approve | 15837575 | 776 days ago | IN | 0 ETH | 0.00043954 | ||||
Approve | 15835711 | 776 days ago | IN | 0 ETH | 0.00065102 | ||||
Approve | 15835703 | 776 days ago | IN | 0 ETH | 0.00061264 | ||||
Approve | 15835682 | 776 days ago | IN | 0 ETH | 0.00061262 | ||||
Approve | 15835661 | 776 days ago | IN | 0 ETH | 0.00053011 | ||||
Approve | 15835651 | 776 days ago | IN | 0 ETH | 0.00052646 | ||||
Approve | 15835614 | 776 days ago | IN | 0 ETH | 0.0006653 | ||||
Approve | 15835597 | 776 days ago | IN | 0 ETH | 0.00058549 | ||||
Approve | 15835594 | 776 days ago | IN | 0 ETH | 0.00059909 | ||||
Approve | 15835589 | 776 days ago | IN | 0 ETH | 0.00064866 | ||||
Approve | 15835587 | 776 days ago | IN | 0 ETH | 0.00050417 | ||||
Approve | 15835586 | 776 days ago | IN | 0 ETH | 0.00062852 | ||||
Approve | 15835586 | 776 days ago | IN | 0 ETH | 0.00062852 | ||||
Approve | 15835581 | 776 days ago | IN | 0 ETH | 0.00058628 | ||||
Approve | 15835580 | 776 days ago | IN | 0 ETH | 0.00072381 | ||||
Approve | 15835576 | 776 days ago | IN | 0 ETH | 0.00064346 | ||||
Approve | 15835573 | 776 days ago | IN | 0 ETH | 0.00057433 | ||||
Approve | 15835570 | 776 days ago | IN | 0 ETH | 0.00081976 | ||||
Approve | 15835569 | 776 days ago | IN | 0 ETH | 0.00160612 | ||||
Approve | 15835568 | 776 days ago | IN | 0 ETH | 0.00078849 | ||||
Approve | 15835567 | 776 days ago | IN | 0 ETH | 0.00067944 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15863704 | 772 days ago | 0.00094825 ETH | ||||
15863704 | 772 days ago | 0.00094825 ETH | ||||
15863704 | 772 days ago | 0.00189651 ETH | ||||
15863695 | 772 days ago | 0.00105094 ETH | ||||
15863695 | 772 days ago | 0.00105094 ETH | ||||
15863695 | 772 days ago | 0.00210188 ETH | ||||
15862661 | 773 days ago | 0.00008215 ETH | ||||
15862661 | 773 days ago | 0.00008215 ETH | ||||
15862661 | 773 days ago | 0.00016431 ETH | ||||
15850897 | 774 days ago | 0.00040064 ETH | ||||
15850897 | 774 days ago | 0.00040064 ETH | ||||
15850897 | 774 days ago | 0.00080129 ETH | ||||
15846430 | 775 days ago | 0.00113193 ETH | ||||
15846430 | 775 days ago | 0.00113193 ETH | ||||
15846430 | 775 days ago | 0.00226386 ETH | ||||
15837580 | 776 days ago | 0.00048566 ETH | ||||
15837580 | 776 days ago | 0.00048566 ETH | ||||
15837580 | 776 days ago | 0.00097133 ETH | ||||
15836457 | 776 days ago | 0.00047474 ETH | ||||
15836457 | 776 days ago | 0.00047474 ETH | ||||
15836457 | 776 days ago | 0.00094948 ETH | ||||
15836452 | 776 days ago | 0.00103167 ETH | ||||
15836452 | 776 days ago | 0.00103167 ETH | ||||
15836452 | 776 days ago | 0.00206334 ETH | ||||
15835895 | 776 days ago | 0.00138993 ETH |
Loading...
Loading
Contract Name:
TheRing
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-26 */ /**Before you die, you see the ring. You have seven days. https://t.me/theringeth https://medium.com/@theringeth/i-can-see-you-867a5bb97fae * */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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); } 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) { 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; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; 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 waiveOwnership() 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; } } 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 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to); 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 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 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 TheRing is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "TheRing"; string private _symbol = "$RING"; uint8 private _decimals = 9; address payable private taxWallet1 = payable(0x7687Fb9617E250e24D53d30Cc7777309Bf88cD8d); address payable private taxWallet2 = payable(0x0A8226feBA2A0daFfE883512BB593A1ac6996BC6); address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public checkExcludedFromFees; mapping (address => bool) public checkWalletLimitExcept; mapping (address => bool) public checkTxLimitExcept; mapping (address => bool) public checkMarketPair; uint256 public _buyLiquidityFees = 0; uint256 public _buyMarketingFees = 3; uint256 public _buyDevelopmentFees = 3; uint256 public _sellLiquidityFees = 0; uint256 public _sellMarketingFees = 3; uint256 public _sellDevelopmentFees = 3; uint256 public _liquidityShares = 0; uint256 public _marketingShares = 6; uint256 public _developmentShares = 6; uint256 public _totalTaxIfBuying = 6; uint256 public _totalTaxIfSelling = 6; uint256 public _totalDistributionShares = 12; uint256 private _totalSupply = 7000 * 10**6 * 10**9; uint256 public _maxTxAmount = 14 * 10**6 * 10**9; uint256 public _walletMax = 14 * 10**6 * 10**9; uint256 private minimumTokensBeforeSwap = 10 * 10**9; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = false; bool public checkWalletLimit = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = _totalSupply; checkExcludedFromFees[owner()] = true; checkExcludedFromFees[address(this)] = true; _totalTaxIfBuying = _buyLiquidityFees.add(_buyMarketingFees).add(_buyDevelopmentFees); _totalTaxIfSelling = _sellLiquidityFees.add(_sellMarketingFees).add(_sellDevelopmentFees); _totalDistributionShares = _liquidityShares.add(_marketingShares).add(_developmentShares); checkWalletLimitExcept[owner()] = true; checkWalletLimitExcept[address(uniswapPair)] = true; checkWalletLimitExcept[address(this)] = true; checkTxLimitExcept[owner()] = true; checkTxLimitExcept[address(this)] = true; checkMarketPair[address(uniswapPair)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } 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 approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { 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 addMarketPair(address account) public onlyOwner { checkMarketPair[account] = true; } function setcheckTxLimitExcept(address holder, bool exempt) external onlyOwner { checkTxLimitExcept[holder] = exempt; } function setcheckExcludedFromFees(address account, bool newValue) public onlyOwner { checkExcludedFromFees[account] = newValue; } function setBuyFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() { _buyLiquidityFees = newLiquidityTax; _buyMarketingFees = newMarketingTax; _buyDevelopmentFees = newDevelopmentTax; _totalTaxIfBuying = _buyLiquidityFees.add(_buyMarketingFees).add(_buyDevelopmentFees); } function setSellFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() { _sellLiquidityFees = newLiquidityTax; _sellMarketingFees = newMarketingTax; _sellDevelopmentFees = newDevelopmentTax; _totalTaxIfSelling = _sellLiquidityFees.add(_sellMarketingFees).add(_sellDevelopmentFees); } function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newDevelopmentShare) external onlyOwner() { _liquidityShares = newLiquidityShare; _marketingShares = newMarketingShare; _developmentShares = newDevelopmentShare; _totalDistributionShares = _liquidityShares.add(_marketingShares).add(_developmentShares); } function adjustMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount <= (10000 * 10**6 * 10**9), "Max wallet should be less or euqal to 4% totalSupply"); _maxTxAmount = maxTxAmount; } function enableDisableWalletLimit(bool newValue) external onlyOwner { checkWalletLimit = newValue; } function setcheckWalletLimitExcept(address holder, bool exempt) external onlyOwner { checkWalletLimitExcept[holder] = exempt; } function setWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() { minimumTokensBeforeSwap = newLimit; } function settaxWallet1(address newAddress) external onlyOwner() { taxWallet1 = payable(newAddress); } function settaxWallet2(address newAddress) external onlyOwner() { taxWallet2 = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner { swapAndLiquifyByLimitOnly = newValue; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); if(newPairAddress == address(0)) //Create If Doesnt exist { newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); } uniswapPair = newPairAddress; //Set new pair address uniswapV2Router = _uniswapV2Router; //Set new router address checkWalletLimitExcept[address(uniswapPair)] = true; checkMarketPair[address(uniswapPair)] = true; } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!checkTxLimitExcept[sender] && !checkTxLimitExcept[recipient]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !checkMarketPair[sender] && swapAndLiquifyEnabled) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = (checkExcludedFromFees[sender] || checkExcludedFromFees[recipient]) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !checkWalletLimitExcept[recipient]) require(balanceOf(recipient).add(finalAmount) <= _walletMax); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { uint256 tokensForLP = tAmount.mul(_liquidityShares).div(_totalDistributionShares).div(2); uint256 tokensForSwap = tAmount.sub(tokensForLP); swapTokensForEth(tokensForSwap); uint256 amountReceived = address(this).balance; uint256 totalETHFee = _totalDistributionShares.sub(_liquidityShares.div(2)); uint256 amountETHLiquidity = amountReceived.mul(_liquidityShares).div(totalETHFee).div(2); uint256 amountETHDevelopment = amountReceived.mul(_developmentShares).div(totalETHFee); uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHDevelopment); if(amountETHMarketing > 0) transferToAddressETH(taxWallet1, amountETHMarketing); if(amountETHDevelopment > 0) transferToAddressETH(taxWallet2, amountETHDevelopment); if(amountETHLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountETHLiquidity); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(checkMarketPair[sender]) { feeAmount = amount.mul(_totalTaxIfBuying).div(100); } else if(checkMarketPair[recipient]) { feeAmount = amount.mul(_totalTaxIfSelling).div(100); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"adjustMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkTxLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkWalletLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setcheckExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckTxLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckWalletLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"settaxWallet1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"settaxWallet2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","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":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280600781526020017f54686552696e6700000000000000000000000000000000000000000000000000815250600290805190602001906200005192919062000b3f565b506040518060400160405280600581526020017f2452494e47000000000000000000000000000000000000000000000000000000815250600390805190602001906200009f92919062000b3f565b506009600460006101000a81548160ff021916908360ff160217905550737687fb9617e250e24d53d30cc7777309bf88cd8d600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730a8226feba2a0daffe883512bb593a1ac6996bc6600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000600c556003600d556003600e556000600f556003601055600360115560006012556006601355600660145560066015556006601655600c601755676124fee993bc00006018556631bced02db00006019556631bced02db0000601a556402540be400601b556001601d60156101000a81548160ff0219169083151502179055506000601d60166101000a81548160ff0219169083151502179055506001601d60176101000a81548160ff0219169083151502179055503480156200026357600080fd5b5060006200027662000aab60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037457600080fd5b505afa15801562000389573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003af919062000c06565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041257600080fd5b505afa15801562000427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044d919062000c06565b6040518363ffffffff1660e01b81526004016200046c92919062000c7b565b602060405180830381600087803b1580156200048757600080fd5b505af11580156200049c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c2919062000c06565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601854600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160086000620005fe62000ab360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006e0600e54620006cc600d54600c5462000adc60201b620028d11790919060201c565b62000adc60201b620028d11790919060201c565b6015819055506200071f6011546200070b601054600f5462000adc60201b620028d11790919060201c565b62000adc60201b620028d11790919060201c565b6016819055506200075e6014546200074a60135460125462000adc60201b620028d11790919060201c565b62000adc60201b620028d11790919060201c565b6017819055506001600960006200077a62000ab360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000620008b362000ab360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060185460066000620009ed62000aab60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a3b62000aab60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60185460405162000a9c919062000cca565b60405180910390a35062000e6a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000aed919062000cf8565b90508381101562000b35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2c9062000ca8565b60405180910390fd5b8091505092915050565b82805462000b4d9062000d93565b90600052602060002090601f01602090048101928262000b71576000855562000bbd565b82601f1062000b8c57805160ff191683800117855562000bbd565b8280016001018555821562000bbd579182015b8281111562000bbc57825182559160200191906001019062000b9f565b5b50905062000bcc919062000bd0565b5090565b5b8082111562000beb57600081600090555060010162000bd1565b5090565b60008151905062000c008162000e50565b92915050565b60006020828403121562000c1957600080fd5b600062000c298482850162000bef565b91505092915050565b62000c3d8162000d55565b82525050565b600062000c52601b8362000ce7565b915062000c5f8262000e27565b602082019050919050565b62000c758162000d89565b82525050565b600060408201905062000c92600083018562000c32565b62000ca1602083018462000c32565b9392505050565b6000602082019050818103600083015262000cc38162000c43565b9050919050565b600060208201905062000ce1600083018462000c6a565b92915050565b600082825260208201905092915050565b600062000d058262000d89565b915062000d128362000d89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d4a5762000d4962000dc9565b5b828201905092915050565b600062000d628262000d69565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000dac57607f821691505b6020821081141562000dc35762000dc262000df8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b62000e5b8162000d55565b811462000e6757600080fd5b50565b60805160601c614b8f62000e906000396000818161124801526112740152614b8f6000f3fe6080604052600436106103545760003560e01c806370a08231116101c6578063bbaa7d44116100f7578063dd62ed3e11610095578063f1d5f5171161006f578063f1d5f51714610c87578063f2fde38b14610cb0578063f872858a14610cd9578063fabf706314610d045761035b565b8063dd62ed3e14610bf6578063e207a92b14610c33578063f0cd1dac14610c5c5761035b565b8063c78a789b116100d1578063c78a789b14610b38578063c816841b14610b75578063d76e26a314610ba0578063da00097d14610bcb5761035b565b8063bbaa7d4414610abd578063c2d4640e14610ae6578063c49b9a8014610b0f5761035b565b806395d89b4111610164578063a457c2d71161013e578063a457c2d7146109ef578063a5d69d1f14610a2c578063a9059cbb14610a55578063b6c3af3414610a925761035b565b806395d89b411461096e5780639e3fa32314610999578063a08e671f146109c45761035b565b806382eefb43116101a057806382eefb43146108d85780638da5cb5b146109035780638f03aad51461092e578063914eb66a146109575761035b565b806370a08231146108455780637d1db4a514610882578063807c2d9c146108ad5761035b565b80632f0a5fd4116102a0578063565cec381161023e578063646d470011610218578063646d47001461079b578063661b6e36146107c6578063667b511c146107f1578063705f9d741461081a5761035b565b8063565cec381461070a57806357e6adcb146107355780635881f3ef1461075e5761035b565b80633b97084a1161027a5780633b97084a1461063c5780634a74bb0214610665578063526012e81461069057806355324fa9146106cd5761035b565b80632f0a5fd4146105a9578063313ce567146105d457806339509351146105ff5761035b565b806323b872dd1161030d57806327c8f835116102e757806327c8f835146104ff5780632b112e491461052a5780632cdae5cb146105555780632df671091461057e5761035b565b806323b872dd1461047057806325519cf2146104ad5780632563ae83146104d65761035b565b806306fdde0314610360578063095ea7b31461038b5780630fe1203c146103c85780631694505e146103f157806318160ddd1461041c5780631d865c30146104475761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610d41565b60405161038291906142e3565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613e66565b610dd3565b6040516103bf91906142ad565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613d4d565b610df1565b005b3480156103fd57600080fd5b50610406610eca565b60405161041391906142c8565b60405180910390f35b34801561042857600080fd5b50610431610ef0565b60405161043e9190614445565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190613ef4565b610efa565b005b34801561047c57600080fd5b5061049760048036038101906104929190613ddb565b610fda565b6040516104a491906142ad565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190613ef4565b6110b4565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190613ea2565b611194565b005b34801561050b57600080fd5b50610514611246565b6040516105219190614208565b60405180910390f35b34801561053657600080fd5b5061053f61126a565b60405161054c9190614445565b60405180910390f35b34801561056157600080fd5b5061057c60048036038101906105779190613e2a565b6112ae565b005b34801561058a57600080fd5b5061059361139e565b6040516105a09190614445565b60405180910390f35b3480156105b557600080fd5b506105be6113a4565b6040516105cb9190614445565b60405180910390f35b3480156105e057600080fd5b506105e96113aa565b6040516105f691906144ea565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613e66565b6113c1565b60405161063391906142ad565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190613ecb565b611474565b005b34801561067157600080fd5b5061067a611513565b60405161068791906142ad565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190613d4d565b611526565b6040516106c491906142ad565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190613d4d565b611546565b60405161070191906142ad565b60405180910390f35b34801561071657600080fd5b5061071f611566565b60405161072c9190614445565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190613e2a565b61156c565b005b34801561076a57600080fd5b5061078560048036038101906107809190613d4d565b61165c565b6040516107929190614208565b60405180910390f35b3480156107a757600080fd5b506107b0611bba565b6040516107bd9190614445565b60405180910390f35b3480156107d257600080fd5b506107db611bc0565b6040516107e89190614445565b60405180910390f35b3480156107fd57600080fd5b5061081860048036038101906108139190613e2a565b611bc6565b005b34801561082657600080fd5b5061082f611cb6565b60405161083c9190614445565b60405180910390f35b34801561085157600080fd5b5061086c60048036038101906108679190613d4d565b611cbc565b6040516108799190614445565b60405180910390f35b34801561088e57600080fd5b50610897611d05565b6040516108a49190614445565b60405180910390f35b3480156108b957600080fd5b506108c2611d0b565b6040516108cf9190614445565b60405180910390f35b3480156108e457600080fd5b506108ed611d11565b6040516108fa9190614445565b60405180910390f35b34801561090f57600080fd5b50610918611d17565b6040516109259190614208565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190613ecb565b611d40565b005b34801561096357600080fd5b5061096c611e2a565b005b34801561097a57600080fd5b50610983611f7d565b60405161099091906142e3565b60405180910390f35b3480156109a557600080fd5b506109ae61200f565b6040516109bb9190614445565b60405180910390f35b3480156109d057600080fd5b506109d9612015565b6040516109e69190614445565b60405180910390f35b3480156109fb57600080fd5b50610a166004803603810190610a119190613e66565b61201b565b604051610a2391906142ad565b60405180910390f35b348015610a3857600080fd5b50610a536004803603810190610a4e9190613ea2565b6120e8565b005b348015610a6157600080fd5b50610a7c6004803603810190610a779190613e66565b61219a565b604051610a8991906142ad565b60405180910390f35b348015610a9e57600080fd5b50610aa76121b9565b604051610ab49190614445565b60405180910390f35b348015610ac957600080fd5b50610ae46004803603810190610adf9190613d4d565b6121bf565b005b348015610af257600080fd5b50610b0d6004803603810190610b089190613ef4565b612298565b005b348015610b1b57600080fd5b50610b366004803603810190610b319190613ea2565b612378565b005b348015610b4457600080fd5b50610b5f6004803603810190610b5a9190613d4d565b612461565b604051610b6c91906142ad565b60405180910390f35b348015610b8157600080fd5b50610b8a612481565b604051610b979190614208565b60405180910390f35b348015610bac57600080fd5b50610bb56124a7565b604051610bc29190614445565b60405180910390f35b348015610bd757600080fd5b50610be06124ad565b604051610bed91906142ad565b60405180910390f35b348015610c0257600080fd5b50610c1d6004803603810190610c189190613d9f565b6124c0565b604051610c2a9190614445565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190613d4d565b612547565b005b348015610c6857600080fd5b50610c71612637565b604051610c7e9190614445565b60405180910390f35b348015610c9357600080fd5b50610cae6004803603810190610ca99190613ecb565b61263d565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190613d4d565b6126dc565b005b348015610ce557600080fd5b50610cee61289e565b604051610cfb91906142ad565b60405180910390f35b348015610d1057600080fd5b50610d2b6004803603810190610d269190613d4d565b6128b1565b604051610d3891906142ad565b60405180910390f35b606060028054610d509061472d565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7c9061472d565b8015610dc95780601f10610d9e57610100808354040283529160200191610dc9565b820191906000526020600020905b815481529060010190602001808311610dac57829003601f168201915b5050505050905090565b6000610de7610de061292f565b8484612937565b6001905092915050565b610df961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906143e5565b60405180910390fd5b80600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601854905090565b610f0261292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f86906143e5565b60405180910390fd5b82600f819055508160108190555080601181905550610fcf601154610fc1601054600f546128d190919063ffffffff16565b6128d190919063ffffffff16565b601681905550505050565b6000610fe7848484612b02565b506110a984610ff461292f565b6110a485604051806060016040528060288152602001614b0d60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061105a61292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e79092919063ffffffff16565b612937565b600190509392505050565b6110bc61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611140906143e5565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611189600e5461117b600d54600c546128d190919063ffffffff16565b6128d190919063ffffffff16565b601581905550505050565b61119c61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611220906143e5565b60405180910390fd5b80601d60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006112a96112987f0000000000000000000000000000000000000000000000000000000000000000611cbc565b60185461314b90919063ffffffff16565b905090565b6112b661292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a906143e5565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b600f5481565b6000600460009054906101000a900460ff16905090565b600061146a6113ce61292f565b8461146585600760006113df61292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b612937565b6001905092915050565b61147c61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611500906143e5565b60405180910390fd5b80601b8190555050565b601d60159054906101000a900460ff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60135481565b61157461292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f8906143e5565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061166661292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea906143e5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561173e57600080fd5b505afa158015611752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117769190613d76565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156117d857600080fd5b505afa1580156117ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118109190613d76565b6040518363ffffffff1660e01b815260040161182d929190614223565b60206040518083038186803b15801561184557600080fd5b505afa158015611859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187d9190613d76565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a3e578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118fa57600080fd5b505afa15801561190e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119329190613d76565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561199457600080fd5b505afa1580156119a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cc9190613d76565b6040518363ffffffff1660e01b81526004016119e9929190614223565b602060405180830381600087803b158015611a0357600080fd5b505af1158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3b9190613d76565b91505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60115481565b60105481565b611bce61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c52906143e5565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b601a5481565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611d4861292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc906143e5565b60405180910390fd5b678ac7230489e80000811115611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1790614325565b60405180910390fd5b8060198190555050565b611e3261292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb6906143e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060038054611f8c9061472d565b80601f0160208091040260200160405190810160405280929190818152602001828054611fb89061472d565b80156120055780601f10611fda57610100808354040283529160200191612005565b820191906000526020600020905b815481529060010190602001808311611fe857829003601f168201915b5050505050905090565b60125481565b60175481565b60006120de61202861292f565b846120d985604051806060016040528060258152602001614b35602591396007600061205261292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e79092919063ffffffff16565b612937565b6001905092915050565b6120f061292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461217d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612174906143e5565b60405180910390fd5b80601d60166101000a81548160ff02191690831515021790555050565b60006121ae6121a761292f565b8484612b02565b506001905092915050565b600c5481565b6121c761292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224b906143e5565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122a061292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612324906143e5565b60405180910390fd5b82601281905550816013819055508060148190555061236d60145461235f6013546012546128d190919063ffffffff16565b6128d190919063ffffffff16565b601781905550505050565b61238061292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612404906143e5565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161245691906142ad565b60405180910390a150565b600a6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601d60169054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61254f61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d3906143e5565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b61264561292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c9906143e5565b60405180910390fd5b80601a8190555050565b6126e461292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612768906143e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d890614345565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d60179054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60008082846128e0919061455a565b905083811015612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c90614385565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e90614425565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0e90614365565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612af59190614445565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6a90614405565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bda90614305565b60405180910390fd5b601d60149054906101000a900460ff1615612c0a57612c03848484613195565b90506130e0565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cae5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cf957601954821115612cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cef906143a5565b60405180910390fd5b5b6000612d0430611cbc565b90506000601b548210159050808015612d2a5750601d60149054906101000a900460ff16155b8015612d805750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d985750601d60159054906101000a900460ff165b15612dc257601d60169054906101000a900460ff1615612db857601b5491505b612dc182613368565b5b612e4b846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e79092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f315750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4557612f40878787613559565b612f47565b845b9050601d60179054906101000a900460ff168015612faf5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fde57601a54612fd282612fc489611cbc565b6128d190919063ffffffff16565b1115612fdd57600080fd5b5b61303081600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130d09190614445565b60405180910390a3600193505050505b9392505050565b600083831115829061312f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312691906142e3565b60405180910390fd5b506000838561313e919061463b565b9050809150509392505050565b600061318d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e7565b905092915050565b6000613220826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e79092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b582600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133559190614445565b60405180910390a3600190509392505050565b6001601d60146101000a81548160ff02191690831515021790555060006133c160026133b36017546133a56012548761378090919063ffffffff16565b6137fb90919063ffffffff16565b6137fb90919063ffffffff16565b905060006133d8828461314b90919063ffffffff16565b90506133e381613845565b6000479050600061341461340360026012546137fb90919063ffffffff16565b60175461314b90919063ffffffff16565b905060006134526002613444846134366012548861378090919063ffffffff16565b6137fb90919063ffffffff16565b6137fb90919063ffffffff16565b9050600061347d8361346f6014548761378090919063ffffffff16565b6137fb90919063ffffffff16565b905060006134a682613498858861314b90919063ffffffff16565b61314b90919063ffffffff16565b905060008111156134de576134dd600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613b42565b5b600082111561351457613513600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b42565b5b6000831180156135245750600087115b15613534576135338784613b8d565b5b505050505050506000601d60146101000a81548160ff02191690831515021790555050565b60008060009050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156135e1576135da60646135cc6015548661378090919063ffffffff16565b6137fb90919063ffffffff16565b905061365f565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561365e5761365b606461364d6016548661378090919063ffffffff16565b6137fb90919063ffffffff16565b90505b5b6000811115613763576136ba81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161375a9190614445565b60405180910390a35b613776818461314b90919063ffffffff16565b9150509392505050565b60008083141561379357600090506137f5565b600082846137a191906145e1565b90508284826137b091906145b0565b146137f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e7906143c5565b60405180910390fd5b809150505b92915050565b600061383d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c81565b905092915050565b6000600267ffffffffffffffff811115613888577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156138b65781602001602082028036833780820191505090505b50905030816000815181106138f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561399657600080fd5b505afa1580156139aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ce9190613d76565b81600181518110613a08577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a6f30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ad3959493929190614490565b600060405180830381600087803b158015613aed57600080fd5b505af1158015613b01573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613b36929190614460565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613b88573d6000803e3d6000fd5b505050565b613bba30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613c06611d17565b426040518863ffffffff1660e01b8152600401613c289695949392919061424c565b6060604051808303818588803b158015613c4157600080fd5b505af1158015613c55573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c7a9190613f43565b5050505050565b60008083118290613cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cbf91906142e3565b60405180910390fd5b5060008385613cd791906145b0565b9050809150509392505050565b600081359050613cf381614ac7565b92915050565b600081519050613d0881614ac7565b92915050565b600081359050613d1d81614ade565b92915050565b600081359050613d3281614af5565b92915050565b600081519050613d4781614af5565b92915050565b600060208284031215613d5f57600080fd5b6000613d6d84828501613ce4565b91505092915050565b600060208284031215613d8857600080fd5b6000613d9684828501613cf9565b91505092915050565b60008060408385031215613db257600080fd5b6000613dc085828601613ce4565b9250506020613dd185828601613ce4565b9150509250929050565b600080600060608486031215613df057600080fd5b6000613dfe86828701613ce4565b9350506020613e0f86828701613ce4565b9250506040613e2086828701613d23565b9150509250925092565b60008060408385031215613e3d57600080fd5b6000613e4b85828601613ce4565b9250506020613e5c85828601613d0e565b9150509250929050565b60008060408385031215613e7957600080fd5b6000613e8785828601613ce4565b9250506020613e9885828601613d23565b9150509250929050565b600060208284031215613eb457600080fd5b6000613ec284828501613d0e565b91505092915050565b600060208284031215613edd57600080fd5b6000613eeb84828501613d23565b91505092915050565b600080600060608486031215613f0957600080fd5b6000613f1786828701613d23565b9350506020613f2886828701613d23565b9250506040613f3986828701613d23565b9150509250925092565b600080600060608486031215613f5857600080fd5b6000613f6686828701613d38565b9350506020613f7786828701613d38565b9250506040613f8886828701613d38565b9150509250925092565b6000613f9e8383613faa565b60208301905092915050565b613fb38161466f565b82525050565b613fc28161466f565b82525050565b6000613fd382614515565b613fdd8185614538565b9350613fe883614505565b8060005b838110156140195781516140008882613f92565b975061400b8361452b565b925050600181019050613fec565b5085935050505092915050565b61402f81614681565b82525050565b61403e816146c4565b82525050565b61404d816146e8565b82525050565b600061405e82614520565b6140688185614549565b93506140788185602086016146fa565b614081816147ec565b840191505092915050565b6000614099602383614549565b91506140a4826147fd565b604082019050919050565b60006140bc603483614549565b91506140c78261484c565b604082019050919050565b60006140df602683614549565b91506140ea8261489b565b604082019050919050565b6000614102602283614549565b915061410d826148ea565b604082019050919050565b6000614125601b83614549565b915061413082614939565b602082019050919050565b6000614148602883614549565b915061415382614962565b604082019050919050565b600061416b602183614549565b9150614176826149b1565b604082019050919050565b600061418e602083614549565b915061419982614a00565b602082019050919050565b60006141b1602583614549565b91506141bc82614a29565b604082019050919050565b60006141d4602483614549565b91506141df82614a78565b604082019050919050565b6141f3816146ad565b82525050565b614202816146b7565b82525050565b600060208201905061421d6000830184613fb9565b92915050565b60006040820190506142386000830185613fb9565b6142456020830184613fb9565b9392505050565b600060c0820190506142616000830189613fb9565b61426e60208301886141ea565b61427b6040830187614044565b6142886060830186614044565b6142956080830185613fb9565b6142a260a08301846141ea565b979650505050505050565b60006020820190506142c26000830184614026565b92915050565b60006020820190506142dd6000830184614035565b92915050565b600060208201905081810360008301526142fd8184614053565b905092915050565b6000602082019050818103600083015261431e8161408c565b9050919050565b6000602082019050818103600083015261433e816140af565b9050919050565b6000602082019050818103600083015261435e816140d2565b9050919050565b6000602082019050818103600083015261437e816140f5565b9050919050565b6000602082019050818103600083015261439e81614118565b9050919050565b600060208201905081810360008301526143be8161413b565b9050919050565b600060208201905081810360008301526143de8161415e565b9050919050565b600060208201905081810360008301526143fe81614181565b9050919050565b6000602082019050818103600083015261441e816141a4565b9050919050565b6000602082019050818103600083015261443e816141c7565b9050919050565b600060208201905061445a60008301846141ea565b92915050565b600060408201905061447560008301856141ea565b81810360208301526144878184613fc8565b90509392505050565b600060a0820190506144a560008301886141ea565b6144b26020830187614044565b81810360408301526144c48186613fc8565b90506144d36060830185613fb9565b6144e060808301846141ea565b9695505050505050565b60006020820190506144ff60008301846141f9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614565826146ad565b9150614570836146ad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145a5576145a461475f565b5b828201905092915050565b60006145bb826146ad565b91506145c6836146ad565b9250826145d6576145d561478e565b5b828204905092915050565b60006145ec826146ad565b91506145f7836146ad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146305761462f61475f565b5b828202905092915050565b6000614646826146ad565b9150614651836146ad565b9250828210156146645761466361475f565b5b828203905092915050565b600061467a8261468d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006146cf826146d6565b9050919050565b60006146e18261468d565b9050919050565b60006146f3826146ad565b9050919050565b60005b838110156147185780820151818401526020810190506146fd565b83811115614727576000848401525b50505050565b6000600282049050600182168061474557607f821691505b60208210811415614759576147586147bd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c65742073686f756c64206265206c657373206f722065757160008201527f616c20746f20342520746f74616c537570706c79000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614ad08161466f565b8114614adb57600080fd5b50565b614ae781614681565b8114614af257600080fd5b50565b614afe816146ad565b8114614b0957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207e3ba706217a8c6bf07fd7876e8d420ebeb5475397d00ed452d01db5cdcfe84864736f6c63430008040033
Deployed Bytecode
0x6080604052600436106103545760003560e01c806370a08231116101c6578063bbaa7d44116100f7578063dd62ed3e11610095578063f1d5f5171161006f578063f1d5f51714610c87578063f2fde38b14610cb0578063f872858a14610cd9578063fabf706314610d045761035b565b8063dd62ed3e14610bf6578063e207a92b14610c33578063f0cd1dac14610c5c5761035b565b8063c78a789b116100d1578063c78a789b14610b38578063c816841b14610b75578063d76e26a314610ba0578063da00097d14610bcb5761035b565b8063bbaa7d4414610abd578063c2d4640e14610ae6578063c49b9a8014610b0f5761035b565b806395d89b4111610164578063a457c2d71161013e578063a457c2d7146109ef578063a5d69d1f14610a2c578063a9059cbb14610a55578063b6c3af3414610a925761035b565b806395d89b411461096e5780639e3fa32314610999578063a08e671f146109c45761035b565b806382eefb43116101a057806382eefb43146108d85780638da5cb5b146109035780638f03aad51461092e578063914eb66a146109575761035b565b806370a08231146108455780637d1db4a514610882578063807c2d9c146108ad5761035b565b80632f0a5fd4116102a0578063565cec381161023e578063646d470011610218578063646d47001461079b578063661b6e36146107c6578063667b511c146107f1578063705f9d741461081a5761035b565b8063565cec381461070a57806357e6adcb146107355780635881f3ef1461075e5761035b565b80633b97084a1161027a5780633b97084a1461063c5780634a74bb0214610665578063526012e81461069057806355324fa9146106cd5761035b565b80632f0a5fd4146105a9578063313ce567146105d457806339509351146105ff5761035b565b806323b872dd1161030d57806327c8f835116102e757806327c8f835146104ff5780632b112e491461052a5780632cdae5cb146105555780632df671091461057e5761035b565b806323b872dd1461047057806325519cf2146104ad5780632563ae83146104d65761035b565b806306fdde0314610360578063095ea7b31461038b5780630fe1203c146103c85780631694505e146103f157806318160ddd1461041c5780631d865c30146104475761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610d41565b60405161038291906142e3565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613e66565b610dd3565b6040516103bf91906142ad565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613d4d565b610df1565b005b3480156103fd57600080fd5b50610406610eca565b60405161041391906142c8565b60405180910390f35b34801561042857600080fd5b50610431610ef0565b60405161043e9190614445565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190613ef4565b610efa565b005b34801561047c57600080fd5b5061049760048036038101906104929190613ddb565b610fda565b6040516104a491906142ad565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190613ef4565b6110b4565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190613ea2565b611194565b005b34801561050b57600080fd5b50610514611246565b6040516105219190614208565b60405180910390f35b34801561053657600080fd5b5061053f61126a565b60405161054c9190614445565b60405180910390f35b34801561056157600080fd5b5061057c60048036038101906105779190613e2a565b6112ae565b005b34801561058a57600080fd5b5061059361139e565b6040516105a09190614445565b60405180910390f35b3480156105b557600080fd5b506105be6113a4565b6040516105cb9190614445565b60405180910390f35b3480156105e057600080fd5b506105e96113aa565b6040516105f691906144ea565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613e66565b6113c1565b60405161063391906142ad565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190613ecb565b611474565b005b34801561067157600080fd5b5061067a611513565b60405161068791906142ad565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190613d4d565b611526565b6040516106c491906142ad565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190613d4d565b611546565b60405161070191906142ad565b60405180910390f35b34801561071657600080fd5b5061071f611566565b60405161072c9190614445565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190613e2a565b61156c565b005b34801561076a57600080fd5b5061078560048036038101906107809190613d4d565b61165c565b6040516107929190614208565b60405180910390f35b3480156107a757600080fd5b506107b0611bba565b6040516107bd9190614445565b60405180910390f35b3480156107d257600080fd5b506107db611bc0565b6040516107e89190614445565b60405180910390f35b3480156107fd57600080fd5b5061081860048036038101906108139190613e2a565b611bc6565b005b34801561082657600080fd5b5061082f611cb6565b60405161083c9190614445565b60405180910390f35b34801561085157600080fd5b5061086c60048036038101906108679190613d4d565b611cbc565b6040516108799190614445565b60405180910390f35b34801561088e57600080fd5b50610897611d05565b6040516108a49190614445565b60405180910390f35b3480156108b957600080fd5b506108c2611d0b565b6040516108cf9190614445565b60405180910390f35b3480156108e457600080fd5b506108ed611d11565b6040516108fa9190614445565b60405180910390f35b34801561090f57600080fd5b50610918611d17565b6040516109259190614208565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190613ecb565b611d40565b005b34801561096357600080fd5b5061096c611e2a565b005b34801561097a57600080fd5b50610983611f7d565b60405161099091906142e3565b60405180910390f35b3480156109a557600080fd5b506109ae61200f565b6040516109bb9190614445565b60405180910390f35b3480156109d057600080fd5b506109d9612015565b6040516109e69190614445565b60405180910390f35b3480156109fb57600080fd5b50610a166004803603810190610a119190613e66565b61201b565b604051610a2391906142ad565b60405180910390f35b348015610a3857600080fd5b50610a536004803603810190610a4e9190613ea2565b6120e8565b005b348015610a6157600080fd5b50610a7c6004803603810190610a779190613e66565b61219a565b604051610a8991906142ad565b60405180910390f35b348015610a9e57600080fd5b50610aa76121b9565b604051610ab49190614445565b60405180910390f35b348015610ac957600080fd5b50610ae46004803603810190610adf9190613d4d565b6121bf565b005b348015610af257600080fd5b50610b0d6004803603810190610b089190613ef4565b612298565b005b348015610b1b57600080fd5b50610b366004803603810190610b319190613ea2565b612378565b005b348015610b4457600080fd5b50610b5f6004803603810190610b5a9190613d4d565b612461565b604051610b6c91906142ad565b60405180910390f35b348015610b8157600080fd5b50610b8a612481565b604051610b979190614208565b60405180910390f35b348015610bac57600080fd5b50610bb56124a7565b604051610bc29190614445565b60405180910390f35b348015610bd757600080fd5b50610be06124ad565b604051610bed91906142ad565b60405180910390f35b348015610c0257600080fd5b50610c1d6004803603810190610c189190613d9f565b6124c0565b604051610c2a9190614445565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190613d4d565b612547565b005b348015610c6857600080fd5b50610c71612637565b604051610c7e9190614445565b60405180910390f35b348015610c9357600080fd5b50610cae6004803603810190610ca99190613ecb565b61263d565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190613d4d565b6126dc565b005b348015610ce557600080fd5b50610cee61289e565b604051610cfb91906142ad565b60405180910390f35b348015610d1057600080fd5b50610d2b6004803603810190610d269190613d4d565b6128b1565b604051610d3891906142ad565b60405180910390f35b606060028054610d509061472d565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7c9061472d565b8015610dc95780601f10610d9e57610100808354040283529160200191610dc9565b820191906000526020600020905b815481529060010190602001808311610dac57829003601f168201915b5050505050905090565b6000610de7610de061292f565b8484612937565b6001905092915050565b610df961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906143e5565b60405180910390fd5b80600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601854905090565b610f0261292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f86906143e5565b60405180910390fd5b82600f819055508160108190555080601181905550610fcf601154610fc1601054600f546128d190919063ffffffff16565b6128d190919063ffffffff16565b601681905550505050565b6000610fe7848484612b02565b506110a984610ff461292f565b6110a485604051806060016040528060288152602001614b0d60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061105a61292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e79092919063ffffffff16565b612937565b600190509392505050565b6110bc61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611140906143e5565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611189600e5461117b600d54600c546128d190919063ffffffff16565b6128d190919063ffffffff16565b601581905550505050565b61119c61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611220906143e5565b60405180910390fd5b80601d60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006112a96112987f000000000000000000000000000000000000000000000000000000000000dead611cbc565b60185461314b90919063ffffffff16565b905090565b6112b661292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a906143e5565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b600f5481565b6000600460009054906101000a900460ff16905090565b600061146a6113ce61292f565b8461146585600760006113df61292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b612937565b6001905092915050565b61147c61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611500906143e5565b60405180910390fd5b80601b8190555050565b601d60159054906101000a900460ff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60135481565b61157461292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f8906143e5565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061166661292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea906143e5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561173e57600080fd5b505afa158015611752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117769190613d76565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156117d857600080fd5b505afa1580156117ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118109190613d76565b6040518363ffffffff1660e01b815260040161182d929190614223565b60206040518083038186803b15801561184557600080fd5b505afa158015611859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187d9190613d76565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a3e578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118fa57600080fd5b505afa15801561190e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119329190613d76565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561199457600080fd5b505afa1580156119a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cc9190613d76565b6040518363ffffffff1660e01b81526004016119e9929190614223565b602060405180830381600087803b158015611a0357600080fd5b505af1158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3b9190613d76565b91505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60115481565b60105481565b611bce61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c52906143e5565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b601a5481565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611d4861292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc906143e5565b60405180910390fd5b678ac7230489e80000811115611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1790614325565b60405180910390fd5b8060198190555050565b611e3261292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb6906143e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060038054611f8c9061472d565b80601f0160208091040260200160405190810160405280929190818152602001828054611fb89061472d565b80156120055780601f10611fda57610100808354040283529160200191612005565b820191906000526020600020905b815481529060010190602001808311611fe857829003601f168201915b5050505050905090565b60125481565b60175481565b60006120de61202861292f565b846120d985604051806060016040528060258152602001614b35602591396007600061205261292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e79092919063ffffffff16565b612937565b6001905092915050565b6120f061292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461217d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612174906143e5565b60405180910390fd5b80601d60166101000a81548160ff02191690831515021790555050565b60006121ae6121a761292f565b8484612b02565b506001905092915050565b600c5481565b6121c761292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224b906143e5565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122a061292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612324906143e5565b60405180910390fd5b82601281905550816013819055508060148190555061236d60145461235f6013546012546128d190919063ffffffff16565b6128d190919063ffffffff16565b601781905550505050565b61238061292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612404906143e5565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161245691906142ad565b60405180910390a150565b600a6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601d60169054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61254f61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d3906143e5565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b61264561292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c9906143e5565b60405180910390fd5b80601a8190555050565b6126e461292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612768906143e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d890614345565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d60179054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60008082846128e0919061455a565b905083811015612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c90614385565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e90614425565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0e90614365565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612af59190614445565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6a90614405565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bda90614305565b60405180910390fd5b601d60149054906101000a900460ff1615612c0a57612c03848484613195565b90506130e0565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cae5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cf957601954821115612cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cef906143a5565b60405180910390fd5b5b6000612d0430611cbc565b90506000601b548210159050808015612d2a5750601d60149054906101000a900460ff16155b8015612d805750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d985750601d60159054906101000a900460ff165b15612dc257601d60169054906101000a900460ff1615612db857601b5491505b612dc182613368565b5b612e4b846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e79092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f315750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4557612f40878787613559565b612f47565b845b9050601d60179054906101000a900460ff168015612faf5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fde57601a54612fd282612fc489611cbc565b6128d190919063ffffffff16565b1115612fdd57600080fd5b5b61303081600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130d09190614445565b60405180910390a3600193505050505b9392505050565b600083831115829061312f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312691906142e3565b60405180910390fd5b506000838561313e919061463b565b9050809150509392505050565b600061318d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e7565b905092915050565b6000613220826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e79092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b582600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133559190614445565b60405180910390a3600190509392505050565b6001601d60146101000a81548160ff02191690831515021790555060006133c160026133b36017546133a56012548761378090919063ffffffff16565b6137fb90919063ffffffff16565b6137fb90919063ffffffff16565b905060006133d8828461314b90919063ffffffff16565b90506133e381613845565b6000479050600061341461340360026012546137fb90919063ffffffff16565b60175461314b90919063ffffffff16565b905060006134526002613444846134366012548861378090919063ffffffff16565b6137fb90919063ffffffff16565b6137fb90919063ffffffff16565b9050600061347d8361346f6014548761378090919063ffffffff16565b6137fb90919063ffffffff16565b905060006134a682613498858861314b90919063ffffffff16565b61314b90919063ffffffff16565b905060008111156134de576134dd600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613b42565b5b600082111561351457613513600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b42565b5b6000831180156135245750600087115b15613534576135338784613b8d565b5b505050505050506000601d60146101000a81548160ff02191690831515021790555050565b60008060009050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156135e1576135da60646135cc6015548661378090919063ffffffff16565b6137fb90919063ffffffff16565b905061365f565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561365e5761365b606461364d6016548661378090919063ffffffff16565b6137fb90919063ffffffff16565b90505b5b6000811115613763576136ba81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161375a9190614445565b60405180910390a35b613776818461314b90919063ffffffff16565b9150509392505050565b60008083141561379357600090506137f5565b600082846137a191906145e1565b90508284826137b091906145b0565b146137f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e7906143c5565b60405180910390fd5b809150505b92915050565b600061383d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c81565b905092915050565b6000600267ffffffffffffffff811115613888577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156138b65781602001602082028036833780820191505090505b50905030816000815181106138f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561399657600080fd5b505afa1580156139aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ce9190613d76565b81600181518110613a08577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a6f30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ad3959493929190614490565b600060405180830381600087803b158015613aed57600080fd5b505af1158015613b01573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613b36929190614460565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613b88573d6000803e3d6000fd5b505050565b613bba30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613c06611d17565b426040518863ffffffff1660e01b8152600401613c289695949392919061424c565b6060604051808303818588803b158015613c4157600080fd5b505af1158015613c55573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c7a9190613f43565b5050505050565b60008083118290613cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cbf91906142e3565b60405180910390fd5b5060008385613cd791906145b0565b9050809150509392505050565b600081359050613cf381614ac7565b92915050565b600081519050613d0881614ac7565b92915050565b600081359050613d1d81614ade565b92915050565b600081359050613d3281614af5565b92915050565b600081519050613d4781614af5565b92915050565b600060208284031215613d5f57600080fd5b6000613d6d84828501613ce4565b91505092915050565b600060208284031215613d8857600080fd5b6000613d9684828501613cf9565b91505092915050565b60008060408385031215613db257600080fd5b6000613dc085828601613ce4565b9250506020613dd185828601613ce4565b9150509250929050565b600080600060608486031215613df057600080fd5b6000613dfe86828701613ce4565b9350506020613e0f86828701613ce4565b9250506040613e2086828701613d23565b9150509250925092565b60008060408385031215613e3d57600080fd5b6000613e4b85828601613ce4565b9250506020613e5c85828601613d0e565b9150509250929050565b60008060408385031215613e7957600080fd5b6000613e8785828601613ce4565b9250506020613e9885828601613d23565b9150509250929050565b600060208284031215613eb457600080fd5b6000613ec284828501613d0e565b91505092915050565b600060208284031215613edd57600080fd5b6000613eeb84828501613d23565b91505092915050565b600080600060608486031215613f0957600080fd5b6000613f1786828701613d23565b9350506020613f2886828701613d23565b9250506040613f3986828701613d23565b9150509250925092565b600080600060608486031215613f5857600080fd5b6000613f6686828701613d38565b9350506020613f7786828701613d38565b9250506040613f8886828701613d38565b9150509250925092565b6000613f9e8383613faa565b60208301905092915050565b613fb38161466f565b82525050565b613fc28161466f565b82525050565b6000613fd382614515565b613fdd8185614538565b9350613fe883614505565b8060005b838110156140195781516140008882613f92565b975061400b8361452b565b925050600181019050613fec565b5085935050505092915050565b61402f81614681565b82525050565b61403e816146c4565b82525050565b61404d816146e8565b82525050565b600061405e82614520565b6140688185614549565b93506140788185602086016146fa565b614081816147ec565b840191505092915050565b6000614099602383614549565b91506140a4826147fd565b604082019050919050565b60006140bc603483614549565b91506140c78261484c565b604082019050919050565b60006140df602683614549565b91506140ea8261489b565b604082019050919050565b6000614102602283614549565b915061410d826148ea565b604082019050919050565b6000614125601b83614549565b915061413082614939565b602082019050919050565b6000614148602883614549565b915061415382614962565b604082019050919050565b600061416b602183614549565b9150614176826149b1565b604082019050919050565b600061418e602083614549565b915061419982614a00565b602082019050919050565b60006141b1602583614549565b91506141bc82614a29565b604082019050919050565b60006141d4602483614549565b91506141df82614a78565b604082019050919050565b6141f3816146ad565b82525050565b614202816146b7565b82525050565b600060208201905061421d6000830184613fb9565b92915050565b60006040820190506142386000830185613fb9565b6142456020830184613fb9565b9392505050565b600060c0820190506142616000830189613fb9565b61426e60208301886141ea565b61427b6040830187614044565b6142886060830186614044565b6142956080830185613fb9565b6142a260a08301846141ea565b979650505050505050565b60006020820190506142c26000830184614026565b92915050565b60006020820190506142dd6000830184614035565b92915050565b600060208201905081810360008301526142fd8184614053565b905092915050565b6000602082019050818103600083015261431e8161408c565b9050919050565b6000602082019050818103600083015261433e816140af565b9050919050565b6000602082019050818103600083015261435e816140d2565b9050919050565b6000602082019050818103600083015261437e816140f5565b9050919050565b6000602082019050818103600083015261439e81614118565b9050919050565b600060208201905081810360008301526143be8161413b565b9050919050565b600060208201905081810360008301526143de8161415e565b9050919050565b600060208201905081810360008301526143fe81614181565b9050919050565b6000602082019050818103600083015261441e816141a4565b9050919050565b6000602082019050818103600083015261443e816141c7565b9050919050565b600060208201905061445a60008301846141ea565b92915050565b600060408201905061447560008301856141ea565b81810360208301526144878184613fc8565b90509392505050565b600060a0820190506144a560008301886141ea565b6144b26020830187614044565b81810360408301526144c48186613fc8565b90506144d36060830185613fb9565b6144e060808301846141ea565b9695505050505050565b60006020820190506144ff60008301846141f9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614565826146ad565b9150614570836146ad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145a5576145a461475f565b5b828201905092915050565b60006145bb826146ad565b91506145c6836146ad565b9250826145d6576145d561478e565b5b828204905092915050565b60006145ec826146ad565b91506145f7836146ad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146305761462f61475f565b5b828202905092915050565b6000614646826146ad565b9150614651836146ad565b9250828210156146645761466361475f565b5b828203905092915050565b600061467a8261468d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006146cf826146d6565b9050919050565b60006146e18261468d565b9050919050565b60006146f3826146ad565b9050919050565b60005b838110156147185780820151818401526020810190506146fd565b83811115614727576000848401525b50505050565b6000600282049050600182168061474557607f821691505b60208210811415614759576147586147bd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c65742073686f756c64206265206c657373206f722065757160008201527f616c20746f20342520746f74616c537570706c79000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614ad08161466f565b8114614adb57600080fd5b50565b614ae781614681565b8114614af257600080fd5b50565b614afe816146ad565b8114614b0957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207e3ba706217a8c6bf07fd7876e8d420ebeb5475397d00ed452d01db5cdcfe84864736f6c63430008040033
Deployed Bytecode Sourcemap
14393:14924:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18084:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19250:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22085:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16051:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18361:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20548:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24011:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20175:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21573:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14827:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22647:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20024:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15329:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15417:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18270:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18747:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21953:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16166:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15109:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15229:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15595:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21694:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22921:813;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15505:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15461:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19879:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15372:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18469:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15881:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15936:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15726:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5932:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21337:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6157:145;;;;;;;;;;;;;:::i;:::-;;18175:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15553:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15770:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18973:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22510:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23836:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15286:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22208:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20933:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22331:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15171:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16099:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15637:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16213:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18596:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19764:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15683:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21843:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6310:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16265:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15048:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18084:83;18121:13;18154:5;18147:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18084:83;:::o;19250:161::-;19325:4;19342:39;19351:12;:10;:12::i;:::-;19365:7;19374:6;19342:8;:39::i;:::-;19399:4;19392:11;;19250:161;;;;:::o;22085:115::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22181:10:::1;22160;;:32;;;;;;;;;;;;;;;;;;22085:115:::0;:::o;16051:41::-;;;;;;;;;;;;;:::o;18361:100::-;18414:7;18441:12;;18434:19;;18361:100;:::o;20548:373::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20698:15:::1;20677:18;:36;;;;20745:15;20724:18;:36;;;;20794:17;20771:20;:40;;;;20845:68;20892:20;;20845:42;20868:18;;20845;;:22;;:42;;;;:::i;:::-;:46;;:68;;;;:::i;:::-;20824:18;:89;;;;20548:373:::0;;;:::o;24011:313::-;24109:4;24126:36;24136:6;24144:9;24155:6;24126:9;:36::i;:::-;;24173:121;24182:6;24190:12;:10;:12::i;:::-;24204:89;24242:6;24204:89;;;;;;;;;;;;;;;;;:11;:19;24216:6;24204:19;;;;;;;;;;;;;;;:33;24224:12;:10;:12::i;:::-;24204:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24173:8;:121::i;:::-;24312:4;24305:11;;24011:313;;;;;:::o;20175:365::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20323:15:::1;20303:17;:35;;;;20369:15;20349:17;:35;;;;20417:17;20395:19;:39;;;;20467:65;20512:19;;20467:40;20489:17;;20467;;:21;;:40;;;;:::i;:::-;:44;;:65;;;;:::i;:::-;20447:17;:85;;;;20175:365:::0;;;:::o;21573:113::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21670:8:::1;21651:16;;:27;;;;;;;;;;;;;;;;;;21573:113:::0;:::o;14827:81::-;;;:::o;22647:128::-;22700:7;22727:40;22744:22;22754:11;22744:9;:22::i;:::-;22727:12;;:16;;:40;;;;:::i;:::-;22720:47;;22647:128;:::o;20024:143::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20151:8:::1;20118:21;:30;20140:7;20118:30;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;20024:143:::0;;:::o;15329:36::-;;;;:::o;15417:37::-;;;;:::o;18270:83::-;18311:5;18336:9;;;;;;;;;;;18329:16;;18270:83;:::o;18747:218::-;18835:4;18852:83;18861:12;:10;:12::i;:::-;18875:7;18884:50;18923:10;18884:11;:25;18896:12;:10;:12::i;:::-;18884:25;;;;;;;;;;;;;;;:34;18910:7;18884:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18852:8;:83::i;:::-;18953:4;18946:11;;18747:218;;;;:::o;21953:124::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22061:8:::1;22035:23;:34;;;;21953:124:::0;:::o;16166:40::-;;;;;;;;;;;;;:::o;15109:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;15229:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;15595:35::-;;;;:::o;21694:141::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21821:6:::1;21788:22;:30;21811:6;21788:30;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21694:141:::0;;:::o;22921:813::-;23001:22;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23038:35:::1;23095:16;23038:74;;23161:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23143:53;;;23205:4;23212:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23143:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23126:110;;23278:1;23252:28;;:14;:28;;;23249:225;;;23366:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23348:74;;;23431:4;23438:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23348:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23331:131;;23249:225;23500:14;23486:11;;:28;;;;;;;;;;;;;;;;;;23566:16;23548:15;;:34;;;;;;;;;;;;;;;;;;23667:4;23620:22;:44;23651:11;;;;;;;;;;;23620:44;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;23722:4;23682:15;:37;23706:11;;;;;;;;;;;23682:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;6136:1;22921:813:::0;;;:::o;15505:39::-;;;;:::o;15461:37::-;;;;:::o;19879:133::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19998:6:::1;19969:18;:26;19988:6;19969:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19879:133:::0;;:::o;15372:38::-;;;;:::o;18469:119::-;18535:7;18562:9;:18;18572:7;18562:18;;;;;;;;;;;;;;;;18555:25;;18469:119;;;:::o;15881:48::-;;;;:::o;15936:46::-;;;;:::o;15726:37::-;;;;:::o;5932:79::-;5970:7;5997:6;;;;;;;;;;;5990:13;;5932:79;:::o;21337:228::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21441:21:::1;21425:11;:38;;21417:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;21546:11;21531:12;:26;;;;21337:228:::0;:::o;6157:145::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6261:1:::1;6224:40;;6245:6;::::0;::::1;;;;;;;;6224:40;;;;;;;;;;;;6292:1;6275:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6157:145::o:0;18175:87::-;18214:13;18247:7;18240:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18175:87;:::o;15553:35::-;;;;:::o;15770:44::-;;;;:::o;18973:269::-;19066:4;19083:129;19092:12;:10;:12::i;:::-;19106:7;19115:96;19154:15;19115:96;;;;;;;;;;;;;;;;;:11;:25;19127:12;:10;:12::i;:::-;19115:25;;;;;;;;;;;;;;;:34;19141:7;19115:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19083:8;:129::i;:::-;19230:4;19223:11;;18973:269;;;;:::o;22510:125::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22619:8:::1;22591:25;;:36;;;;;;;;;;;;;;;;;;22510:125:::0;:::o;23836:167::-;23914:4;23931:42;23941:12;:10;:12::i;:::-;23955:9;23966:6;23931:9;:42::i;:::-;;23991:4;23984:11;;23836:167;;;;:::o;15286:36::-;;;;:::o;22208:115::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22304:10:::1;22283;;:32;;;;;;;;;;;;;;;;;;22208:115:::0;:::o;20933:392::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21100:17:::1;21081:16;:36;;;;21147:17;21128:16;:36;;;;21196:19;21175:18;:40;;;;21255:62;21298:18;;21255:38;21276:16;;21255;;:20;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;21228:24;:89;;;;20933:392:::0;;;:::o;22331:171::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22432:8:::1;22408:21;;:32;;;;;;;;;;;;;;;;;;22456:38;22485:8;22456:38;;;;;;:::i;:::-;;;;;;;;22331:171:::0;:::o;15171:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;16099:26::-;;;;;;;;;;;;;:::o;15637:37::-;;;;:::o;16213:45::-;;;;;;;;;;;;;:::o;18596:143::-;18677:7;18704:11;:18;18716:5;18704:18;;;;;;;;;;;;;;;:27;18723:7;18704:27;;;;;;;;;;;;;;;;18697:34;;18596:143;;;;:::o;19764:107::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19859:4:::1;19832:15;:24;19848:7;19832:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;19764:107:::0;:::o;15683:36::-;;;;:::o;21843:102::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21929:8:::1;21915:10;:22;;;;21843:102:::0;:::o;6310:244::-;6076:12;:10;:12::i;:::-;6066:22;;:6;;;;;;;;;;:22;;;6058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6419:1:::1;6399:22;;:8;:22;;;;6391:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6509:8;6480:38;;6501:6;::::0;::::1;;;;;;;;6480:38;;;;;;;;;;;;6538:8;6529:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6310:244:::0;:::o;16265:35::-;;;;;;;;;;;;;:::o;15048:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;1334:181::-;1392:7;1412:9;1428:1;1424;:5;;;;:::i;:::-;1412:17;;1453:1;1448;:6;;1440:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1506:1;1499:8;;;1334:181;;;;:::o;266:115::-;319:15;362:10;347:26;;266:115;:::o;19419:337::-;19529:1;19512:19;;:5;:19;;;;19504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19610:1;19591:21;;:7;:21;;;;19583:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19694:6;19664:11;:18;19676:5;19664:18;;;;;;;;;;;;;;;:27;19683:7;19664:27;;;;;;;;;;;;;;;:36;;;;19732:7;19716:32;;19725:5;19716:32;;;19741:6;19716:32;;;;;;:::i;:::-;;;;;;;;19419:337;;;:::o;24332:1727::-;24419:4;24464:1;24446:20;;:6;:20;;;;24438:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24548:1;24527:23;;:9;:23;;;;24519:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24606:16;;;;;;;;;;;24603:1449;;;24656:41;24671:6;24679:9;24690:6;24656:14;:41::i;:::-;24649:48;;;;24603:1449;24753:18;:26;24772:6;24753:26;;;;;;;;;;;;;;;;;;;;;;;;;24752:27;:61;;;;;24784:18;:29;24803:9;24784:29;;;;;;;;;;;;;;;;;;;;;;;;;24783:30;24752:61;24749:176;;;24852:12;;24842:6;:22;;24834:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;24749:176;24953:28;24984:24;25002:4;24984:9;:24::i;:::-;24953:55;;25023:28;25078:23;;25054:20;:47;;25023:78;;25134:23;:44;;;;;25162:16;;;;;;;;;;;25161:17;25134:44;:72;;;;;25183:15;:23;25199:6;25183:23;;;;;;;;;;;;;;;;;;;;;;;;;25182:24;25134:72;:97;;;;;25210:21;;;;;;;;;;;25134:97;25130:308;;;25269:25;;;;;;;;;;;25266:97;;;25340:23;;25317:46;;25266:97;25382:36;25397:20;25382:14;:36::i;:::-;25130:308;25474:53;25496:6;25474:53;;;;;;;;;;;;;;;;;:9;:17;25484:6;25474:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25454:9;:17;25464:6;25454:17;;;;;;;;;;;;;;;:73;;;;25544:19;25567:21;:29;25589:6;25567:29;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;25600:21;:32;25622:9;25600:32;;;;;;;;;;;;;;;;;;;;;;;;;25567:65;25566:156;;25688:34;25696:6;25704:9;25715:6;25688:7;:34::i;:::-;25566:156;;;25679:6;25566:156;25544:178;;25742:16;;;;;;;;;;;:54;;;;;25763:22;:33;25786:9;25763:33;;;;;;;;;;;;;;;;;;;;;;;;;25762:34;25742:54;25739:136;;;25864:10;;25823:37;25848:11;25823:20;25833:9;25823;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;25815:60;;;;;;25739:136;25915:37;25940:11;25915:9;:20;25925:9;25915:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;25892:9;:20;25902:9;25892:20;;;;;;;;;;;;;;;:60;;;;25991:9;25974:40;;25983:6;25974:40;;;26002:11;25974:40;;;;;;:::i;:::-;;;;;;;;26036:4;26029:11;;;;;24332:1727;;;;;;:::o;1667:192::-;1753:7;1786:1;1781;:6;;1789:12;1773:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1813:9;1829:1;1825;:5;;;;:::i;:::-;1813:17;;1850:1;1843:8;;;1667:192;;;;;:::o;1523:136::-;1581:7;1608:43;1612:1;1615;1608:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1601:50;;1523:136;;;;:::o;26067:330::-;26160:4;26197:53;26219:6;26197:53;;;;;;;;;;;;;;;;;:9;:17;26207:6;26197:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26177:9;:17;26187:6;26177:17;;;;;;;;;;;;;;;:73;;;;26284:32;26309:6;26284:9;:20;26294:9;26284:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;26261:9;:20;26271:9;26261:20;;;;;;;;;;;;;;;:55;;;;26349:9;26332:35;;26341:6;26332:35;;;26360:6;26332:35;;;;;;:::i;:::-;;;;;;;;26385:4;26378:11;;26067:330;;;;;:::o;26405:1068::-;16742:4;16723:16;;:23;;;;;;;;;;;;;;;;;;26487:19:::1;26509:66;26573:1;26509:59;26543:24;;26509:29;26521:16;;26509:7;:11;;:29;;;;:::i;:::-;:33;;:59;;;;:::i;:::-;:63;;:66;;;;:::i;:::-;26487:88;;26586:21;26610:24;26622:11;26610:7;:11;;:24;;;;:::i;:::-;26586:48;;26647:31;26664:13;26647:16;:31::i;:::-;26689:22;26714:21;26689:46;;26748:19;26770:53;26799:23;26820:1;26799:16;;:20;;:23;;;;:::i;:::-;26770:24;;:28;;:53;;;;:::i;:::-;26748:75;;26844:26;26873:60;26931:1;26873:53;26914:11;26873:36;26892:16;;26873:14;:18;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;26844:89;;26944:28;26975:55;27018:11;26975:38;26994:18;;26975:14;:18;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;26944:86;;27041:26;27070:64;27113:20;27070:38;27089:18;27070:14;:18;;:38;;;;:::i;:::-;:42;;:64;;;;:::i;:::-;27041:93;;27171:1;27150:18;:22;27147:92;;;27187:52;27208:10;;;;;;;;;;;27220:18;27187:20;:52::i;:::-;27147:92;27278:1;27255:20;:24;27252:96;;;27294:54;27315:10;;;;;;;;;;;27327:20;27294;:54::i;:::-;27252:96;27385:1;27364:18;:22;:41;;;;;27404:1;27390:11;:15;27364:41;27361:104;;;27420:45;27433:11;27446:18;27420:12;:45::i;:::-;27361:104;16757:1;;;;;;;16788:5:::0;16769:16;;:24;;;;;;;;;;;;;;;;;;26405:1068;:::o;28680:628::-;28766:7;28796:17;28816:1;28796:21;;28841:15;:23;28857:6;28841:23;;;;;;;;;;;;;;;;;;;;;;;;;28838:229;;;28893:38;28927:3;28893:29;28904:17;;28893:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;28881:50;;28838:229;;;28961:15;:26;28977:9;28961:26;;;;;;;;;;;;;;;;;;;;;;;;;28958:109;;;29016:39;29051:3;29016:30;29027:18;;29016:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;29004:51;;28958:109;28838:229;29102:1;29090:9;:13;29087:173;;;29147:39;29176:9;29147;:24;29165:4;29147:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;29120:9;:24;29138:4;29120:24;;;;;;;;;;;;;;;:66;;;;29231:4;29206:42;;29215:6;29206:42;;;29238:9;29206:42;;;;;;:::i;:::-;;;;;;;;29087:173;29279:21;29290:9;29279:6;:10;;:21;;;;:::i;:::-;29272:28;;;28680:628;;;;;:::o;1867:250::-;1925:7;1954:1;1949;:6;1945:47;;;1979:1;1972:8;;;;1945:47;2004:9;2020:1;2016;:5;;;;:::i;:::-;2004:17;;2049:1;2044;2040;:5;;;;:::i;:::-;:10;2032:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2108:1;2101:8;;;1867:250;;;;;:::o;2125:132::-;2183:7;2210:39;2214:1;2217;2210:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2203:46;;2125:132;;;;:::o;27485:666::-;27611:21;27649:1;27635:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27611:40;;27680:4;27662;27667:1;27662:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;27706:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27696:4;27701:1;27696:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;27741:62;27758:4;27773:15;;;;;;;;;;;27791:11;27741:8;:62::i;:::-;27842:15;;;;;;;;;;;:66;;;27923:11;27949:1;27993:4;28020;28056:15;27842:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28108:35;28125:11;28138:4;28108:35;;;;;;;:::i;:::-;;;;;;;;27485:666;;:::o;22783:126::-;22875:9;:18;;:26;22894:6;22875:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22783:126;;:::o;28159:513::-;28307:62;28324:4;28339:15;;;;;;;;;;;28357:11;28307:8;:62::i;:::-;28412:15;;;;;;;;;;;:31;;;28451:9;28484:4;28504:11;28530:1;28573;28616:7;:5;:7::i;:::-;28638:15;28412:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28159:513;;:::o;2265:278::-;2351:7;2383:1;2379;:5;2386:12;2371:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2410:9;2426:1;2422;:5;;;;:::i;:::-;2410:17;;2534:1;2527:8;;;2265:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:552::-;3690:6;3698;3706;3755:2;3743:9;3734:7;3730:23;3726:32;3723:2;;;3771:1;3768;3761:12;3723:2;3814:1;3839:53;3884:7;3875:6;3864:9;3860:22;3839:53;:::i;:::-;3829:63;;3785:117;3941:2;3967:53;4012:7;4003:6;3992:9;3988:22;3967:53;:::i;:::-;3957:63;;3912:118;4069:2;4095:53;4140:7;4131:6;4120:9;4116:22;4095:53;:::i;:::-;4085:63;;4040:118;3713:452;;;;;:::o;4171:596::-;4259:6;4267;4275;4324:2;4312:9;4303:7;4299:23;4295:32;4292:2;;;4340:1;4337;4330:12;4292:2;4383:1;4408:64;4464:7;4455:6;4444:9;4440:22;4408:64;:::i;:::-;4398:74;;4354:128;4521:2;4547:64;4603:7;4594:6;4583:9;4579:22;4547:64;:::i;:::-;4537:74;;4492:129;4660:2;4686:64;4742:7;4733:6;4722:9;4718:22;4686:64;:::i;:::-;4676:74;;4631:129;4282:485;;;;;:::o;4773:179::-;4842:10;4863:46;4905:3;4897:6;4863:46;:::i;:::-;4941:4;4936:3;4932:14;4918:28;;4853:99;;;;:::o;4958:108::-;5035:24;5053:5;5035:24;:::i;:::-;5030:3;5023:37;5013:53;;:::o;5072:118::-;5159:24;5177:5;5159:24;:::i;:::-;5154:3;5147:37;5137:53;;:::o;5226:732::-;5345:3;5374:54;5422:5;5374:54;:::i;:::-;5444:86;5523:6;5518:3;5444:86;:::i;:::-;5437:93;;5554:56;5604:5;5554:56;:::i;:::-;5633:7;5664:1;5649:284;5674:6;5671:1;5668:13;5649:284;;;5750:6;5744:13;5777:63;5836:3;5821:13;5777:63;:::i;:::-;5770:70;;5863:60;5916:6;5863:60;:::i;:::-;5853:70;;5709:224;5696:1;5693;5689:9;5684:14;;5649:284;;;5653:14;5949:3;5942:10;;5350:608;;;;;;;:::o;5964:109::-;6045:21;6060:5;6045:21;:::i;:::-;6040:3;6033:34;6023:50;;:::o;6079:185::-;6193:64;6251:5;6193:64;:::i;:::-;6188:3;6181:77;6171:93;;:::o;6270:147::-;6365:45;6404:5;6365:45;:::i;:::-;6360:3;6353:58;6343:74;;:::o;6423:364::-;6511:3;6539:39;6572:5;6539:39;:::i;:::-;6594:71;6658:6;6653:3;6594:71;:::i;:::-;6587:78;;6674:52;6719:6;6714:3;6707:4;6700:5;6696:16;6674:52;:::i;:::-;6751:29;6773:6;6751:29;:::i;:::-;6746:3;6742:39;6735:46;;6515:272;;;;;:::o;6793:366::-;6935:3;6956:67;7020:2;7015:3;6956:67;:::i;:::-;6949:74;;7032:93;7121:3;7032:93;:::i;:::-;7150:2;7145:3;7141:12;7134:19;;6939:220;;;:::o;7165:366::-;7307:3;7328:67;7392:2;7387:3;7328:67;:::i;:::-;7321:74;;7404:93;7493:3;7404:93;:::i;:::-;7522:2;7517:3;7513:12;7506:19;;7311:220;;;:::o;7537:366::-;7679:3;7700:67;7764:2;7759:3;7700:67;:::i;:::-;7693:74;;7776:93;7865:3;7776:93;:::i;:::-;7894:2;7889:3;7885:12;7878:19;;7683:220;;;:::o;7909:366::-;8051:3;8072:67;8136:2;8131:3;8072:67;:::i;:::-;8065:74;;8148:93;8237:3;8148:93;:::i;:::-;8266:2;8261:3;8257:12;8250:19;;8055:220;;;:::o;8281:366::-;8423:3;8444:67;8508:2;8503:3;8444:67;:::i;:::-;8437:74;;8520:93;8609:3;8520:93;:::i;:::-;8638:2;8633:3;8629:12;8622:19;;8427:220;;;:::o;8653:366::-;8795:3;8816:67;8880:2;8875:3;8816:67;:::i;:::-;8809:74;;8892:93;8981:3;8892:93;:::i;:::-;9010:2;9005:3;9001:12;8994:19;;8799:220;;;:::o;9025:366::-;9167:3;9188:67;9252:2;9247:3;9188:67;:::i;:::-;9181:74;;9264:93;9353:3;9264:93;:::i;:::-;9382:2;9377:3;9373:12;9366:19;;9171:220;;;:::o;9397:366::-;9539:3;9560:67;9624:2;9619:3;9560:67;:::i;:::-;9553:74;;9636:93;9725:3;9636:93;:::i;:::-;9754:2;9749:3;9745:12;9738:19;;9543:220;;;:::o;9769:366::-;9911:3;9932:67;9996:2;9991:3;9932:67;:::i;:::-;9925:74;;10008:93;10097:3;10008:93;:::i;:::-;10126:2;10121:3;10117:12;10110:19;;9915:220;;;:::o;10141:366::-;10283:3;10304:67;10368:2;10363:3;10304:67;:::i;:::-;10297:74;;10380:93;10469:3;10380:93;:::i;:::-;10498:2;10493:3;10489:12;10482:19;;10287:220;;;:::o;10513:118::-;10600:24;10618:5;10600:24;:::i;:::-;10595:3;10588:37;10578:53;;:::o;10637:112::-;10720:22;10736:5;10720:22;:::i;:::-;10715:3;10708:35;10698:51;;:::o;10755:222::-;10848:4;10886:2;10875:9;10871:18;10863:26;;10899:71;10967:1;10956:9;10952:17;10943:6;10899:71;:::i;:::-;10853:124;;;;:::o;10983:332::-;11104:4;11142:2;11131:9;11127:18;11119:26;;11155:71;11223:1;11212:9;11208:17;11199:6;11155:71;:::i;:::-;11236:72;11304:2;11293:9;11289:18;11280:6;11236:72;:::i;:::-;11109:206;;;;;:::o;11321:807::-;11570:4;11608:3;11597:9;11593:19;11585:27;;11622:71;11690:1;11679:9;11675:17;11666:6;11622:71;:::i;:::-;11703:72;11771:2;11760:9;11756:18;11747:6;11703:72;:::i;:::-;11785:80;11861:2;11850:9;11846:18;11837:6;11785:80;:::i;:::-;11875;11951:2;11940:9;11936:18;11927:6;11875:80;:::i;:::-;11965:73;12033:3;12022:9;12018:19;12009:6;11965:73;:::i;:::-;12048;12116:3;12105:9;12101:19;12092:6;12048:73;:::i;:::-;11575:553;;;;;;;;;:::o;12134:210::-;12221:4;12259:2;12248:9;12244:18;12236:26;;12272:65;12334:1;12323:9;12319:17;12310:6;12272:65;:::i;:::-;12226:118;;;;:::o;12350:276::-;12470:4;12508:2;12497:9;12493:18;12485:26;;12521:98;12616:1;12605:9;12601:17;12592:6;12521:98;:::i;:::-;12475:151;;;;:::o;12632:313::-;12745:4;12783:2;12772:9;12768:18;12760:26;;12832:9;12826:4;12822:20;12818:1;12807:9;12803:17;12796:47;12860:78;12933:4;12924:6;12860:78;:::i;:::-;12852:86;;12750:195;;;;:::o;12951:419::-;13117:4;13155:2;13144:9;13140:18;13132:26;;13204:9;13198:4;13194:20;13190:1;13179:9;13175:17;13168:47;13232:131;13358:4;13232:131;:::i;:::-;13224:139;;13122:248;;;:::o;13376:419::-;13542:4;13580:2;13569:9;13565:18;13557:26;;13629:9;13623:4;13619:20;13615:1;13604:9;13600:17;13593:47;13657:131;13783:4;13657:131;:::i;:::-;13649:139;;13547:248;;;:::o;13801:419::-;13967:4;14005:2;13994:9;13990:18;13982:26;;14054:9;14048:4;14044:20;14040:1;14029:9;14025:17;14018:47;14082:131;14208:4;14082:131;:::i;:::-;14074:139;;13972:248;;;:::o;14226:419::-;14392:4;14430:2;14419:9;14415:18;14407:26;;14479:9;14473:4;14469:20;14465:1;14454:9;14450:17;14443:47;14507:131;14633:4;14507:131;:::i;:::-;14499:139;;14397:248;;;:::o;14651:419::-;14817:4;14855:2;14844:9;14840:18;14832:26;;14904:9;14898:4;14894:20;14890:1;14879:9;14875:17;14868:47;14932:131;15058:4;14932:131;:::i;:::-;14924:139;;14822:248;;;:::o;15076:419::-;15242:4;15280:2;15269:9;15265:18;15257:26;;15329:9;15323:4;15319:20;15315:1;15304:9;15300:17;15293:47;15357:131;15483:4;15357:131;:::i;:::-;15349:139;;15247:248;;;:::o;15501:419::-;15667:4;15705:2;15694:9;15690:18;15682:26;;15754:9;15748:4;15744:20;15740:1;15729:9;15725:17;15718:47;15782:131;15908:4;15782:131;:::i;:::-;15774:139;;15672:248;;;:::o;15926:419::-;16092:4;16130:2;16119:9;16115:18;16107:26;;16179:9;16173:4;16169:20;16165:1;16154:9;16150:17;16143:47;16207:131;16333:4;16207:131;:::i;:::-;16199:139;;16097:248;;;:::o;16351:419::-;16517:4;16555:2;16544:9;16540:18;16532:26;;16604:9;16598:4;16594:20;16590:1;16579:9;16575:17;16568:47;16632:131;16758:4;16632:131;:::i;:::-;16624:139;;16522:248;;;:::o;16776:419::-;16942:4;16980:2;16969:9;16965:18;16957:26;;17029:9;17023:4;17019:20;17015:1;17004:9;17000:17;16993:47;17057:131;17183:4;17057:131;:::i;:::-;17049:139;;16947:248;;;:::o;17201:222::-;17294:4;17332:2;17321:9;17317:18;17309:26;;17345:71;17413:1;17402:9;17398:17;17389:6;17345:71;:::i;:::-;17299:124;;;;:::o;17429:483::-;17600:4;17638:2;17627:9;17623:18;17615:26;;17651:71;17719:1;17708:9;17704:17;17695:6;17651:71;:::i;:::-;17769:9;17763:4;17759:20;17754:2;17743:9;17739:18;17732:48;17797:108;17900:4;17891:6;17797:108;:::i;:::-;17789:116;;17605:307;;;;;:::o;17918:831::-;18181:4;18219:3;18208:9;18204:19;18196:27;;18233:71;18301:1;18290:9;18286:17;18277:6;18233:71;:::i;:::-;18314:80;18390:2;18379:9;18375:18;18366:6;18314:80;:::i;:::-;18441:9;18435:4;18431:20;18426:2;18415:9;18411:18;18404:48;18469:108;18572:4;18563:6;18469:108;:::i;:::-;18461:116;;18587:72;18655:2;18644:9;18640:18;18631:6;18587:72;:::i;:::-;18669:73;18737:3;18726:9;18722:19;18713:6;18669:73;:::i;:::-;18186:563;;;;;;;;:::o;18755:214::-;18844:4;18882:2;18871:9;18867:18;18859:26;;18895:67;18959:1;18948:9;18944:17;18935:6;18895:67;:::i;:::-;18849:120;;;;:::o;18975:132::-;19042:4;19065:3;19057:11;;19095:4;19090:3;19086:14;19078:22;;19047:60;;;:::o;19113:114::-;19180:6;19214:5;19208:12;19198:22;;19187:40;;;:::o;19233:99::-;19285:6;19319:5;19313:12;19303:22;;19292:40;;;:::o;19338:113::-;19408:4;19440;19435:3;19431:14;19423:22;;19413:38;;;:::o;19457:184::-;19556:11;19590:6;19585:3;19578:19;19630:4;19625:3;19621:14;19606:29;;19568:73;;;;:::o;19647:169::-;19731:11;19765:6;19760:3;19753:19;19805:4;19800:3;19796:14;19781:29;;19743:73;;;;:::o;19822:305::-;19862:3;19881:20;19899:1;19881:20;:::i;:::-;19876:25;;19915:20;19933:1;19915:20;:::i;:::-;19910:25;;20069:1;20001:66;19997:74;19994:1;19991:81;19988:2;;;20075:18;;:::i;:::-;19988:2;20119:1;20116;20112:9;20105:16;;19866:261;;;;:::o;20133:185::-;20173:1;20190:20;20208:1;20190:20;:::i;:::-;20185:25;;20224:20;20242:1;20224:20;:::i;:::-;20219:25;;20263:1;20253:2;;20268:18;;:::i;:::-;20253:2;20310:1;20307;20303:9;20298:14;;20175:143;;;;:::o;20324:348::-;20364:7;20387:20;20405:1;20387:20;:::i;:::-;20382:25;;20421:20;20439:1;20421:20;:::i;:::-;20416:25;;20609:1;20541:66;20537:74;20534:1;20531:81;20526:1;20519:9;20512:17;20508:105;20505:2;;;20616:18;;:::i;:::-;20505:2;20664:1;20661;20657:9;20646:20;;20372:300;;;;:::o;20678:191::-;20718:4;20738:20;20756:1;20738:20;:::i;:::-;20733:25;;20772:20;20790:1;20772:20;:::i;:::-;20767:25;;20811:1;20808;20805:8;20802:2;;;20816:18;;:::i;:::-;20802:2;20861:1;20858;20854:9;20846:17;;20723:146;;;;:::o;20875:96::-;20912:7;20941:24;20959:5;20941:24;:::i;:::-;20930:35;;20920:51;;;:::o;20977:90::-;21011:7;21054:5;21047:13;21040:21;21029:32;;21019:48;;;:::o;21073:126::-;21110:7;21150:42;21143:5;21139:54;21128:65;;21118:81;;;:::o;21205:77::-;21242:7;21271:5;21260:16;;21250:32;;;:::o;21288:86::-;21323:7;21363:4;21356:5;21352:16;21341:27;;21331:43;;;:::o;21380:180::-;21457:9;21490:64;21548:5;21490:64;:::i;:::-;21477:77;;21467:93;;;:::o;21566:140::-;21643:9;21676:24;21694:5;21676:24;:::i;:::-;21663:37;;21653:53;;;:::o;21712:121::-;21770:9;21803:24;21821:5;21803:24;:::i;:::-;21790:37;;21780:53;;;:::o;21839:307::-;21907:1;21917:113;21931:6;21928:1;21925:13;21917:113;;;22016:1;22011:3;22007:11;22001:18;21997:1;21992:3;21988:11;21981:39;21953:2;21950:1;21946:10;21941:15;;21917:113;;;22048:6;22045:1;22042:13;22039:2;;;22128:1;22119:6;22114:3;22110:16;22103:27;22039:2;21888:258;;;;:::o;22152:320::-;22196:6;22233:1;22227:4;22223:12;22213:22;;22280:1;22274:4;22270:12;22301:18;22291:2;;22357:4;22349:6;22345:17;22335:27;;22291:2;22419;22411:6;22408:14;22388:18;22385:38;22382:2;;;22438:18;;:::i;:::-;22382:2;22203:269;;;;:::o;22478:180::-;22526:77;22523:1;22516:88;22623:4;22620:1;22613:15;22647:4;22644:1;22637:15;22664:180;22712:77;22709:1;22702:88;22809:4;22806:1;22799:15;22833:4;22830:1;22823:15;22850:180;22898:77;22895:1;22888:88;22995:4;22992:1;22985:15;23019:4;23016:1;23009:15;23036:102;23077:6;23128:2;23124:7;23119:2;23112:5;23108:14;23104:28;23094:38;;23084:54;;;:::o;23144:222::-;23284:34;23280:1;23272:6;23268:14;23261:58;23353:5;23348:2;23340:6;23336:15;23329:30;23250:116;:::o;23372:239::-;23512:34;23508:1;23500:6;23496:14;23489:58;23581:22;23576:2;23568:6;23564:15;23557:47;23478:133;:::o;23617:225::-;23757:34;23753:1;23745:6;23741:14;23734:58;23826:8;23821:2;23813:6;23809:15;23802:33;23723:119;:::o;23848:221::-;23988:34;23984:1;23976:6;23972:14;23965:58;24057:4;24052:2;24044:6;24040:15;24033:29;23954:115;:::o;24075:177::-;24215:29;24211:1;24203:6;24199:14;24192:53;24181:71;:::o;24258:227::-;24398:34;24394:1;24386:6;24382:14;24375:58;24467:10;24462:2;24454:6;24450:15;24443:35;24364:121;:::o;24491:220::-;24631:34;24627:1;24619:6;24615:14;24608:58;24700:3;24695:2;24687:6;24683:15;24676:28;24597:114;:::o;24717:182::-;24857:34;24853:1;24845:6;24841:14;24834:58;24823:76;:::o;24905:224::-;25045:34;25041:1;25033:6;25029:14;25022:58;25114:7;25109:2;25101:6;25097:15;25090:32;25011:118;:::o;25135:223::-;25275:34;25271:1;25263:6;25259:14;25252:58;25344:6;25339:2;25331:6;25327:15;25320:31;25241:117;:::o;25364:122::-;25437:24;25455:5;25437:24;:::i;:::-;25430:5;25427:35;25417:2;;25476:1;25473;25466:12;25417:2;25407:79;:::o;25492:116::-;25562:21;25577:5;25562:21;:::i;:::-;25555:5;25552:32;25542:2;;25598:1;25595;25588:12;25542:2;25532:76;:::o;25614:122::-;25687:24;25705:5;25687:24;:::i;:::-;25680:5;25677:35;25667:2;;25726:1;25723;25716:12;25667:2;25657:79;:::o
Swarm Source
ipfs://7e3ba706217a8c6bf07fd7876e8d420ebeb5475397d00ed452d01db5cdcfe848
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.