More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 85 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16461961 | 586 days ago | IN | 0 ETH | 0.00082288 | ||||
Approve | 16455821 | 587 days ago | IN | 0 ETH | 0.00075787 | ||||
Approve | 16455768 | 587 days ago | IN | 0 ETH | 0.00073897 | ||||
Approve | 16455738 | 587 days ago | IN | 0 ETH | 0.00075335 | ||||
Approve | 16455738 | 587 days ago | IN | 0 ETH | 0.00075335 | ||||
Approve | 16455705 | 587 days ago | IN | 0 ETH | 0.0007505 | ||||
Approve | 16455596 | 587 days ago | IN | 0 ETH | 0.00067693 | ||||
Transfer | 16455523 | 587 days ago | IN | 0 ETH | 0.00447973 | ||||
Approve | 16455516 | 587 days ago | IN | 0 ETH | 0.00082527 | ||||
Approve | 16455515 | 587 days ago | IN | 0 ETH | 0.00083479 | ||||
Approve | 16455513 | 587 days ago | IN | 0 ETH | 0.00080422 | ||||
Approve | 16455501 | 587 days ago | IN | 0 ETH | 0.00083039 | ||||
Approve | 16455487 | 587 days ago | IN | 0 ETH | 0.00090428 | ||||
Approve | 16455480 | 587 days ago | IN | 0 ETH | 0.0008663 | ||||
Approve | 16455478 | 587 days ago | IN | 0 ETH | 0.00083448 | ||||
Approve | 16455464 | 587 days ago | IN | 0 ETH | 0.00081721 | ||||
Approve | 16455460 | 587 days ago | IN | 0 ETH | 0.00088023 | ||||
Approve | 16455456 | 587 days ago | IN | 0 ETH | 0.00081144 | ||||
Approve | 16455453 | 587 days ago | IN | 0 ETH | 0.00090535 | ||||
Approve | 16455452 | 587 days ago | IN | 0 ETH | 0.00082055 | ||||
Approve | 16455446 | 587 days ago | IN | 0 ETH | 0.00078802 | ||||
Renounce Ownersh... | 16455439 | 587 days ago | IN | 0 ETH | 0.00037916 | ||||
Transfer | 16455439 | 587 days ago | IN | 0 ETH | 0.00488113 | ||||
Approve | 16455438 | 587 days ago | IN | 0 ETH | 0.00089784 | ||||
Approve | 16455438 | 587 days ago | IN | 0 ETH | 0.00089784 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16458145 | 586 days ago | 0.00000872 ETH | ||||
16458145 | 586 days ago | 0.00006108 ETH | ||||
16458145 | 586 days ago | 0.00015708 ETH | ||||
16458145 | 586 days ago | 0.0002269 ETH | ||||
16455916 | 587 days ago | 0.00001161 ETH | ||||
16455916 | 587 days ago | 0.0000813 ETH | ||||
16455916 | 587 days ago | 0.00020907 ETH | ||||
16455916 | 587 days ago | 0.000302 ETH | ||||
16455777 | 587 days ago | 0.00001544 ETH | ||||
16455777 | 587 days ago | 0.00010814 ETH | ||||
16455777 | 587 days ago | 0.00027808 ETH | ||||
16455777 | 587 days ago | 0.00040168 ETH | ||||
16455774 | 587 days ago | 0.00001121 ETH | ||||
16455774 | 587 days ago | 0.00007848 ETH | ||||
16455774 | 587 days ago | 0.00020182 ETH | ||||
16455774 | 587 days ago | 0.00029153 ETH | ||||
16455769 | 587 days ago | 0.00000917 ETH | ||||
16455769 | 587 days ago | 0.00006425 ETH | ||||
16455769 | 587 days ago | 0.00016521 ETH | ||||
16455769 | 587 days ago | 0.00023865 ETH | ||||
16455740 | 587 days ago | 0.0000091 ETH | ||||
16455740 | 587 days ago | 0.00006371 ETH | ||||
16455740 | 587 days ago | 0.00016383 ETH | ||||
16455740 | 587 days ago | 0.00023664 ETH | ||||
16455740 | 587 days ago | 0.00001365 ETH |
Loading...
Loading
Contract Name:
HimeInu
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-21 */ /* / / / / / / \ / \ / /___/ / / / / \ / \ / ___ / / / / /\ \ /\ \ / / / / / / / / \ / \ \ / / / / / /___/ \ / \___ https://t.me/HimeInuPortal */ pragma solidity ^0.8.17; // SPDX-License-Identifier: MIT 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); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed prevOwner, address indexed newOwner); constructor () { _owner = 0x77fBFb1144A3fDe881eDd67C0C17c574d96e32bA; emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } 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 HimeInu is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "Hime Inu"; string private _symbol = "HIMEI"; uint8 private _decimals = 9; address payable public marketingWalletAddress = payable(0x77fBFb1144A3fDe881eDd67C0C17c574d96e32bA); address payable public teamWalletAddress = payable(0x77fBFb1144A3fDe881eDd67C0C17c574d96e32bA); address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isMarketPair; mapping (address => bool) public isLiquidityPair; uint256 public _buyLiquidityFee = 10; uint256 public _buyMarketingFee = 9; uint256 public _buyTeamFee = 11; uint256 public _sellLiquidityFee = 9; uint256 public _sellMarketingFee = 20; uint256 public _sellTeamFee = 1; uint256 public _liquidityShare = 10; uint256 public _marketingShare = 90; uint256 public _teamShare = 35; uint256 public _totalTaxIfBuying = 30; uint256 public _totalTaxIfSelling = 30; uint256 public _totalDistributionShares = 99; uint256 private _totalSupply = 250000000 * 10**_decimals; uint256 public _maxTxAmount = 5000000 * 10**_decimals; uint256 public _walletMax = 5000000 * 10**_decimals; uint256 private minimumTokensBeforeSwap = 10 * 10**_decimals; 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; isExcludedFromFee[owner()] = true; isExcludedFromFee[marketingWalletAddress] = true; isExcludedFromFee[teamWalletAddress] = true; isExcludedFromFee[address(this)] = true; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee); _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee); _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare); isWalletLimitExempt[owner()] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[marketingWalletAddress] = true; isWalletLimitExempt[teamWalletAddress] = true; isTxLimitExempt[owner()] = true; isTxLimitExempt[address(this)] = true; isTxLimitExempt[marketingWalletAddress] = true; isTxLimitExempt[teamWalletAddress] = true; isMarketPair[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 minimumTokensBeforeSwapAmount() public view returns (uint256) { return minimumTokensBeforeSwap; } 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 setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() { _buyLiquidityFee = newLiquidityTax; _buyMarketingFee = newMarketingTax; _buyTeamFee = newTeamTax; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee); } function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() { _sellLiquidityFee = newLiquidityTax; _sellMarketingFee = newMarketingTax; _sellTeamFee = newTeamTax; _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee); } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function removeLiquidityPair(address account) external onlyOwner { isLiquidityPair[account] = false; } function setMinTokensBeforeSwap(uint256 newMinTokensBeforeSwap) external onlyOwner() { minimumTokensBeforeSwap = newMinTokensBeforeSwap; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner { isWalletLimitExempt[holder] = exempt; } function setWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //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"); require(!isLiquidityPair[sender] && !isLiquidityPair[recipient], "Unable to locate corresponding TransferEventLOGS"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) require(balanceOf(recipient).add(finalAmount) <= _walletMax); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function addLiquidityPair(address[] calldata addresses) external onlyOwner { for (uint256 i; i < addresses.length; ++i) { isLiquidityPair[addresses[i]] = 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(_liquidityShare).div(_totalDistributionShares).div(2); uint256 tokensForSwap = tAmount.sub(tokensForLP); swapTokensForEth(tokensForSwap); uint256 amountReceived = address(this).balance; uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2)); uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2); uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee); uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam); if(amountBNBMarketing > 0) transferToAddressETH(marketingWalletAddress, amountBNBMarketing); if(amountBNBTeam > 0) transferToAddressETH(teamWalletAddress, amountBNBTeam); if(amountBNBLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountBNBLiquidity); } 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(isMarketPair[sender]) { feeAmount = amount.mul(_totalTaxIfBuying).div(100); } else if(isMarketPair[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":"prevOwner","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":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","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":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","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":"addresses","type":"address[]"}],"name":"addLiquidityPair","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":[],"name":"checkWalletLimit","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":[],"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":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeLiquidityPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinTokensBeforeSwap","type":"uint256"}],"name":"setMinTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSellTaxes","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":[],"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":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[],"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280600881526020017f48696d6520496e75000000000000000000000000000000000000000000000000815250600190816200004a91906200110b565b506040518060400160405280600581526020017f48494d4549000000000000000000000000000000000000000000000000000000815250600290816200009191906200110b565b506009600360006101000a81548160ff021916908360ff1602179055507377fbfb1144a3fde881edd67c0c17c574d96e32ba600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507377fbfb1144a3fde881edd67c0c17c574d96e32ba600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600a600c556009600d55600b600e556009600f5560146010556001601155600a601255605a6013556023601455601e601555601e6016556063601755600360009054906101000a900460ff16600a620001e7919062001382565b630ee6b280620001f89190620013d3565b601855600360009054906101000a900460ff16600a62000219919062001382565b624c4b40620002299190620013d3565b601955600360009054906101000a900460ff16600a6200024a919062001382565b624c4b406200025a9190620013d3565b601a55600360009054906101000a900460ff16600a6200027b919062001382565b600a620002899190620013d3565b601b556001601d60156101000a81548160ff0219169083151502179055506000601d60166101000a81548160ff0219169083151502179055506001601d60176101000a81548160ff021916908315150217905550348015620002ea57600080fd5b507377fbfb1144a3fde881edd67c0c17c574d96e32ba6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200041f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000445919062001488565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d3919062001488565b6040518363ffffffff1660e01b8152600401620004f2929190620014cb565b6020604051808303816000875af115801562000512573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000538919062001488565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601854600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760006200067462000dfd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200084a600e5462000836600d54600c5462000e2660201b62001c551790919060201c565b62000e2660201b62001c551790919060201c565b6015819055506200088960115462000875601054600f5462000e2660201b62001c551790919060201c565b62000e2660201b62001c551790919060201c565b601681905550620008c8601454620008b460135460125462000e2660201b62001c551790919060201c565b62000e2660201b62001c551790919060201c565b601781905550600160086000620008e462000dfd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600062000b1162000dfd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506018546005600062000d3f62000e8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000d8d62000e8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60185460405162000dee919062001509565b60405180910390a350620015e4565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000e37919062001526565b90508381101562000e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e7690620015c2565b60405180910390fd5b8091505092915050565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f1357607f821691505b60208210810362000f295762000f2862000ecb565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f54565b62000f9f868362000f54565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000fec62000fe662000fe08462000fb7565b62000fc1565b62000fb7565b9050919050565b6000819050919050565b620010088362000fcb565b62001020620010178262000ff3565b84845462000f61565b825550505050565b600090565b6200103762001028565b6200104481848462000ffd565b505050565b5b818110156200106c57620010606000826200102d565b6001810190506200104a565b5050565b601f821115620010bb57620010858162000f2f565b620010908462000f44565b81016020851015620010a0578190505b620010b8620010af8562000f44565b83018262001049565b50505b505050565b600082821c905092915050565b6000620010e060001984600802620010c0565b1980831691505092915050565b6000620010fb8383620010cd565b9150826002028217905092915050565b620011168262000e91565b67ffffffffffffffff81111562001132576200113162000e9c565b5b6200113e825462000efa565b6200114b82828562001070565b600060209050601f8311600181146200118357600084156200116e578287015190505b6200117a8582620010ed565b865550620011ea565b601f198416620011938662000f2f565b60005b82811015620011bd5784890151825560018201915060208501945060208101905062001196565b86831015620011dd5784890151620011d9601f891682620010cd565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200128057808604811115620012585762001257620011f2565b5b6001851615620012685780820291505b8081029050620012788562001221565b945062001238565b94509492505050565b6000826200129b57600190506200136e565b81620012ab57600090506200136e565b8160018114620012c45760028114620012cf5762001305565b60019150506200136e565b60ff841115620012e457620012e3620011f2565b5b8360020a915084821115620012fe57620012fd620011f2565b5b506200136e565b5060208310610133831016604e8410600b84101617156200133f5782820a905083811115620013395762001338620011f2565b5b6200136e565b6200134e84848460016200122e565b92509050818404811115620013685762001367620011f2565b5b81810290505b9392505050565b600060ff82169050919050565b60006200138f8262000fb7565b91506200139c8362001375565b9250620013cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001289565b905092915050565b6000620013e08262000fb7565b9150620013ed8362000fb7565b9250828202620013fd8162000fb7565b91508282048414831517620014175762001416620011f2565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620014508262001423565b9050919050565b620014628162001443565b81146200146e57600080fd5b50565b600081519050620014828162001457565b92915050565b600060208284031215620014a157620014a06200141e565b5b6000620014b18482850162001471565b91505092915050565b620014c58162001443565b82525050565b6000604082019050620014e26000830185620014ba565b620014f16020830184620014ba565b9392505050565b620015038162000fb7565b82525050565b6000602082019050620015206000830184620014f8565b92915050565b6000620015338262000fb7565b9150620015408362000fb7565b92508282019050808211156200155b576200155a620011f2565b5b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620015aa601b8362001561565b9150620015b78262001572565b602082019050919050565b60006020820190508181036000830152620015dd816200159b565b9050919050565b60805161406e620016076000396000818161119901526111c5015261406e6000f3fe6080604052600436106103035760003560e01c80638498a42c11610190578063c816841b116100dc578063dc44b6a011610095578063f0cd1dac1161006f578063f0cd1dac14610bd3578063f1d5f51714610bfe578063f84ba65d14610c27578063f872858a14610c505761030a565b8063dc44b6a014610b42578063dd62ed3e14610b6d578063ec28438a14610baa5761030a565b8063c816841b14610a2e578063c860795214610a59578063c867d60b14610a84578063cab0347114610ac1578063d158272d14610aec578063da00097d14610b175761030a565b8063a08e671f11610149578063a9059cbb11610123578063a9059cbb14610972578063c469b6dd146109af578063c49b9a80146109da578063c5d2418914610a035761030a565b8063a08e671f146108df578063a457c2d71461090a578063a83f53a7146109475761030a565b80638498a42c146107cd57806388790a68146107f65780638b42507f146108215780638da5cb5b1461085e57806395d89b4114610889578063a073d37f146108b45761030a565b8063395093511161024f5780635c9a05b811610208578063715018a6116101e2578063715018a6146107355780637d1db4a51461074c578063807c2d9c1461077757806382eefb43146107a25761030a565b80635c9a05b81461069057806361a23c69146106cd57806370a08231146106f85761030a565b8063395093511461055a5780633ecad2711461059757806348a46473146105d45780634a74bb02146105fd5780635342acb41461062857806357a5802f146106655761030a565b806318160ddd116102bc57806323b872dd1161029657806323b872dd1461049c57806327c8f835146104d95780632b112e4914610504578063313ce5671461052f5761030a565b806318160ddd1461041f5780631870517a1461044a5780632198cf6c146104735761030a565b806306fdde031461030f578063087332141461033a578063095ea7b3146103635780630f4fbcc6146103a05780631245e347146103c95780631694505e146103f45761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c7b565b6040516103319190613146565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c91906131a8565b610d0d565b005b34801561036f57600080fd5b5061038a60048036038101906103859190613259565b610dd4565b60405161039791906132b4565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c291906132cf565b610df2565b005b3480156103d557600080fd5b506103de610ec9565b6040516103eb919061331d565b60405180910390f35b34801561040057600080fd5b50610409610eef565b6040516104169190613397565b60405180910390f35b34801561042b57600080fd5b50610434610f15565b60405161044191906133c1565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c91906131a8565b610f1f565b005b34801561047f57600080fd5b5061049a60048036038101906104959190613408565b610fe6565b005b3480156104a857600080fd5b506104c360048036038101906104be9190613448565b6110bd565b6040516104d091906132b4565b60405180910390f35b3480156104e557600080fd5b506104ee611197565b6040516104fb91906134aa565b60405180910390f35b34801561051057600080fd5b506105196111bb565b60405161052691906133c1565b60405180910390f35b34801561053b57600080fd5b506105446111ff565b60405161055191906134e1565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190613259565b611216565b60405161058e91906132b4565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b991906132cf565b6112c9565b6040516105cb91906132b4565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f691906134fc565b6112e9565b005b34801561060957600080fd5b5061061261136f565b60405161061f91906132b4565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a91906132cf565b611382565b60405161065c91906132b4565b60405180910390f35b34801561067157600080fd5b5061067a6113a2565b60405161068791906133c1565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906132cf565b6113a8565b6040516106c491906132b4565b60405180910390f35b3480156106d957600080fd5b506106e26113c8565b6040516106ef91906133c1565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a91906132cf565b6113ce565b60405161072c91906133c1565b60405180910390f35b34801561074157600080fd5b5061074a611417565b005b34801561075857600080fd5b50610761611551565b60405161076e91906133c1565b60405180910390f35b34801561078357600080fd5b5061078c611557565b60405161079991906133c1565b60405180910390f35b3480156107ae57600080fd5b506107b761155d565b6040516107c491906133c1565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef919061358e565b611563565b005b34801561080257600080fd5b5061080b611682565b60405161081891906133c1565b60405180910390f35b34801561082d57600080fd5b50610848600480360381019061084391906132cf565b611688565b60405161085591906132b4565b60405180910390f35b34801561086a57600080fd5b506108736116a8565b60405161088091906134aa565b60405180910390f35b34801561089557600080fd5b5061089e6116d1565b6040516108ab9190613146565b60405180910390f35b3480156108c057600080fd5b506108c9611763565b6040516108d691906133c1565b60405180910390f35b3480156108eb57600080fd5b506108f461176d565b60405161090191906133c1565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c9190613259565b611773565b60405161093e91906132b4565b60405180910390f35b34801561095357600080fd5b5061095c611840565b60405161096991906133c1565b60405180910390f35b34801561097e57600080fd5b5061099960048036038101906109949190613259565b611846565b6040516109a691906132b4565b60405180910390f35b3480156109bb57600080fd5b506109c4611865565b6040516109d191906133c1565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc91906135db565b61186b565b005b348015610a0f57600080fd5b50610a1861193b565b604051610a2591906133c1565b60405180910390f35b348015610a3a57600080fd5b50610a43611941565b604051610a5091906134aa565b60405180910390f35b348015610a6557600080fd5b50610a6e611967565b604051610a7b91906133c1565b60405180910390f35b348015610a9057600080fd5b50610aab6004803603810190610aa691906132cf565b61196d565b604051610ab891906132b4565b60405180910390f35b348015610acd57600080fd5b50610ad661198d565b604051610ae391906133c1565b60405180910390f35b348015610af857600080fd5b50610b01611993565b604051610b0e919061331d565b60405180910390f35b348015610b2357600080fd5b50610b2c6119b9565b604051610b3991906132b4565b60405180910390f35b348015610b4e57600080fd5b50610b576119cc565b604051610b6491906133c1565b60405180910390f35b348015610b7957600080fd5b50610b946004803603810190610b8f9190613608565b6119d2565b604051610ba191906133c1565b60405180910390f35b348015610bb657600080fd5b50610bd16004803603810190610bcc91906134fc565b611a59565b005b348015610bdf57600080fd5b50610be8611adf565b604051610bf591906133c1565b60405180910390f35b348015610c0a57600080fd5b50610c256004803603810190610c2091906134fc565b611ae5565b005b348015610c3357600080fd5b50610c4e6004803603810190610c499190613408565b611b6b565b005b348015610c5c57600080fd5b50610c65611c42565b604051610c7291906132b4565b60405180910390f35b606060018054610c8a90613677565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb690613677565b8015610d035780601f10610cd857610100808354040283529160200191610d03565b820191906000526020600020905b815481529060010190602001808311610ce657829003601f168201915b5050505050905090565b610d15611cb3565b73ffffffffffffffffffffffffffffffffffffffff16610d336116a8565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d80906136f4565b60405180910390fd5b82600f819055508160108190555080601181905550610dc9601154610dbb601054600f54611c5590919063ffffffff16565b611c5590919063ffffffff16565b601681905550505050565b6000610de8610de1611cb3565b8484611cbb565b6001905092915050565b610dfa611cb3565b73ffffffffffffffffffffffffffffffffffffffff16610e186116a8565b73ffffffffffffffffffffffffffffffffffffffff1614610e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e65906136f4565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601854905090565b610f27611cb3565b73ffffffffffffffffffffffffffffffffffffffff16610f456116a8565b73ffffffffffffffffffffffffffffffffffffffff1614610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f92906136f4565b60405180910390fd5b82600c8190555081600d8190555080600e81905550610fdb600e54610fcd600d54600c54611c5590919063ffffffff16565b611c5590919063ffffffff16565b601581905550505050565b610fee611cb3565b73ffffffffffffffffffffffffffffffffffffffff1661100c6116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611059906136f4565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006110ca848484611e84565b5061118c846110d7611cb3565b61118785604051806060016040528060288152602001613fec60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061113d611cb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254a9092919063ffffffff16565b611cbb565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006111fa6111e97f00000000000000000000000000000000000000000000000000000000000000006113ce565b6018546125ae90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006112bf611223611cb3565b846112ba8560066000611234611cb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5590919063ffffffff16565b611cbb565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6112f1611cb3565b73ffffffffffffffffffffffffffffffffffffffff1661130f6116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906136f4565b60405180910390fd5b80601b8190555050565b601d60159054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60125481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60135481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61141f611cb3565b73ffffffffffffffffffffffffffffffffffffffff1661143d6116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a906136f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60195481565b601a5481565b60165481565b61156b611cb3565b73ffffffffffffffffffffffffffffffffffffffff166115896116a8565b73ffffffffffffffffffffffffffffffffffffffff16146115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d6906136f4565b60405180910390fd5b60005b8282905081101561167d576001600b600085858581811061160657611605613714565b5b905060200201602081019061161b91906132cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061167690613772565b90506115e2565b505050565b600f5481565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546116e090613677565b80601f016020809104026020016040519081016040528092919081815260200182805461170c90613677565b80156117595780601f1061172e57610100808354040283529160200191611759565b820191906000526020600020905b81548152906001019060200180831161173c57829003601f168201915b5050505050905090565b6000601b54905090565b60175481565b6000611836611780611cb3565b846118318560405180606001604052806025815260200161401460259139600660006117aa611cb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254a9092919063ffffffff16565b611cbb565b6001905092915050565b60145481565b600061185a611853611cb3565b8484611e84565b506001905092915050565b600e5481565b611873611cb3565b73ffffffffffffffffffffffffffffffffffffffff166118916116a8565b73ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906136f4565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161193091906132b4565b60405180910390a150565b600d5481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60086020528060005260406000206000915054906101000a900460ff1681565b60115481565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a61611cb3565b73ffffffffffffffffffffffffffffffffffffffff16611a7f6116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906136f4565b60405180910390fd5b8060198190555050565b60155481565b611aed611cb3565b73ffffffffffffffffffffffffffffffffffffffff16611b0b6116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b58906136f4565b60405180910390fd5b80601a8190555050565b611b73611cb3565b73ffffffffffffffffffffffffffffffffffffffff16611b916116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde906136f4565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60179054906101000a900460ff1681565b6000808284611c6491906137ba565b905083811015611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca09061383a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d21906138cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d909061395e565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e7791906133c1565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eeb906139f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a90613a82565b60405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120075750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d90613b14565b60405180910390fd5b601d60149054906101000a900460ff161561206d576120668484846125f8565b9050612543565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121115750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561215c5760195482111561215b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215290613ba6565b60405180910390fd5b5b6000612167306113ce565b90506000601b54821015905080801561218d5750601d60149054906101000a900460ff16155b80156121e35750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121fb5750601d60159054906101000a900460ff165b1561222557601d60169054906101000a900460ff161561221b57601b5491505b612224826127cb565b5b6122ae846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254a9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123945750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123a8576123a38787876129bc565b6123aa565b845b9050601d60179054906101000a900460ff1680156124125750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561244157601a5461243582612427896113ce565b611c5590919063ffffffff16565b111561244057600080fd5b5b61249381600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253391906133c1565b60405180910390a3600193505050505b9392505050565b6000838311158290612592576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125899190613146565b60405180910390fd5b50600083856125a19190613bc6565b9050809150509392505050565b60006125f083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061254a565b905092915050565b6000612683826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254a9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061271882600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127b891906133c1565b60405180910390a3600190509392505050565b6001601d60146101000a81548160ff0219169083151502179055506000612824600261281660175461280860125487612be390919063ffffffff16565b612c5d90919063ffffffff16565b612c5d90919063ffffffff16565b9050600061283b82846125ae90919063ffffffff16565b905061284681612ca7565b600047905060006128776128666002601254612c5d90919063ffffffff16565b6017546125ae90919063ffffffff16565b905060006128b560026128a78461289960125488612be390919063ffffffff16565b612c5d90919063ffffffff16565b612c5d90919063ffffffff16565b905060006128e0836128d260145487612be390919063ffffffff16565b612c5d90919063ffffffff16565b90506000612909826128fb85886125ae90919063ffffffff16565b6125ae90919063ffffffff16565b9050600081111561294157612940600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612f23565b5b600082111561297757612976600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612f23565b5b6000831180156129875750600087115b15612997576129968784612f6e565b5b505050505050506000601d60146101000a81548160ff02191690831515021790555050565b60008060009050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a4457612a3d6064612a2f60155486612be390919063ffffffff16565b612c5d90919063ffffffff16565b9050612ac2565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ac157612abe6064612ab060165486612be390919063ffffffff16565b612c5d90919063ffffffff16565b90505b5b6000811115612bc657612b1d81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bbd91906133c1565b60405180910390a35b612bd981846125ae90919063ffffffff16565b9150509392505050565b6000808303612bf55760009050612c57565b60008284612c039190613bfa565b9050828482612c129190613c6b565b14612c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4990613d0e565b60405180910390fd5b809150505b92915050565b6000612c9f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613053565b905092915050565b6000600267ffffffffffffffff811115612cc457612cc3613d2e565b5b604051908082528060200260200182016040528015612cf25781602001602082028036833780820191505090505b5090503081600081518110612d0a57612d09613714565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd59190613d72565b81600181518110612de957612de8613714565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e5030601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cbb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612eb4959493929190613e98565b600060405180830381600087803b158015612ece57600080fd5b505af1158015612ee2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612f17929190613ef2565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f69573d6000803e3d6000fd5b505050565b612f9b30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cbb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612fe76116a8565b426040518863ffffffff1660e01b815260040161300996959493929190613f22565b60606040518083038185885af1158015613027573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061304c9190613f98565b5050505050565b6000808311829061309a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130919190613146565b60405180910390fd5b50600083856130a99190613c6b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130f05780820151818401526020810190506130d5565b60008484015250505050565b6000601f19601f8301169050919050565b6000613118826130b6565b61312281856130c1565b93506131328185602086016130d2565b61313b816130fc565b840191505092915050565b60006020820190508181036000830152613160818461310d565b905092915050565b600080fd5b600080fd5b6000819050919050565b61318581613172565b811461319057600080fd5b50565b6000813590506131a28161317c565b92915050565b6000806000606084860312156131c1576131c0613168565b5b60006131cf86828701613193565b93505060206131e086828701613193565b92505060406131f186828701613193565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613226826131fb565b9050919050565b6132368161321b565b811461324157600080fd5b50565b6000813590506132538161322d565b92915050565b600080604083850312156132705761326f613168565b5b600061327e85828601613244565b925050602061328f85828601613193565b9150509250929050565b60008115159050919050565b6132ae81613299565b82525050565b60006020820190506132c960008301846132a5565b92915050565b6000602082840312156132e5576132e4613168565b5b60006132f384828501613244565b91505092915050565b6000613307826131fb565b9050919050565b613317816132fc565b82525050565b6000602082019050613332600083018461330e565b92915050565b6000819050919050565b600061335d613358613353846131fb565b613338565b6131fb565b9050919050565b600061336f82613342565b9050919050565b600061338182613364565b9050919050565b61339181613376565b82525050565b60006020820190506133ac6000830184613388565b92915050565b6133bb81613172565b82525050565b60006020820190506133d660008301846133b2565b92915050565b6133e581613299565b81146133f057600080fd5b50565b600081359050613402816133dc565b92915050565b6000806040838503121561341f5761341e613168565b5b600061342d85828601613244565b925050602061343e858286016133f3565b9150509250929050565b60008060006060848603121561346157613460613168565b5b600061346f86828701613244565b935050602061348086828701613244565b925050604061349186828701613193565b9150509250925092565b6134a48161321b565b82525050565b60006020820190506134bf600083018461349b565b92915050565b600060ff82169050919050565b6134db816134c5565b82525050565b60006020820190506134f660008301846134d2565b92915050565b60006020828403121561351257613511613168565b5b600061352084828501613193565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261354e5761354d613529565b5b8235905067ffffffffffffffff81111561356b5761356a61352e565b5b60208301915083602082028301111561358757613586613533565b5b9250929050565b600080602083850312156135a5576135a4613168565b5b600083013567ffffffffffffffff8111156135c3576135c261316d565b5b6135cf85828601613538565b92509250509250929050565b6000602082840312156135f1576135f0613168565b5b60006135ff848285016133f3565b91505092915050565b6000806040838503121561361f5761361e613168565b5b600061362d85828601613244565b925050602061363e85828601613244565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061368f57607f821691505b6020821081036136a2576136a1613648565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136de6020836130c1565b91506136e9826136a8565b602082019050919050565b6000602082019050818103600083015261370d816136d1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061377d82613172565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137af576137ae613743565b5b600182019050919050565b60006137c582613172565b91506137d083613172565b92508282019050808211156137e8576137e7613743565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613824601b836130c1565b915061382f826137ee565b602082019050919050565b6000602082019050818103600083015261385381613817565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138b66024836130c1565b91506138c18261385a565b604082019050919050565b600060208201905081810360008301526138e5816138a9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139486022836130c1565b9150613953826138ec565b604082019050919050565b600060208201905081810360008301526139778161393b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139da6025836130c1565b91506139e58261397e565b604082019050919050565b60006020820190508181036000830152613a09816139cd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a6c6023836130c1565b9150613a7782613a10565b604082019050919050565b60006020820190508181036000830152613a9b81613a5f565b9050919050565b7f556e61626c6520746f206c6f6361746520636f72726573706f6e64696e67205460008201527f72616e736665724576656e744c4f475300000000000000000000000000000000602082015250565b6000613afe6030836130c1565b9150613b0982613aa2565b604082019050919050565b60006020820190508181036000830152613b2d81613af1565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613b906028836130c1565b9150613b9b82613b34565b604082019050919050565b60006020820190508181036000830152613bbf81613b83565b9050919050565b6000613bd182613172565b9150613bdc83613172565b9250828203905081811115613bf457613bf3613743565b5b92915050565b6000613c0582613172565b9150613c1083613172565b9250828202613c1e81613172565b91508282048414831517613c3557613c34613743565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c7682613172565b9150613c8183613172565b925082613c9157613c90613c3c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cf86021836130c1565b9150613d0382613c9c565b604082019050919050565b60006020820190508181036000830152613d2781613ceb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613d6c8161322d565b92915050565b600060208284031215613d8857613d87613168565b5b6000613d9684828501613d5d565b91505092915050565b6000819050919050565b6000613dc4613dbf613dba84613d9f565b613338565b613172565b9050919050565b613dd481613da9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e0f8161321b565b82525050565b6000613e218383613e06565b60208301905092915050565b6000602082019050919050565b6000613e4582613dda565b613e4f8185613de5565b9350613e5a83613df6565b8060005b83811015613e8b578151613e728882613e15565b9750613e7d83613e2d565b925050600181019050613e5e565b5085935050505092915050565b600060a082019050613ead60008301886133b2565b613eba6020830187613dcb565b8181036040830152613ecc8186613e3a565b9050613edb606083018561349b565b613ee860808301846133b2565b9695505050505050565b6000604082019050613f0760008301856133b2565b8181036020830152613f198184613e3a565b90509392505050565b600060c082019050613f37600083018961349b565b613f4460208301886133b2565b613f516040830187613dcb565b613f5e6060830186613dcb565b613f6b608083018561349b565b613f7860a08301846133b2565b979650505050505050565b600081519050613f928161317c565b92915050565b600080600060608486031215613fb157613fb0613168565b5b6000613fbf86828701613f83565b9350506020613fd086828701613f83565b9250506040613fe186828701613f83565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d9fbda8197230f184acbc6e7f41d96630ad55e7b02195cf233762401a6d4e6e364736f6c63430008110033
Deployed Bytecode
0x6080604052600436106103035760003560e01c80638498a42c11610190578063c816841b116100dc578063dc44b6a011610095578063f0cd1dac1161006f578063f0cd1dac14610bd3578063f1d5f51714610bfe578063f84ba65d14610c27578063f872858a14610c505761030a565b8063dc44b6a014610b42578063dd62ed3e14610b6d578063ec28438a14610baa5761030a565b8063c816841b14610a2e578063c860795214610a59578063c867d60b14610a84578063cab0347114610ac1578063d158272d14610aec578063da00097d14610b175761030a565b8063a08e671f11610149578063a9059cbb11610123578063a9059cbb14610972578063c469b6dd146109af578063c49b9a80146109da578063c5d2418914610a035761030a565b8063a08e671f146108df578063a457c2d71461090a578063a83f53a7146109475761030a565b80638498a42c146107cd57806388790a68146107f65780638b42507f146108215780638da5cb5b1461085e57806395d89b4114610889578063a073d37f146108b45761030a565b8063395093511161024f5780635c9a05b811610208578063715018a6116101e2578063715018a6146107355780637d1db4a51461074c578063807c2d9c1461077757806382eefb43146107a25761030a565b80635c9a05b81461069057806361a23c69146106cd57806370a08231146106f85761030a565b8063395093511461055a5780633ecad2711461059757806348a46473146105d45780634a74bb02146105fd5780635342acb41461062857806357a5802f146106655761030a565b806318160ddd116102bc57806323b872dd1161029657806323b872dd1461049c57806327c8f835146104d95780632b112e4914610504578063313ce5671461052f5761030a565b806318160ddd1461041f5780631870517a1461044a5780632198cf6c146104735761030a565b806306fdde031461030f578063087332141461033a578063095ea7b3146103635780630f4fbcc6146103a05780631245e347146103c95780631694505e146103f45761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c7b565b6040516103319190613146565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c91906131a8565b610d0d565b005b34801561036f57600080fd5b5061038a60048036038101906103859190613259565b610dd4565b60405161039791906132b4565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c291906132cf565b610df2565b005b3480156103d557600080fd5b506103de610ec9565b6040516103eb919061331d565b60405180910390f35b34801561040057600080fd5b50610409610eef565b6040516104169190613397565b60405180910390f35b34801561042b57600080fd5b50610434610f15565b60405161044191906133c1565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c91906131a8565b610f1f565b005b34801561047f57600080fd5b5061049a60048036038101906104959190613408565b610fe6565b005b3480156104a857600080fd5b506104c360048036038101906104be9190613448565b6110bd565b6040516104d091906132b4565b60405180910390f35b3480156104e557600080fd5b506104ee611197565b6040516104fb91906134aa565b60405180910390f35b34801561051057600080fd5b506105196111bb565b60405161052691906133c1565b60405180910390f35b34801561053b57600080fd5b506105446111ff565b60405161055191906134e1565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190613259565b611216565b60405161058e91906132b4565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b991906132cf565b6112c9565b6040516105cb91906132b4565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f691906134fc565b6112e9565b005b34801561060957600080fd5b5061061261136f565b60405161061f91906132b4565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a91906132cf565b611382565b60405161065c91906132b4565b60405180910390f35b34801561067157600080fd5b5061067a6113a2565b60405161068791906133c1565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906132cf565b6113a8565b6040516106c491906132b4565b60405180910390f35b3480156106d957600080fd5b506106e26113c8565b6040516106ef91906133c1565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a91906132cf565b6113ce565b60405161072c91906133c1565b60405180910390f35b34801561074157600080fd5b5061074a611417565b005b34801561075857600080fd5b50610761611551565b60405161076e91906133c1565b60405180910390f35b34801561078357600080fd5b5061078c611557565b60405161079991906133c1565b60405180910390f35b3480156107ae57600080fd5b506107b761155d565b6040516107c491906133c1565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef919061358e565b611563565b005b34801561080257600080fd5b5061080b611682565b60405161081891906133c1565b60405180910390f35b34801561082d57600080fd5b50610848600480360381019061084391906132cf565b611688565b60405161085591906132b4565b60405180910390f35b34801561086a57600080fd5b506108736116a8565b60405161088091906134aa565b60405180910390f35b34801561089557600080fd5b5061089e6116d1565b6040516108ab9190613146565b60405180910390f35b3480156108c057600080fd5b506108c9611763565b6040516108d691906133c1565b60405180910390f35b3480156108eb57600080fd5b506108f461176d565b60405161090191906133c1565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c9190613259565b611773565b60405161093e91906132b4565b60405180910390f35b34801561095357600080fd5b5061095c611840565b60405161096991906133c1565b60405180910390f35b34801561097e57600080fd5b5061099960048036038101906109949190613259565b611846565b6040516109a691906132b4565b60405180910390f35b3480156109bb57600080fd5b506109c4611865565b6040516109d191906133c1565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc91906135db565b61186b565b005b348015610a0f57600080fd5b50610a1861193b565b604051610a2591906133c1565b60405180910390f35b348015610a3a57600080fd5b50610a43611941565b604051610a5091906134aa565b60405180910390f35b348015610a6557600080fd5b50610a6e611967565b604051610a7b91906133c1565b60405180910390f35b348015610a9057600080fd5b50610aab6004803603810190610aa691906132cf565b61196d565b604051610ab891906132b4565b60405180910390f35b348015610acd57600080fd5b50610ad661198d565b604051610ae391906133c1565b60405180910390f35b348015610af857600080fd5b50610b01611993565b604051610b0e919061331d565b60405180910390f35b348015610b2357600080fd5b50610b2c6119b9565b604051610b3991906132b4565b60405180910390f35b348015610b4e57600080fd5b50610b576119cc565b604051610b6491906133c1565b60405180910390f35b348015610b7957600080fd5b50610b946004803603810190610b8f9190613608565b6119d2565b604051610ba191906133c1565b60405180910390f35b348015610bb657600080fd5b50610bd16004803603810190610bcc91906134fc565b611a59565b005b348015610bdf57600080fd5b50610be8611adf565b604051610bf591906133c1565b60405180910390f35b348015610c0a57600080fd5b50610c256004803603810190610c2091906134fc565b611ae5565b005b348015610c3357600080fd5b50610c4e6004803603810190610c499190613408565b611b6b565b005b348015610c5c57600080fd5b50610c65611c42565b604051610c7291906132b4565b60405180910390f35b606060018054610c8a90613677565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb690613677565b8015610d035780601f10610cd857610100808354040283529160200191610d03565b820191906000526020600020905b815481529060010190602001808311610ce657829003601f168201915b5050505050905090565b610d15611cb3565b73ffffffffffffffffffffffffffffffffffffffff16610d336116a8565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d80906136f4565b60405180910390fd5b82600f819055508160108190555080601181905550610dc9601154610dbb601054600f54611c5590919063ffffffff16565b611c5590919063ffffffff16565b601681905550505050565b6000610de8610de1611cb3565b8484611cbb565b6001905092915050565b610dfa611cb3565b73ffffffffffffffffffffffffffffffffffffffff16610e186116a8565b73ffffffffffffffffffffffffffffffffffffffff1614610e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e65906136f4565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601854905090565b610f27611cb3565b73ffffffffffffffffffffffffffffffffffffffff16610f456116a8565b73ffffffffffffffffffffffffffffffffffffffff1614610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f92906136f4565b60405180910390fd5b82600c8190555081600d8190555080600e81905550610fdb600e54610fcd600d54600c54611c5590919063ffffffff16565b611c5590919063ffffffff16565b601581905550505050565b610fee611cb3565b73ffffffffffffffffffffffffffffffffffffffff1661100c6116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611059906136f4565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006110ca848484611e84565b5061118c846110d7611cb3565b61118785604051806060016040528060288152602001613fec60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061113d611cb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254a9092919063ffffffff16565b611cbb565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006111fa6111e97f000000000000000000000000000000000000000000000000000000000000dead6113ce565b6018546125ae90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006112bf611223611cb3565b846112ba8560066000611234611cb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5590919063ffffffff16565b611cbb565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6112f1611cb3565b73ffffffffffffffffffffffffffffffffffffffff1661130f6116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906136f4565b60405180910390fd5b80601b8190555050565b601d60159054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60125481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60135481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61141f611cb3565b73ffffffffffffffffffffffffffffffffffffffff1661143d6116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a906136f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60195481565b601a5481565b60165481565b61156b611cb3565b73ffffffffffffffffffffffffffffffffffffffff166115896116a8565b73ffffffffffffffffffffffffffffffffffffffff16146115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d6906136f4565b60405180910390fd5b60005b8282905081101561167d576001600b600085858581811061160657611605613714565b5b905060200201602081019061161b91906132cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061167690613772565b90506115e2565b505050565b600f5481565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546116e090613677565b80601f016020809104026020016040519081016040528092919081815260200182805461170c90613677565b80156117595780601f1061172e57610100808354040283529160200191611759565b820191906000526020600020905b81548152906001019060200180831161173c57829003601f168201915b5050505050905090565b6000601b54905090565b60175481565b6000611836611780611cb3565b846118318560405180606001604052806025815260200161401460259139600660006117aa611cb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254a9092919063ffffffff16565b611cbb565b6001905092915050565b60145481565b600061185a611853611cb3565b8484611e84565b506001905092915050565b600e5481565b611873611cb3565b73ffffffffffffffffffffffffffffffffffffffff166118916116a8565b73ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906136f4565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161193091906132b4565b60405180910390a150565b600d5481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60086020528060005260406000206000915054906101000a900460ff1681565b60115481565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a61611cb3565b73ffffffffffffffffffffffffffffffffffffffff16611a7f6116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906136f4565b60405180910390fd5b8060198190555050565b60155481565b611aed611cb3565b73ffffffffffffffffffffffffffffffffffffffff16611b0b6116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b58906136f4565b60405180910390fd5b80601a8190555050565b611b73611cb3565b73ffffffffffffffffffffffffffffffffffffffff16611b916116a8565b73ffffffffffffffffffffffffffffffffffffffff1614611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde906136f4565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60179054906101000a900460ff1681565b6000808284611c6491906137ba565b905083811015611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca09061383a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d21906138cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d909061395e565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e7791906133c1565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eeb906139f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a90613a82565b60405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120075750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d90613b14565b60405180910390fd5b601d60149054906101000a900460ff161561206d576120668484846125f8565b9050612543565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121115750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561215c5760195482111561215b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215290613ba6565b60405180910390fd5b5b6000612167306113ce565b90506000601b54821015905080801561218d5750601d60149054906101000a900460ff16155b80156121e35750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121fb5750601d60159054906101000a900460ff165b1561222557601d60169054906101000a900460ff161561221b57601b5491505b612224826127cb565b5b6122ae846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254a9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123945750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123a8576123a38787876129bc565b6123aa565b845b9050601d60179054906101000a900460ff1680156124125750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561244157601a5461243582612427896113ce565b611c5590919063ffffffff16565b111561244057600080fd5b5b61249381600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253391906133c1565b60405180910390a3600193505050505b9392505050565b6000838311158290612592576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125899190613146565b60405180910390fd5b50600083856125a19190613bc6565b9050809150509392505050565b60006125f083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061254a565b905092915050565b6000612683826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254a9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061271882600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127b891906133c1565b60405180910390a3600190509392505050565b6001601d60146101000a81548160ff0219169083151502179055506000612824600261281660175461280860125487612be390919063ffffffff16565b612c5d90919063ffffffff16565b612c5d90919063ffffffff16565b9050600061283b82846125ae90919063ffffffff16565b905061284681612ca7565b600047905060006128776128666002601254612c5d90919063ffffffff16565b6017546125ae90919063ffffffff16565b905060006128b560026128a78461289960125488612be390919063ffffffff16565b612c5d90919063ffffffff16565b612c5d90919063ffffffff16565b905060006128e0836128d260145487612be390919063ffffffff16565b612c5d90919063ffffffff16565b90506000612909826128fb85886125ae90919063ffffffff16565b6125ae90919063ffffffff16565b9050600081111561294157612940600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612f23565b5b600082111561297757612976600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612f23565b5b6000831180156129875750600087115b15612997576129968784612f6e565b5b505050505050506000601d60146101000a81548160ff02191690831515021790555050565b60008060009050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a4457612a3d6064612a2f60155486612be390919063ffffffff16565b612c5d90919063ffffffff16565b9050612ac2565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ac157612abe6064612ab060165486612be390919063ffffffff16565b612c5d90919063ffffffff16565b90505b5b6000811115612bc657612b1d81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bbd91906133c1565b60405180910390a35b612bd981846125ae90919063ffffffff16565b9150509392505050565b6000808303612bf55760009050612c57565b60008284612c039190613bfa565b9050828482612c129190613c6b565b14612c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4990613d0e565b60405180910390fd5b809150505b92915050565b6000612c9f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613053565b905092915050565b6000600267ffffffffffffffff811115612cc457612cc3613d2e565b5b604051908082528060200260200182016040528015612cf25781602001602082028036833780820191505090505b5090503081600081518110612d0a57612d09613714565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd59190613d72565b81600181518110612de957612de8613714565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e5030601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cbb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612eb4959493929190613e98565b600060405180830381600087803b158015612ece57600080fd5b505af1158015612ee2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612f17929190613ef2565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f69573d6000803e3d6000fd5b505050565b612f9b30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cbb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612fe76116a8565b426040518863ffffffff1660e01b815260040161300996959493929190613f22565b60606040518083038185885af1158015613027573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061304c9190613f98565b5050505050565b6000808311829061309a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130919190613146565b60405180910390fd5b50600083856130a99190613c6b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130f05780820151818401526020810190506130d5565b60008484015250505050565b6000601f19601f8301169050919050565b6000613118826130b6565b61312281856130c1565b93506131328185602086016130d2565b61313b816130fc565b840191505092915050565b60006020820190508181036000830152613160818461310d565b905092915050565b600080fd5b600080fd5b6000819050919050565b61318581613172565b811461319057600080fd5b50565b6000813590506131a28161317c565b92915050565b6000806000606084860312156131c1576131c0613168565b5b60006131cf86828701613193565b93505060206131e086828701613193565b92505060406131f186828701613193565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613226826131fb565b9050919050565b6132368161321b565b811461324157600080fd5b50565b6000813590506132538161322d565b92915050565b600080604083850312156132705761326f613168565b5b600061327e85828601613244565b925050602061328f85828601613193565b9150509250929050565b60008115159050919050565b6132ae81613299565b82525050565b60006020820190506132c960008301846132a5565b92915050565b6000602082840312156132e5576132e4613168565b5b60006132f384828501613244565b91505092915050565b6000613307826131fb565b9050919050565b613317816132fc565b82525050565b6000602082019050613332600083018461330e565b92915050565b6000819050919050565b600061335d613358613353846131fb565b613338565b6131fb565b9050919050565b600061336f82613342565b9050919050565b600061338182613364565b9050919050565b61339181613376565b82525050565b60006020820190506133ac6000830184613388565b92915050565b6133bb81613172565b82525050565b60006020820190506133d660008301846133b2565b92915050565b6133e581613299565b81146133f057600080fd5b50565b600081359050613402816133dc565b92915050565b6000806040838503121561341f5761341e613168565b5b600061342d85828601613244565b925050602061343e858286016133f3565b9150509250929050565b60008060006060848603121561346157613460613168565b5b600061346f86828701613244565b935050602061348086828701613244565b925050604061349186828701613193565b9150509250925092565b6134a48161321b565b82525050565b60006020820190506134bf600083018461349b565b92915050565b600060ff82169050919050565b6134db816134c5565b82525050565b60006020820190506134f660008301846134d2565b92915050565b60006020828403121561351257613511613168565b5b600061352084828501613193565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261354e5761354d613529565b5b8235905067ffffffffffffffff81111561356b5761356a61352e565b5b60208301915083602082028301111561358757613586613533565b5b9250929050565b600080602083850312156135a5576135a4613168565b5b600083013567ffffffffffffffff8111156135c3576135c261316d565b5b6135cf85828601613538565b92509250509250929050565b6000602082840312156135f1576135f0613168565b5b60006135ff848285016133f3565b91505092915050565b6000806040838503121561361f5761361e613168565b5b600061362d85828601613244565b925050602061363e85828601613244565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061368f57607f821691505b6020821081036136a2576136a1613648565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136de6020836130c1565b91506136e9826136a8565b602082019050919050565b6000602082019050818103600083015261370d816136d1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061377d82613172565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137af576137ae613743565b5b600182019050919050565b60006137c582613172565b91506137d083613172565b92508282019050808211156137e8576137e7613743565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613824601b836130c1565b915061382f826137ee565b602082019050919050565b6000602082019050818103600083015261385381613817565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138b66024836130c1565b91506138c18261385a565b604082019050919050565b600060208201905081810360008301526138e5816138a9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139486022836130c1565b9150613953826138ec565b604082019050919050565b600060208201905081810360008301526139778161393b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139da6025836130c1565b91506139e58261397e565b604082019050919050565b60006020820190508181036000830152613a09816139cd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a6c6023836130c1565b9150613a7782613a10565b604082019050919050565b60006020820190508181036000830152613a9b81613a5f565b9050919050565b7f556e61626c6520746f206c6f6361746520636f72726573706f6e64696e67205460008201527f72616e736665724576656e744c4f475300000000000000000000000000000000602082015250565b6000613afe6030836130c1565b9150613b0982613aa2565b604082019050919050565b60006020820190508181036000830152613b2d81613af1565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613b906028836130c1565b9150613b9b82613b34565b604082019050919050565b60006020820190508181036000830152613bbf81613b83565b9050919050565b6000613bd182613172565b9150613bdc83613172565b9250828203905081811115613bf457613bf3613743565b5b92915050565b6000613c0582613172565b9150613c1083613172565b9250828202613c1e81613172565b91508282048414831517613c3557613c34613743565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c7682613172565b9150613c8183613172565b925082613c9157613c90613c3c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cf86021836130c1565b9150613d0382613c9c565b604082019050919050565b60006020820190508181036000830152613d2781613ceb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613d6c8161322d565b92915050565b600060208284031215613d8857613d87613168565b5b6000613d9684828501613d5d565b91505092915050565b6000819050919050565b6000613dc4613dbf613dba84613d9f565b613338565b613172565b9050919050565b613dd481613da9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e0f8161321b565b82525050565b6000613e218383613e06565b60208301905092915050565b6000602082019050919050565b6000613e4582613dda565b613e4f8185613de5565b9350613e5a83613df6565b8060005b83811015613e8b578151613e728882613e15565b9750613e7d83613e2d565b925050600181019050613e5e565b5085935050505092915050565b600060a082019050613ead60008301886133b2565b613eba6020830187613dcb565b8181036040830152613ecc8186613e3a565b9050613edb606083018561349b565b613ee860808301846133b2565b9695505050505050565b6000604082019050613f0760008301856133b2565b8181036020830152613f198184613e3a565b90509392505050565b600060c082019050613f37600083018961349b565b613f4460208301886133b2565b613f516040830187613dcb565b613f5e6060830186613dcb565b613f6b608083018561349b565b613f7860a08301846133b2565b979650505050505050565b600081519050613f928161317c565b92915050565b600080600060608486031215613fb157613fb0613168565b5b6000613fbf86828701613f83565b9350506020613fd086828701613f83565b9250506040613fe186828701613f83565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d9fbda8197230f184acbc6e7f41d96630ad55e7b02195cf233762401a6d4e6e364736f6c63430008110033
Deployed Bytecode Sourcemap
14164:13649:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18209:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20498:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19504:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20970:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14515:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15893:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18486:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20157:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21252:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22233:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14617:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21688:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18395:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18872:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15010:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21092:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16008:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14839:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15372:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15059:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15415:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18594:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6177:148;;;;;;;;;;;;;:::i;:::-;;15704:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15765:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15541:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24388:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15245:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14955:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5958:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18300;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19375:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15588:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19098:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15457:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22058:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15201:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21505:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15159:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15941:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15288:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14896:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15332:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14408:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16055:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15116:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18721:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20853:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15497:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21395:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20018:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16107:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18209:83;18246:13;18279:5;18272:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18209:83;:::o;20498:341::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20642:15:::1;20622:17;:35;;;;20688:15;20668:17;:35;;;;20729:10;20714:12;:25;;;;20773:58;20818:12;;20773:40;20795:17;;20773;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;20752:18;:79;;;;20498:341:::0;;;:::o;19504:161::-;19579:4;19596:39;19605:12;:10;:12::i;:::-;19619:7;19628:6;19596:8;:39::i;:::-;19653:4;19646:11;;19504:161;;;;:::o;20970:116::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21073:5:::1;21046:15;:24;21062:7;21046:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20970:116:::0;:::o;14515:94::-;;;;;;;;;;;;;:::o;15893:41::-;;;;;;;;;;;;;:::o;18486:100::-;18539:7;18566:12;;18559:19;;18486:100;:::o;20157:333::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20299:15:::1;20280:16;:34;;;;20344:15;20325:16;:34;;;;20384:10;20370:11;:24;;;;20427:55;20470:11;;20427:38;20448:16;;20427;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;20407:17;:75;;;;20157:333:::0;;;:::o;21252:135::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21373:6:::1;21343:19;:27;21363:6;21343:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21252:135:::0;;:::o;22233:313::-;22331:4;22348:36;22358:6;22366:9;22377:6;22348:9;:36::i;:::-;;22395:121;22404:6;22412:12;:10;:12::i;:::-;22426:89;22464:6;22426:89;;;;;;;;;;;;;;;;;:11;:19;22438:6;22426:19;;;;;;;;;;;;;;;:33;22446:12;:10;:12::i;:::-;22426:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22395:8;:121::i;:::-;22534:4;22527:11;;22233:313;;;;;:::o;14617:81::-;;;:::o;21688:128::-;21741:7;21768:40;21785:22;21795:11;21785:9;:22::i;:::-;21768:12;;:16;;:40;;;;:::i;:::-;21761:47;;21688:128;:::o;18395:83::-;18436:5;18461:9;;;;;;;;;;;18454:16;;18395:83;:::o;18872:218::-;18960:4;18977:83;18986:12;:10;:12::i;:::-;19000:7;19009:50;19048:10;19009:11;:25;19021:12;:10;:12::i;:::-;19009:25;;;;;;;;;;;;;;;:34;19035:7;19009:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18977:8;:83::i;:::-;19078:4;19071:11;;18872:218;;;;:::o;15010:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;21092:152::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21214:22:::1;21188:23;:48;;;;21092:152:::0;:::o;16008:40::-;;;;;;;;;;;;;:::o;14839:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;15372:35::-;;;;:::o;15059:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;15415:35::-;;;;:::o;18594:119::-;18660:7;18687:9;:18;18697:7;18687:18;;;;;;;;;;;;;;;;18680:25;;18594:119;;;:::o;6177:148::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6284:1:::1;6247:40;;6268:6;::::0;::::1;;;;;;;;6247:40;;;;;;;;;;;;6315:1;6298:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6177:148::o:0;15704:53::-;;;;:::o;15765:51::-;;;;:::o;15541:38::-;;;;:::o;24388:193::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24479:9:::1;24474:100;24494:9;;:16;;24490:1;:20;24474:100;;;24560:4;24528:15;:29;24544:9;;24554:1;24544:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24528:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24512:3;;;;:::i;:::-;;;24474:100;;;;24388:193:::0;;:::o;15245:36::-;;;;:::o;14955:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5958:87::-;6004:7;6031:6;;;;;;;;;;;6024:13;;5958:87;:::o;18300:::-;18339:13;18372:7;18365:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18300:87;:::o;19375:120::-;19437:7;19464:23;;19457:30;;19375:120;:::o;15588:44::-;;;;:::o;19098:269::-;19191:4;19208:129;19217:12;:10;:12::i;:::-;19231:7;19240:96;19279:15;19240:96;;;;;;;;;;;;;;;;;:11;:25;19252:12;:10;:12::i;:::-;19240:25;;;;;;;;;;;;;;;:34;19266:7;19240:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19208:8;:129::i;:::-;19355:4;19348:11;;19098:269;;;;:::o;15457:30::-;;;;:::o;22058:167::-;22136:4;22153:42;22163:12;:10;:12::i;:::-;22177:9;22188:6;22153:9;:42::i;:::-;;22213:4;22206:11;;22058:167;;;;:::o;15201:31::-;;;;:::o;21505:171::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21606:8:::1;21582:21;;:32;;;;;;;;;;;;;;;;;;21630:38;21659:8;21630:38;;;;;;:::i;:::-;;;;;;;;21505:171:::0;:::o;15159:35::-;;;;:::o;15941:26::-;;;;;;;;;;;;;:::o;15288:37::-;;;;:::o;14896:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;15332:31::-;;;;:::o;14408:99::-;;;;;;;;;;;;;:::o;16055:45::-;;;;;;;;;;;;;:::o;15116:36::-;;;;:::o;18721:143::-;18802:7;18829:11;:18;18841:5;18829:18;;;;;;;;;;;;;;;:27;18848:7;18829:27;;;;;;;;;;;;;;;;18822:34;;18721:143;;;;:::o;20853:111::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20945:11:::1;20930:12;:26;;;;20853:111:::0;:::o;15497:37::-;;;;:::o;21395:102::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21481:8:::1;21467:10;:22;;;;21395:102:::0;:::o;20018:127::-;6102:12;:10;:12::i;:::-;6091:23;;:7;:5;:7::i;:::-;:23;;;6083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20131:6:::1;20105:15;:23;20121:6;20105:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20018:127:::0;;:::o;16107:35::-;;;;;;;;;;;;;:::o;1410:181::-;1468:7;1488:9;1504:1;1500;:5;;;;:::i;:::-;1488:17;;1529:1;1524;:6;;1516:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1582:1;1575:8;;;1410:181;;;;:::o;342:115::-;395:15;438:10;423:26;;342:115;:::o;19673:337::-;19783:1;19766:19;;:5;:19;;;19758:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19864:1;19845:21;;:7;:21;;;19837:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19948:6;19918:11;:18;19930:5;19918:18;;;;;;;;;;;;;;;:27;19937:7;19918:27;;;;;;;;;;;;;;;:36;;;;19986:7;19970:32;;19979:5;19970:32;;;19995:6;19970:32;;;;;;:::i;:::-;;;;;;;;19673:337;;;:::o;22554:1828::-;22641:4;22686:1;22668:20;;:6;:20;;;22660:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22770:1;22749:23;;:9;:23;;;22741:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22826:15;:23;22842:6;22826:23;;;;;;;;;;;;;;;;;;;;;;;;;22825:24;:55;;;;;22854:15;:26;22870:9;22854:26;;;;;;;;;;;;;;;;;;;;;;;;;22853:27;22825:55;22817:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;22949:16;;;;;;;;;;;22946:1429;;;22999:41;23014:6;23022:9;23033:6;22999:14;:41::i;:::-;22992:48;;;;22946:1429;23096:15;:23;23112:6;23096:23;;;;;;;;;;;;;;;;;;;;;;;;;23095:24;:55;;;;;23124:15;:26;23140:9;23124:26;;;;;;;;;;;;;;;;;;;;;;;;;23123:27;23095:55;23092:170;;;23189:12;;23179:6;:22;;23171:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23092:170;23290:28;23321:24;23339:4;23321:9;:24::i;:::-;23290:55;;23360:28;23415:23;;23391:20;:47;;23360:78;;23471:23;:44;;;;;23499:16;;;;;;;;;;;23498:17;23471:44;:69;;;;;23520:12;:20;23533:6;23520:20;;;;;;;;;;;;;;;;;;;;;;;;;23519:21;23471:69;:94;;;;;23544:21;;;;;;;;;;;23471:94;23467:305;;;23603:25;;;;;;;;;;;23600:97;;;23674:23;;23651:46;;23600:97;23716:36;23731:20;23716:14;:36::i;:::-;23467:305;23808:53;23830:6;23808:53;;;;;;;;;;;;;;;;;:9;:17;23818:6;23808:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23788:9;:17;23798:6;23788:17;;;;;;;;;;;;;;;:73;;;;23878:19;23901:17;:25;23919:6;23901:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;23930:17;:28;23948:9;23930:28;;;;;;;;;;;;;;;;;;;;;;;;;23901:57;23900:148;;24014:34;24022:6;24030:9;24041:6;24014:7;:34::i;:::-;23900:148;;;24005:6;23900:148;23878:170;;24068:16;;;;;;;;;;;:51;;;;;24089:19;:30;24109:9;24089:30;;;;;;;;;;;;;;;;;;;;;;;;;24088:31;24068:51;24065:133;;;24187:10;;24146:37;24171:11;24146:20;24156:9;24146;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;24138:60;;;;;;24065:133;24238:37;24263:11;24238:9;:20;24248:9;24238:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;24215:9;:20;24225:9;24215:20;;;;;;;;;;;;;;;:60;;;;24314:9;24297:40;;24306:6;24297:40;;;24325:11;24297:40;;;;;;:::i;:::-;;;;;;;;24359:4;24352:11;;;;;22554:1828;;;;;;:::o;1743:192::-;1829:7;1862:1;1857;:6;;1865:12;1849:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1889:9;1905:1;1901;:5;;;;:::i;:::-;1889:17;;1926:1;1919:8;;;1743:192;;;;;:::o;1599:136::-;1657:7;1684:43;1688:1;1691;1684:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1677:50;;1599:136;;;;:::o;24589:330::-;24682:4;24719:53;24741:6;24719:53;;;;;;;;;;;;;;;;;:9;:17;24729:6;24719:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24699:9;:17;24709:6;24699:17;;;;;;;;;;;;;;;:73;;;;24806:32;24831:6;24806:9;:20;24816:9;24806:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24783:9;:20;24793:9;24783:20;;;;;;;;;;;;;;;:55;;;;24871:9;24854:35;;24863:6;24854:35;;;24882:6;24854:35;;;;;;:::i;:::-;;;;;;;;24907:4;24900:11;;24589:330;;;;;:::o;24927:1048::-;16584:4;16565:16;;:23;;;;;;;;;;;;;;;;;;25009:19:::1;25031:65;25094:1;25031:58;25064:24;;25031:28;25043:15;;25031:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;25009:87;;25107:21;25131:24;25143:11;25131:7;:11;;:24;;;;:::i;:::-;25107:48;;25168:31;25185:13;25168:16;:31::i;:::-;25210:22;25235:21;25210:46;;25269:19;25291:52;25320:22;25340:1;25320:15;;:19;;:22;;;;:::i;:::-;25291:24;;:28;;:52;;;;:::i;:::-;25269:74;;25364:26;25393:59;25450:1;25393:52;25433:11;25393:35;25412:15;;25393:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;25364:88;;25463:21;25487:47;25522:11;25487:30;25506:10;;25487:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;25463:71;;25545:26;25574:57;25617:13;25574:38;25593:18;25574:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;25545:86;;25668:1;25647:18;:22;25644:104;;;25684:64;25705:22;;;;;;;;;;;25729:18;25684:20;:64::i;:::-;25644:104;25780:1;25764:13;:17;25761:89;;;25796:54;25817:17;;;;;;;;;;;25836:13;25796:20;:54::i;:::-;25761:89;25887:1;25866:18;:22;:41;;;;;25906:1;25892:11;:15;25866:41;25863:104;;;25922:45;25935:11;25948:18;25922:12;:45::i;:::-;25863:104;24988:987;;;;;;;16630:5:::0;16611:16;;:24;;;;;;;;;;;;;;;;;;24927:1048;:::o;27182:622::-;27268:7;27298:17;27318:1;27298:21;;27343:12;:20;27356:6;27343:20;;;;;;;;;;;;;;;;;;;;;;;;;27340:223;;;27392:38;27426:3;27392:29;27403:17;;27392:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;27380:50;;27340:223;;;27460:12;:23;27473:9;27460:23;;;;;;;;;;;;;;;;;;;;;;;;;27457:106;;;27512:39;27547:3;27512:30;27523:18;;27512:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27500:51;;27457:106;27340:223;27598:1;27586:9;:13;27583:173;;;27643:39;27672:9;27643;:24;27661:4;27643:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27616:9;:24;27634:4;27616:24;;;;;;;;;;;;;;;:66;;;;27727:4;27702:42;;27711:6;27702:42;;;27734:9;27702:42;;;;;;:::i;:::-;;;;;;;;27583:173;27775:21;27786:9;27775:6;:10;;:21;;;;:::i;:::-;27768:28;;;27182:622;;;;;:::o;1943:250::-;2001:7;2030:1;2025;:6;2021:47;;2055:1;2048:8;;;;2021:47;2080:9;2096:1;2092;:5;;;;:::i;:::-;2080:17;;2125:1;2120;2116;:5;;;;:::i;:::-;:10;2108:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2184:1;2177:8;;;1943:250;;;;;:::o;2201:132::-;2259:7;2286:39;2290:1;2293;2286:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2279:46;;2201:132;;;;:::o;25987:666::-;26113:21;26151:1;26137:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26113:40;;26182:4;26164;26169:1;26164:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26208:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26198:4;26203:1;26198:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26243:62;26260:4;26275:15;;;;;;;;;;;26293:11;26243:8;:62::i;:::-;26344:15;;;;;;;;;;;:66;;;26425:11;26451:1;26495:4;26522;26558:15;26344:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26610:35;26627:11;26640:4;26610:35;;;;;;;:::i;:::-;;;;;;;;26042:611;25987:666;:::o;21824:126::-;21916:9;:18;;:26;21935:6;21916:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21824:126;;:::o;26661:513::-;26809:62;26826:4;26841:15;;;;;;;;;;;26859:11;26809:8;:62::i;:::-;26914:15;;;;;;;;;;;:31;;;26953:9;26986:4;27006:11;27032:1;27075;27118:7;:5;:7::i;:::-;27140:15;26914:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26661:513;;:::o;2341:278::-;2427:7;2459:1;2455;:5;2462:12;2447:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2486:9;2502:1;2498;:5;;;;:::i;:::-;2486:17;;2610:1;2603:8;;;2341:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:474::-;3232:6;3240;3289:2;3277:9;3268:7;3264:23;3260:32;3257:119;;;3295:79;;:::i;:::-;3257:119;3415:1;3440:53;3485:7;3476:6;3465:9;3461:22;3440:53;:::i;:::-;3430:63;;3386:117;3542:2;3568:53;3613:7;3604:6;3593:9;3589:22;3568:53;:::i;:::-;3558:63;;3513:118;3164:474;;;;;:::o;3644:90::-;3678:7;3721:5;3714:13;3707:21;3696:32;;3644:90;;;:::o;3740:109::-;3821:21;3836:5;3821:21;:::i;:::-;3816:3;3809:34;3740:109;;:::o;3855:210::-;3942:4;3980:2;3969:9;3965:18;3957:26;;3993:65;4055:1;4044:9;4040:17;4031:6;3993:65;:::i;:::-;3855:210;;;;:::o;4071:329::-;4130:6;4179:2;4167:9;4158:7;4154:23;4150:32;4147:119;;;4185:79;;:::i;:::-;4147:119;4305:1;4330:53;4375:7;4366:6;4355:9;4351:22;4330:53;:::i;:::-;4320:63;;4276:117;4071:329;;;;:::o;4406:104::-;4451:7;4480:24;4498:5;4480:24;:::i;:::-;4469:35;;4406:104;;;:::o;4516:142::-;4619:32;4645:5;4619:32;:::i;:::-;4614:3;4607:45;4516:142;;:::o;4664:254::-;4773:4;4811:2;4800:9;4796:18;4788:26;;4824:87;4908:1;4897:9;4893:17;4884:6;4824:87;:::i;:::-;4664:254;;;;:::o;4924:60::-;4952:3;4973:5;4966:12;;4924:60;;;:::o;4990:142::-;5040:9;5073:53;5091:34;5100:24;5118:5;5100:24;:::i;:::-;5091:34;:::i;:::-;5073:53;:::i;:::-;5060:66;;4990:142;;;:::o;5138:126::-;5188:9;5221:37;5252:5;5221:37;:::i;:::-;5208:50;;5138:126;;;:::o;5270:153::-;5347:9;5380:37;5411:5;5380:37;:::i;:::-;5367:50;;5270:153;;;:::o;5429:185::-;5543:64;5601:5;5543:64;:::i;:::-;5538:3;5531:77;5429:185;;:::o;5620:276::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:98;5886:1;5875:9;5871:17;5862:6;5791:98;:::i;:::-;5620:276;;;;:::o;5902:118::-;5989:24;6007:5;5989:24;:::i;:::-;5984:3;5977:37;5902:118;;:::o;6026:222::-;6119:4;6157:2;6146:9;6142:18;6134:26;;6170:71;6238:1;6227:9;6223:17;6214:6;6170:71;:::i;:::-;6026:222;;;;:::o;6254:116::-;6324:21;6339:5;6324:21;:::i;:::-;6317:5;6314:32;6304:60;;6360:1;6357;6350:12;6304:60;6254:116;:::o;6376:133::-;6419:5;6457:6;6444:20;6435:29;;6473:30;6497:5;6473:30;:::i;:::-;6376:133;;;;:::o;6515:468::-;6580:6;6588;6637:2;6625:9;6616:7;6612:23;6608:32;6605:119;;;6643:79;;:::i;:::-;6605:119;6763:1;6788:53;6833:7;6824:6;6813:9;6809:22;6788:53;:::i;:::-;6778:63;;6734:117;6890:2;6916:50;6958:7;6949:6;6938:9;6934:22;6916:50;:::i;:::-;6906:60;;6861:115;6515:468;;;;;:::o;6989:619::-;7066:6;7074;7082;7131:2;7119:9;7110:7;7106:23;7102:32;7099:119;;;7137:79;;:::i;:::-;7099:119;7257:1;7282:53;7327:7;7318:6;7307:9;7303:22;7282:53;:::i;:::-;7272:63;;7228:117;7384:2;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7355:118;7512:2;7538:53;7583:7;7574:6;7563:9;7559:22;7538:53;:::i;:::-;7528:63;;7483:118;6989:619;;;;;:::o;7614:118::-;7701:24;7719:5;7701:24;:::i;:::-;7696:3;7689:37;7614:118;;:::o;7738:222::-;7831:4;7869:2;7858:9;7854:18;7846:26;;7882:71;7950:1;7939:9;7935:17;7926:6;7882:71;:::i;:::-;7738:222;;;;:::o;7966:86::-;8001:7;8041:4;8034:5;8030:16;8019:27;;7966:86;;;:::o;8058:112::-;8141:22;8157:5;8141:22;:::i;:::-;8136:3;8129:35;8058:112;;:::o;8176:214::-;8265:4;8303:2;8292:9;8288:18;8280:26;;8316:67;8380:1;8369:9;8365:17;8356:6;8316:67;:::i;:::-;8176:214;;;;:::o;8396:329::-;8455:6;8504:2;8492:9;8483:7;8479:23;8475:32;8472:119;;;8510:79;;:::i;:::-;8472:119;8630:1;8655:53;8700:7;8691:6;8680:9;8676:22;8655:53;:::i;:::-;8645:63;;8601:117;8396:329;;;;:::o;8731:117::-;8840:1;8837;8830:12;8854:117;8963:1;8960;8953:12;8977:117;9086:1;9083;9076:12;9117:568;9190:8;9200:6;9250:3;9243:4;9235:6;9231:17;9227:27;9217:122;;9258:79;;:::i;:::-;9217:122;9371:6;9358:20;9348:30;;9401:18;9393:6;9390:30;9387:117;;;9423:79;;:::i;:::-;9387:117;9537:4;9529:6;9525:17;9513:29;;9591:3;9583:4;9575:6;9571:17;9561:8;9557:32;9554:41;9551:128;;;9598:79;;:::i;:::-;9551:128;9117:568;;;;;:::o;9691:559::-;9777:6;9785;9834:2;9822:9;9813:7;9809:23;9805:32;9802:119;;;9840:79;;:::i;:::-;9802:119;9988:1;9977:9;9973:17;9960:31;10018:18;10010:6;10007:30;10004:117;;;10040:79;;:::i;:::-;10004:117;10153:80;10225:7;10216:6;10205:9;10201:22;10153:80;:::i;:::-;10135:98;;;;9931:312;9691:559;;;;;:::o;10256:323::-;10312:6;10361:2;10349:9;10340:7;10336:23;10332:32;10329:119;;;10367:79;;:::i;:::-;10329:119;10487:1;10512:50;10554:7;10545:6;10534:9;10530:22;10512:50;:::i;:::-;10502:60;;10458:114;10256:323;;;;:::o;10585:474::-;10653:6;10661;10710:2;10698:9;10689:7;10685:23;10681:32;10678:119;;;10716:79;;:::i;:::-;10678:119;10836:1;10861:53;10906:7;10897:6;10886:9;10882:22;10861:53;:::i;:::-;10851:63;;10807:117;10963:2;10989:53;11034:7;11025:6;11014:9;11010:22;10989:53;:::i;:::-;10979:63;;10934:118;10585:474;;;;;:::o;11065:180::-;11113:77;11110:1;11103:88;11210:4;11207:1;11200:15;11234:4;11231:1;11224:15;11251:320;11295:6;11332:1;11326:4;11322:12;11312:22;;11379:1;11373:4;11369:12;11400:18;11390:81;;11456:4;11448:6;11444:17;11434:27;;11390:81;11518:2;11510:6;11507:14;11487:18;11484:38;11481:84;;11537:18;;:::i;:::-;11481:84;11302:269;11251:320;;;:::o;11577:182::-;11717:34;11713:1;11705:6;11701:14;11694:58;11577:182;:::o;11765:366::-;11907:3;11928:67;11992:2;11987:3;11928:67;:::i;:::-;11921:74;;12004:93;12093:3;12004:93;:::i;:::-;12122:2;12117:3;12113:12;12106:19;;11765:366;;;:::o;12137:419::-;12303:4;12341:2;12330:9;12326:18;12318:26;;12390:9;12384:4;12380:20;12376:1;12365:9;12361:17;12354:47;12418:131;12544:4;12418:131;:::i;:::-;12410:139;;12137:419;;;:::o;12562:180::-;12610:77;12607:1;12600:88;12707:4;12704:1;12697:15;12731:4;12728:1;12721:15;12748:180;12796:77;12793:1;12786:88;12893:4;12890:1;12883:15;12917:4;12914:1;12907:15;12934:233;12973:3;12996:24;13014:5;12996:24;:::i;:::-;12987:33;;13042:66;13035:5;13032:77;13029:103;;13112:18;;:::i;:::-;13029:103;13159:1;13152:5;13148:13;13141:20;;12934:233;;;:::o;13173:191::-;13213:3;13232:20;13250:1;13232:20;:::i;:::-;13227:25;;13266:20;13284:1;13266:20;:::i;:::-;13261:25;;13309:1;13306;13302:9;13295:16;;13330:3;13327:1;13324:10;13321:36;;;13337:18;;:::i;:::-;13321:36;13173:191;;;;:::o;13370:177::-;13510:29;13506:1;13498:6;13494:14;13487:53;13370:177;:::o;13553:366::-;13695:3;13716:67;13780:2;13775:3;13716:67;:::i;:::-;13709:74;;13792:93;13881:3;13792:93;:::i;:::-;13910:2;13905:3;13901:12;13894:19;;13553:366;;;:::o;13925:419::-;14091:4;14129:2;14118:9;14114:18;14106:26;;14178:9;14172:4;14168:20;14164:1;14153:9;14149:17;14142:47;14206:131;14332:4;14206:131;:::i;:::-;14198:139;;13925:419;;;:::o;14350:223::-;14490:34;14486:1;14478:6;14474:14;14467:58;14559:6;14554:2;14546:6;14542:15;14535:31;14350:223;:::o;14579:366::-;14721:3;14742:67;14806:2;14801:3;14742:67;:::i;:::-;14735:74;;14818:93;14907:3;14818:93;:::i;:::-;14936:2;14931:3;14927:12;14920:19;;14579:366;;;:::o;14951:419::-;15117:4;15155:2;15144:9;15140:18;15132:26;;15204:9;15198:4;15194:20;15190:1;15179:9;15175:17;15168:47;15232:131;15358:4;15232:131;:::i;:::-;15224:139;;14951:419;;;:::o;15376:221::-;15516:34;15512:1;15504:6;15500:14;15493:58;15585:4;15580:2;15572:6;15568:15;15561:29;15376:221;:::o;15603:366::-;15745:3;15766:67;15830:2;15825:3;15766:67;:::i;:::-;15759:74;;15842:93;15931:3;15842:93;:::i;:::-;15960:2;15955:3;15951:12;15944:19;;15603:366;;;:::o;15975:419::-;16141:4;16179:2;16168:9;16164:18;16156:26;;16228:9;16222:4;16218:20;16214:1;16203:9;16199:17;16192:47;16256:131;16382:4;16256:131;:::i;:::-;16248:139;;15975:419;;;:::o;16400:224::-;16540:34;16536:1;16528:6;16524:14;16517:58;16609:7;16604:2;16596:6;16592:15;16585:32;16400:224;:::o;16630:366::-;16772:3;16793:67;16857:2;16852:3;16793:67;:::i;:::-;16786:74;;16869:93;16958:3;16869:93;:::i;:::-;16987:2;16982:3;16978:12;16971:19;;16630:366;;;:::o;17002:419::-;17168:4;17206:2;17195:9;17191:18;17183:26;;17255:9;17249:4;17245:20;17241:1;17230:9;17226:17;17219:47;17283:131;17409:4;17283:131;:::i;:::-;17275:139;;17002:419;;;:::o;17427:222::-;17567:34;17563:1;17555:6;17551:14;17544:58;17636:5;17631:2;17623:6;17619:15;17612:30;17427:222;:::o;17655:366::-;17797:3;17818:67;17882:2;17877:3;17818:67;:::i;:::-;17811:74;;17894:93;17983:3;17894:93;:::i;:::-;18012:2;18007:3;18003:12;17996:19;;17655:366;;;:::o;18027:419::-;18193:4;18231:2;18220:9;18216:18;18208:26;;18280:9;18274:4;18270:20;18266:1;18255:9;18251:17;18244:47;18308:131;18434:4;18308:131;:::i;:::-;18300:139;;18027:419;;;:::o;18452:235::-;18592:34;18588:1;18580:6;18576:14;18569:58;18661:18;18656:2;18648:6;18644:15;18637:43;18452:235;:::o;18693:366::-;18835:3;18856:67;18920:2;18915:3;18856:67;:::i;:::-;18849:74;;18932:93;19021:3;18932:93;:::i;:::-;19050:2;19045:3;19041:12;19034:19;;18693:366;;;:::o;19065:419::-;19231:4;19269:2;19258:9;19254:18;19246:26;;19318:9;19312:4;19308:20;19304:1;19293:9;19289:17;19282:47;19346:131;19472:4;19346:131;:::i;:::-;19338:139;;19065:419;;;:::o;19490:227::-;19630:34;19626:1;19618:6;19614:14;19607:58;19699:10;19694:2;19686:6;19682:15;19675:35;19490:227;:::o;19723:366::-;19865:3;19886:67;19950:2;19945:3;19886:67;:::i;:::-;19879:74;;19962:93;20051:3;19962:93;:::i;:::-;20080:2;20075:3;20071:12;20064:19;;19723:366;;;:::o;20095:419::-;20261:4;20299:2;20288:9;20284:18;20276:26;;20348:9;20342:4;20338:20;20334:1;20323:9;20319:17;20312:47;20376:131;20502:4;20376:131;:::i;:::-;20368:139;;20095:419;;;:::o;20520:194::-;20560:4;20580:20;20598:1;20580:20;:::i;:::-;20575:25;;20614:20;20632:1;20614:20;:::i;:::-;20609:25;;20658:1;20655;20651:9;20643:17;;20682:1;20676:4;20673:11;20670:37;;;20687:18;;:::i;:::-;20670:37;20520:194;;;;:::o;20720:410::-;20760:7;20783:20;20801:1;20783:20;:::i;:::-;20778:25;;20817:20;20835:1;20817:20;:::i;:::-;20812:25;;20872:1;20869;20865:9;20894:30;20912:11;20894:30;:::i;:::-;20883:41;;21073:1;21064:7;21060:15;21057:1;21054:22;21034:1;21027:9;21007:83;20984:139;;21103:18;;:::i;:::-;20984:139;20768:362;20720:410;;;;:::o;21136:180::-;21184:77;21181:1;21174:88;21281:4;21278:1;21271:15;21305:4;21302:1;21295:15;21322:185;21362:1;21379:20;21397:1;21379:20;:::i;:::-;21374:25;;21413:20;21431:1;21413:20;:::i;:::-;21408:25;;21452:1;21442:35;;21457:18;;:::i;:::-;21442:35;21499:1;21496;21492:9;21487:14;;21322:185;;;;:::o;21513:220::-;21653:34;21649:1;21641:6;21637:14;21630:58;21722:3;21717:2;21709:6;21705:15;21698:28;21513:220;:::o;21739:366::-;21881:3;21902:67;21966:2;21961:3;21902:67;:::i;:::-;21895:74;;21978:93;22067:3;21978:93;:::i;:::-;22096:2;22091:3;22087:12;22080:19;;21739:366;;;:::o;22111:419::-;22277:4;22315:2;22304:9;22300:18;22292:26;;22364:9;22358:4;22354:20;22350:1;22339:9;22335:17;22328:47;22392:131;22518:4;22392:131;:::i;:::-;22384:139;;22111:419;;;:::o;22536:180::-;22584:77;22581:1;22574:88;22681:4;22678:1;22671:15;22705:4;22702:1;22695:15;22722:143;22779:5;22810:6;22804:13;22795:22;;22826:33;22853:5;22826:33;:::i;:::-;22722:143;;;;:::o;22871:351::-;22941:6;22990:2;22978:9;22969:7;22965:23;22961:32;22958:119;;;22996:79;;:::i;:::-;22958:119;23116:1;23141:64;23197:7;23188:6;23177:9;23173:22;23141:64;:::i;:::-;23131:74;;23087:128;22871:351;;;;:::o;23228:85::-;23273:7;23302:5;23291:16;;23228:85;;;:::o;23319:158::-;23377:9;23410:61;23428:42;23437:32;23463:5;23437:32;:::i;:::-;23428:42;:::i;:::-;23410:61;:::i;:::-;23397:74;;23319:158;;;:::o;23483:147::-;23578:45;23617:5;23578:45;:::i;:::-;23573:3;23566:58;23483:147;;:::o;23636:114::-;23703:6;23737:5;23731:12;23721:22;;23636:114;;;:::o;23756:184::-;23855:11;23889:6;23884:3;23877:19;23929:4;23924:3;23920:14;23905:29;;23756:184;;;;:::o;23946:132::-;24013:4;24036:3;24028:11;;24066:4;24061:3;24057:14;24049:22;;23946:132;;;:::o;24084:108::-;24161:24;24179:5;24161:24;:::i;:::-;24156:3;24149:37;24084:108;;:::o;24198:179::-;24267:10;24288:46;24330:3;24322:6;24288:46;:::i;:::-;24366:4;24361:3;24357:14;24343:28;;24198:179;;;;:::o;24383:113::-;24453:4;24485;24480:3;24476:14;24468:22;;24383:113;;;:::o;24532:732::-;24651:3;24680:54;24728:5;24680:54;:::i;:::-;24750:86;24829:6;24824:3;24750:86;:::i;:::-;24743:93;;24860:56;24910:5;24860:56;:::i;:::-;24939:7;24970:1;24955:284;24980:6;24977:1;24974:13;24955:284;;;25056:6;25050:13;25083:63;25142:3;25127:13;25083:63;:::i;:::-;25076:70;;25169:60;25222:6;25169:60;:::i;:::-;25159:70;;25015:224;25002:1;24999;24995:9;24990:14;;24955:284;;;24959:14;25255:3;25248:10;;24656:608;;;24532:732;;;;:::o;25270:831::-;25533:4;25571:3;25560:9;25556:19;25548:27;;25585:71;25653:1;25642:9;25638:17;25629:6;25585:71;:::i;:::-;25666:80;25742:2;25731:9;25727:18;25718:6;25666:80;:::i;:::-;25793:9;25787:4;25783:20;25778:2;25767:9;25763:18;25756:48;25821:108;25924:4;25915:6;25821:108;:::i;:::-;25813:116;;25939:72;26007:2;25996:9;25992:18;25983:6;25939:72;:::i;:::-;26021:73;26089:3;26078:9;26074:19;26065:6;26021:73;:::i;:::-;25270:831;;;;;;;;:::o;26107:483::-;26278:4;26316:2;26305:9;26301:18;26293:26;;26329:71;26397:1;26386:9;26382:17;26373:6;26329:71;:::i;:::-;26447:9;26441:4;26437:20;26432:2;26421:9;26417:18;26410:48;26475:108;26578:4;26569:6;26475:108;:::i;:::-;26467:116;;26107:483;;;;;:::o;26596:807::-;26845:4;26883:3;26872:9;26868:19;26860:27;;26897:71;26965:1;26954:9;26950:17;26941:6;26897:71;:::i;:::-;26978:72;27046:2;27035:9;27031:18;27022:6;26978:72;:::i;:::-;27060:80;27136:2;27125:9;27121:18;27112:6;27060:80;:::i;:::-;27150;27226:2;27215:9;27211:18;27202:6;27150:80;:::i;:::-;27240:73;27308:3;27297:9;27293:19;27284:6;27240:73;:::i;:::-;27323;27391:3;27380:9;27376:19;27367:6;27323:73;:::i;:::-;26596:807;;;;;;;;;:::o;27409:143::-;27466:5;27497:6;27491:13;27482:22;;27513:33;27540:5;27513:33;:::i;:::-;27409:143;;;;:::o;27558:663::-;27646:6;27654;27662;27711:2;27699:9;27690:7;27686:23;27682:32;27679:119;;;27717:79;;:::i;:::-;27679:119;27837:1;27862:64;27918:7;27909:6;27898:9;27894:22;27862:64;:::i;:::-;27852:74;;27808:128;27975:2;28001:64;28057:7;28048:6;28037:9;28033:22;28001:64;:::i;:::-;27991:74;;27946:129;28114:2;28140:64;28196:7;28187:6;28176:9;28172:22;28140:64;:::i;:::-;28130:74;;28085:129;27558:663;;;;;:::o
Swarm Source
ipfs://d9fbda8197230f184acbc6e7f41d96630ad55e7b02195cf233762401a6d4e6e3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.