ERC-20
NFT
Overview
Max Total Supply
500,000,000,000 RAT
Holders
739 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TheRareAntiquitiesTokenLtd
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-22 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view 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); } pragma solidity >=0.5.0; interface IWETH { function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be 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; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } abstract contract Context { //function _msgSender() internal view virtual returns (address payable) { function _msgSender() internal view virtual returns (address) { return 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; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ 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); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ 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"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } pragma solidity >=0.5.0; interface IRARESwapFactory { 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 pairExist(address pair) external view returns (bool); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function routerInitialize(address) external; function routerAddress() external view returns (address); } pragma solidity >=0.5.0; interface IRARESwapPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function baseToken() external view returns (address); function getTotalFee() external view returns (uint); 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 updateTotalFee(uint totalFee) external returns (bool); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event 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, address _baseToken); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, uint amount0Fee, uint amount1Fee, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; function setBaseToken(address _baseToken) external; } pragma solidity >=0.6.2; interface IRARESwapRouter01 { 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); } pragma solidity >=0.6.2; interface IRARESwapRouter is IRARESwapRouter01 { 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; function pairFeeAddress(address pair) external view returns (address); function adminFee() external view returns (uint256); function feeAddressGet() external view returns (address); } contract TheRareAntiquitiesTokenLtd is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; address public WETH; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; mapping (address => bool) private botWallets; bool botscantrade = false; bool public canTrade = false; // Auto-LP varibales bool private swapping; bool public swapEnabled = true; uint256 public addLiquityThresholdETH = 10**17; // 1 ETH = 10**18 | 0.1 ETH = 10**17 uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 500000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; address public marketingWallet; // marketing wallet address address public antiquitiesWallet; // antiquities Wallet address string private _name = "The Rare Antiquities Token Ltd"; string private _symbol = "RAT"; uint8 private _decimals = 9; // Total Default tax = 10% | 1% reflections | 4% AutoLP | 5% marketing uint256 private _taxFee = 100; // Reflections tax uint256 private _previousTaxFee = _taxFee; // this is split on two equal parts, one for ETH part of the liquidity and other for the token part of the liquidty uint256 private _liquidity = 400; uint256 private _liquidityFee = _liquidity / 2; // adding LP needs ETH and tokens | this collects the ETH for Auto-LP | keep these two values same, do not change uint256 private _autoLPFee = _liquidity / 2; // this collects the native tokens for Auto-LP uint256 private _previousLiquidityFee = _liquidityFee; uint256 private _marketingFee = 200; // marketing tax in BPS | 200 = 2% uint256 private _antiquitiesFee = 300; // antiquities tax in BPS uint256 public _totalTax = _taxFee + _marketingFee + _antiquitiesFee + _liquidity; event SwapEnabled(bool enabled); event SwapETHForTokens( uint256 amountIn, address[] path ); IRARESwapRouter public rareSwapRouter; address public rareSwapPair; address public depwallet; uint256 public _maxTxAmount = 500000000000 * 10**9; // total supply by default, can be changed at will uint256 public _maxWallet = 5000000000 * 10**9; // 1% max wallet by default, can be changed at will modifier onlyExchange() { bool isPair = false; if(msg.sender == rareSwapPair) isPair = true; require( msg.sender == address(rareSwapRouter) || isPair , "RARE: NOT_ALLOWED" ); _; } constructor (address _marketingWallet, address _antiquitiesWallet) { _rOwned[_msgSender()] = _rTotal; marketingWallet = _marketingWallet; antiquitiesWallet = _antiquitiesWallet; rareSwapRouter = IRARESwapRouter(0x5244d856A383fE3cc1339368107B8698B65FFAb8); //RareSwap Router 0x5244d856A383fE3cc1339368107B8698B65FFAb8 WETH = rareSwapRouter.WETH(); // Create a uniswap pair for this new token rareSwapPair = IRARESwapFactory(rareSwapRouter.factory()) .createPair(address(this), WETH); // Set base token in the pair as WETH, which acts as the tax token IRARESwapPair(rareSwapPair).setBaseToken(WETH); IRARESwapPair(rareSwapPair).updateTotalFee(_marketingFee + _antiquitiesFee + _autoLPFee); _approve(_msgSender(), address(rareSwapRouter), _tTotal); depwallet = _msgSender(); //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[depwallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } 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 _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, 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 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 isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _updatePairsFee(uint256 fee) internal { IRARESwapPair(rareSwapPair).updateTotalFee(fee); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setMarketingWallet(address walletAddress) public onlyOwner { marketingWallet = walletAddress; } function setAntiquitiesWallet(address walletAddress) public onlyOwner { antiquitiesWallet = walletAddress; } function _setmaxwalletamount(uint256 amount) external onlyOwner() { require(amount >= 2500000000, "ERR: max wallet amount should exceed 0.5% of the supply"); _maxWallet = amount * 10**9; } function setmaxTxAmount(uint256 amount) external onlyOwner() { require(amount >= 2500000000, "ERR: max tx amount should exceed 0.5% of the supply"); _maxTxAmount = amount * 10**9; } // to change autoLP threshold, GAS savings function setLiquityAddThreshold(uint256 threshold) external onlyOwner { addLiquityThresholdETH = threshold; } // function to to disable autoLP just in case function setSwapEnabled(bool _enabled) external onlyOwner { swapEnabled = _enabled; emit SwapEnabled(_enabled); } // to rescue ETH sent to the contract function clearStuckBalance() public { payable(marketingWallet).transfer(address(this).balance); } function claimERCtoknes(IERC20 tokenAddress) external { tokenAddress.transfer(marketingWallet, tokenAddress.balanceOf(address(this))); } function addBotWallet(address botwallet) external onlyOwner() { require(botwallet != rareSwapPair,"Cannot add pair as a bot"); require(botwallet != address(this),"Cannot add CA as a bot"); botWallets[botwallet] = true; } function removeBotWallet(address botwallet) external onlyOwner() { botWallets[botwallet] = false; } function getBotWalletStatus(address botwallet) public view returns (bool) { return botWallets[botwallet]; } function EnableTrading()external onlyOwner() { canTrade = true; } // in case RareSwap launches new router V2 function changeRouter(address _newRouter, uint256 _fees) public onlyOwner() { rareSwapRouter = IRARESwapRouter(_newRouter); WETH = rareSwapRouter.WETH(); // Create a uniswap pair for this new token rareSwapPair = IRARESwapFactory(rareSwapRouter.factory()) .createPair(address(this), WETH); // Set base token in the pair as WETH, which acts as the tax token IRARESwapPair(rareSwapPair).setBaseToken(WETH); IRARESwapPair(rareSwapPair).updateTotalFee(_fees); } function setFees(uint256 _reflectionTaxBPS, uint256 _marketingTaxBPS, uint256 _antiquitiesTaxBPS, uint256 _autoLpTaxBPS) public onlyOwner { _taxFee = _reflectionTaxBPS; _marketingFee = _marketingTaxBPS; _antiquitiesFee = _antiquitiesTaxBPS; // AutoLP tax, keep these variables same, DO NOT CHANGE _autoLPFee = _autoLpTaxBPS / 2; _liquidityFee = _autoLpTaxBPS / 2; _totalTax = _taxFee + _marketingFee + _antiquitiesFee + _autoLPFee + _liquidityFee; require(_totalTax <= 1500, "total tax cannot exceed 15%"); require((_marketingFee + _antiquitiesFee + _autoLPFee) >= 100, "ERR: marketing + antiquities tax + autoLP fee must be over 1%"); _updatePairsFee(_marketingFee + _antiquitiesFee + _autoLPFee); } function setBaseToken(address _address) public onlyOwner { IRARESwapPair(rareSwapPair).setBaseToken(_address); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**4 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**4 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } 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 _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(from != owner() && to != owner() && from != address(this)) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); if(from == rareSwapPair && to != depwallet) { require(balanceOf(to) + amount <= _maxWallet, "check max wallet"); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!canTrade){ require(sender == owner()); // only owner allowed to trade or add liquidity } if(botWallets[sender] || botWallets[recipient]){ require(botscantrade, "bots arent allowed to trade"); } if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function depositLPFee(uint256 amount, address token) public onlyExchange { uint256 allowanceT = IERC20(token).allowance(msg.sender, address(this)); if(allowanceT >= amount) { uint256 initialWethbal = (IERC20(token).balanceOf(address(this))); IERC20(token).transferFrom(msg.sender, address(this), amount); // calculate WETH received uint256 wethReceived = (IERC20(token).balanceOf(address(this))) - initialWethbal; // calculate tax amount and send WETH _marketing + _antiquities + _autoLPFee _totalTax uint256 wethDevelopment = (wethReceived * _marketingFee + _antiquitiesFee) / (_marketingFee + _antiquitiesFee + _autoLPFee); // calculate individual tax amount uint256 marketingAmount = (wethDevelopment * _marketingFee) / (_marketingFee + _antiquitiesFee); uint256 antiquitiesAmount = wethDevelopment - marketingAmount; // send WETH to respective wallet IERC20(token).transfer(marketingWallet, marketingAmount); IERC20(token).transfer(antiquitiesWallet, antiquitiesAmount); // check conditions to add liquidity // contracts add liq at 1 ETH threshold, instead of doing at each tx // Gas optimizations uint256 contractWETHBalance = IERC20(token).balanceOf(address(this)); bool canAddLiquidity = contractWETHBalance >= addLiquityThresholdETH; if (swapEnabled && canAddLiquidity) { if(balanceOf(address(this)) == 0) {return;} IERC20(token).transfer(rareSwapPair, contractWETHBalance); _transfer(address(this), rareSwapPair, balanceOf(address(this))); } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_antiquitiesWallet","type":"address"}],"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":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","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":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_setmaxwalletamount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botwallet","type":"address"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquityThresholdETH","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":[],"name":"antiquitiesWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newRouter","type":"address"},{"internalType":"uint256","name":"_fees","type":"uint256"}],"name":"changeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"}],"name":"claimERCtoknes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"depositLPFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depwallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"botwallet","type":"address"}],"name":"getBotWalletStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rareSwapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rareSwapRouter","outputs":[{"internalType":"contract IRARESwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botwallet","type":"address"}],"name":"removeBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"setAntiquitiesWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setBaseToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionTaxBPS","type":"uint256"},{"internalType":"uint256","name":"_marketingTaxBPS","type":"uint256"},{"internalType":"uint256","name":"_antiquitiesTaxBPS","type":"uint256"},{"internalType":"uint256","name":"_autoLpTaxBPS","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setLiquityAddThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setmaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009805463ff00ffff1916630100000017905567016345785d8a0000600a55681b1ae4d6e2ef500000600b8190556200004090600019620007af565b6200004e90600019620007dc565b600c5560408051808201909152601e8082527f546865205261726520416e74697175697469657320546f6b656e204c7464000060209092019182526200009791601091620006f3565b506040805180820190915260038082526214905560ea1b6020909201918252620000c491601191620006f3565b506012805460ff19166009179055606460138190556014556101906015819055620000f290600290620007f6565b6016556002601554620001069190620007f6565b60175560165460185560c860195561012c601a55601554601a546019546013546200013291906200080d565b6200013e91906200080d565b6200014a91906200080d565b601b55681b1ae4d6e2ef500000601f55674563918244f400006020553480156200017357600080fd5b5060405162003e0738038062003e07833981016040819052620001969162000845565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c543360009081526001602090815260409182902092909255600e80546001600160a01b03199081166001600160a01b0387811691909117909255600f8054821692861692909217909155601c8054735244d856a383fe3cc1339368107b8698b65ffab892168217905581516315ab88c960e31b81529151909263ad5c46489260048082019391829003018186803b1580156200027457600080fd5b505afa15801562000289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002af91906200087d565b600480546001600160a01b0319166001600160a01b03928316178155601c546040805163c45a015560e01b81529051919093169263c45a01559281810192602092909190829003018186803b1580156200030857600080fd5b505afa1580156200031d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034391906200087d565b600480546040516364e329cb60e11b815230928101929092526001600160a01b039081166024830152919091169063c9c6539690604401602060405180830381600087803b1580156200039557600080fd5b505af1158015620003aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d091906200087d565b601d80546001600160a01b0319166001600160a01b03928316908117909155600480546040516316bb6c1360e01b8152931690830152906316bb6c1390602401600060405180830381600087803b1580156200042b57600080fd5b505af115801562000440573d6000803e3d6000fd5b5050601d54601754601a546019546001600160a01b03909316945063d32b9604935090916200047091906200080d565b6200047c91906200080d565b6040518263ffffffff1660e01b81526004016200049b91815260200190565b602060405180830381600087803b158015620004b657600080fd5b505af1158015620004cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f19190620008a2565b506200050f33601c54600b546001600160a01b0390911690620005c7565b601e80546001600160a01b031916339081178255600080546001600160a01b03908116825260056020526040808320805460ff1990811660019081179092553085528285208054821683179055955490921683529091208054909316179091556001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620005b791815260200190565b60405180910390a3505062000903565b6001600160a01b0383166200062f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620006925760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000626565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8280546200070190620008c6565b90600052602060002090601f01602090048101928262000725576000855562000770565b82601f106200074057805160ff191683800117855562000770565b8280016001018555821562000770579182015b828111156200077057825182559160200191906001019062000753565b506200077e92915062000782565b5090565b5b808211156200077e576000815560010162000783565b634e487b7160e01b600052601260045260246000fd5b600082620007c157620007c162000799565b500690565b634e487b7160e01b600052601160045260246000fd5b600082821015620007f157620007f1620007c6565b500390565b60008262000808576200080862000799565b500490565b60008219821115620008235762000823620007c6565b500190565b80516001600160a01b03811681146200084057600080fd5b919050565b600080604083850312156200085957600080fd5b620008648362000828565b9150620008746020840162000828565b90509250929050565b6000602082840312156200089057600080fd5b6200089b8262000828565b9392505050565b600060208284031215620008b557600080fd5b815180151581146200089b57600080fd5b600181811c90821680620008db57607f821691505b60208210811415620008fd57634e487b7160e01b600052602260045260246000fd5b50919050565b6134f480620009136000396000f3fe6080604052600436106103035760003560e01c806365e47de21161019057806395d89b41116100dc578063dbc4c42d11610095578063e34420b41161006f578063e34420b414610955578063ea2f0b3714610975578063f2fde38b14610995578063ff64821e146109b557600080fd5b8063dbc4c42d146108cf578063dd62ed3e146108ef578063e01af92c1461093557600080fd5b806395d89b4114610824578063a1ca534714610839578063a457c2d71461084f578063a9059cbb1461086f578063ad5c46481461088f578063b86f9222146108af57600080fd5b80637d1db4a5116101495780638283bbf3116101235780638283bbf31461078d57806383189c07146107ad57806388f82020146107cd5780638da5cb5b1461080657600080fd5b80637d1db4a5146107415780637d35aa931461075757806382247ec01461077757600080fd5b806365e47de2146106735780636ddd1713146106935780636fcba377146106b457806370a08231146106d4578063715018a6146106f457806375f0a8741461070957600080fd5b8063313ce5671161024f578063437823ec1161020857806352390c02116101e257806352390c02146105c15780635342acb4146105e15780635d098b381461061a57806360d484891461063a57600080fd5b8063437823ec146105615780634549b03914610581578063495e180c146105a157600080fd5b8063313ce567146104aa5780633277e338146104cc578063364333f4146104ec5780633685d4191461050157806339509351146105215780633bd5d1731461054157600080fd5b806318160ddd116102bc57806323b872dd1161029657806323b872dd1461042b5780632a3606311461044b5780632d8381191461046b5780632f05205c1461048b57600080fd5b806318160ddd146103eb5780631d97b7cd14610400578063219da1ea1461041557600080fd5b80630305caff1461030f57806306fdde0314610331578063095ea7b31461035c5780631080afd51461038c57806313114a9d146103ac57806316bb6c13146103cb57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032f61032a366004613109565b6109d5565b005b34801561033d57600080fd5b50610346610a29565b6040516103539190613126565b60405180910390f35b34801561036857600080fd5b5061037c61037736600461317b565b610abb565b6040519015158152602001610353565b34801561039857600080fd5b5061032f6103a7366004613109565b610ad2565b3480156103b857600080fd5b50600d545b604051908152602001610353565b3480156103d757600080fd5b5061032f6103e6366004613109565b610b1e565b3480156103f757600080fd5b50600b546103bd565b34801561040c57600080fd5b5061032f610baa565b34801561042157600080fd5b506103bd600a5481565b34801561043757600080fd5b5061037c6104463660046131a7565b610be5565b34801561045757600080fd5b5061032f610466366004613109565b610c4e565b34801561047757600080fd5b506103bd6104863660046131e8565b610d4c565b34801561049757600080fd5b5060095461037c90610100900460ff1681565b3480156104b657600080fd5b5060125460405160ff9091168152602001610353565b3480156104d857600080fd5b5061032f6104e7366004613109565b610dd0565b3480156104f857600080fd5b5061032f610ed9565b34801561050d57600080fd5b5061032f61051c366004613109565b610f15565b34801561052d57600080fd5b5061037c61053c36600461317b565b6110c8565b34801561054d57600080fd5b5061032f61055c3660046131e8565b6110fe565b34801561056d57600080fd5b5061032f61057c366004613109565b6111e8565b34801561058d57600080fd5b506103bd61059c36600461320f565b611236565b3480156105ad57600080fd5b5061032f6105bc3660046131e8565b6112c3565b3480156105cd57600080fd5b5061032f6105dc366004613109565b61137b565b3480156105ed57600080fd5b5061037c6105fc366004613109565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561062657600080fd5b5061032f610635366004613109565b6114ce565b34801561064657600080fd5b5061037c610655366004613109565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561067f57600080fd5b5061032f61068e3660046131e8565b61151a565b34801561069f57600080fd5b5060095461037c906301000000900460ff1681565b3480156106c057600080fd5b5061032f6106cf36600461323f565b6115c8565b3480156106e057600080fd5b506103bd6106ef366004613109565b611767565b34801561070057600080fd5b5061032f6117c6565b34801561071557600080fd5b50600e54610729906001600160a01b031681565b6040516001600160a01b039091168152602001610353565b34801561074d57600080fd5b506103bd601f5481565b34801561076357600080fd5b50601d54610729906001600160a01b031681565b34801561078357600080fd5b506103bd60205481565b34801561079957600080fd5b5061032f6107a8366004613271565b61183a565b3480156107b957600080fd5b5061032f6107c83660046131e8565b611db9565b3480156107d957600080fd5b5061037c6107e8366004613109565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561081257600080fd5b506000546001600160a01b0316610729565b34801561083057600080fd5b50610346611de8565b34801561084557600080fd5b506103bd601b5481565b34801561085b57600080fd5b5061037c61086a36600461317b565b611df7565b34801561087b57600080fd5b5061037c61088a36600461317b565b611e46565b34801561089b57600080fd5b50600454610729906001600160a01b031681565b3480156108bb57600080fd5b50601e54610729906001600160a01b031681565b3480156108db57600080fd5b5061032f6108ea36600461317b565b611e53565b3480156108fb57600080fd5b506103bd61090a366004613296565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561094157600080fd5b5061032f6109503660046132c4565b612112565b34801561096157600080fd5b50600f54610729906001600160a01b031681565b34801561098157600080fd5b5061032f610990366004613109565b612194565b3480156109a157600080fd5b5061032f6109b0366004613109565b6121df565b3480156109c157600080fd5b50601c54610729906001600160a01b031681565b6000546001600160a01b03163314610a085760405162461bcd60e51b81526004016109ff906132e1565b60405180910390fd5b6001600160a01b03166000908152600860205260409020805460ff19169055565b606060108054610a3890613316565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6490613316565b8015610ab15780601f10610a8657610100808354040283529160200191610ab1565b820191906000526020600020905b815481529060010190602001808311610a9457829003601f168201915b5050505050905090565b6000610ac83384846122c9565b5060015b92915050565b6000546001600160a01b03163314610afc5760405162461bcd60e51b81526004016109ff906132e1565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b485760405162461bcd60e51b81526004016109ff906132e1565b601d546040516316bb6c1360e01b81526001600160a01b038381166004830152909116906316bb6c1390602401600060405180830381600087803b158015610b8f57600080fd5b505af1158015610ba3573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610bd45760405162461bcd60e51b81526004016109ff906132e1565b6009805461ff001916610100179055565b6000610bf28484846123ed565b610c448433610c3f85604051806060016040528060288152602001613472602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061269d565b6122c9565b5060019392505050565b6000546001600160a01b03163314610c785760405162461bcd60e51b81526004016109ff906132e1565b601d546001600160a01b0382811691161415610cd65760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74206164642070616972206173206120626f74000000000000000060448201526064016109ff565b6001600160a01b038116301415610d285760405162461bcd60e51b815260206004820152601660248201527510d85b9b9bdd081859190810d048185cc81848189bdd60521b60448201526064016109ff565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600c54821115610db35760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109ff565b6000610dbd6126d7565b9050610dc983826126fa565b9392505050565b600e546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a082319060240160206040518083038186803b158015610e1e57600080fd5b505afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190613351565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015b602060405180830381600087803b158015610e9d57600080fd5b505af1158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed5919061336a565b5050565b600e546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f12573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610f3f5760405162461bcd60e51b81526004016109ff906132e1565b6001600160a01b03811660009081526006602052604090205460ff16610fa75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ff565b60005b600754811015610ed557816001600160a01b031660078281548110610fd157610fd1613387565b6000918252602090912001546001600160a01b031614156110b65760078054610ffc906001906133b3565b8154811061100c5761100c613387565b600091825260209091200154600780546001600160a01b03909216918390811061103857611038613387565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff191690556007805480611090576110906133ca565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110c0816133e0565b915050610faa565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610ac8918590610c3f908661273c565b3360008181526006602052604090205460ff16156111735760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109ff565b600061117e8361279b565b505050506001600160a01b0384166000908152600160205260409020549192506111aa919050826127ea565b6001600160a01b038316600090815260016020526040902055600c546111d090826127ea565b600c55600d546111e0908461273c565b600d55505050565b6000546001600160a01b031633146112125760405162461bcd60e51b81526004016109ff906132e1565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000600b5483111561128a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109ff565b816112a957600061129a8461279b565b50939550610acc945050505050565b60006112b48461279b565b50929550610acc945050505050565b6000546001600160a01b031633146112ed5760405162461bcd60e51b81526004016109ff906132e1565b639502f9008110156113675760405162461bcd60e51b815260206004820152603760248201527f4552523a206d61782077616c6c657420616d6f756e742073686f756c6420657860448201527f6365656420302e3525206f662074686520737570706c7900000000000000000060648201526084016109ff565b61137581633b9aca006133fb565b60205550565b6000546001600160a01b031633146113a55760405162461bcd60e51b81526004016109ff906132e1565b6001600160a01b03811660009081526006602052604090205460ff161561140e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ff565b6001600160a01b03811660009081526001602052604090205415611468576001600160a01b03811660009081526001602052604090205461144e90610d4c565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146114f85760405162461bcd60e51b81526004016109ff906132e1565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115445760405162461bcd60e51b81526004016109ff906132e1565b639502f9008110156115b45760405162461bcd60e51b815260206004820152603360248201527f4552523a206d617820747820616d6f756e742073686f756c642065786365656460448201527220302e3525206f662074686520737570706c7960681b60648201526084016109ff565b6115c281633b9aca006133fb565b601f5550565b6000546001600160a01b031633146115f25760405162461bcd60e51b81526004016109ff906132e1565b60138490556019839055601a82905561160c60028261341a565b60175561161a60028261341a565b6016819055601754601a54601954601354611635919061343c565b61163f919061343c565b611649919061343c565b611653919061343c565b601b8190556105dc10156116a95760405162461bcd60e51b815260206004820152601b60248201527f746f74616c207461782063616e6e6f742065786365656420313525000000000060448201526064016109ff565b6064601754601a546019546116be919061343c565b6116c8919061343c565b101561173c5760405162461bcd60e51b815260206004820152603d60248201527f4552523a206d61726b6574696e67202b20616e7469717569746965732074617860448201527f202b206175746f4c5020666565206d757374206265206f76657220312500000060648201526084016109ff565b611761601754601a54601954611752919061343c565b61175c919061343c565b61282c565b50505050565b6001600160a01b03811660009081526006602052604081205460ff16156117a457506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610acc90610d4c565b6000546001600160a01b031633146117f05760405162461bcd60e51b81526004016109ff906132e1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b601d546000906001600160a01b0316331415611854575060015b601c546001600160a01b031633148061186a5750805b6118aa5760405162461bcd60e51b8152602060048201526011602482015270149054914e881393d517d0531313d5d151607a1b60448201526064016109ff565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0384169063dd62ed3e9060440160206040518083038186803b1580156118f257600080fd5b505afa158015611906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192a9190613351565b9050838110611761576040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b15801561197557600080fd5b505afa158015611989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ad9190613351565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506001600160a01b038516906323b872dd90606401602060405180830381600087803b1580156119fe57600080fd5b505af1158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a36919061336a565b506040516370a0823160e01b815230600482015260009082906001600160a01b038716906370a082319060240160206040518083038186803b158015611a7b57600080fd5b505afa158015611a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab39190613351565b611abd91906133b3565b90506000601754601a54601954611ad4919061343c565b611ade919061343c565b601a54601954611aee90856133fb565b611af8919061343c565b611b02919061341a565b90506000601a54601954611b16919061343c565b601954611b2390846133fb565b611b2d919061341a565b90506000611b3b82846133b3565b600e5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291925089169063a9059cbb90604401602060405180830381600087803b158015611b8b57600080fd5b505af1158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc3919061336a565b50600f5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529089169063a9059cbb90604401602060405180830381600087803b158015611c1257600080fd5b505af1158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a919061336a565b506040516370a0823160e01b81523060048201526000906001600160a01b038a16906370a082319060240160206040518083038186803b158015611c8d57600080fd5b505afa158015611ca1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc59190613351565b600a54600954919250821015906301000000900460ff168015611ce55750805b15611dab57611cf330611767565b611d04575050505050505050505050565b601d5460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908b169063a9059cbb90604401602060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8a919061336a565b50601d54611dab9030906001600160a01b0316611da682611767565b6123ed565b50505050505050505b505050565b6000546001600160a01b03163314611de35760405162461bcd60e51b81526004016109ff906132e1565b600a55565b606060118054610a3890613316565b6000610ac83384610c3f8560405180606001604052806025815260200161349a602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061269d565b6000610ac83384846123ed565b6000546001600160a01b03163314611e7d5760405162461bcd60e51b81526004016109ff906132e1565b601c80546001600160a01b0319166001600160a01b038416908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b158015611ed157600080fd5b505afa158015611ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f099190613454565b600480546001600160a01b0319166001600160a01b03928316178155601c546040805163c45a015560e01b81529051919093169263c45a01559281810192602092909190829003018186803b158015611f6157600080fd5b505afa158015611f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f999190613454565b600480546040516364e329cb60e11b815230928101929092526001600160a01b039081166024830152919091169063c9c6539690604401602060405180830381600087803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120229190613454565b601d80546001600160a01b0319166001600160a01b03928316908117909155600480546040516316bb6c1360e01b8152931690830152906316bb6c1390602401600060405180830381600087803b15801561207c57600080fd5b505af1158015612090573d6000803e3d6000fd5b5050601d546040516334cae58160e21b8152600481018590526001600160a01b03909116925063d32b96049150602401602060405180830381600087803b1580156120da57600080fd5b505af11580156120ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db4919061336a565b6000546001600160a01b0316331461213c5760405162461bcd60e51b81526004016109ff906132e1565b6009805482151563010000000263ff000000199091161790556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c89061218990831515815260200190565b60405180910390a150565b6000546001600160a01b031633146121be5760405162461bcd60e51b81526004016109ff906132e1565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146122095760405162461bcd60e51b81526004016109ff906132e1565b6001600160a01b03811661226e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ff565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661232b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ff565b6001600160a01b03821661238c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ff565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166124515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ff565b6001600160a01b0382166124b35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ff565b600081116125155760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109ff565b6000546001600160a01b0384811691161480159061254157506000546001600160a01b03838116911614155b801561255657506001600160a01b0383163014155b156125be57601f548111156125be5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109ff565b601d546001600160a01b0384811691161480156125e95750601e546001600160a01b03838116911614155b1561264657602054816125fb84611767565b612605919061343c565b11156126465760405162461bcd60e51b815260206004820152601060248201526f18da1958dac81b585e081dd85b1b195d60821b60448201526064016109ff565b6001600160a01b03831660009081526005602052604090205460019060ff168061268857506001600160a01b03831660009081526005602052604090205460ff165b15612691575060005b6117618484848461285d565b600081848411156126c15760405162461bcd60e51b81526004016109ff9190613126565b5060006126ce84866133b3565b95945050505050565b60008060006126e4612a93565b90925090506126f382826126fa565b9250505090565b6000610dc983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c15565b600080612749838561343c565b905083811015610dc95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109ff565b60008060008060008060008060006127b28a612c43565b92509250925060008060006127d08d86866127cb6126d7565b612c85565b919f909e50909c50959a5093985091965092945050505050565b6000610dc983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061269d565b601d546040516334cae58160e21b8152600481018390526001600160a01b039091169063d32b960490602401610e83565b600954610100900460ff16612886576000546001600160a01b0385811691161461288657600080fd5b6001600160a01b03841660009081526008602052604090205460ff16806128c557506001600160a01b03831660009081526008602052604090205460ff165b1561291c5760095460ff1661291c5760405162461bcd60e51b815260206004820152601b60248201527f626f7473206172656e7420616c6c6f77656420746f207472616465000000000060448201526064016109ff565b8061292957612929612cd5565b6001600160a01b03841660009081526006602052604090205460ff16801561296a57506001600160a01b03831660009081526006602052604090205460ff16155b1561297f5761297a848484612d03565b612a7d565b6001600160a01b03841660009081526006602052604090205460ff161580156129c057506001600160a01b03831660009081526006602052604090205460ff165b156129d05761297a848484612e29565b6001600160a01b03841660009081526006602052604090205460ff16158015612a1257506001600160a01b03831660009081526006602052604090205460ff16155b15612a225761297a848484612ed2565b6001600160a01b03841660009081526006602052604090205460ff168015612a6257506001600160a01b03831660009081526006602052604090205460ff165b15612a725761297a848484612f16565b612a7d848484612ed2565b8061176157611761601454601355601854601655565b600c54600b546000918291825b600754811015612be557826001600060078481548110612ac257612ac2613387565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612b2d5750816002600060078481548110612b0657612b06613387565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b4357600c54600b54945094505050509091565b612b896001600060078481548110612b5d57612b5d613387565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906127ea565b9250612bd16002600060078481548110612ba557612ba5613387565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906127ea565b915080612bdd816133e0565b915050612aa0565b50600b54600c54612bf5916126fa565b821015612c0c57600c54600b549350935050509091565b90939092509050565b60008183612c365760405162461bcd60e51b81526004016109ff9190613126565b5060006126ce848661341a565b600080600080612c5285612f89565b90506000612c5f86612fac565b90506000612c7782612c7189866127ea565b906127ea565b979296509094509092505050565b6000808080612c948886612fc9565b90506000612ca28887612fc9565b90506000612cb08888612fc9565b90506000612cc282612c7186866127ea565b939b939a50919850919650505050505050565b601354158015612ce55750601654155b15612cec57565b601380546014556016805460185560009182905555565b600080600080600080612d158761279b565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612d4790886127ea565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054612d7690876127ea565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054612da5908661273c565b6001600160a01b038916600090815260016020526040902055612dc781613048565b612dd184836130d0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612e1691815260200190565b60405180910390a3505050505050505050565b600080600080600080612e3b8761279b565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150612e6d90876127ea565b6001600160a01b03808b16600090815260016020908152604080832094909455918b16815260029091522054612ea3908461273c565b6001600160a01b038916600090815260026020908152604080832093909355600190522054612da5908661273c565b600080600080600080612ee48761279b565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150612d7690876127ea565b600080600080600080612f288761279b565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612f5a90886127ea565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054612e6d90876127ea565b6000610acc612710612fa660135485612fc990919063ffffffff16565b906126fa565b6000610acc612710612fa660165485612fc990919063ffffffff16565b600082612fd857506000610acc565b6000612fe483856133fb565b905082612ff1858361341a565b14610dc95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109ff565b60006130526126d7565b905060006130608383612fc9565b3060009081526001602052604090205490915061307d908261273c565b3060009081526001602090815260408083209390935560069052205460ff1615611db457306000908152600260205260409020546130bb908461273c565b30600090815260026020526040902055505050565b600c546130dd90836127ea565b600c55600d546130ed908261273c565b600d555050565b6001600160a01b0381168114610f1257600080fd5b60006020828403121561311b57600080fd5b8135610dc9816130f4565b600060208083528351808285015260005b8181101561315357858101830151858201604001528201613137565b81811115613165576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561318e57600080fd5b8235613199816130f4565b946020939093013593505050565b6000806000606084860312156131bc57600080fd5b83356131c7816130f4565b925060208401356131d7816130f4565b929592945050506040919091013590565b6000602082840312156131fa57600080fd5b5035919050565b8015158114610f1257600080fd5b6000806040838503121561322257600080fd5b82359150602083013561323481613201565b809150509250929050565b6000806000806080858703121561325557600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561328457600080fd5b823591506020830135613234816130f4565b600080604083850312156132a957600080fd5b82356132b4816130f4565b91506020830135613234816130f4565b6000602082840312156132d657600080fd5b8135610dc981613201565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061332a57607f821691505b6020821081141561334b57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561336357600080fd5b5051919050565b60006020828403121561337c57600080fd5b8151610dc981613201565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156133c5576133c561339d565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156133f4576133f461339d565b5060010190565b60008160001904831182151516156134155761341561339d565b500290565b60008261343757634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561344f5761344f61339d565b500190565b60006020828403121561346657600080fd5b8151610dc9816130f456fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201e14181b8bf30cbeceb0a70d4ab0a2fe06715285d67a6db8f5bb7621e9b863a864736f6c63430008090033000000000000000000000000cb6b4ff584b1a8859fae51029ba3dce651f5836c000000000000000000000000338037becf48e54b7d86c6a8db38b118bfcd7690
Deployed Bytecode
0x6080604052600436106103035760003560e01c806365e47de21161019057806395d89b41116100dc578063dbc4c42d11610095578063e34420b41161006f578063e34420b414610955578063ea2f0b3714610975578063f2fde38b14610995578063ff64821e146109b557600080fd5b8063dbc4c42d146108cf578063dd62ed3e146108ef578063e01af92c1461093557600080fd5b806395d89b4114610824578063a1ca534714610839578063a457c2d71461084f578063a9059cbb1461086f578063ad5c46481461088f578063b86f9222146108af57600080fd5b80637d1db4a5116101495780638283bbf3116101235780638283bbf31461078d57806383189c07146107ad57806388f82020146107cd5780638da5cb5b1461080657600080fd5b80637d1db4a5146107415780637d35aa931461075757806382247ec01461077757600080fd5b806365e47de2146106735780636ddd1713146106935780636fcba377146106b457806370a08231146106d4578063715018a6146106f457806375f0a8741461070957600080fd5b8063313ce5671161024f578063437823ec1161020857806352390c02116101e257806352390c02146105c15780635342acb4146105e15780635d098b381461061a57806360d484891461063a57600080fd5b8063437823ec146105615780634549b03914610581578063495e180c146105a157600080fd5b8063313ce567146104aa5780633277e338146104cc578063364333f4146104ec5780633685d4191461050157806339509351146105215780633bd5d1731461054157600080fd5b806318160ddd116102bc57806323b872dd1161029657806323b872dd1461042b5780632a3606311461044b5780632d8381191461046b5780632f05205c1461048b57600080fd5b806318160ddd146103eb5780631d97b7cd14610400578063219da1ea1461041557600080fd5b80630305caff1461030f57806306fdde0314610331578063095ea7b31461035c5780631080afd51461038c57806313114a9d146103ac57806316bb6c13146103cb57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032f61032a366004613109565b6109d5565b005b34801561033d57600080fd5b50610346610a29565b6040516103539190613126565b60405180910390f35b34801561036857600080fd5b5061037c61037736600461317b565b610abb565b6040519015158152602001610353565b34801561039857600080fd5b5061032f6103a7366004613109565b610ad2565b3480156103b857600080fd5b50600d545b604051908152602001610353565b3480156103d757600080fd5b5061032f6103e6366004613109565b610b1e565b3480156103f757600080fd5b50600b546103bd565b34801561040c57600080fd5b5061032f610baa565b34801561042157600080fd5b506103bd600a5481565b34801561043757600080fd5b5061037c6104463660046131a7565b610be5565b34801561045757600080fd5b5061032f610466366004613109565b610c4e565b34801561047757600080fd5b506103bd6104863660046131e8565b610d4c565b34801561049757600080fd5b5060095461037c90610100900460ff1681565b3480156104b657600080fd5b5060125460405160ff9091168152602001610353565b3480156104d857600080fd5b5061032f6104e7366004613109565b610dd0565b3480156104f857600080fd5b5061032f610ed9565b34801561050d57600080fd5b5061032f61051c366004613109565b610f15565b34801561052d57600080fd5b5061037c61053c36600461317b565b6110c8565b34801561054d57600080fd5b5061032f61055c3660046131e8565b6110fe565b34801561056d57600080fd5b5061032f61057c366004613109565b6111e8565b34801561058d57600080fd5b506103bd61059c36600461320f565b611236565b3480156105ad57600080fd5b5061032f6105bc3660046131e8565b6112c3565b3480156105cd57600080fd5b5061032f6105dc366004613109565b61137b565b3480156105ed57600080fd5b5061037c6105fc366004613109565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561062657600080fd5b5061032f610635366004613109565b6114ce565b34801561064657600080fd5b5061037c610655366004613109565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561067f57600080fd5b5061032f61068e3660046131e8565b61151a565b34801561069f57600080fd5b5060095461037c906301000000900460ff1681565b3480156106c057600080fd5b5061032f6106cf36600461323f565b6115c8565b3480156106e057600080fd5b506103bd6106ef366004613109565b611767565b34801561070057600080fd5b5061032f6117c6565b34801561071557600080fd5b50600e54610729906001600160a01b031681565b6040516001600160a01b039091168152602001610353565b34801561074d57600080fd5b506103bd601f5481565b34801561076357600080fd5b50601d54610729906001600160a01b031681565b34801561078357600080fd5b506103bd60205481565b34801561079957600080fd5b5061032f6107a8366004613271565b61183a565b3480156107b957600080fd5b5061032f6107c83660046131e8565b611db9565b3480156107d957600080fd5b5061037c6107e8366004613109565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561081257600080fd5b506000546001600160a01b0316610729565b34801561083057600080fd5b50610346611de8565b34801561084557600080fd5b506103bd601b5481565b34801561085b57600080fd5b5061037c61086a36600461317b565b611df7565b34801561087b57600080fd5b5061037c61088a36600461317b565b611e46565b34801561089b57600080fd5b50600454610729906001600160a01b031681565b3480156108bb57600080fd5b50601e54610729906001600160a01b031681565b3480156108db57600080fd5b5061032f6108ea36600461317b565b611e53565b3480156108fb57600080fd5b506103bd61090a366004613296565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561094157600080fd5b5061032f6109503660046132c4565b612112565b34801561096157600080fd5b50600f54610729906001600160a01b031681565b34801561098157600080fd5b5061032f610990366004613109565b612194565b3480156109a157600080fd5b5061032f6109b0366004613109565b6121df565b3480156109c157600080fd5b50601c54610729906001600160a01b031681565b6000546001600160a01b03163314610a085760405162461bcd60e51b81526004016109ff906132e1565b60405180910390fd5b6001600160a01b03166000908152600860205260409020805460ff19169055565b606060108054610a3890613316565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6490613316565b8015610ab15780601f10610a8657610100808354040283529160200191610ab1565b820191906000526020600020905b815481529060010190602001808311610a9457829003601f168201915b5050505050905090565b6000610ac83384846122c9565b5060015b92915050565b6000546001600160a01b03163314610afc5760405162461bcd60e51b81526004016109ff906132e1565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b485760405162461bcd60e51b81526004016109ff906132e1565b601d546040516316bb6c1360e01b81526001600160a01b038381166004830152909116906316bb6c1390602401600060405180830381600087803b158015610b8f57600080fd5b505af1158015610ba3573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610bd45760405162461bcd60e51b81526004016109ff906132e1565b6009805461ff001916610100179055565b6000610bf28484846123ed565b610c448433610c3f85604051806060016040528060288152602001613472602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061269d565b6122c9565b5060019392505050565b6000546001600160a01b03163314610c785760405162461bcd60e51b81526004016109ff906132e1565b601d546001600160a01b0382811691161415610cd65760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74206164642070616972206173206120626f74000000000000000060448201526064016109ff565b6001600160a01b038116301415610d285760405162461bcd60e51b815260206004820152601660248201527510d85b9b9bdd081859190810d048185cc81848189bdd60521b60448201526064016109ff565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600c54821115610db35760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109ff565b6000610dbd6126d7565b9050610dc983826126fa565b9392505050565b600e546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a082319060240160206040518083038186803b158015610e1e57600080fd5b505afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190613351565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015b602060405180830381600087803b158015610e9d57600080fd5b505af1158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed5919061336a565b5050565b600e546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f12573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610f3f5760405162461bcd60e51b81526004016109ff906132e1565b6001600160a01b03811660009081526006602052604090205460ff16610fa75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ff565b60005b600754811015610ed557816001600160a01b031660078281548110610fd157610fd1613387565b6000918252602090912001546001600160a01b031614156110b65760078054610ffc906001906133b3565b8154811061100c5761100c613387565b600091825260209091200154600780546001600160a01b03909216918390811061103857611038613387565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff191690556007805480611090576110906133ca565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110c0816133e0565b915050610faa565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610ac8918590610c3f908661273c565b3360008181526006602052604090205460ff16156111735760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109ff565b600061117e8361279b565b505050506001600160a01b0384166000908152600160205260409020549192506111aa919050826127ea565b6001600160a01b038316600090815260016020526040902055600c546111d090826127ea565b600c55600d546111e0908461273c565b600d55505050565b6000546001600160a01b031633146112125760405162461bcd60e51b81526004016109ff906132e1565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000600b5483111561128a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109ff565b816112a957600061129a8461279b565b50939550610acc945050505050565b60006112b48461279b565b50929550610acc945050505050565b6000546001600160a01b031633146112ed5760405162461bcd60e51b81526004016109ff906132e1565b639502f9008110156113675760405162461bcd60e51b815260206004820152603760248201527f4552523a206d61782077616c6c657420616d6f756e742073686f756c6420657860448201527f6365656420302e3525206f662074686520737570706c7900000000000000000060648201526084016109ff565b61137581633b9aca006133fb565b60205550565b6000546001600160a01b031633146113a55760405162461bcd60e51b81526004016109ff906132e1565b6001600160a01b03811660009081526006602052604090205460ff161561140e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ff565b6001600160a01b03811660009081526001602052604090205415611468576001600160a01b03811660009081526001602052604090205461144e90610d4c565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146114f85760405162461bcd60e51b81526004016109ff906132e1565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115445760405162461bcd60e51b81526004016109ff906132e1565b639502f9008110156115b45760405162461bcd60e51b815260206004820152603360248201527f4552523a206d617820747820616d6f756e742073686f756c642065786365656460448201527220302e3525206f662074686520737570706c7960681b60648201526084016109ff565b6115c281633b9aca006133fb565b601f5550565b6000546001600160a01b031633146115f25760405162461bcd60e51b81526004016109ff906132e1565b60138490556019839055601a82905561160c60028261341a565b60175561161a60028261341a565b6016819055601754601a54601954601354611635919061343c565b61163f919061343c565b611649919061343c565b611653919061343c565b601b8190556105dc10156116a95760405162461bcd60e51b815260206004820152601b60248201527f746f74616c207461782063616e6e6f742065786365656420313525000000000060448201526064016109ff565b6064601754601a546019546116be919061343c565b6116c8919061343c565b101561173c5760405162461bcd60e51b815260206004820152603d60248201527f4552523a206d61726b6574696e67202b20616e7469717569746965732074617860448201527f202b206175746f4c5020666565206d757374206265206f76657220312500000060648201526084016109ff565b611761601754601a54601954611752919061343c565b61175c919061343c565b61282c565b50505050565b6001600160a01b03811660009081526006602052604081205460ff16156117a457506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610acc90610d4c565b6000546001600160a01b031633146117f05760405162461bcd60e51b81526004016109ff906132e1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b601d546000906001600160a01b0316331415611854575060015b601c546001600160a01b031633148061186a5750805b6118aa5760405162461bcd60e51b8152602060048201526011602482015270149054914e881393d517d0531313d5d151607a1b60448201526064016109ff565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0384169063dd62ed3e9060440160206040518083038186803b1580156118f257600080fd5b505afa158015611906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192a9190613351565b9050838110611761576040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b15801561197557600080fd5b505afa158015611989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ad9190613351565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506001600160a01b038516906323b872dd90606401602060405180830381600087803b1580156119fe57600080fd5b505af1158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a36919061336a565b506040516370a0823160e01b815230600482015260009082906001600160a01b038716906370a082319060240160206040518083038186803b158015611a7b57600080fd5b505afa158015611a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab39190613351565b611abd91906133b3565b90506000601754601a54601954611ad4919061343c565b611ade919061343c565b601a54601954611aee90856133fb565b611af8919061343c565b611b02919061341a565b90506000601a54601954611b16919061343c565b601954611b2390846133fb565b611b2d919061341a565b90506000611b3b82846133b3565b600e5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291925089169063a9059cbb90604401602060405180830381600087803b158015611b8b57600080fd5b505af1158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc3919061336a565b50600f5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529089169063a9059cbb90604401602060405180830381600087803b158015611c1257600080fd5b505af1158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a919061336a565b506040516370a0823160e01b81523060048201526000906001600160a01b038a16906370a082319060240160206040518083038186803b158015611c8d57600080fd5b505afa158015611ca1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc59190613351565b600a54600954919250821015906301000000900460ff168015611ce55750805b15611dab57611cf330611767565b611d04575050505050505050505050565b601d5460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908b169063a9059cbb90604401602060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8a919061336a565b50601d54611dab9030906001600160a01b0316611da682611767565b6123ed565b50505050505050505b505050565b6000546001600160a01b03163314611de35760405162461bcd60e51b81526004016109ff906132e1565b600a55565b606060118054610a3890613316565b6000610ac83384610c3f8560405180606001604052806025815260200161349a602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061269d565b6000610ac83384846123ed565b6000546001600160a01b03163314611e7d5760405162461bcd60e51b81526004016109ff906132e1565b601c80546001600160a01b0319166001600160a01b038416908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b158015611ed157600080fd5b505afa158015611ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f099190613454565b600480546001600160a01b0319166001600160a01b03928316178155601c546040805163c45a015560e01b81529051919093169263c45a01559281810192602092909190829003018186803b158015611f6157600080fd5b505afa158015611f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f999190613454565b600480546040516364e329cb60e11b815230928101929092526001600160a01b039081166024830152919091169063c9c6539690604401602060405180830381600087803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120229190613454565b601d80546001600160a01b0319166001600160a01b03928316908117909155600480546040516316bb6c1360e01b8152931690830152906316bb6c1390602401600060405180830381600087803b15801561207c57600080fd5b505af1158015612090573d6000803e3d6000fd5b5050601d546040516334cae58160e21b8152600481018590526001600160a01b03909116925063d32b96049150602401602060405180830381600087803b1580156120da57600080fd5b505af11580156120ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db4919061336a565b6000546001600160a01b0316331461213c5760405162461bcd60e51b81526004016109ff906132e1565b6009805482151563010000000263ff000000199091161790556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c89061218990831515815260200190565b60405180910390a150565b6000546001600160a01b031633146121be5760405162461bcd60e51b81526004016109ff906132e1565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146122095760405162461bcd60e51b81526004016109ff906132e1565b6001600160a01b03811661226e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ff565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661232b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ff565b6001600160a01b03821661238c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ff565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166124515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ff565b6001600160a01b0382166124b35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ff565b600081116125155760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109ff565b6000546001600160a01b0384811691161480159061254157506000546001600160a01b03838116911614155b801561255657506001600160a01b0383163014155b156125be57601f548111156125be5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109ff565b601d546001600160a01b0384811691161480156125e95750601e546001600160a01b03838116911614155b1561264657602054816125fb84611767565b612605919061343c565b11156126465760405162461bcd60e51b815260206004820152601060248201526f18da1958dac81b585e081dd85b1b195d60821b60448201526064016109ff565b6001600160a01b03831660009081526005602052604090205460019060ff168061268857506001600160a01b03831660009081526005602052604090205460ff165b15612691575060005b6117618484848461285d565b600081848411156126c15760405162461bcd60e51b81526004016109ff9190613126565b5060006126ce84866133b3565b95945050505050565b60008060006126e4612a93565b90925090506126f382826126fa565b9250505090565b6000610dc983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c15565b600080612749838561343c565b905083811015610dc95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109ff565b60008060008060008060008060006127b28a612c43565b92509250925060008060006127d08d86866127cb6126d7565b612c85565b919f909e50909c50959a5093985091965092945050505050565b6000610dc983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061269d565b601d546040516334cae58160e21b8152600481018390526001600160a01b039091169063d32b960490602401610e83565b600954610100900460ff16612886576000546001600160a01b0385811691161461288657600080fd5b6001600160a01b03841660009081526008602052604090205460ff16806128c557506001600160a01b03831660009081526008602052604090205460ff165b1561291c5760095460ff1661291c5760405162461bcd60e51b815260206004820152601b60248201527f626f7473206172656e7420616c6c6f77656420746f207472616465000000000060448201526064016109ff565b8061292957612929612cd5565b6001600160a01b03841660009081526006602052604090205460ff16801561296a57506001600160a01b03831660009081526006602052604090205460ff16155b1561297f5761297a848484612d03565b612a7d565b6001600160a01b03841660009081526006602052604090205460ff161580156129c057506001600160a01b03831660009081526006602052604090205460ff165b156129d05761297a848484612e29565b6001600160a01b03841660009081526006602052604090205460ff16158015612a1257506001600160a01b03831660009081526006602052604090205460ff16155b15612a225761297a848484612ed2565b6001600160a01b03841660009081526006602052604090205460ff168015612a6257506001600160a01b03831660009081526006602052604090205460ff165b15612a725761297a848484612f16565b612a7d848484612ed2565b8061176157611761601454601355601854601655565b600c54600b546000918291825b600754811015612be557826001600060078481548110612ac257612ac2613387565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612b2d5750816002600060078481548110612b0657612b06613387565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b4357600c54600b54945094505050509091565b612b896001600060078481548110612b5d57612b5d613387565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906127ea565b9250612bd16002600060078481548110612ba557612ba5613387565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906127ea565b915080612bdd816133e0565b915050612aa0565b50600b54600c54612bf5916126fa565b821015612c0c57600c54600b549350935050509091565b90939092509050565b60008183612c365760405162461bcd60e51b81526004016109ff9190613126565b5060006126ce848661341a565b600080600080612c5285612f89565b90506000612c5f86612fac565b90506000612c7782612c7189866127ea565b906127ea565b979296509094509092505050565b6000808080612c948886612fc9565b90506000612ca28887612fc9565b90506000612cb08888612fc9565b90506000612cc282612c7186866127ea565b939b939a50919850919650505050505050565b601354158015612ce55750601654155b15612cec57565b601380546014556016805460185560009182905555565b600080600080600080612d158761279b565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612d4790886127ea565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054612d7690876127ea565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054612da5908661273c565b6001600160a01b038916600090815260016020526040902055612dc781613048565b612dd184836130d0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612e1691815260200190565b60405180910390a3505050505050505050565b600080600080600080612e3b8761279b565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150612e6d90876127ea565b6001600160a01b03808b16600090815260016020908152604080832094909455918b16815260029091522054612ea3908461273c565b6001600160a01b038916600090815260026020908152604080832093909355600190522054612da5908661273c565b600080600080600080612ee48761279b565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150612d7690876127ea565b600080600080600080612f288761279b565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612f5a90886127ea565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054612e6d90876127ea565b6000610acc612710612fa660135485612fc990919063ffffffff16565b906126fa565b6000610acc612710612fa660165485612fc990919063ffffffff16565b600082612fd857506000610acc565b6000612fe483856133fb565b905082612ff1858361341a565b14610dc95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109ff565b60006130526126d7565b905060006130608383612fc9565b3060009081526001602052604090205490915061307d908261273c565b3060009081526001602090815260408083209390935560069052205460ff1615611db457306000908152600260205260409020546130bb908461273c565b30600090815260026020526040902055505050565b600c546130dd90836127ea565b600c55600d546130ed908261273c565b600d555050565b6001600160a01b0381168114610f1257600080fd5b60006020828403121561311b57600080fd5b8135610dc9816130f4565b600060208083528351808285015260005b8181101561315357858101830151858201604001528201613137565b81811115613165576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561318e57600080fd5b8235613199816130f4565b946020939093013593505050565b6000806000606084860312156131bc57600080fd5b83356131c7816130f4565b925060208401356131d7816130f4565b929592945050506040919091013590565b6000602082840312156131fa57600080fd5b5035919050565b8015158114610f1257600080fd5b6000806040838503121561322257600080fd5b82359150602083013561323481613201565b809150509250929050565b6000806000806080858703121561325557600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561328457600080fd5b823591506020830135613234816130f4565b600080604083850312156132a957600080fd5b82356132b4816130f4565b91506020830135613234816130f4565b6000602082840312156132d657600080fd5b8135610dc981613201565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061332a57607f821691505b6020821081141561334b57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561336357600080fd5b5051919050565b60006020828403121561337c57600080fd5b8151610dc981613201565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156133c5576133c561339d565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156133f4576133f461339d565b5060010190565b60008160001904831182151516156134155761341561339d565b500290565b60008261343757634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561344f5761344f61339d565b500190565b60006020828403121561346657600080fd5b8151610dc9816130f456fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201e14181b8bf30cbeceb0a70d4ab0a2fe06715285d67a6db8f5bb7621e9b863a864736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cb6b4ff584b1a8859fae51029ba3dce651f5836c000000000000000000000000338037becf48e54b7d86c6a8db38b118bfcd7690
-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0xCB6b4fF584B1a8859fAe51029Ba3DcE651f5836c
Arg [1] : _antiquitiesWallet (address): 0x338037Becf48e54b7D86c6A8db38B118bFCD7690
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cb6b4ff584b1a8859fae51029ba3dce651f5836c
Arg [1] : 000000000000000000000000338037becf48e54b7d86c6a8db38b118bfcd7690
Deployed Bytecode Sourcemap
24094:22417:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35067:113;;;;;;;;;;-1:-1:-1;35067:113:0;;;;;:::i;:::-;;:::i;:::-;;28236:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29148:161;;;;;;;;;;-1:-1:-1;29148:161:0;;;;;:::i;:::-;;:::i;:::-;;;1489:14:1;;1482:22;1464:41;;1452:2;1437:18;29148:161:0;1324:187:1;33540:122:0;;;;;;;;;;-1:-1:-1;33540:122:0;;;;;:::i;:::-;;:::i;30269:87::-;;;;;;;;;;-1:-1:-1;30338:10:0;;30269:87;;;1662:25:1;;;1650:2;1635:18;30269:87:0;1516:177:1;36827:127:0;;;;;;;;;;-1:-1:-1;36827:127:0;;;;;:::i;:::-;;:::i;28513:95::-;;;;;;;;;;-1:-1:-1;28593:7:0;;28513:95;;35325:79;;;;;;;;;;;;;:::i;24814:46::-;;;;;;;;;;;;;;;;29317:313;;;;;;;;;;-1:-1:-1;29317:313:0;;;;;:::i;:::-;;:::i;34803:252::-;;;;;;;;;;-1:-1:-1;34803:252:0;;;;;:::i;:::-;;:::i;31193:253::-;;;;;;;;;;-1:-1:-1;31193:253:0;;;;;:::i;:::-;;:::i;24685:28::-;;;;;;;;;;-1:-1:-1;24685:28:0;;;;;;;;;;;28422:83;;;;;;;;;;-1:-1:-1;28488:9:0;;28422:83;;28488:9;;;;2486:36:1;;2474:2;2459:18;28422:83:0;2344:184:1;34641:150:0;;;;;;;;;;-1:-1:-1;34641:150:0;;;;;:::i;:::-;;:::i;34517:112::-;;;;;;;;;;;;;:::i;31909:479::-;;;;;;;;;;-1:-1:-1;31909:479:0;;;;;:::i;:::-;;:::i;29638:218::-;;;;;;;;;;-1:-1:-1;29638:218:0;;;;;:::i;:::-;;:::i;30364:377::-;;;;;;;;;;-1:-1:-1;30364:377:0;;;;;:::i;:::-;;:::i;33173:111::-;;;;;;;;;;-1:-1:-1;33173:111:0;;;;;:::i;:::-;;:::i;30749:436::-;;;;;;;;;;-1:-1:-1;30749:436:0;;;;;:::i;:::-;;:::i;33670:211::-;;;;;;;;;;-1:-1:-1;33670:211:0;;;;;:::i;:::-;;:::i;31454:447::-;;;;;;;;;;-1:-1:-1;31454:447:0;;;;;:::i;:::-;;:::i;40268:123::-;;;;;;;;;;-1:-1:-1;40268:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;40356:27:0;40332:4;40356:27;;;:18;:27;;;;;;;;;40268:123;33414:118;;;;;;;;;;-1:-1:-1;33414:118:0;;;;;:::i;:::-;;:::i;35192:121::-;;;;;;;;;;-1:-1:-1;35192:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;35284:21:0;35260:4;35284:21;;;:10;:21;;;;;;;;;35192:121;33889:204;;;;;;;;;;-1:-1:-1;33889:204:0;;;;;:::i;:::-;;:::i;24776:30::-;;;;;;;;;;-1:-1:-1;24776:30:0;;;;;;;;;;;36004:814;;;;;;;;;;-1:-1:-1;36004:814:0;;;;;:::i;:::-;;:::i;28616:198::-;;;;;;;;;;-1:-1:-1;28616:198:0;;;;;:::i;:::-;;:::i;14803:148::-;;;;;;;;;;;;;:::i;25097:30::-;;;;;;;;;;-1:-1:-1;25097:30:0;;;;-1:-1:-1;;;;;25097:30:0;;;;;;-1:-1:-1;;;;;3789:32:1;;;3771:51;;3759:2;3744:18;25097:30:0;3625:203:1;26552:50:0;;;;;;;;;;;;;;;;26481:27;;;;;;;;;;-1:-1:-1;26481:27:0;;;;-1:-1:-1;;;;;26481:27:0;;;26660:46;;;;;;;;;;;;;;;;44705:1803;;;;;;;;;;-1:-1:-1;44705:1803:0;;;;;:::i;:::-;;:::i;34149:123::-;;;;;;;;;;-1:-1:-1;34149:123:0;;;;;:::i;:::-;;:::i;30141:120::-;;;;;;;;;;-1:-1:-1;30141:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;30233:20:0;30209:4;30233:20;;;:11;:20;;;;;;;;;30141:120;14160:79;;;;;;;;;;-1:-1:-1;14198:7:0;14225:6;-1:-1:-1;;;;;14225:6:0;14160:79;;28327:87;;;;;;;;;;;;;:::i;26210:82::-;;;;;;;;;;;;;;;;29864:269;;;;;;;;;;-1:-1:-1;29864:269:0;;;;;:::i;:::-;;:::i;28822:167::-;;;;;;;;;;-1:-1:-1;28822:167:0;;;;;:::i;:::-;;:::i;24415:19::-;;;;;;;;;;-1:-1:-1;24415:19:0;;;;-1:-1:-1;;;;;24415:19:0;;;26515:24;;;;;;;;;;-1:-1:-1;26515:24:0;;;;-1:-1:-1;;;;;26515:24:0;;;35463:535;;;;;;;;;;-1:-1:-1;35463:535:0;;;;;:::i;:::-;;:::i;28997:143::-;;;;;;;;;;-1:-1:-1;28997:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;29105:18:0;;;29078:7;29105:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;28997:143;34332:136;;;;;;;;;;-1:-1:-1;34332:136:0;;;;;:::i;:::-;;:::i;25165:32::-;;;;;;;;;;-1:-1:-1;25165:32:0;;;;-1:-1:-1;;;;;25165:32:0;;;33296:110;;;;;;;;;;-1:-1:-1;33296:110:0;;;;;:::i;:::-;;:::i;15106:244::-;;;;;;;;;;-1:-1:-1;15106:244:0;;;;;:::i;:::-;;:::i;26437:37::-;;;;;;;;;;-1:-1:-1;26437:37:0;;;;-1:-1:-1;;;;;26437:37:0;;;35067:113;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;35143:21:0::1;35167:5;35143:21:::0;;;:10:::1;:21;::::0;;;;:29;;-1:-1:-1;;35143:29:0::1;::::0;;35067:113::o;28236:83::-;28273:13;28306:5;28299:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28236:83;:::o;29148:161::-;29223:4;29240:39;6734:10;29263:7;29272:6;29240:8;:39::i;:::-;-1:-1:-1;29297:4:0;29148:161;;;;;:::o;33540:122::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;33621:17:::1;:33:::0;;-1:-1:-1;;;;;;33621:33:0::1;-1:-1:-1::0;;;;;33621:33:0;;;::::1;::::0;;;::::1;::::0;;33540:122::o;36827:127::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;36910:12:::1;::::0;36896:50:::1;::::0;-1:-1:-1;;;36896:50:0;;-1:-1:-1;;;;;3789:32:1;;;36896:50:0::1;::::0;::::1;3771:51:1::0;36910:12:0;;::::1;::::0;36896:40:::1;::::0;3744:18:1;;36896:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36827:127:::0;:::o;35325:79::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;35381:8:::1;:15:::0;;-1:-1:-1;;35381:15:0::1;;;::::0;;35325:79::o;29317:313::-;29415:4;29432:36;29442:6;29450:9;29461:6;29432:9;:36::i;:::-;29479:121;29488:6;6734:10;29510:89;29548:6;29510:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29510:19:0;;;;;;:11;:19;;;;;;;;6734:10;29510:33;;;;;;;;;;:37;:89::i;:::-;29479:8;:121::i;:::-;-1:-1:-1;29618:4:0;29317:313;;;;;:::o;34803:252::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;34897:12:::1;::::0;-1:-1:-1;;;;;34884:25:0;;::::1;34897:12:::0;::::1;34884:25;;34876:61;;;::::0;-1:-1:-1;;;34876:61:0;;5972:2:1;34876:61:0::1;::::0;::::1;5954:21:1::0;6011:2;5991:18;;;5984:30;6050:26;6030:18;;;6023:54;6094:18;;34876:61:0::1;5770:348:1::0;34876:61:0::1;-1:-1:-1::0;;;;;34956:26:0;::::1;34977:4;34956:26;;34948:60;;;::::0;-1:-1:-1;;;34948:60:0;;6325:2:1;34948:60:0::1;::::0;::::1;6307:21:1::0;6364:2;6344:18;;;6337:30;-1:-1:-1;;;6383:18:1;;;6376:52;6445:18;;34948:60:0::1;6123:346:1::0;34948:60:0::1;-1:-1:-1::0;;;;;35019:21:0::1;;::::0;;;:10:::1;:21;::::0;;;;:28;;-1:-1:-1;;35019:28:0::1;35043:4;35019:28;::::0;;34803:252::o;31193:253::-;31259:7;31298;;31287;:18;;31279:73;;;;-1:-1:-1;;;31279:73:0;;6676:2:1;31279:73:0;;;6658:21:1;6715:2;6695:18;;;6688:30;6754:34;6734:18;;;6727:62;-1:-1:-1;;;6805:18:1;;;6798:40;6855:19;;31279:73:0;6474:406:1;31279:73:0;31363:19;31386:10;:8;:10::i;:::-;31363:33;-1:-1:-1;31414:24:0;:7;31363:33;31414:11;:24::i;:::-;31407:31;31193:253;-1:-1:-1;;;31193:253:0:o;34641:150::-;34728:15;;34745:37;;-1:-1:-1;;;34745:37:0;;34776:4;34745:37;;;3771:51:1;-1:-1:-1;;;;;34706:21:0;;;;;;34728:15;;;34706:21;;34745:22;;3744:18:1;;34745:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34706:77;;-1:-1:-1;;;;;;34706:77:0;;;;;;;-1:-1:-1;;;;;7266:32:1;;;34706:77:0;;;7248:51:1;7315:18;;;7308:34;7221:18;;34706:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34641:150;:::o;34517:112::-;34573:15;;34565:56;;-1:-1:-1;;;;;34573:15:0;;;;34599:21;34565:56;;;;;34573:15;34565:56;34573:15;34565:56;34599:21;34573:15;34565:56;;;;;;;;;;;;;;;;;;;;;34517:112::o;31909:479::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31991:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;31983:60;;;::::0;-1:-1:-1;;;31983:60:0;;7805:2:1;31983:60:0::1;::::0;::::1;7787:21:1::0;7844:2;7824:18;;;7817:30;7883:29;7863:18;;;7856:57;7930:18;;31983:60:0::1;7603:351:1::0;31983:60:0::1;32059:9;32054:327;32078:9;:16:::0;32074:20;::::1;32054:327;;;32136:7;-1:-1:-1::0;;;;;32120:23:0::1;:9;32130:1;32120:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;32120:12:0::1;:23;32116:254;;;32179:9;32189:16:::0;;:20:::1;::::0;32208:1:::1;::::0;32189:20:::1;:::i;:::-;32179:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;32164:9:::1;:12:::0;;-1:-1:-1;;;;;32179:31:0;;::::1;::::0;32174:1;;32164:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;32164:46:0::1;-1:-1:-1::0;;;;;32164:46:0;;::::1;;::::0;;32229:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;32268:11:::1;:20:::0;;;;:28;;-1:-1:-1;;32268:28:0::1;::::0;;32315:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;32315:15:0;;;;;-1:-1:-1;;;;;;32315:15:0::1;::::0;;;;;34706:77;34641:150;:::o;32116:254::-:1;32096:3:::0;::::1;::::0;::::1;:::i;:::-;;;;32054:327;;29638:218:::0;6734:10;29726:4;29775:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;29775:34:0;;;;;;;;;;29726:4;;29743:83;;29766:7;;29775:50;;29814:10;29775:38;:50::i;30364:377::-;6734:10;30416:14;30465:19;;;:11;:19;;;;;;;;30464:20;30456:77;;;;-1:-1:-1;;;30456:77:0;;8827:2:1;30456:77:0;;;8809:21:1;8866:2;8846:18;;;8839:30;8905:34;8885:18;;;8878:62;-1:-1:-1;;;8956:18:1;;;8949:42;9008:19;;30456:77:0;8625:408:1;30456:77:0;30545:15;30569:19;30580:7;30569:10;:19::i;:::-;-1:-1:-1;;;;;;;;;30617:15:0;;;;;;:7;:15;;;;;;30544:44;;-1:-1:-1;30617:28:0;;:15;-1:-1:-1;30544:44:0;30617:19;:28::i;:::-;-1:-1:-1;;;;;30599:15:0;;;;;;:7;:15;;;;;:46;30666:7;;:20;;30678:7;30666:11;:20::i;:::-;30656:7;:30;30710:10;;:23;;30725:7;30710:14;:23::i;:::-;30697:10;:36;-1:-1:-1;;;30364:377:0:o;33173:111::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33242:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;33242:34:0::1;33272:4;33242:34;::::0;;33173:111::o;30749:436::-;30839:7;30878;;30867;:18;;30859:62;;;;-1:-1:-1;;;30859:62:0;;9240:2:1;30859:62:0;;;9222:21:1;9279:2;9259:18;;;9252:30;9318:33;9298:18;;;9291:61;9369:18;;30859:62:0;9038:355:1;30859:62:0;30937:17;30932:246;;30972:15;30996:19;31007:7;30996:10;:19::i;:::-;-1:-1:-1;30971:44:0;;-1:-1:-1;31030:14:0;;-1:-1:-1;;;;;31030:14:0;30932:246;31079:23;31110:19;31121:7;31110:10;:19::i;:::-;-1:-1:-1;31077:52:0;;-1:-1:-1;31144:22:0;;-1:-1:-1;;;;;31144:22:0;33670:211;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;33765:10:::1;33755:6;:20;;33747:88;;;::::0;-1:-1:-1;;;33747:88:0;;9600:2:1;33747:88:0::1;::::0;::::1;9582:21:1::0;9639:2;9619:18;;;9612:30;9678:34;9658:18;;;9651:62;9749:25;9729:18;;;9722:53;9792:19;;33747:88:0::1;9398:419:1::0;33747:88:0::1;33859:14;:6:::0;33868:5:::1;33859:14;:::i;:::-;33846:10;:27:::0;-1:-1:-1;33670:211:0:o;31454:447::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31651:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;31650:21;31642:61;;;::::0;-1:-1:-1;;;31642:61:0;;7805:2:1;31642:61:0::1;::::0;::::1;7787:21:1::0;7844:2;7824:18;;;7817:30;7883:29;7863:18;;;7856:57;7930:18;;31642:61:0::1;7603:351:1::0;31642:61:0::1;-1:-1:-1::0;;;;;31717:16:0;::::1;31736:1;31717:16:::0;;;:7:::1;:16;::::0;;;;;:20;31714:108:::1;;-1:-1:-1::0;;;;;31793:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;31773:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;31754:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;31714:108:::1;-1:-1:-1::0;;;;;31832:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;31832:27:0::1;31855:4;31832:27:::0;;::::1;::::0;;;31870:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;31870:23:0::1;::::0;;::::1;::::0;;31454:447::o;33414:118::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;33493:15:::1;:31:::0;;-1:-1:-1;;;;;;33493:31:0::1;-1:-1:-1::0;;;;;33493:31:0;;;::::1;::::0;;;::::1;::::0;;33414:118::o;33889:204::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;33979:10:::1;33969:6;:20;;33961:84;;;::::0;-1:-1:-1;;;33961:84:0;;10197:2:1;33961:84:0::1;::::0;::::1;10179:21:1::0;10236:2;10216:18;;;10209:30;10275:34;10255:18;;;10248:62;-1:-1:-1;;;10326:18:1;;;10319:49;10385:19;;33961:84:0::1;9995:415:1::0;33961:84:0::1;34071:14;:6:::0;34080:5:::1;34071:14;:::i;:::-;34056:12;:29:::0;-1:-1:-1;33889:204:0:o;36004:814::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;36165:7:::1;:27:::0;;;36203:13:::1;:32:::0;;;36246:15:::1;:36:::0;;;36372:17:::1;36388:1;36372:13:::0;:17:::1;:::i;:::-;36359:10;:30:::0;36417:17:::1;36433:1;36417:13:::0;:17:::1;:::i;:::-;36400:13;:34:::0;;;36504:10:::1;::::0;36486:15:::1;::::0;36470:13:::1;::::0;36459:7:::1;::::0;:24:::1;::::0;36470:13;36459:24:::1;:::i;:::-;:42;;;;:::i;:::-;:55;;;;:::i;:::-;:71;;;;:::i;:::-;36447:9;:83:::0;;;36562:4:::1;-1:-1:-1::0;36549:17:0::1;36541:57;;;::::0;-1:-1:-1;;;36541:57:0;;10972:2:1;36541:57:0::1;::::0;::::1;10954:21:1::0;11011:2;10991:18;;;10984:30;11050:29;11030:18;;;11023:57;11097:18;;36541:57:0::1;10770:351:1::0;36541:57:0::1;36667:3;36652:10;;36634:15;;36618:13;;:31;;;;:::i;:::-;:44;;;;:::i;:::-;36617:53;;36609:127;;;::::0;-1:-1:-1;;;36609:127:0;;11328:2:1;36609:127:0::1;::::0;::::1;11310:21:1::0;11367:2;11347:18;;;11340:30;11406:34;11386:18;;;11379:62;11477:31;11457:18;;;11450:59;11526:19;;36609:127:0::1;11126:425:1::0;36609:127:0::1;36749:61;36799:10;;36781:15;;36765:13;;:31;;;;:::i;:::-;:44;;;;:::i;:::-;36749:15;:61::i;:::-;36004:814:::0;;;;:::o;28616:198::-;-1:-1:-1;;;;;28706:20:0;;28682:7;28706:20;;;:11;:20;;;;;;;;28702:49;;;-1:-1:-1;;;;;;28735:16:0;;;;;:7;:16;;;;;;;28616:198::o;28702:49::-;-1:-1:-1;;;;;28789:16:0;;;;;;:7;:16;;;;;;28769:37;;:19;:37::i;14803:148::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;14910:1:::1;14894:6:::0;;14873:40:::1;::::0;-1:-1:-1;;;;;14894:6:0;;::::1;::::0;14873:40:::1;::::0;14910:1;;14873:40:::1;14941:1;14924:19:::0;;-1:-1:-1;;;;;;14924:19:0::1;::::0;;14803:148::o;44705:1803::-;26853:12;;26806:11;;-1:-1:-1;;;;;26853:12:0;26839:10;:26;26836:44;;;-1:-1:-1;26876:4:0;26836:44;26945:14;;-1:-1:-1;;;;;26945:14:0;26923:10;:37;;:60;;;26977:6;26923:60;26901:128;;;;-1:-1:-1;;;26901:128:0;;11758:2:1;26901:128:0;;;11740:21:1;11797:2;11777:18;;;11770:30;-1:-1:-1;;;11816:18:1;;;11809:47;11873:18;;26901:128:0;11556:341:1;26901:128:0;44812:50:::1;::::0;-1:-1:-1;;;44812:50:0;;44836:10:::1;44812:50;::::0;::::1;12114:34:1::0;44856:4:0::1;12164:18:1::0;;;12157:43;44791:18:0::1;::::0;-1:-1:-1;;;;;44812:23:0;::::1;::::0;::::1;::::0;12049:18:1;;44812:50:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44791:71;;44892:6;44878:10;:20;44875:1626;;44940:38;::::0;-1:-1:-1;;;44940:38:0;;44972:4:::1;44940:38;::::0;::::1;3771:51:1::0;44914:22:0::1;::::0;-1:-1:-1;;;;;44940:23:0;::::1;::::0;::::1;::::0;3744:18:1;;44940:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44994:61;::::0;-1:-1:-1;;;44994:61:0;;45021:10:::1;44994:61;::::0;::::1;12451:34:1::0;45041:4:0::1;12501:18:1::0;;;12494:43;12553:18;;;12546:34;;;44914:65:0;;-1:-1:-1;;;;;;44994:26:0;::::1;::::0;::::1;::::0;12386:18:1;;44994:61:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;45138:38:0::1;::::0;-1:-1:-1;;;45138:38:0;;45170:4:::1;45138:38;::::0;::::1;3771:51:1::0;45114:20:0::1;::::0;45180:14;;-1:-1:-1;;;;;45138:23:0;::::1;::::0;::::1;::::0;3744:18:1;;45138:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45137:57;;;;:::i;:::-;45114:80;;45310:23;45422:10;;45404:15;;45388:13;;:31;;;;:::i;:::-;:44;;;;:::i;:::-;45368:15;::::0;45352:13:::1;::::0;45337:28:::1;::::0;:12;:28:::1;:::i;:::-;:46;;;;:::i;:::-;45336:97;;;;:::i;:::-;45310:123;;45496:23;45575:15;;45559:13;;:31;;;;:::i;:::-;45541:13;::::0;45523:31:::1;::::0;:15;:31:::1;:::i;:::-;45522:69;;;;:::i;:::-;45496:95:::0;-1:-1:-1;45606:25:0::1;45634:33;45496:95:::0;45634:15;:33:::1;:::i;:::-;45754:15;::::0;45731:56:::1;::::0;-1:-1:-1;;;45731:56:0;;-1:-1:-1;;;;;45754:15:0;;::::1;45731:56;::::0;::::1;7248:51:1::0;7315:18;;;7308:34;;;45606:61:0;;-1:-1:-1;45731:22:0;::::1;::::0;::::1;::::0;7221:18:1;;45731:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;45826:17:0::1;::::0;45803:60:::1;::::0;-1:-1:-1;;;45803:60:0;;-1:-1:-1;;;;;45826:17:0;;::::1;45803:60;::::0;::::1;7248:51:1::0;7315:18;;;7308:34;;;45803:22:0;;::::1;::::0;::::1;::::0;7221:18:1;;45803:60:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;46078:38:0::1;::::0;-1:-1:-1;;;46078:38:0;;46110:4:::1;46078:38;::::0;::::1;3771:51:1::0;46048:27:0::1;::::0;-1:-1:-1;;;;;46078:23:0;::::1;::::0;::::1;::::0;3744:18:1;;46078:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46179:22;::::0;46222:11:::1;::::0;46048:68;;-1:-1:-1;46156:45:0;::::1;;::::0;46222:11;;::::1;;;:30:::0;::::1;;;;46237:15;46222:30;46218:272;;;46276:24;46294:4;46276:9;:24::i;:::-;46273:43;;46308:7;;;;;;;;26795:254:::0;44705:1803;;:::o;46273:43::-:1;46357:12;::::0;46334:57:::1;::::0;-1:-1:-1;;;46334:57:0;;-1:-1:-1;;;;;46357:12:0;;::::1;46334:57;::::0;::::1;7248:51:1::0;7315:18;;;7308:34;;;46334:22:0;;::::1;::::0;::::1;::::0;7221:18:1;;46334:57:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;46435:12:0::1;::::0;46410:64:::1;::::0;46428:4:::1;::::0;-1:-1:-1;;;;;46435:12:0::1;46449:24;46428:4:::0;46449:9:::1;:24::i;:::-;46410:9;:64::i;:::-;44900:1601;;;;;;;44778:1730;27040:1;26795:254:::0;44705:1803;;:::o;34149:123::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;34230:22:::1;:34:::0;34149:123::o;28327:87::-;28366:13;28399:7;28392:14;;;;;:::i;29864:269::-;29957:4;29974:129;6734:10;29997:7;30006:96;30045:15;30006:96;;;;;;;;;;;;;;;;;6734:10;30006:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;30006:34:0;;;;;;;;;;;;:38;:96::i;28822:167::-;28900:4;28917:42;6734:10;28941:9;28952:6;28917:9;:42::i;35463:535::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;35550:14:::1;:44:::0;;-1:-1:-1;;;;;;35550:44:0::1;-1:-1:-1::0;;;;;35550:44:0;::::1;::::0;;::::1;::::0;;;35612:21:::1;::::0;;-1:-1:-1;;;35612:21:0;;;;:19:::1;::::0;:21:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;35550:44;35612:21;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35605:4;:28:::0;;-1:-1:-1;;;;;;35605:28:0::1;-1:-1:-1::0;;;;;35605:28:0;;::::1;;::::0;;35730:14:::1;::::0;:24:::1;::::0;;-1:-1:-1;;;35730:24:0;;;;:14;;;::::1;::::0;:22:::1;::::0;:24;;::::1;::::0;::::1;::::0;;;;;;;;;:14;:24;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35792:4;::::0;;35713:84:::1;::::0;-1:-1:-1;;;35713:84:0;;35785:4:::1;35713:84:::0;;::::1;12114:34:1::0;;;;-1:-1:-1;;;;;35792:4:0;;::::1;12164:18:1::0;;;12157:43;35713:63:0;;;::::1;::::0;::::1;::::0;12049:18:1;;35713:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35698:12;:99:::0;;-1:-1:-1;;;;;;35698:99:0::1;-1:-1:-1::0;;;;;35698:99:0;;::::1;::::0;;::::1;::::0;;;35925:4:::1;::::0;;35884:46:::1;::::0;-1:-1:-1;;;35884:46:0;;35925:4;::::1;35884:46:::0;;::::1;3771:51:1::0;35698:99:0;35884:40:::1;::::0;3744:18:1;;35884:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;35955:12:0::1;::::0;35941:49:::1;::::0;-1:-1:-1;;;35941:49:0;;::::1;::::0;::::1;1662:25:1::0;;;-1:-1:-1;;;;;35955:12:0;;::::1;::::0;-1:-1:-1;35941:42:0::1;::::0;-1:-1:-1;1635:18:1;;35941:49:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34332:136::-:0;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;34401:11:::1;:22:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34401:22:0;;::::1;;::::0;;34439:21:::1;::::0;::::1;::::0;::::1;::::0;34415:8;1489:14:1;1482:22;1464:41;;1452:2;1437:18;;1324:187;34439:21:0::1;;;;;;;;34332:136:::0;:::o;33296:110::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33363:27:0::1;33393:5;33363:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;33363:35:0::1;::::0;;33296:110::o;15106:244::-;14372:6;;-1:-1:-1;;;;;14372:6:0;6734:10;14372:22;14364:67;;;;-1:-1:-1;;;14364:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15195:22:0;::::1;15187:73;;;::::0;-1:-1:-1;;;15187:73:0;;13049:2:1;15187:73:0::1;::::0;::::1;13031:21:1::0;13088:2;13068:18;;;13061:30;13127:34;13107:18;;;13100:62;-1:-1:-1;;;13178:18:1;;;13171:36;13224:19;;15187:73:0::1;12847:402:1::0;15187:73:0::1;15297:6;::::0;;15276:38:::1;::::0;-1:-1:-1;;;;;15276:38:0;;::::1;::::0;15297:6;::::1;::::0;15276:38:::1;::::0;::::1;15325:6;:17:::0;;-1:-1:-1;;;;;;15325:17:0::1;-1:-1:-1::0;;;;;15325:17:0;;;::::1;::::0;;;::::1;::::0;;15106:244::o;40399:337::-;-1:-1:-1;;;;;40492:19:0;;40484:68;;;;-1:-1:-1;;;40484:68:0;;13456:2:1;40484:68:0;;;13438:21:1;13495:2;13475:18;;;13468:30;13534:34;13514:18;;;13507:62;-1:-1:-1;;;13585:18:1;;;13578:34;13629:19;;40484:68:0;13254:400:1;40484:68:0;-1:-1:-1;;;;;40571:21:0;;40563:68;;;;-1:-1:-1;;;40563:68:0;;13861:2:1;40563:68:0;;;13843:21:1;13900:2;13880:18;;;13873:30;13939:34;13919:18;;;13912:62;-1:-1:-1;;;13990:18:1;;;13983:32;14032:19;;40563:68:0;13659:398:1;40563:68:0;-1:-1:-1;;;;;40644:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;40696:32;;1662:25:1;;;40696:32:0;;1635:18:1;40696:32:0;;;;;;;40399:337;;;:::o;40744:1075::-;-1:-1:-1;;;;;40866:18:0;;40858:68;;;;-1:-1:-1;;;40858:68:0;;14264:2:1;40858:68:0;;;14246:21:1;14303:2;14283:18;;;14276:30;14342:34;14322:18;;;14315:62;-1:-1:-1;;;14393:18:1;;;14386:35;14438:19;;40858:68:0;14062:401:1;40858:68:0;-1:-1:-1;;;;;40945:16:0;;40937:64;;;;-1:-1:-1;;;40937:64:0;;14670:2:1;40937:64:0;;;14652:21:1;14709:2;14689:18;;;14682:30;14748:34;14728:18;;;14721:62;-1:-1:-1;;;14799:18:1;;;14792:33;14842:19;;40937:64:0;14468:399:1;40937:64:0;41029:1;41020:6;:10;41012:64;;;;-1:-1:-1;;;41012:64:0;;15074:2:1;41012:64:0;;;15056:21:1;15113:2;15093:18;;;15086:30;15152:34;15132:18;;;15125:62;-1:-1:-1;;;15203:18:1;;;15196:39;15252:19;;41012:64:0;14872:405:1;41012:64:0;14198:7;14225:6;-1:-1:-1;;;;;41090:15:0;;;14225:6;;41090:15;;;;:32;;-1:-1:-1;14198:7:0;14225:6;-1:-1:-1;;;;;41109:13:0;;;14225:6;;41109:13;;41090:32;:57;;;;-1:-1:-1;;;;;;41126:21:0;;41142:4;41126:21;;41090:57;41087:150;;;41180:12;;41170:6;:22;;41162:75;;;;-1:-1:-1;;;41162:75:0;;15484:2:1;41162:75:0;;;15466:21:1;15523:2;15503:18;;;15496:30;15562:34;15542:18;;;15535:62;-1:-1:-1;;;15613:18:1;;;15606:38;15661:19;;41162:75:0;15282:404:1;41162:75:0;41269:12;;-1:-1:-1;;;;;41261:20:0;;;41269:12;;41261:20;:39;;;;-1:-1:-1;41291:9:0;;-1:-1:-1;;;;;41285:15:0;;;41291:9;;41285:15;;41261:39;41258:136;;;41351:10;;41341:6;41325:13;41335:2;41325:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;41317:65;;;;-1:-1:-1;;;41317:65:0;;15893:2:1;41317:65:0;;;15875:21:1;15932:2;15912:18;;;15905:30;-1:-1:-1;;;15951:18:1;;;15944:46;16007:18;;41317:65:0;15691:340:1;41317:65:0;-1:-1:-1;;;;;41594:24:0;;41467:12;41594:24;;;:18;:24;;;;;;41482:4;;41594:24;;;:50;;-1:-1:-1;;;;;;41622:22:0;;;;;;:18;:22;;;;;;;;41594:50;41591:96;;;-1:-1:-1;41670:5:0;41591:96;41773:38;41788:4;41793:2;41796:6;41803:7;41773:14;:38::i;2985:192::-;3071:7;3107:12;3099:6;;;;3091:29;;;;-1:-1:-1;;;3091:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3131:9:0;3143:5;3147:1;3143;:5;:::i;:::-;3131:17;2985:192;-1:-1:-1;;;;;2985:192:0:o;38418:163::-;38459:7;38480:15;38497;38516:19;:17;:19::i;:::-;38479:56;;-1:-1:-1;38479:56:0;-1:-1:-1;38553:20:0;38479:56;;38553:11;:20::i;:::-;38546:27;;;;38418:163;:::o;4383:132::-;4441:7;4468:39;4472:1;4475;4468:39;;;;;;;;;;;;;;;;;:3;:39::i;2082:181::-;2140:7;;2172:5;2176:1;2172;:5;:::i;:::-;2160:17;;2201:1;2196;:6;;2188:46;;;;-1:-1:-1;;;2188:46:0;;16238:2:1;2188:46:0;;;16220:21:1;16277:2;16257:18;;;16250:30;16316:29;16296:18;;;16289:57;16363:18;;2188:46:0;16036:351:1;37216:419:0;37275:7;37284;37293;37302;37311;37320;37341:23;37366:12;37380:18;37402:20;37414:7;37402:11;:20::i;:::-;37340:82;;;;;;37434:15;37451:23;37476:12;37492:50;37504:7;37513:4;37519:10;37531;:8;:10::i;:::-;37492:11;:50::i;:::-;37433:109;;;;-1:-1:-1;37433:109:0;;-1:-1:-1;37593:15:0;;-1:-1:-1;37610:4:0;;-1:-1:-1;37616:10:0;;-1:-1:-1;37216:419:0;;-1:-1:-1;;;;;37216:419:0:o;2546:136::-;2604:7;2631:43;2635:1;2638;2631:43;;;;;;;;;;;;;;;;;:3;:43::i;33052:113::-;33124:12;;33110:47;;-1:-1:-1;;;33110:47:0;;;;;1662:25:1;;;-1:-1:-1;;;;;33124:12:0;;;;33110:42;;1635:18:1;;33110:47:0;1516:177:1;41902:1114:0;42013:8;;;;;;;42009:114;;14198:7;14225:6;-1:-1:-1;;;;;42045:17:0;;;14225:6;;42045:17;42037:26;;;;;;-1:-1:-1;;;;;42146:18:0;;;;;;:10;:18;;;;;;;;;:43;;-1:-1:-1;;;;;;42168:21:0;;;;;;:10;:21;;;;;;;;42146:43;42143:126;;;42213:12;;;;42205:52;;;;-1:-1:-1;;;42205:52:0;;16594:2:1;42205:52:0;;;16576:21:1;16633:2;16613:18;;;16606:30;16672:29;16652:18;;;16645:57;16719:18;;42205:52:0;16392:351:1;42205:52:0;42293:7;42289:40;;42315:14;:12;:14::i;:::-;-1:-1:-1;;;;;42354:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;42378:22:0;;;;;;:11;:22;;;;;;;;42377:23;42354:46;42350:597;;;42417:48;42439:6;42447:9;42458:6;42417:21;:48::i;:::-;42350:597;;;-1:-1:-1;;;;;42488:19:0;;;;;;:11;:19;;;;;;;;42487:20;:46;;;;-1:-1:-1;;;;;;42511:22:0;;;;;;:11;:22;;;;;;;;42487:46;42483:464;;;42550:46;42570:6;42578:9;42589:6;42550:19;:46::i;42483:464::-;-1:-1:-1;;;;;42619:19:0;;;;;;:11;:19;;;;;;;;42618:20;:47;;;;-1:-1:-1;;;;;;42643:22:0;;;;;;:11;:22;;;;;;;;42642:23;42618:47;42614:333;;;42682:44;42700:6;42708:9;42719:6;42682:17;:44::i;42614:333::-;-1:-1:-1;;;;;42748:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;42771:22:0;;;;;;:11;:22;;;;;;;;42748:45;42744:203;;;42810:48;42832:6;42840:9;42851:6;42810:21;:48::i;42744:203::-;42891:44;42909:6;42917:9;42928:6;42891:17;:44::i;:::-;42971:7;42967:41;;42993:15;40185;;40175:7;:25;40227:21;;40211:13;:37;40131:125;38589:561;38686:7;;38722;;38639;;;;;38746:289;38770:9;:16;38766:20;;38746:289;;;38836:7;38812;:21;38820:9;38830:1;38820:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38820:12:0;38812:21;;;;;;;;;;;;;:31;;:66;;;38871:7;38847;:21;38855:9;38865:1;38855:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38855:12:0;38847:21;;;;;;;;;;;;;:31;38812:66;38808:97;;;38888:7;;38897;;38880:25;;;;;;;38589:561;;:::o;38808:97::-;38930:34;38942:7;:21;38950:9;38960:1;38950:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38950:12:0;38942:21;;;;;;;;;;;;;38930:7;;:11;:34::i;:::-;38920:44;;38989:34;39001:7;:21;39009:9;39019:1;39009:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;39009:12:0;39001:21;;;;;;;;;;;;;38989:7;;:11;:34::i;:::-;38979:44;-1:-1:-1;38788:3:0;;;;:::i;:::-;;;;38746:289;;;-1:-1:-1;39071:7:0;;39059;;:20;;:11;:20::i;:::-;39049:7;:30;39045:61;;;39089:7;;39098;;39081:25;;;;;;38589:561;;:::o;39045:61::-;39125:7;;39134;;-1:-1:-1;38589:561:0;-1:-1:-1;38589:561:0:o;5011:278::-;5097:7;5132:12;5125:5;5117:28;;;;-1:-1:-1;;;5117:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5156:9:0;5168:5;5172:1;5168;:5;:::i;37643:330::-;37703:7;37712;37721;37741:12;37756:24;37772:7;37756:15;:24::i;:::-;37741:39;;37791:18;37812:30;37834:7;37812:21;:30::i;:::-;37791:51;-1:-1:-1;37853:23:0;37879:33;37791:51;37879:17;:7;37891:4;37879:11;:17::i;:::-;:21;;:33::i;:::-;37853:59;37948:4;;-1:-1:-1;37954:10:0;;-1:-1:-1;37643:330:0;;-1:-1:-1;;;37643:330:0:o;37981:429::-;38096:7;;;;38152:24;:7;38164:11;38152;:24::i;:::-;38134:42;-1:-1:-1;38187:12:0;38202:21;:4;38211:11;38202:8;:21::i;:::-;38187:36;-1:-1:-1;38234:18:0;38255:27;:10;38270:11;38255:14;:27::i;:::-;38234:48;-1:-1:-1;38293:23:0;38319:33;38234:48;38319:17;:7;38331:4;38319:11;:17::i;:33::-;38371:7;;;;-1:-1:-1;38397:4:0;;-1:-1:-1;37981:429:0;;-1:-1:-1;;;;;;;37981:429:0:o;39869:250::-;39915:7;;:12;:34;;;;-1:-1:-1;39931:13:0;;:18;39915:34;39912:46;;;39869:250::o;39912:46::-;39996:7;;;39978:15;:25;40038:13;;;40014:21;:37;-1:-1:-1;40072:11:0;;;;40094:17;39869:250::o;44128:566::-;44231:15;44248:23;44273:12;44287:23;44312:12;44326:18;44348:19;44359:7;44348:10;:19::i;:::-;-1:-1:-1;;;;;44396:15:0;;;;;;:7;:15;;;;;;44230:137;;-1:-1:-1;44230:137:0;;-1:-1:-1;44230:137:0;;-1:-1:-1;44230:137:0;-1:-1:-1;44230:137:0;-1:-1:-1;44230:137:0;-1:-1:-1;44396:28:0;;44416:7;44396:19;:28::i;:::-;-1:-1:-1;;;;;44378:15:0;;;;;;:7;:15;;;;;;;;:46;;;;44453:7;:15;;;;:28;;44473:7;44453:19;:28::i;:::-;-1:-1:-1;;;;;44435:15:0;;;;;;;:7;:15;;;;;;:46;;;;44513:18;;;;;;;:39;;44536:15;44513:22;:39::i;:::-;-1:-1:-1;;;;;44492:18:0;;;;;;:7;:18;;;;;:60;44566:26;44581:10;44566:14;:26::i;:::-;44603:23;44615:4;44621;44603:11;:23::i;:::-;44659:9;-1:-1:-1;;;;;44642:44:0;44651:6;-1:-1:-1;;;;;44642:44:0;;44670:15;44642:44;;;;1662:25:1;;1650:2;1635:18;;1516:177;44642:44:0;;;;;;;;44219:475;;;;;;44128:566;;;:::o;43534:586::-;43635:15;43652:23;43677:12;43691:23;43716:12;43730:18;43752:19;43763:7;43752:10;:19::i;:::-;-1:-1:-1;;;;;43800:15:0;;;;;;:7;:15;;;;;;43634:137;;-1:-1:-1;43634:137:0;;-1:-1:-1;43634:137:0;;-1:-1:-1;43634:137:0;-1:-1:-1;43634:137:0;-1:-1:-1;43634:137:0;-1:-1:-1;43800:28:0;;43634:137;43800:19;:28::i;:::-;-1:-1:-1;;;;;43782:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;43860:18;;;;;:7;:18;;;;;:39;;43883:15;43860:22;:39::i;:::-;-1:-1:-1;;;;;43839:18:0;;;;;;:7;:18;;;;;;;;:60;;;;43931:7;:18;;;;:39;;43954:15;43931:22;:39::i;43024:502::-;43123:15;43140:23;43165:12;43179:23;43204:12;43218:18;43240:19;43251:7;43240:10;:19::i;:::-;-1:-1:-1;;;;;43288:15:0;;;;;;:7;:15;;;;;;43122:137;;-1:-1:-1;43122:137:0;;-1:-1:-1;43122:137:0;;-1:-1:-1;43122:137:0;-1:-1:-1;43122:137:0;-1:-1:-1;43122:137:0;-1:-1:-1;43288:28:0;;43122:137;43288:19;:28::i;32398:642::-;32501:15;32518:23;32543:12;32557:23;32582:12;32596:18;32618:19;32629:7;32618:10;:19::i;:::-;-1:-1:-1;;;;;32666:15:0;;;;;;:7;:15;;;;;;32500:137;;-1:-1:-1;32500:137:0;;-1:-1:-1;32500:137:0;;-1:-1:-1;32500:137:0;-1:-1:-1;32500:137:0;-1:-1:-1;32500:137:0;-1:-1:-1;32666:28:0;;32686:7;32666:19;:28::i;:::-;-1:-1:-1;;;;;32648:15:0;;;;;;:7;:15;;;;;;;;:46;;;;32723:7;:15;;;;:28;;32743:7;32723:19;:28::i;39529:154::-;39593:7;39620:55;39659:5;39620:20;39632:7;;39620;:11;;:20;;;;:::i;:::-;:24;;:55::i;39691:166::-;39761:7;39788:61;39833:5;39788:26;39800:13;;39788:7;:11;;:26;;;;:::i;3436:471::-;3494:7;3739:6;3735:47;;-1:-1:-1;3769:1:0;3762:8;;3735:47;3794:9;3806:5;3810:1;3806;:5;:::i;:::-;3794:17;-1:-1:-1;3839:1:0;3830:5;3834:1;3794:17;3830:5;:::i;:::-;:10;3822:56;;;;-1:-1:-1;;;3822:56:0;;16950:2:1;3822:56:0;;;16932:21:1;16989:2;16969:18;;;16962:30;17028:34;17008:18;;;17001:62;-1:-1:-1;;;17079:18:1;;;17072:31;17120:19;;3822:56:0;16748:397:1;39162:355:0;39225:19;39248:10;:8;:10::i;:::-;39225:33;-1:-1:-1;39269:18:0;39290:27;:10;39225:33;39290:14;:27::i;:::-;39369:4;39353:22;;;;:7;:22;;;;;;39269:48;;-1:-1:-1;39353:38:0;;39269:48;39353:26;:38::i;:::-;39344:4;39328:22;;;;:7;:22;;;;;;;;:63;;;;39405:11;:26;;;;;;39402:107;;;39487:4;39471:22;;;;:7;:22;;;;;;:38;;39498:10;39471:26;:38::i;:::-;39462:4;39446:22;;;;:7;:22;;;;;:63;39214:303;;39162:355;:::o;37061:147::-;37139:7;;:17;;37151:4;37139:11;:17::i;:::-;37129:7;:27;37180:10;;:20;;37195:4;37180:14;:20::i;:::-;37167:10;:33;-1:-1:-1;;37061:147:0:o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:597::-;514:4;543:2;572;561:9;554:21;604:6;598:13;647:6;642:2;631:9;627:18;620:34;672:1;682:140;696:6;693:1;690:13;682:140;;;791:14;;;787:23;;781:30;757:17;;;776:2;753:26;746:66;711:10;;682:140;;;840:6;837:1;834:13;831:91;;;910:1;905:2;896:6;885:9;881:22;877:31;870:42;831:91;-1:-1:-1;983:2:1;962:15;-1:-1:-1;;958:29:1;943:45;;;;990:2;939:54;;402:597;-1:-1:-1;;;402:597:1:o;1004:315::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1188:9;1175:23;1207:31;1232:5;1207:31;:::i;:::-;1257:5;1309:2;1294:18;;;;1281:32;;-1:-1:-1;;;1004:315:1:o;1698:456::-;1775:6;1783;1791;1844:2;1832:9;1823:7;1819:23;1815:32;1812:52;;;1860:1;1857;1850:12;1812:52;1899:9;1886:23;1918:31;1943:5;1918:31;:::i;:::-;1968:5;-1:-1:-1;2025:2:1;2010:18;;1997:32;2038:33;1997:32;2038:33;:::i;:::-;1698:456;;2090:7;;-1:-1:-1;;;2144:2:1;2129:18;;;;2116:32;;1698:456::o;2159:180::-;2218:6;2271:2;2259:9;2250:7;2246:23;2242:32;2239:52;;;2287:1;2284;2277:12;2239:52;-1:-1:-1;2310:23:1;;2159:180;-1:-1:-1;2159:180:1:o;2798:118::-;2884:5;2877:13;2870:21;2863:5;2860:32;2850:60;;2906:1;2903;2896:12;2921:309;2986:6;2994;3047:2;3035:9;3026:7;3022:23;3018:32;3015:52;;;3063:1;3060;3053:12;3015:52;3099:9;3086:23;3076:33;;3159:2;3148:9;3144:18;3131:32;3172:28;3194:5;3172:28;:::i;:::-;3219:5;3209:15;;;2921:309;;;;;:::o;3235:385::-;3321:6;3329;3337;3345;3398:3;3386:9;3377:7;3373:23;3369:33;3366:53;;;3415:1;3412;3405:12;3366:53;-1:-1:-1;;3438:23:1;;;3508:2;3493:18;;3480:32;;-1:-1:-1;3559:2:1;3544:18;;3531:32;;3610:2;3595:18;3582:32;;-1:-1:-1;3235:385:1;-1:-1:-1;3235:385:1:o;3833:315::-;3901:6;3909;3962:2;3950:9;3941:7;3937:23;3933:32;3930:52;;;3978:1;3975;3968:12;3930:52;4014:9;4001:23;3991:33;;4074:2;4063:9;4059:18;4046:32;4087:31;4112:5;4087:31;:::i;4153:388::-;4221:6;4229;4282:2;4270:9;4261:7;4257:23;4253:32;4250:52;;;4298:1;4295;4288:12;4250:52;4337:9;4324:23;4356:31;4381:5;4356:31;:::i;:::-;4406:5;-1:-1:-1;4463:2:1;4448:18;;4435:32;4476:33;4435:32;4476:33;:::i;4546:241::-;4602:6;4655:2;4643:9;4634:7;4630:23;4626:32;4623:52;;;4671:1;4668;4661:12;4623:52;4710:9;4697:23;4729:28;4751:5;4729:28;:::i;5024:356::-;5226:2;5208:21;;;5245:18;;;5238:30;5304:34;5299:2;5284:18;;5277:62;5371:2;5356:18;;5024:356::o;5385:380::-;5464:1;5460:12;;;;5507;;;5528:61;;5582:4;5574:6;5570:17;5560:27;;5528:61;5635:2;5627:6;5624:14;5604:18;5601:38;5598:161;;;5681:10;5676:3;5672:20;5669:1;5662:31;5716:4;5713:1;5706:15;5744:4;5741:1;5734:15;5598:161;;5385:380;;;:::o;6885:184::-;6955:6;7008:2;6996:9;6987:7;6983:23;6979:32;6976:52;;;7024:1;7021;7014:12;6976:52;-1:-1:-1;7047:16:1;;6885:184;-1:-1:-1;6885:184:1:o;7353:245::-;7420:6;7473:2;7461:9;7452:7;7448:23;7444:32;7441:52;;;7489:1;7486;7479:12;7441:52;7521:9;7515:16;7540:28;7562:5;7540:28;:::i;7959:127::-;8020:10;8015:3;8011:20;8008:1;8001:31;8051:4;8048:1;8041:15;8075:4;8072:1;8065:15;8091:127;8152:10;8147:3;8143:20;8140:1;8133:31;8183:4;8180:1;8173:15;8207:4;8204:1;8197:15;8223:125;8263:4;8291:1;8288;8285:8;8282:34;;;8296:18;;:::i;:::-;-1:-1:-1;8333:9:1;;8223:125::o;8353:127::-;8414:10;8409:3;8405:20;8402:1;8395:31;8445:4;8442:1;8435:15;8469:4;8466:1;8459:15;8485:135;8524:3;-1:-1:-1;;8545:17:1;;8542:43;;;8565:18;;:::i;:::-;-1:-1:-1;8612:1:1;8601:13;;8485:135::o;9822:168::-;9862:7;9928:1;9924;9920:6;9916:14;9913:1;9910:21;9905:1;9898:9;9891:17;9887:45;9884:71;;;9935:18;;:::i;:::-;-1:-1:-1;9975:9:1;;9822:168::o;10415:217::-;10455:1;10481;10471:132;;10525:10;10520:3;10516:20;10513:1;10506:31;10560:4;10557:1;10550:15;10588:4;10585:1;10578:15;10471:132;-1:-1:-1;10617:9:1;;10415:217::o;10637:128::-;10677:3;10708:1;10704:6;10701:1;10698:13;10695:39;;;10714:18;;:::i;:::-;-1:-1:-1;10750:9:1;;10637:128::o;12591:251::-;12661:6;12714:2;12702:9;12693:7;12689:23;12685:32;12682:52;;;12730:1;12727;12720:12;12682:52;12762:9;12756:16;12781:31;12806:5;12781:31;:::i
Swarm Source
ipfs://1e14181b8bf30cbeceb0a70d4ab0a2fe06715285d67a6db8f5bb7621e9b863a8
Loading...
Loading
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.