BscScan - Sponsored slots available. Book your slot here!
BEP-20
Overview
Max Total Supply
100,000,000ALT
Holders
405
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
41,295.248749972 ALTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
AlteriumProtocol
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2023-07-18 */ // telegram : https://t.me/Alterium_protocol // Website : https://alteriumprotocol.org/ // Twitter : https://twitter.com/Alterium_ // Alterium aims to be a leading Layer 2 blockchain solution offering speed, low cost, and security. Leveraging state-of-the-art technology, Alterium will push the adoption and scalability of blockchain to unprecedented levels. // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function waiveOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } function getTime() public view returns (uint256) { return block.timestamp; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } 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 AlteriumProtocol is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "ALTERIUM PROTOCOL"; string private _symbol = "ALT"; uint8 private _decimals = 9; address payable public marketingWalletAddress = payable(0x237EB99a2E243065610464d96f220C0c16F92b8e); // Marketing Address address payable public teamWalletAddress = payable(0xEfE99B5020133566B263b7FeAA29256a60dc8eE5); // Team Address 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; uint256 public _buyLiquidityFee = 0; uint256 public _buyMarketingFee = 30; uint256 public _buyTeamFee = 0; uint256 public _sellLiquidityFee = 0; uint256 public _sellMarketingFee = 30; uint256 public _sellTeamFee = 0; uint256 public _liquidityShare = 0; uint256 public _marketingShare = 30; uint256 public _teamShare = 0; uint256 public _totalTaxIfBuying = 30; uint256 public _totalTaxIfSelling = 30; uint256 public _totalDistributionShares = 30; uint256 private _totalSupply = 100000000 * 10**_decimals; uint256 public _maxTxAmount = 100000000 * 10**_decimals; uint256 public _walletMax = 100000000 * 10**_decimals; uint256 private minimumTokensBeforeSwap = 100 * 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(0x10ED43C718714eb63d5aA57B78B54704E256024E); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = _totalSupply; isExcludedFromFee[owner()] = 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; isTxLimitExempt[owner()] = true; isTxLimitExempt[address(this)] = 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 setMarketPairStatus(address account, bool newValue) public onlyOwner { isMarketPair[account] = newValue; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setIsExcludedFromFee(address account, bool newValue) public onlyOwner { isExcludedFromFee[account] = newValue; } 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 setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() { _liquidityShare = newLiquidityShare; _marketingShare = newMarketingShare; _teamShare = newTeamShare; _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare); } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function enableDisableWalletLimit(bool newValue) external onlyOwner { checkWalletLimit = newValue; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner { isWalletLimitExempt[holder] = exempt; } function setWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() { minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external onlyOwner() { marketingWalletAddress = payable(newAddress); } function setTeamWalletAddress(address newAddress) external onlyOwner() { teamWalletAddress = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner { swapAndLiquifyByLimitOnly = newValue; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); if(newPairAddress == address(0)) //Create If Doesnt exist { newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); } uniswapPair = newPairAddress; //Set new pair address uniswapV2Router = _uniswapV2Router; //Set new router address isWalletLimitExempt[address(uniswapPair)] = true; isMarketPair[address(uniswapPair)] = true; } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!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 _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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","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":"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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","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":"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":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","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":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280601181526020017f414c54455249554d2050524f544f434f4c000000000000000000000000000000815250600390816200004a919062000e12565b506040518060400160405280600381526020017f414c5400000000000000000000000000000000000000000000000000000000008152506004908162000091919062000e12565b506009600560006101000a81548160ff021916908360ff16021790555073237eb99a2e243065610464d96f220c0c16f92b8e600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073efe99b5020133566b263b7feaa29256a60dc8ee5600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506000600d55601e600e556000600f556000601055601e60115560006012556000601355601e6014556000601555601e601655601e601755601e601855600560009054906101000a900460ff16600a620001e7919062001089565b6305f5e100620001f89190620010da565b601955600560009054906101000a900460ff16600a62000219919062001089565b6305f5e1006200022a9190620010da565b601a55600560009054906101000a900460ff16600a6200024b919062001089565b6305f5e1006200025c9190620010da565b601b55600560009054906101000a900460ff16600a6200027d919062001089565b60646200028b9190620010da565b601c556001601e60156101000a81548160ff0219169083151502179055506000601e60166101000a81548160ff0219169083151502179055506001601e60176101000a81548160ff021916908315150217905550348015620002ec57600080fd5b506000620002ff62000b0460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060007310ed43c718714eb63d5aa57b78b54704e256024e90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000402573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042891906200118f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000490573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b691906200118f565b6040518363ffffffff1660e01b8152600401620004d5929190620011d2565b6020604051808303816000875af1158015620004f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051b91906200118f565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601954600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960006200065762000b0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000739600f5462000725600e54600d5462000b3560201b62002da11790919060201c565b62000b3560201b62002da11790919060201c565b601681905550620007786012546200076460115460105462000b3560201b62002da11790919060201c565b62000b3560201b62002da11790919060201c565b601781905550620007b7601554620007a360145460135462000b3560201b62002da11790919060201c565b62000b3560201b62002da11790919060201c565b6018819055506001600a6000620007d362000b0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200090c62000b0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506019546007600062000a4662000b0460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a9462000b0460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60195460405162000af5919062001210565b60405180910390a350620012eb565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000b4691906200122d565b90508381101562000b8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b8590620012c9565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c1a57607f821691505b60208210810362000c305762000c2f62000bd2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c9a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c5b565b62000ca6868362000c5b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cf362000ced62000ce78462000cbe565b62000cc8565b62000cbe565b9050919050565b6000819050919050565b62000d0f8362000cd2565b62000d2762000d1e8262000cfa565b84845462000c68565b825550505050565b600090565b62000d3e62000d2f565b62000d4b81848462000d04565b505050565b5b8181101562000d735762000d6760008262000d34565b60018101905062000d51565b5050565b601f82111562000dc25762000d8c8162000c36565b62000d978462000c4b565b8101602085101562000da7578190505b62000dbf62000db68562000c4b565b83018262000d50565b50505b505050565b600082821c905092915050565b600062000de76000198460080262000dc7565b1980831691505092915050565b600062000e02838362000dd4565b9150826002028217905092915050565b62000e1d8262000b98565b67ffffffffffffffff81111562000e395762000e3862000ba3565b5b62000e45825462000c01565b62000e5282828562000d77565b600060209050601f83116001811462000e8a576000841562000e75578287015190505b62000e81858262000df4565b86555062000ef1565b601f19841662000e9a8662000c36565b60005b8281101562000ec45784890151825560018201915060208501945060208101905062000e9d565b8683101562000ee4578489015162000ee0601f89168262000dd4565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f875780860481111562000f5f5762000f5e62000ef9565b5b600185161562000f6f5780820291505b808102905062000f7f8562000f28565b945062000f3f565b94509492505050565b60008262000fa2576001905062001075565b8162000fb2576000905062001075565b816001811462000fcb576002811462000fd6576200100c565b600191505062001075565b60ff84111562000feb5762000fea62000ef9565b5b8360020a91508482111562001005576200100462000ef9565b5b5062001075565b5060208310610133831016604e8410600b8410161715620010465782820a90508381111562001040576200103f62000ef9565b5b62001075565b62001055848484600162000f35565b925090508184048111156200106f576200106e62000ef9565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010968262000cbe565b9150620010a3836200107c565b9250620010d27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f90565b905092915050565b6000620010e78262000cbe565b9150620010f48362000cbe565b9250828202620011048162000cbe565b915082820484148315176200111e576200111d62000ef9565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001157826200112a565b9050919050565b62001169816200114a565b81146200117557600080fd5b50565b60008151905062001189816200115e565b92915050565b600060208284031215620011a857620011a762001125565b5b6000620011b88482850162001178565b91505092915050565b620011cc816200114a565b82525050565b6000604082019050620011e96000830185620011c1565b620011f86020830184620011c1565b9392505050565b6200120a8162000cbe565b82525050565b6000602082019050620012276000830184620011ff565b92915050565b60006200123a8262000cbe565b9150620012478362000cbe565b925082820190508082111562001262576200126162000ef9565b5b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620012b1601b8362001268565b9150620012be8262001279565b602082019050919050565b60006020820190508181036000830152620012e481620012a2565b9050919050565b6080516150ff6200130e600039600081816113f9015261142501526150ff6000f3fe6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610e0f578063f2fde38b14610e38578063f84ba65d14610e61578063f872858a14610e8a576103b8565b8063dd62ed3e14610d55578063ec28438a14610d92578063ef422a1814610dbb578063f0cd1dac14610de4576103b8565b8063d158272d116100dc578063d158272d14610cab578063da00097d14610cd6578063dc44b6a014610d01578063dd46706414610d2c576103b8565b8063c816841b14610bed578063c860795214610c18578063c867d60b14610c43578063cab0347114610c80576103b8565b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e14610b45578063c469b6dd14610b6e578063c49b9a8014610b99578063c5d2418914610bc2576103b8565b8063a5d69d1f14610a9d578063a69df4b514610ac6578063a83f53a714610add578063a9059cbb14610b08576103b8565b806395d89b41116101c157806395d89b41146109df578063a073d37f14610a0a578063a08e671f14610a35578063a457c2d714610a60576103b8565b80638b42507f146109605780638da5cb5b1461099d578063914eb66a146109c8576103b8565b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c146108b657806382eefb43146108e1578063844d591c1461090c57806388790a6814610935576103b8565b8063602bc62b146107f857806361a23c691461082357806370a082311461084e5780637d1db4a51461088b576103b8565b80635342acb4116102a65780635342acb414610728578063557ed1ba1461076557806357a5802f146107905780635881f3ef146107bb576103b8565b80633b97084a1461066e5780633ecad271146106975780634a74bb02146106d45780634cb80fd5146106ff576103b8565b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105b25780632c4b2334146105dd578063313ce567146106065780633950935114610631576103b8565b80632198cf6c146104f857806323b872dd146105215780632563ae831461055e57806327c8f83514610587576103b8565b80631245e3471161038b5780631245e3471461044e5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e8578063095ea7b314610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb5565b6040516103df91906141af565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a919061420c565b610f47565b005b34801561041d57600080fd5b50610438600480360381019061043391906142bd565b611027565b6040516104459190614318565b60405180910390f35b34801561045a57600080fd5b50610463611045565b6040516104709190614354565b60405180910390f35b34801561048557600080fd5b5061048e61106b565b60405161049b91906143ce565b60405180910390f35b3480156104b057600080fd5b506104b9611091565b6040516104c691906143f8565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f1919061420c565b61109b565b005b34801561050457600080fd5b5061051f600480360381019061051a919061443f565b61117b565b005b34801561052d57600080fd5b506105486004803603810190610543919061447f565b61126b565b6040516105559190614318565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906144d2565b611345565b005b34801561059357600080fd5b5061059c6113f7565b6040516105a9919061450e565b60405180910390f35b3480156105be57600080fd5b506105c761141b565b6040516105d491906143f8565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614529565b61145f565b005b34801561061257600080fd5b5061061b611538565b6040516106289190614572565b60405180910390f35b34801561063d57600080fd5b50610658600480360381019061065391906142bd565b61154f565b6040516106659190614318565b60405180910390f35b34801561067a57600080fd5b506106956004803603810190610690919061458d565b611602565b005b3480156106a357600080fd5b506106be60048036038101906106b99190614529565b6116a1565b6040516106cb9190614318565b60405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040516106f69190614318565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614529565b6116d4565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614529565b6117ad565b60405161075c9190614318565b60405180910390f35b34801561077157600080fd5b5061077a6117cd565b60405161078791906143f8565b60405180910390f35b34801561079c57600080fd5b506107a56117d5565b6040516107b291906143f8565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190614529565b6117db565b6040516107ef919061450e565b60405180910390f35b34801561080457600080fd5b5061080d611cde565b60405161081a91906143f8565b60405180910390f35b34801561082f57600080fd5b50610838611ce8565b60405161084591906143f8565b60405180910390f35b34801561085a57600080fd5b5061087560048036038101906108709190614529565b611cee565b60405161088291906143f8565b60405180910390f35b34801561089757600080fd5b506108a0611d37565b6040516108ad91906143f8565b60405180910390f35b3480156108c257600080fd5b506108cb611d3d565b6040516108d891906143f8565b60405180910390f35b3480156108ed57600080fd5b506108f6611d43565b60405161090391906143f8565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e919061443f565b611d49565b005b34801561094157600080fd5b5061094a611e39565b60405161095791906143f8565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190614529565b611e3f565b6040516109949190614318565b60405180910390f35b3480156109a957600080fd5b506109b2611e5f565b6040516109bf919061450e565b60405180910390f35b3480156109d457600080fd5b506109dd611e88565b005b3480156109eb57600080fd5b506109f4611fdb565b604051610a0191906141af565b60405180910390f35b348015610a1657600080fd5b50610a1f61206d565b604051610a2c91906143f8565b60405180910390f35b348015610a4157600080fd5b50610a4a612077565b604051610a5791906143f8565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a8291906142bd565b61207d565b604051610a949190614318565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf91906144d2565b61214a565b005b348015610ad257600080fd5b50610adb6121fc565b005b348015610ae957600080fd5b50610af26123d0565b604051610aff91906143f8565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a91906142bd565b6123d6565b604051610b3c9190614318565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061420c565b6123f5565b005b348015610b7a57600080fd5b50610b836124d5565b604051610b9091906143f8565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906144d2565b6124db565b005b348015610bce57600080fd5b50610bd76125c4565b604051610be491906143f8565b60405180910390f35b348015610bf957600080fd5b50610c026125ca565b604051610c0f919061450e565b60405180910390f35b348015610c2457600080fd5b50610c2d6125f0565b604051610c3a91906143f8565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c659190614529565b6125f6565b604051610c779190614318565b60405180910390f35b348015610c8c57600080fd5b50610c95612616565b604051610ca291906143f8565b60405180910390f35b348015610cb757600080fd5b50610cc061261c565b604051610ccd9190614354565b60405180910390f35b348015610ce257600080fd5b50610ceb612642565b604051610cf89190614318565b60405180910390f35b348015610d0d57600080fd5b50610d16612655565b604051610d2391906143f8565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e919061458d565b61265b565b005b348015610d6157600080fd5b50610d7c6004803603810190610d7791906145ba565b612822565b604051610d8991906143f8565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db4919061458d565b6128a9565b005b348015610dc757600080fd5b50610de26004803603810190610ddd919061443f565b612948565b005b348015610df057600080fd5b50610df9612a38565b604051610e0691906143f8565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e31919061458d565b612a3e565b005b348015610e4457600080fd5b50610e5f6004803603810190610e5a9190614529565b612add565b005b348015610e6d57600080fd5b50610e886004803603810190610e83919061443f565b612c9e565b005b348015610e9657600080fd5b50610e9f612d8e565b604051610eac9190614318565b60405180910390f35b606060038054610ec490614629565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef090614629565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906146a6565b60405180910390fd5b82601081905550816011819055508060128190555061101c60125461100e601154601054612da190919063ffffffff16565b612da190919063ffffffff16565b601781905550505050565b600061103b611034612dff565b8484612e07565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b6110a3612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611130576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611127906146a6565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611170600f54611162600e54600d54612da190919063ffffffff16565b612da190919063ffffffff16565b601681905550505050565b611183612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611207906146a6565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611278848484612fd0565b5061133a84611285612dff565b6113358560405180606001604052806028815260200161507d60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112eb612dff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b39092919063ffffffff16565b612e07565b600190509392505050565b61134d612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d1906146a6565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061145a6114497f0000000000000000000000000000000000000000000000000000000000000000611cee565b60195461361790919063ffffffff16565b905090565b611467612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb906146a6565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006115f861155c612dff565b846115f3856008600061156d612dff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da190919063ffffffff16565b612e07565b6001905092915050565b61160a612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e906146a6565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6116dc612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611760906146a6565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60006117e5612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611869906146a6565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e691906146db565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197191906146db565b6040518363ffffffff1660e01b815260040161198e929190614708565b602060405180830381865afa1580156119ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cf91906146db565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b62578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7491906146db565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aff91906146db565b6040518363ffffffff1660e01b8152600401611b1c929190614708565b6020604051808303816000875af1158015611b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5f91906146db565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600254905090565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b601b5481565b60175481565b611d51612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd5906146a6565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e90612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f14906146a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060048054611fea90614629565b80601f016020809104026020016040519081016040528092919081815260200182805461201690614629565b80156120635780601f1061203857610100808354040283529160200191612063565b820191906000526020600020905b81548152906001019060200180831161204657829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b600061214061208a612dff565b8461213b856040518060600160405280602581526020016150a560259139600860006120b4612dff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b39092919063ffffffff16565b612e07565b6001905092915050565b612152612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d6906146a6565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612283906147a3565b60405180910390fd5b60025442116122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c79061480f565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b60006123ea6123e3612dff565b8484612fd0565b506001905092915050565b6123fd612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461248a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612481906146a6565b60405180910390fd5b8260138190555081601481905550806015819055506124ca6015546124bc601454601354612da190919063ffffffff16565b612da190919063ffffffff16565b601881905550505050565b600f5481565b6124e3612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612570576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612567906146a6565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516125b99190614318565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b612663612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e7906146a6565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804261279e919061485e565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128b1612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461293e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612935906146a6565b60405180910390fd5b80601a8190555050565b612950612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d4906146a6565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b612a46612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aca906146a6565b60405180910390fd5b80601b8190555050565b612ae5612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b69906146a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd890614904565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ca6612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2a906146a6565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b6000808284612db0919061485e565b905083811015612df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dec90614970565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6d90614a02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edc90614a94565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612fc391906143f8565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303790614b26565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a690614bb8565b60405180910390fd5b601e60149054906101000a900460ff16156130d6576130cf848484613661565b90506135ac565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561317a5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131c557601a548211156131c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bb90614c4a565b60405180910390fd5b5b60006131d030611cee565b90506000601c5482101590508080156131f65750601e60149054906101000a900460ff16155b801561324c5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132645750601e60159054906101000a900460ff165b1561328e57601e60169054906101000a900460ff161561328457601c5491505b61328d82613834565b5b613317846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b39092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133fd5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134115761340c878787613a25565b613413565b845b9050601e60179054906101000a900460ff16801561347b5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134aa57601b5461349e8261349089611cee565b612da190919063ffffffff16565b11156134a957600080fd5b5b6134fc81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da190919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161359c91906143f8565b60405180910390a3600193505050505b9392505050565b60008383111582906135fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f291906141af565b60405180910390fd5b506000838561360a9190614c6a565b9050809150509392505050565b600061365983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135b3565b905092915050565b60006136ec826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b39092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061378182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161382191906143f8565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff021916908315150217905550600061388d600261387f60185461387160135487613c4c90919063ffffffff16565b613cc690919063ffffffff16565b613cc690919063ffffffff16565b905060006138a4828461361790919063ffffffff16565b90506138af81613d10565b600047905060006138e06138cf6002601354613cc690919063ffffffff16565b60185461361790919063ffffffff16565b9050600061391e60026139108461390260135488613c4c90919063ffffffff16565b613cc690919063ffffffff16565b613cc690919063ffffffff16565b905060006139498361393b60155487613c4c90919063ffffffff16565b613cc690919063ffffffff16565b9050600061397282613964858861361790919063ffffffff16565b61361790919063ffffffff16565b905060008111156139aa576139a9600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613f8c565b5b60008211156139e0576139df600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613f8c565b5b6000831180156139f05750600087115b15613a00576139ff8784613fd7565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613aad57613aa66064613a9860165486613c4c90919063ffffffff16565b613cc690919063ffffffff16565b9050613b2b565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b2a57613b276064613b1960175486613c4c90919063ffffffff16565b613cc690919063ffffffff16565b90505b5b6000811115613c2f57613b8681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da190919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c2691906143f8565b60405180910390a35b613c42818461361790919063ffffffff16565b9150509392505050565b6000808303613c5e5760009050613cc0565b60008284613c6c9190614c9e565b9050828482613c7b9190614d0f565b14613cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cb290614db2565b60405180910390fd5b809150505b92915050565b6000613d0883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140bc565b905092915050565b6000600267ffffffffffffffff811115613d2d57613d2c614dd2565b5b604051908082528060200260200182016040528015613d5b5781602001602082028036833780820191505090505b5090503081600081518110613d7357613d72614e01565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3e91906146db565b81600181518110613e5257613e51614e01565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613eb930601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e07565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f1d959493929190614f29565b600060405180830381600087803b158015613f3757600080fd5b505af1158015613f4b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613f80929190614f83565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613fd2573d6000803e3d6000fd5b505050565b61400430601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e07565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614050611e5f565b426040518863ffffffff1660e01b815260040161407296959493929190614fb3565b60606040518083038185885af1158015614090573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140b59190615029565b5050505050565b60008083118290614103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140fa91906141af565b60405180910390fd5b50600083856141129190614d0f565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561415957808201518184015260208101905061413e565b60008484015250505050565b6000601f19601f8301169050919050565b60006141818261411f565b61418b818561412a565b935061419b81856020860161413b565b6141a481614165565b840191505092915050565b600060208201905081810360008301526141c98184614176565b905092915050565b600080fd5b6000819050919050565b6141e9816141d6565b81146141f457600080fd5b50565b600081359050614206816141e0565b92915050565b600080600060608486031215614225576142246141d1565b5b6000614233868287016141f7565b9350506020614244868287016141f7565b9250506040614255868287016141f7565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061428a8261425f565b9050919050565b61429a8161427f565b81146142a557600080fd5b50565b6000813590506142b781614291565b92915050565b600080604083850312156142d4576142d36141d1565b5b60006142e2858286016142a8565b92505060206142f3858286016141f7565b9150509250929050565b60008115159050919050565b614312816142fd565b82525050565b600060208201905061432d6000830184614309565b92915050565b600061433e8261425f565b9050919050565b61434e81614333565b82525050565b60006020820190506143696000830184614345565b92915050565b6000819050919050565b600061439461438f61438a8461425f565b61436f565b61425f565b9050919050565b60006143a682614379565b9050919050565b60006143b88261439b565b9050919050565b6143c8816143ad565b82525050565b60006020820190506143e360008301846143bf565b92915050565b6143f2816141d6565b82525050565b600060208201905061440d60008301846143e9565b92915050565b61441c816142fd565b811461442757600080fd5b50565b60008135905061443981614413565b92915050565b60008060408385031215614456576144556141d1565b5b6000614464858286016142a8565b92505060206144758582860161442a565b9150509250929050565b600080600060608486031215614498576144976141d1565b5b60006144a6868287016142a8565b93505060206144b7868287016142a8565b92505060406144c8868287016141f7565b9150509250925092565b6000602082840312156144e8576144e76141d1565b5b60006144f68482850161442a565b91505092915050565b6145088161427f565b82525050565b600060208201905061452360008301846144ff565b92915050565b60006020828403121561453f5761453e6141d1565b5b600061454d848285016142a8565b91505092915050565b600060ff82169050919050565b61456c81614556565b82525050565b60006020820190506145876000830184614563565b92915050565b6000602082840312156145a3576145a26141d1565b5b60006145b1848285016141f7565b91505092915050565b600080604083850312156145d1576145d06141d1565b5b60006145df858286016142a8565b92505060206145f0858286016142a8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061464157607f821691505b602082108103614654576146536145fa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061469060208361412a565b915061469b8261465a565b602082019050919050565b600060208201905081810360008301526146bf81614683565b9050919050565b6000815190506146d581614291565b92915050565b6000602082840312156146f1576146f06141d1565b5b60006146ff848285016146c6565b91505092915050565b600060408201905061471d60008301856144ff565b61472a60208301846144ff565b9392505050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b600061478d60238361412a565b915061479882614731565b604082019050919050565b600060208201905081810360008301526147bc81614780565b9050919050565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b60006147f9601f8361412a565b9150614804826147c3565b602082019050919050565b60006020820190508181036000830152614828816147ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614869826141d6565b9150614874836141d6565b925082820190508082111561488c5761488b61482f565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006148ee60268361412a565b91506148f982614892565b604082019050919050565b6000602082019050818103600083015261491d816148e1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061495a601b8361412a565b915061496582614924565b602082019050919050565b600060208201905081810360008301526149898161494d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006149ec60248361412a565b91506149f782614990565b604082019050919050565b60006020820190508181036000830152614a1b816149df565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a7e60228361412a565b9150614a8982614a22565b604082019050919050565b60006020820190508181036000830152614aad81614a71565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614b1060258361412a565b9150614b1b82614ab4565b604082019050919050565b60006020820190508181036000830152614b3f81614b03565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ba260238361412a565b9150614bad82614b46565b604082019050919050565b60006020820190508181036000830152614bd181614b95565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614c3460288361412a565b9150614c3f82614bd8565b604082019050919050565b60006020820190508181036000830152614c6381614c27565b9050919050565b6000614c75826141d6565b9150614c80836141d6565b9250828203905081811115614c9857614c9761482f565b5b92915050565b6000614ca9826141d6565b9150614cb4836141d6565b9250828202614cc2816141d6565b91508282048414831517614cd957614cd861482f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d1a826141d6565b9150614d25836141d6565b925082614d3557614d34614ce0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d9c60218361412a565b9150614da782614d40565b604082019050919050565b60006020820190508181036000830152614dcb81614d8f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614e55614e50614e4b84614e30565b61436f565b6141d6565b9050919050565b614e6581614e3a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ea08161427f565b82525050565b6000614eb28383614e97565b60208301905092915050565b6000602082019050919050565b6000614ed682614e6b565b614ee08185614e76565b9350614eeb83614e87565b8060005b83811015614f1c578151614f038882614ea6565b9750614f0e83614ebe565b925050600181019050614eef565b5085935050505092915050565b600060a082019050614f3e60008301886143e9565b614f4b6020830187614e5c565b8181036040830152614f5d8186614ecb565b9050614f6c60608301856144ff565b614f7960808301846143e9565b9695505050505050565b6000604082019050614f9860008301856143e9565b8181036020830152614faa8184614ecb565b90509392505050565b600060c082019050614fc860008301896144ff565b614fd560208301886143e9565b614fe26040830187614e5c565b614fef6060830186614e5c565b614ffc60808301856144ff565b61500960a08301846143e9565b979650505050505050565b600081519050615023816141e0565b92915050565b600080600060608486031215615042576150416141d1565b5b600061505086828701615014565b935050602061506186828701615014565b925050604061507286828701615014565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202bd9a8c3dad5e807af49ec12265024acb9bd79a61626382fb36efb09c7c92ac164736f6c63430008120033
Deployed Bytecode
0x6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610e0f578063f2fde38b14610e38578063f84ba65d14610e61578063f872858a14610e8a576103b8565b8063dd62ed3e14610d55578063ec28438a14610d92578063ef422a1814610dbb578063f0cd1dac14610de4576103b8565b8063d158272d116100dc578063d158272d14610cab578063da00097d14610cd6578063dc44b6a014610d01578063dd46706414610d2c576103b8565b8063c816841b14610bed578063c860795214610c18578063c867d60b14610c43578063cab0347114610c80576103b8565b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e14610b45578063c469b6dd14610b6e578063c49b9a8014610b99578063c5d2418914610bc2576103b8565b8063a5d69d1f14610a9d578063a69df4b514610ac6578063a83f53a714610add578063a9059cbb14610b08576103b8565b806395d89b41116101c157806395d89b41146109df578063a073d37f14610a0a578063a08e671f14610a35578063a457c2d714610a60576103b8565b80638b42507f146109605780638da5cb5b1461099d578063914eb66a146109c8576103b8565b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c146108b657806382eefb43146108e1578063844d591c1461090c57806388790a6814610935576103b8565b8063602bc62b146107f857806361a23c691461082357806370a082311461084e5780637d1db4a51461088b576103b8565b80635342acb4116102a65780635342acb414610728578063557ed1ba1461076557806357a5802f146107905780635881f3ef146107bb576103b8565b80633b97084a1461066e5780633ecad271146106975780634a74bb02146106d45780634cb80fd5146106ff576103b8565b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105b25780632c4b2334146105dd578063313ce567146106065780633950935114610631576103b8565b80632198cf6c146104f857806323b872dd146105215780632563ae831461055e57806327c8f83514610587576103b8565b80631245e3471161038b5780631245e3471461044e5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e8578063095ea7b314610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb5565b6040516103df91906141af565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a919061420c565b610f47565b005b34801561041d57600080fd5b50610438600480360381019061043391906142bd565b611027565b6040516104459190614318565b60405180910390f35b34801561045a57600080fd5b50610463611045565b6040516104709190614354565b60405180910390f35b34801561048557600080fd5b5061048e61106b565b60405161049b91906143ce565b60405180910390f35b3480156104b057600080fd5b506104b9611091565b6040516104c691906143f8565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f1919061420c565b61109b565b005b34801561050457600080fd5b5061051f600480360381019061051a919061443f565b61117b565b005b34801561052d57600080fd5b506105486004803603810190610543919061447f565b61126b565b6040516105559190614318565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906144d2565b611345565b005b34801561059357600080fd5b5061059c6113f7565b6040516105a9919061450e565b60405180910390f35b3480156105be57600080fd5b506105c761141b565b6040516105d491906143f8565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614529565b61145f565b005b34801561061257600080fd5b5061061b611538565b6040516106289190614572565b60405180910390f35b34801561063d57600080fd5b50610658600480360381019061065391906142bd565b61154f565b6040516106659190614318565b60405180910390f35b34801561067a57600080fd5b506106956004803603810190610690919061458d565b611602565b005b3480156106a357600080fd5b506106be60048036038101906106b99190614529565b6116a1565b6040516106cb9190614318565b60405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040516106f69190614318565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614529565b6116d4565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614529565b6117ad565b60405161075c9190614318565b60405180910390f35b34801561077157600080fd5b5061077a6117cd565b60405161078791906143f8565b60405180910390f35b34801561079c57600080fd5b506107a56117d5565b6040516107b291906143f8565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190614529565b6117db565b6040516107ef919061450e565b60405180910390f35b34801561080457600080fd5b5061080d611cde565b60405161081a91906143f8565b60405180910390f35b34801561082f57600080fd5b50610838611ce8565b60405161084591906143f8565b60405180910390f35b34801561085a57600080fd5b5061087560048036038101906108709190614529565b611cee565b60405161088291906143f8565b60405180910390f35b34801561089757600080fd5b506108a0611d37565b6040516108ad91906143f8565b60405180910390f35b3480156108c257600080fd5b506108cb611d3d565b6040516108d891906143f8565b60405180910390f35b3480156108ed57600080fd5b506108f6611d43565b60405161090391906143f8565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e919061443f565b611d49565b005b34801561094157600080fd5b5061094a611e39565b60405161095791906143f8565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190614529565b611e3f565b6040516109949190614318565b60405180910390f35b3480156109a957600080fd5b506109b2611e5f565b6040516109bf919061450e565b60405180910390f35b3480156109d457600080fd5b506109dd611e88565b005b3480156109eb57600080fd5b506109f4611fdb565b604051610a0191906141af565b60405180910390f35b348015610a1657600080fd5b50610a1f61206d565b604051610a2c91906143f8565b60405180910390f35b348015610a4157600080fd5b50610a4a612077565b604051610a5791906143f8565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a8291906142bd565b61207d565b604051610a949190614318565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf91906144d2565b61214a565b005b348015610ad257600080fd5b50610adb6121fc565b005b348015610ae957600080fd5b50610af26123d0565b604051610aff91906143f8565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a91906142bd565b6123d6565b604051610b3c9190614318565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061420c565b6123f5565b005b348015610b7a57600080fd5b50610b836124d5565b604051610b9091906143f8565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906144d2565b6124db565b005b348015610bce57600080fd5b50610bd76125c4565b604051610be491906143f8565b60405180910390f35b348015610bf957600080fd5b50610c026125ca565b604051610c0f919061450e565b60405180910390f35b348015610c2457600080fd5b50610c2d6125f0565b604051610c3a91906143f8565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c659190614529565b6125f6565b604051610c779190614318565b60405180910390f35b348015610c8c57600080fd5b50610c95612616565b604051610ca291906143f8565b60405180910390f35b348015610cb757600080fd5b50610cc061261c565b604051610ccd9190614354565b60405180910390f35b348015610ce257600080fd5b50610ceb612642565b604051610cf89190614318565b60405180910390f35b348015610d0d57600080fd5b50610d16612655565b604051610d2391906143f8565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e919061458d565b61265b565b005b348015610d6157600080fd5b50610d7c6004803603810190610d7791906145ba565b612822565b604051610d8991906143f8565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db4919061458d565b6128a9565b005b348015610dc757600080fd5b50610de26004803603810190610ddd919061443f565b612948565b005b348015610df057600080fd5b50610df9612a38565b604051610e0691906143f8565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e31919061458d565b612a3e565b005b348015610e4457600080fd5b50610e5f6004803603810190610e5a9190614529565b612add565b005b348015610e6d57600080fd5b50610e886004803603810190610e83919061443f565b612c9e565b005b348015610e9657600080fd5b50610e9f612d8e565b604051610eac9190614318565b60405180910390f35b606060038054610ec490614629565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef090614629565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906146a6565b60405180910390fd5b82601081905550816011819055508060128190555061101c60125461100e601154601054612da190919063ffffffff16565b612da190919063ffffffff16565b601781905550505050565b600061103b611034612dff565b8484612e07565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b6110a3612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611130576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611127906146a6565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611170600f54611162600e54600d54612da190919063ffffffff16565b612da190919063ffffffff16565b601681905550505050565b611183612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611207906146a6565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611278848484612fd0565b5061133a84611285612dff565b6113358560405180606001604052806028815260200161507d60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112eb612dff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b39092919063ffffffff16565b612e07565b600190509392505050565b61134d612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d1906146a6565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061145a6114497f000000000000000000000000000000000000000000000000000000000000dead611cee565b60195461361790919063ffffffff16565b905090565b611467612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb906146a6565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006115f861155c612dff565b846115f3856008600061156d612dff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da190919063ffffffff16565b612e07565b6001905092915050565b61160a612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e906146a6565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6116dc612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611760906146a6565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60006117e5612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611869906146a6565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e691906146db565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197191906146db565b6040518363ffffffff1660e01b815260040161198e929190614708565b602060405180830381865afa1580156119ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cf91906146db565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b62578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7491906146db565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aff91906146db565b6040518363ffffffff1660e01b8152600401611b1c929190614708565b6020604051808303816000875af1158015611b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5f91906146db565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600254905090565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b601b5481565b60175481565b611d51612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd5906146a6565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e90612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f14906146a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060048054611fea90614629565b80601f016020809104026020016040519081016040528092919081815260200182805461201690614629565b80156120635780601f1061203857610100808354040283529160200191612063565b820191906000526020600020905b81548152906001019060200180831161204657829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b600061214061208a612dff565b8461213b856040518060600160405280602581526020016150a560259139600860006120b4612dff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b39092919063ffffffff16565b612e07565b6001905092915050565b612152612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d6906146a6565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612283906147a3565b60405180910390fd5b60025442116122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c79061480f565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b60006123ea6123e3612dff565b8484612fd0565b506001905092915050565b6123fd612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461248a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612481906146a6565b60405180910390fd5b8260138190555081601481905550806015819055506124ca6015546124bc601454601354612da190919063ffffffff16565b612da190919063ffffffff16565b601881905550505050565b600f5481565b6124e3612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612570576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612567906146a6565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516125b99190614318565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b612663612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e7906146a6565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804261279e919061485e565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128b1612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461293e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612935906146a6565b60405180910390fd5b80601a8190555050565b612950612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d4906146a6565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b612a46612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aca906146a6565b60405180910390fd5b80601b8190555050565b612ae5612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b69906146a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd890614904565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ca6612dff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2a906146a6565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b6000808284612db0919061485e565b905083811015612df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dec90614970565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6d90614a02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edc90614a94565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612fc391906143f8565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303790614b26565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a690614bb8565b60405180910390fd5b601e60149054906101000a900460ff16156130d6576130cf848484613661565b90506135ac565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561317a5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131c557601a548211156131c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bb90614c4a565b60405180910390fd5b5b60006131d030611cee565b90506000601c5482101590508080156131f65750601e60149054906101000a900460ff16155b801561324c5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132645750601e60159054906101000a900460ff165b1561328e57601e60169054906101000a900460ff161561328457601c5491505b61328d82613834565b5b613317846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b39092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133fd5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134115761340c878787613a25565b613413565b845b9050601e60179054906101000a900460ff16801561347b5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134aa57601b5461349e8261349089611cee565b612da190919063ffffffff16565b11156134a957600080fd5b5b6134fc81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da190919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161359c91906143f8565b60405180910390a3600193505050505b9392505050565b60008383111582906135fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f291906141af565b60405180910390fd5b506000838561360a9190614c6a565b9050809150509392505050565b600061365983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135b3565b905092915050565b60006136ec826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b39092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061378182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161382191906143f8565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff021916908315150217905550600061388d600261387f60185461387160135487613c4c90919063ffffffff16565b613cc690919063ffffffff16565b613cc690919063ffffffff16565b905060006138a4828461361790919063ffffffff16565b90506138af81613d10565b600047905060006138e06138cf6002601354613cc690919063ffffffff16565b60185461361790919063ffffffff16565b9050600061391e60026139108461390260135488613c4c90919063ffffffff16565b613cc690919063ffffffff16565b613cc690919063ffffffff16565b905060006139498361393b60155487613c4c90919063ffffffff16565b613cc690919063ffffffff16565b9050600061397282613964858861361790919063ffffffff16565b61361790919063ffffffff16565b905060008111156139aa576139a9600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613f8c565b5b60008211156139e0576139df600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613f8c565b5b6000831180156139f05750600087115b15613a00576139ff8784613fd7565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613aad57613aa66064613a9860165486613c4c90919063ffffffff16565b613cc690919063ffffffff16565b9050613b2b565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b2a57613b276064613b1960175486613c4c90919063ffffffff16565b613cc690919063ffffffff16565b90505b5b6000811115613c2f57613b8681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da190919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c2691906143f8565b60405180910390a35b613c42818461361790919063ffffffff16565b9150509392505050565b6000808303613c5e5760009050613cc0565b60008284613c6c9190614c9e565b9050828482613c7b9190614d0f565b14613cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cb290614db2565b60405180910390fd5b809150505b92915050565b6000613d0883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140bc565b905092915050565b6000600267ffffffffffffffff811115613d2d57613d2c614dd2565b5b604051908082528060200260200182016040528015613d5b5781602001602082028036833780820191505090505b5090503081600081518110613d7357613d72614e01565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3e91906146db565b81600181518110613e5257613e51614e01565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613eb930601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e07565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f1d959493929190614f29565b600060405180830381600087803b158015613f3757600080fd5b505af1158015613f4b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613f80929190614f83565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613fd2573d6000803e3d6000fd5b505050565b61400430601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e07565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614050611e5f565b426040518863ffffffff1660e01b815260040161407296959493929190614fb3565b60606040518083038185885af1158015614090573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140b59190615029565b5050505050565b60008083118290614103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140fa91906141af565b60405180910390fd5b50600083856141129190614d0f565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561415957808201518184015260208101905061413e565b60008484015250505050565b6000601f19601f8301169050919050565b60006141818261411f565b61418b818561412a565b935061419b81856020860161413b565b6141a481614165565b840191505092915050565b600060208201905081810360008301526141c98184614176565b905092915050565b600080fd5b6000819050919050565b6141e9816141d6565b81146141f457600080fd5b50565b600081359050614206816141e0565b92915050565b600080600060608486031215614225576142246141d1565b5b6000614233868287016141f7565b9350506020614244868287016141f7565b9250506040614255868287016141f7565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061428a8261425f565b9050919050565b61429a8161427f565b81146142a557600080fd5b50565b6000813590506142b781614291565b92915050565b600080604083850312156142d4576142d36141d1565b5b60006142e2858286016142a8565b92505060206142f3858286016141f7565b9150509250929050565b60008115159050919050565b614312816142fd565b82525050565b600060208201905061432d6000830184614309565b92915050565b600061433e8261425f565b9050919050565b61434e81614333565b82525050565b60006020820190506143696000830184614345565b92915050565b6000819050919050565b600061439461438f61438a8461425f565b61436f565b61425f565b9050919050565b60006143a682614379565b9050919050565b60006143b88261439b565b9050919050565b6143c8816143ad565b82525050565b60006020820190506143e360008301846143bf565b92915050565b6143f2816141d6565b82525050565b600060208201905061440d60008301846143e9565b92915050565b61441c816142fd565b811461442757600080fd5b50565b60008135905061443981614413565b92915050565b60008060408385031215614456576144556141d1565b5b6000614464858286016142a8565b92505060206144758582860161442a565b9150509250929050565b600080600060608486031215614498576144976141d1565b5b60006144a6868287016142a8565b93505060206144b7868287016142a8565b92505060406144c8868287016141f7565b9150509250925092565b6000602082840312156144e8576144e76141d1565b5b60006144f68482850161442a565b91505092915050565b6145088161427f565b82525050565b600060208201905061452360008301846144ff565b92915050565b60006020828403121561453f5761453e6141d1565b5b600061454d848285016142a8565b91505092915050565b600060ff82169050919050565b61456c81614556565b82525050565b60006020820190506145876000830184614563565b92915050565b6000602082840312156145a3576145a26141d1565b5b60006145b1848285016141f7565b91505092915050565b600080604083850312156145d1576145d06141d1565b5b60006145df858286016142a8565b92505060206145f0858286016142a8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061464157607f821691505b602082108103614654576146536145fa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061469060208361412a565b915061469b8261465a565b602082019050919050565b600060208201905081810360008301526146bf81614683565b9050919050565b6000815190506146d581614291565b92915050565b6000602082840312156146f1576146f06141d1565b5b60006146ff848285016146c6565b91505092915050565b600060408201905061471d60008301856144ff565b61472a60208301846144ff565b9392505050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b600061478d60238361412a565b915061479882614731565b604082019050919050565b600060208201905081810360008301526147bc81614780565b9050919050565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b60006147f9601f8361412a565b9150614804826147c3565b602082019050919050565b60006020820190508181036000830152614828816147ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614869826141d6565b9150614874836141d6565b925082820190508082111561488c5761488b61482f565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006148ee60268361412a565b91506148f982614892565b604082019050919050565b6000602082019050818103600083015261491d816148e1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061495a601b8361412a565b915061496582614924565b602082019050919050565b600060208201905081810360008301526149898161494d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006149ec60248361412a565b91506149f782614990565b604082019050919050565b60006020820190508181036000830152614a1b816149df565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a7e60228361412a565b9150614a8982614a22565b604082019050919050565b60006020820190508181036000830152614aad81614a71565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614b1060258361412a565b9150614b1b82614ab4565b604082019050919050565b60006020820190508181036000830152614b3f81614b03565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ba260238361412a565b9150614bad82614b46565b604082019050919050565b60006020820190508181036000830152614bd181614b95565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614c3460288361412a565b9150614c3f82614bd8565b604082019050919050565b60006020820190508181036000830152614c6381614c27565b9050919050565b6000614c75826141d6565b9150614c80836141d6565b9250828203905081811115614c9857614c9761482f565b5b92915050565b6000614ca9826141d6565b9150614cb4836141d6565b9250828202614cc2816141d6565b91508282048414831517614cd957614cd861482f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d1a826141d6565b9150614d25836141d6565b925082614d3557614d34614ce0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d9c60218361412a565b9150614da782614d40565b604082019050919050565b60006020820190508181036000830152614dcb81614d8f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614e55614e50614e4b84614e30565b61436f565b6141d6565b9050919050565b614e6581614e3a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ea08161427f565b82525050565b6000614eb28383614e97565b60208301905092915050565b6000602082019050919050565b6000614ed682614e6b565b614ee08185614e76565b9350614eeb83614e87565b8060005b83811015614f1c578151614f038882614ea6565b9750614f0e83614ebe565b925050600181019050614eef565b5085935050505092915050565b600060a082019050614f3e60008301886143e9565b614f4b6020830187614e5c565b8181036040830152614f5d8186614ecb565b9050614f6c60608301856144ff565b614f7960808301846143e9565b9695505050505050565b6000604082019050614f9860008301856143e9565b8181036020830152614faa8184614ecb565b90509392505050565b600060c082019050614fc860008301896144ff565b614fd560208301886143e9565b614fe26040830187614e5c565b614fef6060830186614e5c565b614ffc60808301856144ff565b61500960a08301846143e9565b979650505050505050565b600081519050615023816141e0565b92915050565b600080600060608486031215615042576150416141d1565b5b600061505086828701615014565b935050602061506186828701615014565b925050604061507286828701615014565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202bd9a8c3dad5e807af49ec12265024acb9bd79a61626382fb36efb09c7c92ac164736f6c63430008120033
Deployed Bytecode Sourcemap
15397:14839:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19102:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21670:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20396:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15784:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17125:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19379:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21329:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22633:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24976:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22512:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15901:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23618:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23165:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19288:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19765:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22886:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16293:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17240:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23018:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16122:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6917:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16602:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23892:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6815:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16643:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19487:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16928:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16993:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16767:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20910:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16475:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16238:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6185:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6410:145;;;;;;;;;;;;;:::i;:::-;;19193:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20268:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16812:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19991:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23481:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7253:305;;;;;;;;;;;;;:::i;:::-;;16685:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24801:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22023:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16432:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23302:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16389:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17173:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16518:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16179:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16562:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15657:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17287:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16347:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7015:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19614:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22393:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21186:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16723:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22776:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6563:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21047:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17339:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19102:83;19139:13;19172:5;19165:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19102:83;:::o;21670:341::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21814:15:::1;21794:17;:35;;;;21860:15;21840:17;:35;;;;21901:10;21886:12;:25;;;;21945:58;21990:12;;21945:40;21967:17;;21945;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;21924:18;:79;;;;21670:341:::0;;;:::o;20396:161::-;20471:4;20488:39;20497:12;:10;:12::i;:::-;20511:7;20520:6;20488:8;:39::i;:::-;20545:4;20538:11;;20396:161;;;;:::o;15784:94::-;;;;;;;;;;;;;:::o;17125:41::-;;;;;;;;;;;;;:::o;19379:100::-;19432:7;19459:12;;19452:19;;19379:100;:::o;21329:333::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21471:15:::1;21452:16;:34;;;;21516:15;21497:16;:34;;;;21556:10;21542:11;:24;;;;21599:55;21642:11;;21599:38;21620:16;;21599;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;21579:17;:75;;;;21329:333:::0;;;:::o;22633:135::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22754:6:::1;22724:19;:27;22744:6;22724:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22633:135:::0;;:::o;24976:313::-;25074:4;25091:36;25101:6;25109:9;25120:6;25091:9;:36::i;:::-;;25138:121;25147:6;25155:12;:10;:12::i;:::-;25169:89;25207:6;25169:89;;;;;;;;;;;;;;;;;:11;:19;25181:6;25169:19;;;;;;;;;;;;;;;:33;25189:12;:10;:12::i;:::-;25169:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;25138:8;:121::i;:::-;25277:4;25270:11;;24976:313;;;;;:::o;22512:113::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22609:8:::1;22590:16;;:27;;;;;;;;;;;;;;;;;;22512:113:::0;:::o;15901:81::-;;;:::o;23618:128::-;23671:7;23698:40;23715:22;23725:11;23715:9;:22::i;:::-;23698:12;;:16;;:40;;;;:::i;:::-;23691:47;;23618:128;:::o;23165:129::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23275:10:::1;23247:17;;:39;;;;;;;;;;;;;;;;;;23165:129:::0;:::o;19288:83::-;19329:5;19354:9;;;;;;;;;;;19347:16;;19288:83;:::o;19765:218::-;19853:4;19870:83;19879:12;:10;:12::i;:::-;19893:7;19902:50;19941:10;19902:11;:25;19914:12;:10;:12::i;:::-;19902:25;;;;;;;;;;;;;;;:34;19928:7;19902:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19870:8;:83::i;:::-;19971:4;19964:11;;19765:218;;;;:::o;22886:124::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22994:8:::1;22968:23;:34;;;;22886:124:::0;:::o;16293:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;17240:40::-;;;;;;;;;;;;;:::o;23018:139::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23138:10:::1;23105:22;;:44;;;;;;;;;;;;;;;;;;23018:139:::0;:::o;16122:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6917:90::-;6957:7;6984:15;6977:22;;6917:90;:::o;16602:34::-;;;;:::o;23892:807::-;23972:22;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24009:35:::1;24066:16;24009:74;;24132:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24114:53;;;24176:4;24183:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24114:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24097:110;;24249:1;24223:28;;:14;:28;;::::0;24220:225:::1;;24337:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24319:74;;;24402:4;24409:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24319:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24302:131;;24220:225;24471:14;24457:11;;:28;;;;;;;;;;;;;;;;;;24537:16;24519:15;;:34;;;;;;;;;;;;;;;;;;24635:4;24591:19;:41;24619:11;;;;;;;;;;;24591:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;24687:4;24650:12;:34;24671:11;;;;;;;;;;;24650:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;23996:703;23892:807:::0;;;:::o;6815:90::-;6861:7;6888:9;;6881:16;;6815:90;:::o;16643:35::-;;;;:::o;19487:119::-;19553:7;19580:9;:18;19590:7;19580:18;;;;;;;;;;;;;;;;19573:25;;19487:119;;;:::o;16928:57::-;;;;:::o;16993:54::-;;;;:::o;16767:38::-;;;;:::o;20910:129::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21023:8:::1;20999:12;:21;21012:7;20999:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20910:129:::0;;:::o;16475:36::-;;;;:::o;16238:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;6185:79::-;6223:7;6250:6;;;;;;;;;;;6243:13;;6185:79;:::o;6410:145::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6514:1:::1;6477:40;;6498:6;::::0;::::1;;;;;;;;6477:40;;;;;;;;;;;;6545:1;6528:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6410:145::o:0;19193:87::-;19232:13;19265:7;19258:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19193:87;:::o;20268:120::-;20330:7;20357:23;;20350:30;;20268:120;:::o;16812:44::-;;;;:::o;19991:269::-;20084:4;20101:129;20110:12;:10;:12::i;:::-;20124:7;20133:96;20172:15;20133:96;;;;;;;;;;;;;;;;;:11;:25;20145:12;:10;:12::i;:::-;20133:25;;;;;;;;;;;;;;;:34;20159:7;20133:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20101:8;:129::i;:::-;20248:4;20241:11;;19991:269;;;;:::o;23481:125::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23590:8:::1;23562:25;;:36;;;;;;;;;;;;;;;;;;23481:125:::0;:::o;7253:305::-;7323:10;7305:28;;:14;;;;;;;;;;;:28;;;7297:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7410:9;;7392:15;:27;7384:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7501:14;;;;;;;;;;;7472:44;;7493:6;;;;;;;;;;7472:44;;;;;;;;;;;;7536:14;;;;;;;;;;;7527:6;;:23;;;;;;;;;;;;;;;;;;7253:305::o;16685:29::-;;;;:::o;24801:167::-;24879:4;24896:42;24906:12;:10;:12::i;:::-;24920:9;24931:6;24896:9;:42::i;:::-;;24956:4;24949:11;;24801:167;;;;:::o;22023:358::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22182:17:::1;22164:15;:35;;;;22228:17;22210:15;:35;;;;22269:12;22256:10;:25;;;;22321:52;22362:10;;22321:36;22341:15;;22321;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;22294:24;:79;;;;22023:358:::0;;;:::o;16432:30::-;;;;:::o;23302:171::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23403:8:::1;23379:21;;:32;;;;;;;;;;;;;;;;;;23427:38;23456:8;23427:38;;;;;;:::i;:::-;;;;;;;;23302:171:::0;:::o;16389:36::-;;;;:::o;17173:26::-;;;;;;;;;;;;;:::o;16518:37::-;;;;:::o;16179:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16562:31::-;;;;:::o;15657:99::-;;;;;;;;;;;;;:::o;17287:45::-;;;;;;;;;;;;;:::o;16347:35::-;;;;:::o;7015:226::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7096:6:::1;::::0;::::1;;;;;;;;7079:14;;:23;;;;;;;;;;;;;;;;;;7130:1;7113:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7173:4;7155:15;:22;;;;:::i;:::-;7143:9;:34;;;;7230:1;7193:40;;7214:6;::::0;::::1;;;;;;;;7193:40;;;;;;;;;;;;7015:226:::0;:::o;19614:143::-;19695:7;19722:11;:18;19734:5;19722:18;;;;;;;;;;;;;;;:27;19741:7;19722:27;;;;;;;;;;;;;;;;19715:34;;19614:143;;;;:::o;22393:111::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22485:11:::1;22470:12;:26;;;;22393:111:::0;:::o;21186:135::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21305:8:::1;21276:17;:26;21294:7;21276:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;21186:135:::0;;:::o;16723:37::-;;;;:::o;22776:102::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22862:8:::1;22848:10;:22;;;;22776:102:::0;:::o;6563:244::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6672:1:::1;6652:22;;:8;:22;;::::0;6644:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6762:8;6733:38;;6754:6;::::0;::::1;;;;;;;;6733:38;;;;;;;;;;;;6791:8;6782:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6563:244:::0;:::o;21047:127::-;6329:12;:10;:12::i;:::-;6319:22;;:6;;;;;;;;;;:22;;;6311:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21160:6:::1;21134:15;:23;21150:6;21134:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;21047:127:::0;;:::o;17339:35::-;;;;;;;;;;;;;:::o;1555:181::-;1613:7;1633:9;1649:1;1645;:5;;;;:::i;:::-;1633:17;;1674:1;1669;:6;;1661:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1727:1;1720:8;;;1555:181;;;;:::o;487:115::-;540:15;583:10;568:26;;487:115;:::o;20565:337::-;20675:1;20658:19;;:5;:19;;;20650:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20756:1;20737:21;;:7;:21;;;20729:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20840:6;20810:11;:18;20822:5;20810:18;;;;;;;;;;;;;;;:27;20829:7;20810:27;;;;;;;;;;;;;;;:36;;;;20878:7;20862:32;;20871:5;20862:32;;;20887:6;20862:32;;;;;;:::i;:::-;;;;;;;;20565:337;;;:::o;25297:1707::-;25384:4;25429:1;25411:20;;:6;:20;;;25403:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25513:1;25492:23;;:9;:23;;;25484:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25571:16;;;;;;;;;;;25568:1429;;;25621:41;25636:6;25644:9;25655:6;25621:14;:41::i;:::-;25614:48;;;;25568:1429;25718:15;:23;25734:6;25718:23;;;;;;;;;;;;;;;;;;;;;;;;;25717:24;:55;;;;;25746:15;:26;25762:9;25746:26;;;;;;;;;;;;;;;;;;;;;;;;;25745:27;25717:55;25714:170;;;25811:12;;25801:6;:22;;25793:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25714:170;25912:28;25943:24;25961:4;25943:9;:24::i;:::-;25912:55;;25982:28;26037:23;;26013:20;:47;;25982:78;;26093:23;:44;;;;;26121:16;;;;;;;;;;;26120:17;26093:44;:69;;;;;26142:12;:20;26155:6;26142:20;;;;;;;;;;;;;;;;;;;;;;;;;26141:21;26093:69;:94;;;;;26166:21;;;;;;;;;;;26093:94;26089:305;;;26225:25;;;;;;;;;;;26222:97;;;26296:23;;26273:46;;26222:97;26338:36;26353:20;26338:14;:36::i;:::-;26089:305;26430:53;26452:6;26430:53;;;;;;;;;;;;;;;;;:9;:17;26440:6;26430:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26410:9;:17;26420:6;26410:17;;;;;;;;;;;;;;;:73;;;;26500:19;26523:17;:25;26541:6;26523:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;26552:17;:28;26570:9;26552:28;;;;;;;;;;;;;;;;;;;;;;;;;26523:57;26522:148;;26636:34;26644:6;26652:9;26663:6;26636:7;:34::i;:::-;26522:148;;;26627:6;26522:148;26500:170;;26690:16;;;;;;;;;;;:51;;;;;26711:19;:30;26731:9;26711:30;;;;;;;;;;;;;;;;;;;;;;;;;26710:31;26690:51;26687:133;;;26809:10;;26768:37;26793:11;26768:20;26778:9;26768;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;26760:60;;;;;;26687:133;26860:37;26885:11;26860:9;:20;26870:9;26860:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;26837:9;:20;26847:9;26837:20;;;;;;;;;;;;;;;:60;;;;26936:9;26919:40;;26928:6;26919:40;;;26947:11;26919:40;;;;;;:::i;:::-;;;;;;;;26981:4;26974:11;;;;;25297:1707;;;;;;:::o;1888:192::-;1974:7;2007:1;2002;:6;;2010:12;1994:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2034:9;2050:1;2046;:5;;;;:::i;:::-;2034:17;;2071:1;2064:8;;;1888:192;;;;;:::o;1744:136::-;1802:7;1829:43;1833:1;1836;1829:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1822:50;;1744:136;;;;:::o;27012:330::-;27105:4;27142:53;27164:6;27142:53;;;;;;;;;;;;;;;;;:9;:17;27152:6;27142:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27122:9;:17;27132:6;27122:17;;;;;;;;;;;;;;;:73;;;;27229:32;27254:6;27229:9;:20;27239:9;27229:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;27206:9;:20;27216:9;27206:20;;;;;;;;;;;;;;;:55;;;;27294:9;27277:35;;27286:6;27277:35;;;27305:6;27277:35;;;;;;:::i;:::-;;;;;;;;27330:4;27323:11;;27012:330;;;;;:::o;27350:1048::-;17816:4;17797:16;;:23;;;;;;;;;;;;;;;;;;27432:19:::1;27454:65;27517:1;27454:58;27487:24;;27454:28;27466:15;;27454:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;27432:87;;27530:21;27554:24;27566:11;27554:7;:11;;:24;;;;:::i;:::-;27530:48;;27591:31;27608:13;27591:16;:31::i;:::-;27633:22;27658:21;27633:46;;27692:19;27714:52;27743:22;27763:1;27743:15;;:19;;:22;;;;:::i;:::-;27714:24;;:28;;:52;;;;:::i;:::-;27692:74;;27787:26;27816:59;27873:1;27816:52;27856:11;27816:35;27835:15;;27816:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;27787:88;;27886:21;27910:47;27945:11;27910:30;27929:10;;27910:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;27886:71;;27968:26;27997:57;28040:13;27997:38;28016:18;27997:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;27968:86;;28091:1;28070:18;:22;28067:104;;;28107:64;28128:22;;;;;;;;;;;28152:18;28107:20;:64::i;:::-;28067:104;28203:1;28187:13;:17;28184:89;;;28219:54;28240:17;;;;;;;;;;;28259:13;28219:20;:54::i;:::-;28184:89;28310:1;28289:18;:22;:41;;;;;28329:1;28315:11;:15;28289:41;28286:104;;;28345:45;28358:11;28371:18;28345:12;:45::i;:::-;28286:104;27411:987;;;;;;;17862:5:::0;17843:16;;:24;;;;;;;;;;;;;;;;;;27350:1048;:::o;29605:622::-;29691:7;29721:17;29741:1;29721:21;;29766:12;:20;29779:6;29766:20;;;;;;;;;;;;;;;;;;;;;;;;;29763:223;;;29815:38;29849:3;29815:29;29826:17;;29815:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;29803:50;;29763:223;;;29883:12;:23;29896:9;29883:23;;;;;;;;;;;;;;;;;;;;;;;;;29880:106;;;29935:39;29970:3;29935:30;29946:18;;29935:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;29923:51;;29880:106;29763:223;30021:1;30009:9;:13;30006:173;;;30066:39;30095:9;30066;:24;30084:4;30066:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;30039:9;:24;30057:4;30039:24;;;;;;;;;;;;;;;:66;;;;30150:4;30125:42;;30134:6;30125:42;;;30157:9;30125:42;;;;;;:::i;:::-;;;;;;;;30006:173;30198:21;30209:9;30198:6;:10;;:21;;;;:::i;:::-;30191:28;;;29605:622;;;;;:::o;2088:250::-;2146:7;2175:1;2170;:6;2166:47;;2200:1;2193:8;;;;2166:47;2225:9;2241:1;2237;:5;;;;:::i;:::-;2225:17;;2270:1;2265;2261;:5;;;;:::i;:::-;:10;2253:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2329:1;2322:8;;;2088:250;;;;;:::o;2346:132::-;2404:7;2431:39;2435:1;2438;2431:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2424:46;;2346:132;;;;:::o;28410:666::-;28536:21;28574:1;28560:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28536:40;;28605:4;28587;28592:1;28587:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28631:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28621:4;28626:1;28621:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28666:62;28683:4;28698:15;;;;;;;;;;;28716:11;28666:8;:62::i;:::-;28767:15;;;;;;;;;;;:66;;;28848:11;28874:1;28918:4;28945;28981:15;28767:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29033:35;29050:11;29063:4;29033:35;;;;;;;:::i;:::-;;;;;;;;28465:611;28410:666;:::o;23754:126::-;23846:9;:18;;:26;23865:6;23846:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23754:126;;:::o;29084:513::-;29232:62;29249:4;29264:15;;;;;;;;;;;29282:11;29232:8;:62::i;:::-;29337:15;;;;;;;;;;;:31;;;29376:9;29409:4;29429:11;29455:1;29498;29541:7;:5;:7::i;:::-;29563:15;29337:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29084:513;;:::o;2486:278::-;2572:7;2604:1;2600;:5;2607:12;2592:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2631:9;2647:1;2643;:5;;;;:::i;:::-;2631:17;;2755:1;2748:8;;;2486: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;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:104::-;4116:7;4145:24;4163:5;4145:24;:::i;:::-;4134:35;;4071:104;;;:::o;4181:142::-;4284:32;4310:5;4284:32;:::i;:::-;4279:3;4272:45;4181:142;;:::o;4329:254::-;4438:4;4476:2;4465:9;4461:18;4453:26;;4489:87;4573:1;4562:9;4558:17;4549:6;4489:87;:::i;:::-;4329:254;;;;:::o;4589:60::-;4617:3;4638:5;4631:12;;4589:60;;;:::o;4655:142::-;4705:9;4738:53;4756:34;4765:24;4783:5;4765:24;:::i;:::-;4756:34;:::i;:::-;4738:53;:::i;:::-;4725:66;;4655:142;;;:::o;4803:126::-;4853:9;4886:37;4917:5;4886:37;:::i;:::-;4873:50;;4803:126;;;:::o;4935:153::-;5012:9;5045:37;5076:5;5045:37;:::i;:::-;5032:50;;4935:153;;;:::o;5094:185::-;5208:64;5266:5;5208:64;:::i;:::-;5203:3;5196:77;5094:185;;:::o;5285:276::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:98;5551:1;5540:9;5536:17;5527:6;5456:98;:::i;:::-;5285:276;;;;:::o;5567:118::-;5654:24;5672:5;5654:24;:::i;:::-;5649:3;5642:37;5567:118;;:::o;5691:222::-;5784:4;5822:2;5811:9;5807:18;5799:26;;5835:71;5903:1;5892:9;5888:17;5879:6;5835:71;:::i;:::-;5691:222;;;;:::o;5919:116::-;5989:21;6004:5;5989:21;:::i;:::-;5982:5;5979:32;5969:60;;6025:1;6022;6015:12;5969:60;5919:116;:::o;6041:133::-;6084:5;6122:6;6109:20;6100:29;;6138:30;6162:5;6138:30;:::i;:::-;6041:133;;;;:::o;6180:468::-;6245:6;6253;6302:2;6290:9;6281:7;6277:23;6273:32;6270:119;;;6308:79;;:::i;:::-;6270:119;6428:1;6453:53;6498:7;6489:6;6478:9;6474:22;6453:53;:::i;:::-;6443:63;;6399:117;6555:2;6581:50;6623:7;6614:6;6603:9;6599:22;6581:50;:::i;:::-;6571:60;;6526:115;6180:468;;;;;:::o;6654:619::-;6731:6;6739;6747;6796:2;6784:9;6775:7;6771:23;6767:32;6764:119;;;6802:79;;:::i;:::-;6764:119;6922:1;6947:53;6992:7;6983:6;6972:9;6968:22;6947:53;:::i;:::-;6937:63;;6893:117;7049:2;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7020:118;7177:2;7203:53;7248:7;7239:6;7228:9;7224:22;7203:53;:::i;:::-;7193:63;;7148:118;6654:619;;;;;:::o;7279:323::-;7335:6;7384:2;7372:9;7363:7;7359:23;7355:32;7352:119;;;7390:79;;:::i;:::-;7352:119;7510:1;7535:50;7577:7;7568:6;7557:9;7553:22;7535:50;:::i;:::-;7525:60;;7481:114;7279:323;;;;:::o;7608:118::-;7695:24;7713:5;7695:24;:::i;:::-;7690:3;7683:37;7608:118;;:::o;7732:222::-;7825:4;7863:2;7852:9;7848:18;7840:26;;7876:71;7944:1;7933:9;7929:17;7920:6;7876:71;:::i;:::-;7732:222;;;;:::o;7960:329::-;8019:6;8068:2;8056:9;8047:7;8043:23;8039:32;8036:119;;;8074:79;;:::i;:::-;8036:119;8194:1;8219:53;8264:7;8255:6;8244:9;8240:22;8219:53;:::i;:::-;8209:63;;8165:117;7960:329;;;;:::o;8295:86::-;8330:7;8370:4;8363:5;8359:16;8348:27;;8295:86;;;:::o;8387:112::-;8470:22;8486:5;8470:22;:::i;:::-;8465:3;8458:35;8387:112;;:::o;8505:214::-;8594:4;8632:2;8621:9;8617:18;8609:26;;8645:67;8709:1;8698:9;8694:17;8685:6;8645:67;:::i;:::-;8505:214;;;;:::o;8725:329::-;8784:6;8833:2;8821:9;8812:7;8808:23;8804:32;8801:119;;;8839:79;;:::i;:::-;8801:119;8959:1;8984:53;9029:7;9020:6;9009:9;9005:22;8984:53;:::i;:::-;8974:63;;8930:117;8725:329;;;;:::o;9060:474::-;9128:6;9136;9185:2;9173:9;9164:7;9160:23;9156:32;9153:119;;;9191:79;;:::i;:::-;9153:119;9311:1;9336:53;9381:7;9372:6;9361:9;9357:22;9336:53;:::i;:::-;9326:63;;9282:117;9438:2;9464:53;9509:7;9500:6;9489:9;9485:22;9464:53;:::i;:::-;9454:63;;9409:118;9060:474;;;;;:::o;9540:180::-;9588:77;9585:1;9578:88;9685:4;9682:1;9675:15;9709:4;9706:1;9699:15;9726:320;9770:6;9807:1;9801:4;9797:12;9787:22;;9854:1;9848:4;9844:12;9875:18;9865:81;;9931:4;9923:6;9919:17;9909:27;;9865:81;9993:2;9985:6;9982:14;9962:18;9959:38;9956:84;;10012:18;;:::i;:::-;9956:84;9777:269;9726:320;;;:::o;10052:182::-;10192:34;10188:1;10180:6;10176:14;10169:58;10052:182;:::o;10240:366::-;10382:3;10403:67;10467:2;10462:3;10403:67;:::i;:::-;10396:74;;10479:93;10568:3;10479:93;:::i;:::-;10597:2;10592:3;10588:12;10581:19;;10240:366;;;:::o;10612:419::-;10778:4;10816:2;10805:9;10801:18;10793:26;;10865:9;10859:4;10855:20;10851:1;10840:9;10836:17;10829:47;10893:131;11019:4;10893:131;:::i;:::-;10885:139;;10612:419;;;:::o;11037:143::-;11094:5;11125:6;11119:13;11110:22;;11141:33;11168:5;11141:33;:::i;:::-;11037:143;;;;:::o;11186:351::-;11256:6;11305:2;11293:9;11284:7;11280:23;11276:32;11273:119;;;11311:79;;:::i;:::-;11273:119;11431:1;11456:64;11512:7;11503:6;11492:9;11488:22;11456:64;:::i;:::-;11446:74;;11402:128;11186:351;;;;:::o;11543:332::-;11664:4;11702:2;11691:9;11687:18;11679:26;;11715:71;11783:1;11772:9;11768:17;11759:6;11715:71;:::i;:::-;11796:72;11864:2;11853:9;11849:18;11840:6;11796:72;:::i;:::-;11543:332;;;;;:::o;11881:222::-;12021:34;12017:1;12009:6;12005:14;11998:58;12090:5;12085:2;12077:6;12073:15;12066:30;11881:222;:::o;12109:366::-;12251:3;12272:67;12336:2;12331:3;12272:67;:::i;:::-;12265:74;;12348:93;12437:3;12348:93;:::i;:::-;12466:2;12461:3;12457:12;12450:19;;12109:366;;;:::o;12481:419::-;12647:4;12685:2;12674:9;12670:18;12662:26;;12734:9;12728:4;12724:20;12720:1;12709:9;12705:17;12698:47;12762:131;12888:4;12762:131;:::i;:::-;12754:139;;12481:419;;;:::o;12906:181::-;13046:33;13042:1;13034:6;13030:14;13023:57;12906:181;:::o;13093:366::-;13235:3;13256:67;13320:2;13315:3;13256:67;:::i;:::-;13249:74;;13332:93;13421:3;13332:93;:::i;:::-;13450:2;13445:3;13441:12;13434:19;;13093:366;;;:::o;13465:419::-;13631:4;13669:2;13658:9;13654:18;13646:26;;13718:9;13712:4;13708:20;13704:1;13693:9;13689:17;13682:47;13746:131;13872:4;13746:131;:::i;:::-;13738:139;;13465:419;;;:::o;13890:180::-;13938:77;13935:1;13928:88;14035:4;14032:1;14025:15;14059:4;14056:1;14049:15;14076:191;14116:3;14135:20;14153:1;14135:20;:::i;:::-;14130:25;;14169:20;14187:1;14169:20;:::i;:::-;14164:25;;14212:1;14209;14205:9;14198:16;;14233:3;14230:1;14227:10;14224:36;;;14240:18;;:::i;:::-;14224:36;14076:191;;;;:::o;14273:225::-;14413:34;14409:1;14401:6;14397:14;14390:58;14482:8;14477:2;14469:6;14465:15;14458:33;14273:225;:::o;14504:366::-;14646:3;14667:67;14731:2;14726:3;14667:67;:::i;:::-;14660:74;;14743:93;14832:3;14743:93;:::i;:::-;14861:2;14856:3;14852:12;14845:19;;14504:366;;;:::o;14876:419::-;15042:4;15080:2;15069:9;15065:18;15057:26;;15129:9;15123:4;15119:20;15115:1;15104:9;15100:17;15093:47;15157:131;15283:4;15157:131;:::i;:::-;15149:139;;14876:419;;;:::o;15301:177::-;15441:29;15437:1;15429:6;15425:14;15418:53;15301:177;:::o;15484:366::-;15626:3;15647:67;15711:2;15706:3;15647:67;:::i;:::-;15640:74;;15723:93;15812:3;15723:93;:::i;:::-;15841:2;15836:3;15832:12;15825:19;;15484:366;;;:::o;15856:419::-;16022:4;16060:2;16049:9;16045:18;16037:26;;16109:9;16103:4;16099:20;16095:1;16084:9;16080:17;16073:47;16137:131;16263:4;16137:131;:::i;:::-;16129:139;;15856:419;;;:::o;16281:223::-;16421:34;16417:1;16409:6;16405:14;16398:58;16490:6;16485:2;16477:6;16473:15;16466:31;16281:223;:::o;16510:366::-;16652:3;16673:67;16737:2;16732:3;16673:67;:::i;:::-;16666:74;;16749:93;16838:3;16749:93;:::i;:::-;16867:2;16862:3;16858:12;16851:19;;16510:366;;;:::o;16882:419::-;17048:4;17086:2;17075:9;17071:18;17063:26;;17135:9;17129:4;17125:20;17121:1;17110:9;17106:17;17099:47;17163:131;17289:4;17163:131;:::i;:::-;17155:139;;16882:419;;;:::o;17307:221::-;17447:34;17443:1;17435:6;17431:14;17424:58;17516:4;17511:2;17503:6;17499:15;17492:29;17307:221;:::o;17534:366::-;17676:3;17697:67;17761:2;17756:3;17697:67;:::i;:::-;17690:74;;17773:93;17862:3;17773:93;:::i;:::-;17891:2;17886:3;17882:12;17875:19;;17534:366;;;:::o;17906:419::-;18072:4;18110:2;18099:9;18095:18;18087:26;;18159:9;18153:4;18149:20;18145:1;18134:9;18130:17;18123:47;18187:131;18313:4;18187:131;:::i;:::-;18179:139;;17906:419;;;:::o;18331:224::-;18471:34;18467:1;18459:6;18455:14;18448:58;18540:7;18535:2;18527:6;18523:15;18516:32;18331:224;:::o;18561:366::-;18703:3;18724:67;18788:2;18783:3;18724:67;:::i;:::-;18717:74;;18800:93;18889:3;18800:93;:::i;:::-;18918:2;18913:3;18909:12;18902:19;;18561:366;;;:::o;18933:419::-;19099:4;19137:2;19126:9;19122:18;19114:26;;19186:9;19180:4;19176:20;19172:1;19161:9;19157:17;19150:47;19214:131;19340:4;19214:131;:::i;:::-;19206:139;;18933:419;;;:::o;19358:222::-;19498:34;19494:1;19486:6;19482:14;19475:58;19567:5;19562:2;19554:6;19550:15;19543:30;19358:222;:::o;19586:366::-;19728:3;19749:67;19813:2;19808:3;19749:67;:::i;:::-;19742:74;;19825:93;19914:3;19825:93;:::i;:::-;19943:2;19938:3;19934:12;19927:19;;19586:366;;;:::o;19958:419::-;20124:4;20162:2;20151:9;20147:18;20139:26;;20211:9;20205:4;20201:20;20197:1;20186:9;20182:17;20175:47;20239:131;20365:4;20239:131;:::i;:::-;20231:139;;19958:419;;;:::o;20383:227::-;20523:34;20519:1;20511:6;20507:14;20500:58;20592:10;20587:2;20579:6;20575:15;20568:35;20383:227;:::o;20616:366::-;20758:3;20779:67;20843:2;20838:3;20779:67;:::i;:::-;20772:74;;20855:93;20944:3;20855:93;:::i;:::-;20973:2;20968:3;20964:12;20957:19;;20616:366;;;:::o;20988:419::-;21154:4;21192:2;21181:9;21177:18;21169:26;;21241:9;21235:4;21231:20;21227:1;21216:9;21212:17;21205:47;21269:131;21395:4;21269:131;:::i;:::-;21261:139;;20988:419;;;:::o;21413:194::-;21453:4;21473:20;21491:1;21473:20;:::i;:::-;21468:25;;21507:20;21525:1;21507:20;:::i;:::-;21502:25;;21551:1;21548;21544:9;21536:17;;21575:1;21569:4;21566:11;21563:37;;;21580:18;;:::i;:::-;21563:37;21413:194;;;;:::o;21613:410::-;21653:7;21676:20;21694:1;21676:20;:::i;:::-;21671:25;;21710:20;21728:1;21710:20;:::i;:::-;21705:25;;21765:1;21762;21758:9;21787:30;21805:11;21787:30;:::i;:::-;21776:41;;21966:1;21957:7;21953:15;21950:1;21947:22;21927:1;21920:9;21900:83;21877:139;;21996:18;;:::i;:::-;21877:139;21661:362;21613:410;;;;:::o;22029:180::-;22077:77;22074:1;22067:88;22174:4;22171:1;22164:15;22198:4;22195:1;22188:15;22215:185;22255:1;22272:20;22290:1;22272:20;:::i;:::-;22267:25;;22306:20;22324:1;22306:20;:::i;:::-;22301:25;;22345:1;22335:35;;22350:18;;:::i;:::-;22335:35;22392:1;22389;22385:9;22380:14;;22215:185;;;;:::o;22406:220::-;22546:34;22542:1;22534:6;22530:14;22523:58;22615:3;22610:2;22602:6;22598:15;22591:28;22406:220;:::o;22632:366::-;22774:3;22795:67;22859:2;22854:3;22795:67;:::i;:::-;22788:74;;22871:93;22960:3;22871:93;:::i;:::-;22989:2;22984:3;22980:12;22973:19;;22632:366;;;:::o;23004:419::-;23170:4;23208:2;23197:9;23193:18;23185:26;;23257:9;23251:4;23247:20;23243:1;23232:9;23228:17;23221:47;23285:131;23411:4;23285:131;:::i;:::-;23277:139;;23004:419;;;:::o;23429:180::-;23477:77;23474:1;23467:88;23574:4;23571:1;23564:15;23598:4;23595:1;23588:15;23615:180;23663:77;23660:1;23653:88;23760:4;23757:1;23750:15;23784:4;23781:1;23774:15;23801:85;23846:7;23875:5;23864:16;;23801:85;;;:::o;23892:158::-;23950:9;23983:61;24001:42;24010:32;24036:5;24010:32;:::i;:::-;24001:42;:::i;:::-;23983:61;:::i;:::-;23970:74;;23892:158;;;:::o;24056:147::-;24151:45;24190:5;24151:45;:::i;:::-;24146:3;24139:58;24056:147;;:::o;24209:114::-;24276:6;24310:5;24304:12;24294:22;;24209:114;;;:::o;24329:184::-;24428:11;24462:6;24457:3;24450:19;24502:4;24497:3;24493:14;24478:29;;24329:184;;;;:::o;24519:132::-;24586:4;24609:3;24601:11;;24639:4;24634:3;24630:14;24622:22;;24519:132;;;:::o;24657:108::-;24734:24;24752:5;24734:24;:::i;:::-;24729:3;24722:37;24657:108;;:::o;24771:179::-;24840:10;24861:46;24903:3;24895:6;24861:46;:::i;:::-;24939:4;24934:3;24930:14;24916:28;;24771:179;;;;:::o;24956:113::-;25026:4;25058;25053:3;25049:14;25041:22;;24956:113;;;:::o;25105:732::-;25224:3;25253:54;25301:5;25253:54;:::i;:::-;25323:86;25402:6;25397:3;25323:86;:::i;:::-;25316:93;;25433:56;25483:5;25433:56;:::i;:::-;25512:7;25543:1;25528:284;25553:6;25550:1;25547:13;25528:284;;;25629:6;25623:13;25656:63;25715:3;25700:13;25656:63;:::i;:::-;25649:70;;25742:60;25795:6;25742:60;:::i;:::-;25732:70;;25588:224;25575:1;25572;25568:9;25563:14;;25528:284;;;25532:14;25828:3;25821:10;;25229:608;;;25105:732;;;;:::o;25843:831::-;26106:4;26144:3;26133:9;26129:19;26121:27;;26158:71;26226:1;26215:9;26211:17;26202:6;26158:71;:::i;:::-;26239:80;26315:2;26304:9;26300:18;26291:6;26239:80;:::i;:::-;26366:9;26360:4;26356:20;26351:2;26340:9;26336:18;26329:48;26394:108;26497:4;26488:6;26394:108;:::i;:::-;26386:116;;26512:72;26580:2;26569:9;26565:18;26556:6;26512:72;:::i;:::-;26594:73;26662:3;26651:9;26647:19;26638:6;26594:73;:::i;:::-;25843:831;;;;;;;;:::o;26680:483::-;26851:4;26889:2;26878:9;26874:18;26866:26;;26902:71;26970:1;26959:9;26955:17;26946:6;26902:71;:::i;:::-;27020:9;27014:4;27010:20;27005:2;26994:9;26990:18;26983:48;27048:108;27151:4;27142:6;27048:108;:::i;:::-;27040:116;;26680:483;;;;;:::o;27169:807::-;27418:4;27456:3;27445:9;27441:19;27433:27;;27470:71;27538:1;27527:9;27523:17;27514:6;27470:71;:::i;:::-;27551:72;27619:2;27608:9;27604:18;27595:6;27551:72;:::i;:::-;27633:80;27709:2;27698:9;27694:18;27685:6;27633:80;:::i;:::-;27723;27799:2;27788:9;27784:18;27775:6;27723:80;:::i;:::-;27813:73;27881:3;27870:9;27866:19;27857:6;27813:73;:::i;:::-;27896;27964:3;27953:9;27949:19;27940:6;27896:73;:::i;:::-;27169:807;;;;;;;;;:::o;27982:143::-;28039:5;28070:6;28064:13;28055:22;;28086:33;28113:5;28086:33;:::i;:::-;27982:143;;;;:::o;28131:663::-;28219:6;28227;28235;28284:2;28272:9;28263:7;28259:23;28255:32;28252:119;;;28290:79;;:::i;:::-;28252:119;28410:1;28435:64;28491:7;28482:6;28471:9;28467:22;28435:64;:::i;:::-;28425:74;;28381:128;28548:2;28574:64;28630:7;28621:6;28610:9;28606:22;28574:64;:::i;:::-;28564:74;;28519:129;28687:2;28713:64;28769:7;28760:6;28749:9;28745:22;28713:64;:::i;:::-;28703:74;;28658:129;28131:663;;;;;:::o
Swarm Source
ipfs://2bd9a8c3dad5e807af49ec12265024acb9bd79a61626382fb36efb09c7c92ac1
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.