More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 109 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18903770 | 239 days ago | IN | 0 ETH | 0.00046769 | ||||
Approve | 18617575 | 279 days ago | IN | 0 ETH | 0.00148217 | ||||
Approve | 18512306 | 294 days ago | IN | 0 ETH | 0.00087141 | ||||
Approve | 18412758 | 308 days ago | IN | 0 ETH | 0.00051399 | ||||
Approve | 18216574 | 335 days ago | IN | 0 ETH | 0.00032205 | ||||
Transfer | 18216492 | 335 days ago | IN | 0 ETH | 0.00219719 | ||||
Approve | 18216100 | 335 days ago | IN | 0 ETH | 0.00031101 | ||||
Approve | 18208358 | 336 days ago | IN | 0 ETH | 0.00045008 | ||||
Approve | 18201069 | 337 days ago | IN | 0 ETH | 0.00037857 | ||||
Approve | 18159581 | 343 days ago | IN | 0 ETH | 0.00036973 | ||||
Approve | 18115962 | 349 days ago | IN | 0 ETH | 0.00071428 | ||||
Approve | 18089841 | 353 days ago | IN | 0 ETH | 0.00063704 | ||||
Approve | 18086272 | 354 days ago | IN | 0 ETH | 0.0010353 | ||||
Approve | 18086268 | 354 days ago | IN | 0 ETH | 0.00203156 | ||||
Approve | 18029078 | 362 days ago | IN | 0 ETH | 0.00155576 | ||||
Transfer | 17957578 | 372 days ago | IN | 0 ETH | 0.00551909 | ||||
Approve | 17809514 | 392 days ago | IN | 0 ETH | 0.00065981 | ||||
Approve | 17766482 | 398 days ago | IN | 0 ETH | 0.00100018 | ||||
Approve | 17766420 | 398 days ago | IN | 0 ETH | 0.00114046 | ||||
Approve | 17754811 | 400 days ago | IN | 0 ETH | 0.00064123 | ||||
Approve | 17720043 | 405 days ago | IN | 0 ETH | 0.00231835 | ||||
Approve | 17683659 | 410 days ago | IN | 0 ETH | 0.00085404 | ||||
Transfer | 17672562 | 411 days ago | IN | 0 ETH | 0.00721807 | ||||
Approve | 17670848 | 412 days ago | IN | 0 ETH | 0.001539 | ||||
Approve | 17662402 | 413 days ago | IN | 0 ETH | 0.00091578 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18903784 | 239 days ago | 0.00143033 ETH | ||||
18903784 | 239 days ago | 0.00032015 ETH | ||||
18903784 | 239 days ago | 0.00056917 ETH | ||||
18903784 | 239 days ago | 0.00035573 ETH | ||||
18903784 | 239 days ago | 0.00000734 ETH | ||||
18903784 | 239 days ago | 0.00008893 ETH | ||||
18903784 | 239 days ago | 0.00275699 ETH | ||||
18617711 | 279 days ago | 0.00049478 ETH | ||||
18617711 | 279 days ago | 0.00011129 ETH | ||||
18617711 | 279 days ago | 0.00019786 ETH | ||||
18617711 | 279 days ago | 0.00012366 ETH | ||||
18617711 | 279 days ago | 0.00003091 ETH | ||||
18617711 | 279 days ago | 0.00095853 ETH | ||||
18612808 | 280 days ago | 0.00118485 ETH | ||||
18612808 | 280 days ago | 0.00026657 ETH | ||||
18612808 | 280 days ago | 0.00047391 ETH | ||||
18612808 | 280 days ago | 0.00029619 ETH | ||||
18612808 | 280 days ago | 0.00007404 ETH | ||||
18612808 | 280 days ago | 0.00229558 ETH | ||||
18544347 | 289 days ago | 0.00047616 ETH | ||||
18544347 | 289 days ago | 0.00010712 ETH | ||||
18544347 | 289 days ago | 0.00019043 ETH | ||||
18544347 | 289 days ago | 0.00011902 ETH | ||||
18544347 | 289 days ago | 0.00002975 ETH | ||||
18544347 | 289 days ago | 0.00092249 ETH |
Loading...
Loading
Contract Name:
JiggaToken
Compiler Version
v0.7.5+commit.eb77ed08
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-26 */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.7.5; interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @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) { 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; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function WETH() external pure returns (address); function factory() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function getAmountsOut(uint amountIn, address[] memory path) external returns (uint[] memory amounts); } contract JiggaToken is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address payable; mapping (address => uint256) private _balances; mapping (address => uint256) private _whitelist; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; address payable public marketing; address payable public dev; address payable public rewards; address payable public reflections; uint256 private _tTotal = 1 * 10**12 * 10**9; string private _name = "Jigga Token"; string private _symbol = "JIGGA"; uint8 private _decimals = 9; uint256 public _rewardsFee = 9; uint256 public _liquidityFee = 5; uint256 public _marketingFee = 16; uint256 public _devFee = 10; uint256 public _reflectionsFee = 40; uint256 constant public _WLTierPeriodLength = 20 minutes; uint256 public _wlTier1Cutoff; uint256 public _wlTier2Cutoff; uint256 public _wlTier3Cutoff; uint256 public _pendingDevelopmentFees; uint256 public _pendingMarketingFees; uint256 public _pendingLiquidityFees; uint256 public _pendingRewardsFees; uint256 private launchTime; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public maxWalletHolding = 1 * 10**10 * 10**9; uint256 private numTokensSellToAddToLiquidity = 1 * 10**6 * 10**9; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor (address payable _devWallet, address payable _marketingWallet, address payable _rewardsWallet, address payable _reflectionsWallet) public { reflections = _reflectionsWallet; marketing = _marketingWallet; dev = _devWallet; rewards = _rewardsWallet; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_reflectionsWallet] = true; _isExcludedFromFee[_marketingWallet] = true; _isExcludedFromFee[_devWallet] = true; _isExcludedFromFee[_rewardsWallet] = true; _balances[_msgSender()] = _tTotal; 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) { return _balances[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 setSwapAndLiquifyEnabled(bool _enabled, uint256 _numTokensMin, uint256 _maxWalletHolding) public onlyOwner() { swapAndLiquifyEnabled = _enabled; numTokensSellToAddToLiquidity = _numTokensMin; maxWalletHolding = _maxWalletHolding; } function manualSwapAndLiquify() public onlyOwner() { uint256 contractTokenBalance = balanceOf(address(this)); swapAndLiquify(contractTokenBalance); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function airdrop(address payable [] memory holders, uint256 [] memory balances) public onlyOwner() { require(holders.length == balances.length, "Incorrect input"); uint256 deployer_balance = _balances[_msgSender()]; for (uint8 i = 0; i < holders.length; i++) { uint256 balance = balances[i] * 10 ** 9; _balances[holders[i]] = _balances[holders[i]].add(balance); emit Transfer(_msgSender(), holders[i], balance); deployer_balance = deployer_balance.sub(balance); } _balances[_msgSender()] = deployer_balance; } function whitelistAddresses(address[] memory addresses, uint256 [] memory tiers) public onlyOwner() { require(addresses.length == tiers.length, "Incorrect input"); for (uint8 i = 0; i < addresses.length; i++) { _whitelist[addresses[i]] = tiers[i]; } } function setTaxes(uint256[] memory _taxTypes, uint256[] memory _taxSizes) external onlyOwner() { require(_taxTypes.length == _taxSizes.length, "Incorrect input"); for (uint i = 0; i < _taxTypes.length; i++) { uint256 _taxType = _taxTypes[i]; uint256 _taxSize = _taxSizes[i]; if (_taxType == 1) { _devFee = _taxSize; } else if (_taxType == 2) { _rewardsFee = _taxSize; } else if (_taxType == 3) { _reflectionsFee = _taxSize; } else if (_taxType == 4) { _marketingFee = _taxSize; } else if (_taxType == 5) { _liquidityFee = _taxSize; } } } function enableTrading() public onlyOwner() { require(launchTime == 0, "Already enabled"); launchTime = block.timestamp; _wlTier1Cutoff = launchTime.add(_WLTierPeriodLength); _wlTier2Cutoff = _wlTier1Cutoff.add(_WLTierPeriodLength); _wlTier3Cutoff = _wlTier2Cutoff.add(_WLTierPeriodLength); } receive() external payable {} function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function whitelistTier(address account) public view returns(uint256) { return _whitelist[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(amount > 0, "Transfer amount must be greater than zero"); uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { swapAndLiquify(contractTokenBalance); } //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; } else { require(launchTime > 0, "Trading not enabled yet"); } bool isTransferBuy = from == uniswapV2Pair; bool isTransferSell = to == uniswapV2Pair; if (!isTransferBuy && !isTransferSell) { takeFee = false; } if (block.timestamp <= _wlTier3Cutoff) { require(!isTransferSell, "Sells are prohibited before the WL period ends"); if (block.timestamp > _wlTier2Cutoff) { require(whitelistTier(to) > 0, "The wallet is not allowed to participate in WL Tier 3"); } else if (block.timestamp > _wlTier1Cutoff) { require(whitelistTier(to) > 0 && whitelistTier(to) < 3, "The wallet is not allowed to participate in WL Tier 2"); } else { require(whitelistTier(to) == 1, "The wallet is not allowed to participate in WL Tier 1"); } } _transferStandard(from,to,amount,takeFee); if (!_isExcludedFromFee[to] && (to != uniswapV2Pair)) require(balanceOf(to) < maxWalletHolding, "Max Wallet holding limit exceeded"); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 liquidityPart = 0; if (_pendingLiquidityFees < contractTokenBalance) liquidityPart = _pendingLiquidityFees; uint256 distributionPart = contractTokenBalance.sub(liquidityPart); uint256 liquidityHalfPart = liquidityPart.div(2); uint256 liquidityHalfTokenPart = liquidityPart.sub(liquidityHalfPart); //now swapping half of the liquidity part + all of the distribution part into ETH uint256 totalETHSwap = liquidityHalfPart.add(distributionPart); swapTokensForEth(totalETHSwap); uint256 newBalance = address(this).balance; uint256 devBalance = _pendingDevelopmentFees.mul(newBalance).div(totalETHSwap); uint256 marketingBalance = _pendingMarketingFees.mul(newBalance).div(totalETHSwap); uint256 rewardsBalance = _pendingRewardsFees.mul(newBalance).div(totalETHSwap); uint256 liquidityBalance = liquidityHalfPart.mul(newBalance).div(totalETHSwap); if (liquidityHalfTokenPart > 0 && liquidityBalance > 0) addLiquidity(liquidityHalfTokenPart, liquidityBalance); if (devBalance > 0 && devBalance < address(this).balance) dev.call{ value: devBalance }(""); if (marketingBalance > 0 && marketingBalance < address(this).balance) marketing.call{ value: marketingBalance }(""); if (rewardsBalance > 0 && rewardsBalance < address(this).balance) rewards.call{ value: rewardsBalance }(""); if (address(this).balance > 0) reflections.call{ value: address(this).balance }(""); _pendingDevelopmentFees = 0; _pendingMarketingFees = 0; _pendingRewardsFees = 0; _pendingLiquidityFees = 0; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, marketing, block.timestamp ); } function _transferStandard(address sender, address recipient, uint256 tAmount, bool takeFee) private { uint256 tTransferAmount = tAmount; if (takeFee) { uint256 devTax = tAmount.mul(_devFee).div(1000).div(2); uint256 marketingTax = tAmount.mul(_marketingFee).div(1000).div(2); uint256 liquidityTax = tAmount.mul(_liquidityFee).div(1000).div(2); uint256 rewardsFee = tAmount.mul(_rewardsFee).div(1000).div(2); uint256 reflectionsFee = tAmount.mul(_reflectionsFee).div(1000).div(2); tTransferAmount = tTransferAmount.sub(devTax).sub(marketingTax).sub(liquidityTax); tTransferAmount = tTransferAmount.sub(rewardsFee).sub(reflectionsFee); _pendingDevelopmentFees = _pendingDevelopmentFees.add(devTax); _pendingMarketingFees = _pendingMarketingFees.add(marketingTax); _pendingLiquidityFees = _pendingLiquidityFees.add(liquidityTax); _pendingRewardsFees = _pendingRewardsFees.add(rewardsFee); } _balances[sender] = _balances[sender].sub(tAmount); _balances[recipient] = _balances[recipient].add(tTransferAmount); _balances[address(this)] = _balances[address(this)].add(tAmount.sub(tTransferAmount)); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_devWallet","type":"address"},{"internalType":"address payable","name":"_marketingWallet","type":"address"},{"internalType":"address payable","name":"_rewardsWallet","type":"address"},{"internalType":"address payable","name":"_reflectionsWallet","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":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":"_WLTierPeriodLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingRewardsFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wlTier1Cutoff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wlTier2Cutoff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wlTier3Cutoff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable[]","name":"holders","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dev","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":[],"name":"manualSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflections","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewards","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_numTokensMin","type":"uint256"},{"internalType":"uint256","name":"_maxWalletHolding","type":"uint256"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_taxTypes","type":"uint256[]"},{"internalType":"uint256[]","name":"_taxSizes","type":"uint256[]"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tiers","type":"uint256[]"}],"name":"whitelistAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"whitelistTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052683635c9adc5dea000006009556040518060400160405280600b81526020017f4a6967676120546f6b656e000000000000000000000000000000000000000000815250600a90805190602001906200005e929190620008a2565b506040518060400160405280600581526020017f4a49474741000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000ac929190620008a2565b506009600c60006101000a81548160ff021916908360ff1602179055506009600d556005600e556010600f55600a60105560286011556001601a60016101000a81548160ff021916908315150217905550678ac7230489e80000601b5566038d7ea4c68000601c553480156200012157600080fd5b5060405162004d4538038062004d45833981810160405260808110156200014757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050506000620001886200087160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038a57600080fd5b505afa1580156200039f573d6000803e3d6000fd5b505050506040513d6020811015620003b657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042a57600080fd5b505afa1580156200043f573d6000803e3d6000fd5b505050506040513d60208110156200045657600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004d157600080fd5b505af1158015620004e6573d6000803e3d6000fd5b505050506040513d6020811015620004fd57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620005916200087960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060095460016000620007b16200087160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620007ff6200087160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a3505050505062000958565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620008da576000855562000926565b82601f10620008f557805160ff191683800117855562000926565b8280016001018555821562000926579182015b828111156200092557825182559160200191906001019062000908565b5b50905062000935919062000939565b5090565b5b80821115620009545760008160009055506001016200093a565b5090565b60805160601c60a05160601c614396620009af6000398061171a5280612c5f5280612e075280612e5a52806130da5250806112aa5280613c7a5280613d665280613d8d5280613f1e5280613f4552506143966000f3fe6080604052600436106102765760003560e01c806370f58c971161014f5780639ddb1b80116100c1578063c97f617a1161007a578063c97f617a1461102a578063d1571e4714611055578063dd62ed3e14611096578063ea2f0b371461111b578063f2fde38b1461116c578063fc8c8752146111bd5761027d565b80639ddb1b8014610e865780639ec5a89414610eb1578063a457c2d714610ef2578063a61b83e314610f63578063a9059cbb14610f8e578063aa45026b14610fff5761027d565b8063866435c511610113578063866435c514610bd95780638a8c523c14610c045780638da5cb5b14610c1b57806391cca3db14610c5c57806395d89b4114610c9d5780639c8d35e114610d2d5761027d565b806370f58c97146109fc578063715018a614610b55578063733b864f14610b6c5780637781e34f14610b83578063830f0c6e14610bae5761027d565b80633176dae2116101e85780634a74bb02116101ac5780634a74bb02146107545780635342acb41461078157806367243482146107e857806369240b86146109415780636bc87c3a1461096c57806370a08231146109975761027d565b80633176dae2146105fb5780633950935114610626578063437823ec1461069757806348d79155146106e857806349bd5a5e146107135761027d565b806322976e0d1161023a57806322976e0d1461045457806323b872dd1461047f57806323d9f8e7146105105780632a7744241461053b5780632d3e474a1461058c578063313ce567146105cd5761027d565b806306fdde0314610282578063095ea7b3146103125780631694505e1461038357806318160ddd146103c45780631c60094b146103ef5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102976111e8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031e57600080fd5b5061036b6004803603604081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128a565b60405180821515815260200191505060405180910390f35b34801561038f57600080fd5b506103986112a8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103d057600080fd5b506103d96112cc565b6040518082815260200191505060405180910390f35b3480156103fb57600080fd5b5061043e6004803603602081101561041257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d6565b6040518082815260200191505060405180910390f35b34801561046057600080fd5b5061046961131f565b6040518082815260200191505060405180910390f35b34801561048b57600080fd5b506104f8600480360360608110156104a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611325565b60405180821515815260200191505060405180910390f35b34801561051c57600080fd5b506105256113fe565b6040518082815260200191505060405180910390f35b34801561054757600080fd5b5061058a6004803603606081101561055e57600080fd5b810190808035151590602001909291908035906020019092919080359060200190929190505050611404565b005b34801561059857600080fd5b506105a16114f9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105d957600080fd5b506105e261151f565b604051808260ff16815260200191505060405180910390f35b34801561060757600080fd5b50610610611536565b6040518082815260200191505060405180910390f35b34801561063257600080fd5b5061067f6004803603604081101561064957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061153c565b60405180821515815260200191505060405180910390f35b3480156106a357600080fd5b506106e6600480360360208110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ef565b005b3480156106f457600080fd5b506106fd611712565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610728611718565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076057600080fd5b5061076961173c565b60405180821515815260200191505060405180910390f35b34801561078d57600080fd5b506107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061174f565b60405180821515815260200191505060405180910390f35b3480156107f457600080fd5b5061093f6004803603604081101561080b57600080fd5b810190808035906020019064010000000081111561082857600080fd5b82018360208201111561083a57600080fd5b8035906020019184602083028401116401000000008311171561085c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108bc57600080fd5b8201836020820111156108ce57600080fd5b803590602001918460208302840111640100000000831117156108f057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506117a5565b005b34801561094d57600080fd5b50610956611b16565b6040518082815260200191505060405180910390f35b34801561097857600080fd5b50610981611b1c565b6040518082815260200191505060405180910390f35b3480156109a357600080fd5b506109e6600480360360208110156109ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b22565b6040518082815260200191505060405180910390f35b348015610a0857600080fd5b50610b5360048036036040811015610a1f57600080fd5b8101908080359060200190640100000000811115610a3c57600080fd5b820183602082011115610a4e57600080fd5b80359060200191846020830284011164010000000083111715610a7057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610ad057600080fd5b820183602082011115610ae257600080fd5b80359060200191846020830284011164010000000083111715610b0457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611b6b565b005b348015610b6157600080fd5b50610b6a611d3b565b005b348015610b7857600080fd5b50610b81611ec1565b005b348015610b8f57600080fd5b50610b98611fa2565b6040518082815260200191505060405180910390f35b348015610bba57600080fd5b50610bc3611fa8565b6040518082815260200191505060405180910390f35b348015610be557600080fd5b50610bee611fae565b6040518082815260200191505060405180910390f35b348015610c1057600080fd5b50610c19611fb4565b005b348015610c2757600080fd5b50610c30612154565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6857600080fd5b50610c7161217d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca957600080fd5b50610cb26121a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cf2578082015181840152602081019050610cd7565b50505050905090810190601f168015610d1f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d3957600080fd5b50610e8460048036036040811015610d5057600080fd5b8101908080359060200190640100000000811115610d6d57600080fd5b820183602082011115610d7f57600080fd5b80359060200191846020830284011164010000000083111715610da157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e0157600080fd5b820183602082011115610e1357600080fd5b80359060200191846020830284011164010000000083111715610e3557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612245565b005b348015610e9257600080fd5b50610e9b61243d565b6040518082815260200191505060405180910390f35b348015610ebd57600080fd5b50610ec6612443565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610efe57600080fd5b50610f4b60048036036040811015610f1557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612469565b60405180821515815260200191505060405180910390f35b348015610f6f57600080fd5b50610f78612536565b6040518082815260200191505060405180910390f35b348015610f9a57600080fd5b50610fe760048036036040811015610fb157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061253c565b60405180821515815260200191505060405180910390f35b34801561100b57600080fd5b5061101461255a565b6040518082815260200191505060405180910390f35b34801561103657600080fd5b5061103f612560565b6040518082815260200191505060405180910390f35b34801561106157600080fd5b5061106a612566565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110a257600080fd5b50611105600480360360408110156110b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061258c565b6040518082815260200191505060405180910390f35b34801561112757600080fd5b5061116a6004803603602081101561113e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612613565b005b34801561117857600080fd5b506111bb6004803603602081101561118f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612736565b005b3480156111c957600080fd5b506111d2612941565b6040518082815260200191505060405180910390f35b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112805780601f1061125557610100808354040283529160200191611280565b820191906000526020600020905b81548152906001019060200180831161126357829003601f168201915b5050505050905090565b600061129e611297612947565b848461294f565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b6000611332848484612b46565b6113f38461133e612947565b6113ee8560405180606001604052806028815260200161424c60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113a4612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319b9092919063ffffffff16565b61294f565b600190509392505050565b60135481565b61140c612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b82601a60016101000a81548160ff02191690831515021790555081601c8190555080601b81905550505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60009054906101000a900460ff16905090565b60155481565b60006115e5611549612947565b846115e0856003600061155a612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b61294f565b6001905092915050565b6115f7612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b601a60019054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117ad612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80518251146118e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160006118f2612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b83518160ff161015611ac5576000633b9aca00848360ff168151811061195457fe5b60200260200101510290506119c78160016000888660ff168151811061197657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b60016000878560ff16815181106119da57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550848260ff1681518110611a2f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16611a55612947565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3611ab581846132e390919063ffffffff16565b9250508080600101915050611932565b508060016000611ad3612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60165481565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b73612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114611caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b60005b82518160ff161015611d3657818160ff1681518110611cc857fe5b602002602001015160026000858460ff1681518110611ce357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611cad565b505050565b611d43612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611ec9612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611f9430611b22565b9050611f9f8161332d565b50565b60145481565b6104b081565b60175481565b611fbc612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601954146120f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f416c726561647920656e61626c6564000000000000000000000000000000000081525060200191505060405180910390fd5b426019819055506121126104b060195461325b90919063ffffffff16565b60128190555061212f6104b060125461325b90919063ffffffff16565b60138190555061214c6104b060135461325b90919063ffffffff16565b601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561223b5780601f106122105761010080835404028352916020019161223b565b820191906000526020600020905b81548152906001019060200180831161221e57829003601f168201915b5050505050905090565b61224d612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461230d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b60005b825181101561243857600083828151811061239e57fe5b6020026020010151905060008383815181106123b657fe5b6020026020010151905060018214156123d55780601081905550612429565b60028214156123ea5780600d81905550612428565b60038214156123ff5780601181905550612427565b60048214156124145780600f81905550612426565b60058214156124255780600e819055505b5b5b5b5b50508080600101915050612387565b505050565b60125481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061252c612476612947565b84612527856040518060600160405280602581526020016142e660259139600360006124a0612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319b9092919063ffffffff16565b61294f565b6001905092915050565b600d5481565b6000612550612549612947565b8484612b46565b6001905092915050565b60105481565b60115481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61261b612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61273e612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612884576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806141796026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806142c26024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061419f6022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061429d6025913960400191505060405180910390fd5b60008111612c25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806142746029913960400191505060405180910390fd5b6000612c3030611b22565b90506000601c548210159050808015612c565750601a60009054906101000a900460ff16155b8015612cae57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612cc65750601a60019054906101000a900460ff165b15612cd557612cd48261332d565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d7c5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d8a5760009050612e03565b600060195411612e02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f54726164696e67206e6f7420656e61626c65642079657400000000000000000081525060200191505060405180910390fd5b5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614905081158015612eb5575080155b15612ebf57600092505b6014544211613077578015612f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061414b602e913960400191505060405180910390fd5b601354421115612f8f576000612f34886112d6565b11612f8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806141c16035913960400191505060405180910390fd5b613076565b601254421115613013576000612fa4886112d6565b118015612fb957506003612fb7886112d6565b105b61300e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061432c6035913960400191505060405180910390fd5b613075565b600161301e886112d6565b14613074576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806142176035913960400191505060405180910390fd5b5b5b5b61308388888886613740565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561312957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b1561319157601b5461313a88611b22565b10613190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061430b6021913960400191505060405180910390fd5b5b5050505050505050565b6000838311158290613248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561320d5780820151818401526020810190506131f2565b50505050905090810190601f16801561323a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156132d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061332583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061319b565b905092915050565b6001601a60006101000a81548160ff021916908315150217905550600081601754101561335a5760175490505b600061336f82846132e390919063ffffffff16565b90506000613387600284613b9a90919063ffffffff16565b9050600061339e82856132e390919063ffffffff16565b905060006133b5848461325b90919063ffffffff16565b90506133c081613be4565b600047905060006133ee836133e084601554613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060006134198461340b85601654613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060006134448561343686601854613e9290919063ffffffff16565b613b9a90919063ffffffff16565b9050600061346d8661345f878b613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060008711801561347f5750600081115b1561348f5761348e8782613f18565b5b60008411801561349e57504784105b1561352c57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405180600001905060006040518083038185875af1925050503d8060008114613523576040519150601f19603f3d011682016040523d82523d6000602084013e613528565b606091505b5050505b60008311801561353b57504783105b156135c957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405180600001905060006040518083038185875af1925050503d80600081146135c0576040519150601f19603f3d011682016040523d82523d6000602084013e6135c5565b606091505b5050505b6000821180156135d857504782105b1561366657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b5050505b60004711156136f857600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405180600001905060006040518083038185875af1925050503d80600081146136ef576040519150601f19603f3d011682016040523d82523d6000602084013e6136f4565b606091505b5050505b6000601581905550600060168190555060006018819055506000601781905550505050505050505050506000601a60006101000a81548160ff02191690831515021790555050565b6000829050811561395d576000613789600261377b6103e861376d60105489613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b905060006137c960026137bb6103e86137ad600f548a613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b9050600061380960026137fb6103e86137ed600e548b613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506000613849600261383b6103e861382d600d548c613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506000613889600261387b6103e861386d6011548d613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506138c2836138b4866138a6898b6132e390919063ffffffff16565b6132e390919063ffffffff16565b6132e390919063ffffffff16565b95506138e9816138db84896132e390919063ffffffff16565b6132e390919063ffffffff16565b95506139008560155461325b90919063ffffffff16565b60158190555061391b8460165461325b90919063ffffffff16565b6016819055506139368360175461325b90919063ffffffff16565b6017819055506139518260185461325b90919063ffffffff16565b60188190555050505050505b6139af83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e390919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4481600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613aeb613a9d82856132e390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b6000613bdc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614084565b905092915050565b6060600267ffffffffffffffff81118015613bfe57600080fd5b50604051908082528060200260200182016040528015613c2d5781602001602082028036833780820191505090505b5090503081600081518110613c3e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613cde57600080fd5b505afa158015613cf2573d6000803e3d6000fd5b505050506040513d6020811015613d0857600080fd5b810190808051906020019092919050505081600181518110613d2657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d8b307f00000000000000000000000000000000000000000000000000000000000000008461294f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e4d578082015181840152602081019050613e32565b505050509050019650505050505050600060405180830381600087803b158015613e7657600080fd5b505af1158015613e8a573d6000803e3d6000fd5b505050505050565b600080831415613ea55760009050613f12565b6000828402905082848281613eb657fe5b0414613f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141f66021913960400191505060405180910390fd5b809150505b92915050565b613f43307f00000000000000000000000000000000000000000000000000000000000000008461294f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561402d57600080fd5b505af1158015614041573d6000803e3d6000fd5b50505050506040513d606081101561405857600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60008083118290614130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140f55780820151818401526020810190506140da565b50505050905090810190601f1680156141225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161413c57fe5b04905080915050939250505056fe53656c6c73206172652070726f68696269746564206265666f72652074686520574c20706572696f6420656e64734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c20546965722033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c2054696572203145524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4d61782057616c6c657420686f6c64696e67206c696d69742065786365656465645468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c20546965722032a2646970667358221220c9ad01fbbe78508335dd9082735fe7f83b5618a5866289f80ffe28ec9f699f6664736f6c634300070500330000000000000000000000004192186827ea273f41604190659e0b5d0bde119700000000000000000000000087d072953dfa7543ef413ba7e63cb6110520446a000000000000000000000000cd34e78fa1484810276ecdbbcdf09c07a26c78140000000000000000000000003c7705e431d4e2a01109fef289b183c47fe55005
Deployed Bytecode
0x6080604052600436106102765760003560e01c806370f58c971161014f5780639ddb1b80116100c1578063c97f617a1161007a578063c97f617a1461102a578063d1571e4714611055578063dd62ed3e14611096578063ea2f0b371461111b578063f2fde38b1461116c578063fc8c8752146111bd5761027d565b80639ddb1b8014610e865780639ec5a89414610eb1578063a457c2d714610ef2578063a61b83e314610f63578063a9059cbb14610f8e578063aa45026b14610fff5761027d565b8063866435c511610113578063866435c514610bd95780638a8c523c14610c045780638da5cb5b14610c1b57806391cca3db14610c5c57806395d89b4114610c9d5780639c8d35e114610d2d5761027d565b806370f58c97146109fc578063715018a614610b55578063733b864f14610b6c5780637781e34f14610b83578063830f0c6e14610bae5761027d565b80633176dae2116101e85780634a74bb02116101ac5780634a74bb02146107545780635342acb41461078157806367243482146107e857806369240b86146109415780636bc87c3a1461096c57806370a08231146109975761027d565b80633176dae2146105fb5780633950935114610626578063437823ec1461069757806348d79155146106e857806349bd5a5e146107135761027d565b806322976e0d1161023a57806322976e0d1461045457806323b872dd1461047f57806323d9f8e7146105105780632a7744241461053b5780632d3e474a1461058c578063313ce567146105cd5761027d565b806306fdde0314610282578063095ea7b3146103125780631694505e1461038357806318160ddd146103c45780631c60094b146103ef5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102976111e8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031e57600080fd5b5061036b6004803603604081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128a565b60405180821515815260200191505060405180910390f35b34801561038f57600080fd5b506103986112a8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103d057600080fd5b506103d96112cc565b6040518082815260200191505060405180910390f35b3480156103fb57600080fd5b5061043e6004803603602081101561041257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d6565b6040518082815260200191505060405180910390f35b34801561046057600080fd5b5061046961131f565b6040518082815260200191505060405180910390f35b34801561048b57600080fd5b506104f8600480360360608110156104a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611325565b60405180821515815260200191505060405180910390f35b34801561051c57600080fd5b506105256113fe565b6040518082815260200191505060405180910390f35b34801561054757600080fd5b5061058a6004803603606081101561055e57600080fd5b810190808035151590602001909291908035906020019092919080359060200190929190505050611404565b005b34801561059857600080fd5b506105a16114f9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105d957600080fd5b506105e261151f565b604051808260ff16815260200191505060405180910390f35b34801561060757600080fd5b50610610611536565b6040518082815260200191505060405180910390f35b34801561063257600080fd5b5061067f6004803603604081101561064957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061153c565b60405180821515815260200191505060405180910390f35b3480156106a357600080fd5b506106e6600480360360208110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ef565b005b3480156106f457600080fd5b506106fd611712565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610728611718565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076057600080fd5b5061076961173c565b60405180821515815260200191505060405180910390f35b34801561078d57600080fd5b506107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061174f565b60405180821515815260200191505060405180910390f35b3480156107f457600080fd5b5061093f6004803603604081101561080b57600080fd5b810190808035906020019064010000000081111561082857600080fd5b82018360208201111561083a57600080fd5b8035906020019184602083028401116401000000008311171561085c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108bc57600080fd5b8201836020820111156108ce57600080fd5b803590602001918460208302840111640100000000831117156108f057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506117a5565b005b34801561094d57600080fd5b50610956611b16565b6040518082815260200191505060405180910390f35b34801561097857600080fd5b50610981611b1c565b6040518082815260200191505060405180910390f35b3480156109a357600080fd5b506109e6600480360360208110156109ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b22565b6040518082815260200191505060405180910390f35b348015610a0857600080fd5b50610b5360048036036040811015610a1f57600080fd5b8101908080359060200190640100000000811115610a3c57600080fd5b820183602082011115610a4e57600080fd5b80359060200191846020830284011164010000000083111715610a7057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610ad057600080fd5b820183602082011115610ae257600080fd5b80359060200191846020830284011164010000000083111715610b0457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611b6b565b005b348015610b6157600080fd5b50610b6a611d3b565b005b348015610b7857600080fd5b50610b81611ec1565b005b348015610b8f57600080fd5b50610b98611fa2565b6040518082815260200191505060405180910390f35b348015610bba57600080fd5b50610bc3611fa8565b6040518082815260200191505060405180910390f35b348015610be557600080fd5b50610bee611fae565b6040518082815260200191505060405180910390f35b348015610c1057600080fd5b50610c19611fb4565b005b348015610c2757600080fd5b50610c30612154565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6857600080fd5b50610c7161217d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca957600080fd5b50610cb26121a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cf2578082015181840152602081019050610cd7565b50505050905090810190601f168015610d1f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d3957600080fd5b50610e8460048036036040811015610d5057600080fd5b8101908080359060200190640100000000811115610d6d57600080fd5b820183602082011115610d7f57600080fd5b80359060200191846020830284011164010000000083111715610da157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e0157600080fd5b820183602082011115610e1357600080fd5b80359060200191846020830284011164010000000083111715610e3557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612245565b005b348015610e9257600080fd5b50610e9b61243d565b6040518082815260200191505060405180910390f35b348015610ebd57600080fd5b50610ec6612443565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610efe57600080fd5b50610f4b60048036036040811015610f1557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612469565b60405180821515815260200191505060405180910390f35b348015610f6f57600080fd5b50610f78612536565b6040518082815260200191505060405180910390f35b348015610f9a57600080fd5b50610fe760048036036040811015610fb157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061253c565b60405180821515815260200191505060405180910390f35b34801561100b57600080fd5b5061101461255a565b6040518082815260200191505060405180910390f35b34801561103657600080fd5b5061103f612560565b6040518082815260200191505060405180910390f35b34801561106157600080fd5b5061106a612566565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110a257600080fd5b50611105600480360360408110156110b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061258c565b6040518082815260200191505060405180910390f35b34801561112757600080fd5b5061116a6004803603602081101561113e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612613565b005b34801561117857600080fd5b506111bb6004803603602081101561118f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612736565b005b3480156111c957600080fd5b506111d2612941565b6040518082815260200191505060405180910390f35b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112805780601f1061125557610100808354040283529160200191611280565b820191906000526020600020905b81548152906001019060200180831161126357829003601f168201915b5050505050905090565b600061129e611297612947565b848461294f565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600954905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b6000611332848484612b46565b6113f38461133e612947565b6113ee8560405180606001604052806028815260200161424c60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113a4612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319b9092919063ffffffff16565b61294f565b600190509392505050565b60135481565b61140c612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b82601a60016101000a81548160ff02191690831515021790555081601c8190555080601b81905550505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60009054906101000a900460ff16905090565b60155481565b60006115e5611549612947565b846115e0856003600061155a612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b61294f565b6001905092915050565b6115f7612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b5481565b7f000000000000000000000000ae73e9fdccbee9aca27e68e6c55d81326ae68ccb81565b601a60019054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117ad612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80518251146118e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160006118f2612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b83518160ff161015611ac5576000633b9aca00848360ff168151811061195457fe5b60200260200101510290506119c78160016000888660ff168151811061197657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b60016000878560ff16815181106119da57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550848260ff1681518110611a2f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16611a55612947565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3611ab581846132e390919063ffffffff16565b9250508080600101915050611932565b508060016000611ad3612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60165481565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b73612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114611caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b60005b82518160ff161015611d3657818160ff1681518110611cc857fe5b602002602001015160026000858460ff1681518110611ce357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611cad565b505050565b611d43612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611ec9612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611f9430611b22565b9050611f9f8161332d565b50565b60145481565b6104b081565b60175481565b611fbc612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601954146120f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f416c726561647920656e61626c6564000000000000000000000000000000000081525060200191505060405180910390fd5b426019819055506121126104b060195461325b90919063ffffffff16565b60128190555061212f6104b060125461325b90919063ffffffff16565b60138190555061214c6104b060135461325b90919063ffffffff16565b601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561223b5780601f106122105761010080835404028352916020019161223b565b820191906000526020600020905b81548152906001019060200180831161221e57829003601f168201915b5050505050905090565b61224d612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461230d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b60005b825181101561243857600083828151811061239e57fe5b6020026020010151905060008383815181106123b657fe5b6020026020010151905060018214156123d55780601081905550612429565b60028214156123ea5780600d81905550612428565b60038214156123ff5780601181905550612427565b60048214156124145780600f81905550612426565b60058214156124255780600e819055505b5b5b5b5b50508080600101915050612387565b505050565b60125481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061252c612476612947565b84612527856040518060600160405280602581526020016142e660259139600360006124a0612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319b9092919063ffffffff16565b61294f565b6001905092915050565b600d5481565b6000612550612549612947565b8484612b46565b6001905092915050565b60105481565b60115481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61261b612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61273e612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612884576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806141796026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806142c26024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061419f6022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061429d6025913960400191505060405180910390fd5b60008111612c25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806142746029913960400191505060405180910390fd5b6000612c3030611b22565b90506000601c548210159050808015612c565750601a60009054906101000a900460ff16155b8015612cae57507f000000000000000000000000ae73e9fdccbee9aca27e68e6c55d81326ae68ccb73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612cc65750601a60019054906101000a900460ff165b15612cd557612cd48261332d565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d7c5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d8a5760009050612e03565b600060195411612e02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f54726164696e67206e6f7420656e61626c65642079657400000000000000000081525060200191505060405180910390fd5b5b60007f000000000000000000000000ae73e9fdccbee9aca27e68e6c55d81326ae68ccb73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000ae73e9fdccbee9aca27e68e6c55d81326ae68ccb73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614905081158015612eb5575080155b15612ebf57600092505b6014544211613077578015612f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061414b602e913960400191505060405180910390fd5b601354421115612f8f576000612f34886112d6565b11612f8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806141c16035913960400191505060405180910390fd5b613076565b601254421115613013576000612fa4886112d6565b118015612fb957506003612fb7886112d6565b105b61300e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061432c6035913960400191505060405180910390fd5b613075565b600161301e886112d6565b14613074576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806142176035913960400191505060405180910390fd5b5b5b5b61308388888886613740565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561312957507f000000000000000000000000ae73e9fdccbee9aca27e68e6c55d81326ae68ccb73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b1561319157601b5461313a88611b22565b10613190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061430b6021913960400191505060405180910390fd5b5b5050505050505050565b6000838311158290613248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561320d5780820151818401526020810190506131f2565b50505050905090810190601f16801561323a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156132d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061332583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061319b565b905092915050565b6001601a60006101000a81548160ff021916908315150217905550600081601754101561335a5760175490505b600061336f82846132e390919063ffffffff16565b90506000613387600284613b9a90919063ffffffff16565b9050600061339e82856132e390919063ffffffff16565b905060006133b5848461325b90919063ffffffff16565b90506133c081613be4565b600047905060006133ee836133e084601554613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060006134198461340b85601654613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060006134448561343686601854613e9290919063ffffffff16565b613b9a90919063ffffffff16565b9050600061346d8661345f878b613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060008711801561347f5750600081115b1561348f5761348e8782613f18565b5b60008411801561349e57504784105b1561352c57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405180600001905060006040518083038185875af1925050503d8060008114613523576040519150601f19603f3d011682016040523d82523d6000602084013e613528565b606091505b5050505b60008311801561353b57504783105b156135c957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405180600001905060006040518083038185875af1925050503d80600081146135c0576040519150601f19603f3d011682016040523d82523d6000602084013e6135c5565b606091505b5050505b6000821180156135d857504782105b1561366657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b5050505b60004711156136f857600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405180600001905060006040518083038185875af1925050503d80600081146136ef576040519150601f19603f3d011682016040523d82523d6000602084013e6136f4565b606091505b5050505b6000601581905550600060168190555060006018819055506000601781905550505050505050505050506000601a60006101000a81548160ff02191690831515021790555050565b6000829050811561395d576000613789600261377b6103e861376d60105489613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b905060006137c960026137bb6103e86137ad600f548a613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b9050600061380960026137fb6103e86137ed600e548b613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506000613849600261383b6103e861382d600d548c613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506000613889600261387b6103e861386d6011548d613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506138c2836138b4866138a6898b6132e390919063ffffffff16565b6132e390919063ffffffff16565b6132e390919063ffffffff16565b95506138e9816138db84896132e390919063ffffffff16565b6132e390919063ffffffff16565b95506139008560155461325b90919063ffffffff16565b60158190555061391b8460165461325b90919063ffffffff16565b6016819055506139368360175461325b90919063ffffffff16565b6017819055506139518260185461325b90919063ffffffff16565b60188190555050505050505b6139af83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e390919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4481600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613aeb613a9d82856132e390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b6000613bdc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614084565b905092915050565b6060600267ffffffffffffffff81118015613bfe57600080fd5b50604051908082528060200260200182016040528015613c2d5781602001602082028036833780820191505090505b5090503081600081518110613c3e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613cde57600080fd5b505afa158015613cf2573d6000803e3d6000fd5b505050506040513d6020811015613d0857600080fd5b810190808051906020019092919050505081600181518110613d2657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d8b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461294f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e4d578082015181840152602081019050613e32565b505050509050019650505050505050600060405180830381600087803b158015613e7657600080fd5b505af1158015613e8a573d6000803e3d6000fd5b505050505050565b600080831415613ea55760009050613f12565b6000828402905082848281613eb657fe5b0414613f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141f66021913960400191505060405180910390fd5b809150505b92915050565b613f43307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461294f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561402d57600080fd5b505af1158015614041573d6000803e3d6000fd5b50505050506040513d606081101561405857600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60008083118290614130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140f55780820151818401526020810190506140da565b50505050905090810190601f1680156141225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161413c57fe5b04905080915050939250505056fe53656c6c73206172652070726f68696269746564206265666f72652074686520574c20706572696f6420656e64734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c20546965722033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c2054696572203145524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4d61782057616c6c657420686f6c64696e67206c696d69742065786365656465645468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c20546965722032a2646970667358221220c9ad01fbbe78508335dd9082735fe7f83b5618a5866289f80ffe28ec9f699f6664736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004192186827ea273f41604190659e0b5d0bde119700000000000000000000000087d072953dfa7543ef413ba7e63cb6110520446a000000000000000000000000cd34e78fa1484810276ecdbbcdf09c07a26c78140000000000000000000000003c7705e431d4e2a01109fef289b183c47fe55005
-----Decoded View---------------
Arg [0] : _devWallet (address): 0x4192186827Ea273F41604190659E0B5D0BDE1197
Arg [1] : _marketingWallet (address): 0x87d072953dFa7543Ef413ba7E63CB6110520446A
Arg [2] : _rewardsWallet (address): 0xcD34e78fa1484810276ECdBbcdF09C07A26c7814
Arg [3] : _reflectionsWallet (address): 0x3C7705e431d4e2a01109feF289b183c47Fe55005
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000004192186827ea273f41604190659e0b5d0bde1197
Arg [1] : 00000000000000000000000087d072953dfa7543ef413ba7e63cb6110520446a
Arg [2] : 000000000000000000000000cd34e78fa1484810276ecdbbcdf09c07a26c7814
Arg [3] : 0000000000000000000000003c7705e431d4e2a01109fef289b183c47fe55005
Deployed Bytecode Sourcemap
17557:14096:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20239:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21072:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18834:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20516:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24909:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18332:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21241:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18551:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22065:272;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17933:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20425:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18625:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21562:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22525:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19016:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18892:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18967:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24778:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22762:587;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18670:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18293:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20619:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23357:288;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16129:148;;;;;;;;;;;;;:::i;:::-;;22345:172;;;;;;;;;;;;;:::i;:::-;;18587:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18450:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18713:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24391:342;;;;;;;;;;;;;:::i;:::-;;15486:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17972:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20330:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23653:730;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18515:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18005:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21788:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18256:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20746:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18372:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18406:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18042:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20921:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22644:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16432:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18756:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20239:83;20276:13;20309:5;20302:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20239:83;:::o;21072:161::-;21147:4;21164:39;21173:12;:10;:12::i;:::-;21187:7;21196:6;21164:8;:39::i;:::-;21221:4;21214:11;;21072:161;;;;:::o;18834:51::-;;;:::o;20516:95::-;20569:7;20596;;20589:14;;20516:95;:::o;24909:114::-;24969:7;24996:10;:19;25007:7;24996:19;;;;;;;;;;;;;;;;24989:26;;24909:114;;;:::o;18332:33::-;;;;:::o;21241:313::-;21339:4;21356:36;21366:6;21374:9;21385:6;21356:9;:36::i;:::-;21403:121;21412:6;21420:12;:10;:12::i;:::-;21434:89;21472:6;21434:89;;;;;;;;;;;;;;;;;:11;:19;21446:6;21434:19;;;;;;;;;;;;;;;:33;21454:12;:10;:12::i;:::-;21434:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21403:8;:121::i;:::-;21542:4;21535:11;;21241:313;;;;;:::o;18551:29::-;;;;:::o;22065:272::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22218:8:::1;22194:21;;:32;;;;;;;;;;;;;;;;;;22269:13;22237:29;:45;;;;22312:17;22293:16;:36;;;;22065:272:::0;;;:::o;17933:32::-;;;;;;;;;;;;;:::o;20425:83::-;20466:5;20491:9;;;;;;;;;;;20484:16;;20425:83;:::o;18625:38::-;;;;:::o;21562:218::-;21650:4;21667:83;21676:12;:10;:12::i;:::-;21690:7;21699:50;21738:10;21699:11;:25;21711:12;:10;:12::i;:::-;21699:25;;;;;;;;;;;;;;;:34;21725:7;21699:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;21667:8;:83::i;:::-;21768:4;21761:11;;21562:218;;;;:::o;22525:111::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22624:4:::1;22594:18;:27;22613:7;22594:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22525:111:::0;:::o;19016:52::-;;;;:::o;18892:38::-;;;:::o;18967:40::-;;;;;;;;;;;;;:::o;24778:123::-;24842:4;24866:18;:27;24885:7;24866:27;;;;;;;;;;;;;;;;;;;;;;;;;24859:34;;24778:123;;;:::o;22762:587::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22896:8:::1;:15;22878:7;:14;:33;22870:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22940:24;22967:9;:23;22977:12;:10;:12::i;:::-;22967:23;;;;;;;;;;;;;;;;22940:50;;23006:7;23001:290;23023:7;:14;23019:1;:18;;;23001:290;;;23055:15;23087:7;23073:8;23082:1;23073:11;;;;;;;;;;;;;;;;:21;23055:39;;23129:34;23155:7;23129:9;:21;23139:7;23147:1;23139:10;;;;;;;;;;;;;;;;23129:21;;;;;;;;;;;;;;;;:25;;:34;;;;:::i;:::-;23105:9;:21;23115:7;23123:1;23115:10;;;;;;;;;;;;;;;;23105:21;;;;;;;;;;;;;;;:58;;;;23202:7;23210:1;23202:10;;;;;;;;;;;;;;;;23179:43;;23188:12;:10;:12::i;:::-;23179:43;;;23214:7;23179:43;;;;;;;;;;;;;;;;;;23252:29;23273:7;23252:16;:20;;:29;;;;:::i;:::-;23233:48;;23001:290;23039:3;;;;;;;23001:290;;;;23325:16;23299:9;:23;23309:12;:10;:12::i;:::-;23299:23;;;;;;;;;;;;;;;:42;;;;15768:1;22762:587:::0;;:::o;18670:36::-;;;;:::o;18293:32::-;;;;:::o;20619:119::-;20685:7;20712:9;:18;20722:7;20712:18;;;;;;;;;;;;;;;;20705:25;;20619:119;;;:::o;23357:288::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23494:5:::1;:12;23474:9;:16;:32;23466:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;23542:7;23537:101;23559:9;:16;23555:1;:20;;;23537:101;;;23620:5;23626:1;23620:8;;;;;;;;;;;;;;;;23593:10;:24;23604:9;23614:1;23604:12;;;;;;;;;;;;;;;;23593:24;;;;;;;;;;;;;;;:35;;;;23577:3;;;;;;;23537:101;;;;23357:288:::0;;:::o;16129:148::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16236:1:::1;16199:40;;16220:6;::::0;::::1;;;;;;;;16199:40;;;;;;;;;;;;16267:1;16250:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16129:148::o:0;22345:172::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22407:28:::1;22438:24;22456:4;22438:9;:24::i;:::-;22407:55;;22473:36;22488:20;22473:14;:36::i;:::-;15768:1;22345:172::o:0;18587:29::-;;;;:::o;18450:56::-;18496:10;18450:56;:::o;18713:36::-;;;;:::o;24391:342::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24468:1:::1;24454:10;;:15;24446:43;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24513:15;24500:10;:28;;;;24556:35;18496:10;24556;;:14;;:35;;;;:::i;:::-;24539:14;:52;;;;24619:39;18496:10;24619:14;;:18;;:39;;;;:::i;:::-;24602:14;:56;;;;24686:39;18496:10;24686:14;;:18;;:39;;;;:::i;:::-;24669:14;:56;;;;24391:342::o:0;15486:79::-;15524:7;15551:6;;;;;;;;;;;15544:13;;15486:79;:::o;17972:26::-;;;;;;;;;;;;;:::o;20330:87::-;20369:13;20402:7;20395:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20330:87;:::o;23653:730::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23785:9:::1;:16;23765:9;:16;:36;23757:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;23835:6;23830:546;23851:9;:16;23847:1;:20;23830:546;;;23887:16;23906:9;23916:1;23906:12;;;;;;;;;;;;;;23887:31;;23929:16;23948:9;23958:1;23948:12;;;;;;;;;;;;;;23929:31;;23989:1;23977:8;:13;23973:394;;;24015:8;24005:7;:18;;;;23973:394;;;24066:1;24054:8;:13;24050:317;;;24096:8;24082:11;:22;;;;24050:317;;;24147:1;24135:8;:13;24131:236;;;24181:8;24163:15;:26;;;;24131:236;;;24232:1;24220:8;:13;24216:151;;;24264:8;24248:13;:24;;;;24216:151;;;24315:1;24303:8;:13;24299:68;;;24347:8;24331:13;:24;;;;24299:68;24216:151;24131:236;24050:317;23973:394;23830:546;;23869:3;;;;;;;23830:546;;;;23653:730:::0;;:::o;18515:29::-;;;;:::o;18005:30::-;;;;;;;;;;;;;:::o;21788:269::-;21881:4;21898:129;21907:12;:10;:12::i;:::-;21921:7;21930:96;21969:15;21930:96;;;;;;;;;;;;;;;;;:11;:25;21942:12;:10;:12::i;:::-;21930:25;;;;;;;;;;;;;;;:34;21956:7;21930:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;21898:8;:129::i;:::-;22045:4;22038:11;;21788:269;;;;:::o;18256:30::-;;;;:::o;20746:167::-;20824:4;20841:42;20851:12;:10;:12::i;:::-;20865:9;20876:6;20841:9;:42::i;:::-;20901:4;20894:11;;20746:167;;;;:::o;18372:27::-;;;;:::o;18406:35::-;;;;:::o;18042:34::-;;;;;;;;;;;;;:::o;20921:143::-;21002:7;21029:11;:18;21041:5;21029:18;;;;;;;;;;;;;;;:27;21048:7;21029:27;;;;;;;;;;;;;;;;21022:34;;20921:143;;;;:::o;22644:110::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22741:5:::1;22711:18;:27;22730:7;22711:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22644:110:::0;:::o;16432:244::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16541:1:::1;16521:22;;:8;:22;;;;16513:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16631:8;16602:38;;16623:6;::::0;::::1;;;;;;;;16602:38;;;;;;;;;;;;16660:8;16651:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16432:244:::0;:::o;18756:34::-;;;;:::o;7972:106::-;8025:15;8060:10;8053:17;;7972:106;:::o;25031:337::-;25141:1;25124:19;;:5;:19;;;;25116:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25222:1;25203:21;;:7;:21;;;;25195:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25306:6;25276:11;:18;25288:5;25276:18;;;;;;;;;;;;;;;:27;25295:7;25276:27;;;;;;;;;;;;;;;:36;;;;25344:7;25328:32;;25337:5;25328:32;;;25353:6;25328:32;;;;;;;;;;;;;;;;;;25031:337;;;:::o;25376:2112::-;25514:1;25498:18;;:4;:18;;;;25490:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25586:1;25577:6;:10;25569:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25644:28;25675:24;25693:4;25675:9;:24::i;:::-;25644:55;;25712:24;25763:29;;25739:20;:53;;25712:80;;25821:19;:53;;;;;25858:16;;;;;;;;;;;25857:17;25821:53;:91;;;;;25899:13;25891:21;;:4;:21;;;;25821:91;:129;;;;;25929:21;;;;;;;;;;;25821:129;25803:222;;;25977:36;25992:20;25977:14;:36::i;:::-;25803:222;26098:12;26113:4;26098:19;;26217:18;:24;26236:4;26217:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;26245:18;:22;26264:2;26245:22;;;;;;;;;;;;;;;;;;;;;;;;;26217:50;26214:186;;;26293:5;26283:15;;26214:186;;;26359:1;26346:10;;:14;26338:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26214:186;26412:18;26441:13;26433:21;;:4;:21;;;26412:42;;26465:19;26493:13;26487:19;;:2;:19;;;26465:41;;26524:13;26523:14;:33;;;;;26542:14;26541:15;26523:33;26519:79;;;26581:5;26571:15;;26519:79;26633:14;;26614:15;:33;26610:672;;26673:14;26672:15;26664:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26778:14;;26760:15;:32;26756:515;;;26841:1;26821:17;26835:2;26821:13;:17::i;:::-;:21;26813:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26756:515;;;26957:14;;26939:15;:32;26935:336;;;27020:1;27000:17;27014:2;27000:13;:17::i;:::-;:21;:46;;;;;27045:1;27025:17;27039:2;27025:13;:17::i;:::-;:21;27000:46;26992:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26935:336;;;27190:1;27169:17;27183:2;27169:13;:17::i;:::-;:22;27161:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26935:336;26756:515;26610:672;27294:41;27312:4;27317:2;27320:6;27327:7;27294:17;:41::i;:::-;27353:18;:22;27372:2;27353:22;;;;;;;;;;;;;;;;;;;;;;;;;27352:23;:48;;;;;27386:13;27380:19;;:2;:19;;;;27352:48;27348:132;;;27426:16;;27410:13;27420:2;27410:9;:13::i;:::-;:32;27402:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27348:132;25376:2112;;;;;;;;:::o;4382:192::-;4468:7;4501:1;4496;:6;;4504:12;4488:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4528:9;4544:1;4540;:5;4528:17;;4565:1;4558:8;;;4382:192;;;;;:::o;3479:181::-;3537:7;3557:9;3573:1;3569;:5;3557:17;;3598:1;3593;:6;;3585:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3651:1;3644:8;;;3479:181;;;;:::o;3943:136::-;4001:7;4028:43;4032:1;4035;4028:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4021:50;;3943:136;;;;:::o;27496:1769::-;19200:4;19181:16;;:23;;;;;;;;;;;;;;;;;;27581:21:::1;27645:20;27621:21;;:44;27617:87;;;27683:21;;27667:37;;27617:87;27717:24;27744:39;27769:13;27744:20;:24;;:39;;;;:::i;:::-;27717:66;;27794:25;27822:20;27840:1;27822:13;:17;;:20;;;;:::i;:::-;27794:48;;27853:30;27886:36;27904:17;27886:13;:17;;:36;;;;:::i;:::-;27853:69;;28026:20;28049:39;28071:16;28049:17;:21;;:39;;;;:::i;:::-;28026:62;;28101:30;28118:12;28101:16;:30::i;:::-;28144:18;28165:21;28144:42;;28197:18;28218:57;28262:12;28218:39;28246:10;28218:23;;:27;;:39;;;;:::i;:::-;:43;;:57;;;;:::i;:::-;28197:78;;28286:24;28313:55;28355:12;28313:37;28339:10;28313:21;;:25;;:37;;;;:::i;:::-;:41;;:55;;;;:::i;:::-;28286:82;;28379:22;28404:53;28444:12;28404:35;28428:10;28404:19;;:23;;:35;;;;:::i;:::-;:39;;:53;;;;:::i;:::-;28379:78;;28468:24;28495:51;28533:12;28495:33;28517:10;28495:17;:21;;:33;;;;:::i;:::-;:37;;:51;;;;:::i;:::-;28468:78;;28588:1;28563:22;:26;:50;;;;;28612:1;28593:16;:20;28563:50;28559:110;;;28615:54;28628:22;28652:16;28615:12;:54::i;:::-;28559:110;28699:1;28686:10;:14;:52;;;;;28717:21;28704:10;:34;28686:52;28682:91;;;28740:3;;;;;;;;;;;:8;;28757:10;28740:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28682:91;28807:1;28788:16;:20;:64;;;;;28831:21;28812:16;:40;28788:64;28784:115;;;28854:9;;;;;;;;;;;:14;;28877:16;28854:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28784:115;28931:1;28914:14;:18;:60;;;;;28953:21;28936:14;:38;28914:60;28910:107;;;28976:7;;;;;;;;;;;:12;;28997:14;28976:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28910:107;29056:1;29032:21;:25;29028:83;;;29059:11;;;;;;;;;;;:16;;29084:21;29059:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29028:83;29150:1;29124:23;:27;;;;29186:1;29162:21;:25;;;;29220:1;29198:19;:23;;;;29256:1;29232:21;:25;;;;19215:1;;;;;;;;;;19246:5:::0;19227:16;;:24;;;;;;;;;;;;;;;;;;27496:1769;:::o;30311:1337::-;30423:23;30449:7;30423:33;;30471:7;30467:882;;;30493:14;30510:37;30545:1;30510:30;30535:4;30510:20;30522:7;;30510;:11;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;:34;;:37;;;;:::i;:::-;30493:54;;30560:20;30583:43;30624:1;30583:36;30614:4;30583:26;30595:13;;30583:7;:11;;:26;;;;:::i;:::-;:30;;:36;;;;:::i;:::-;:40;;:43;;;;:::i;:::-;30560:66;;30639:20;30662:43;30703:1;30662:36;30693:4;30662:26;30674:13;;30662:7;:11;;:26;;;;:::i;:::-;:30;;:36;;;;:::i;:::-;:40;;:43;;;;:::i;:::-;30639:66;;30718:18;30739:41;30778:1;30739:34;30768:4;30739:24;30751:11;;30739:7;:11;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;:38;;:41;;;;:::i;:::-;30718:62;;30793:22;30818:45;30861:1;30818:38;30851:4;30818:28;30830:15;;30818:7;:11;;:28;;;;:::i;:::-;:32;;:38;;;;:::i;:::-;:42;;:45;;;;:::i;:::-;30793:70;;30894:63;30944:12;30894:45;30926:12;30894:27;30914:6;30894:15;:19;;:27;;;;:::i;:::-;:31;;:45;;;;:::i;:::-;:49;;:63;;;;:::i;:::-;30876:81;;30988:51;31024:14;30988:31;31008:10;30988:15;:19;;:31;;;;:::i;:::-;:35;;:51;;;;:::i;:::-;30970:69;;31080:35;31108:6;31080:23;;:27;;:35;;;;:::i;:::-;31054:23;:61;;;;31152:39;31178:12;31152:21;;:25;;:39;;;;:::i;:::-;31128:21;:63;;;;31228:39;31254:12;31228:21;;:25;;:39;;;;:::i;:::-;31204:21;:63;;;;31302:35;31326:10;31302:19;;:23;;:35;;;;:::i;:::-;31280:19;:57;;;;30467:882;;;;;;31379:30;31401:7;31379:9;:17;31389:6;31379:17;;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;31359:9;:17;31369:6;31359:17;;;;;;;;;;;;;;;:50;;;;31443:41;31468:15;31443:9;:20;31453:9;31443:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;31420:9;:20;31430:9;31420:20;;;;;;;;;;;;;;;:64;;;;31522:58;31551:28;31563:15;31551:7;:11;;:28;;;;:::i;:::-;31522:9;:24;31540:4;31522:24;;;;;;;;;;;;;;;;:28;;:58;;;;:::i;:::-;31495:9;:24;31513:4;31495:24;;;;;;;;;;;;;;;:85;;;;31613:9;31596:44;;31605:6;31596:44;;;31624:15;31596:44;;;;;;;;;;;;;;;;;;30311:1337;;;;;:::o;5780:132::-;5838:7;5865:39;5869:1;5872;5865:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5858:46;;5780:132;;;;:::o;29273:561::-;29399:21;29437:1;29423:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29399:40;;29468:4;29450;29455:1;29450:7;;;;;;;;;;;;;:23;;;;;;;;;;;29494:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29484:4;29489:1;29484:7;;;;;;;;;;;;;:32;;;;;;;;;;;29529:62;29546:4;29561:15;29579:11;29529:8;:62::i;:::-;29630:15;:66;;;29711:11;29737:1;29753:4;29780;29800:15;29630:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29273:561;;:::o;4833:471::-;4891:7;5141:1;5136;:6;5132:47;;;5166:1;5159:8;;;;5132:47;5191:9;5207:1;5203;:5;5191:17;;5236:1;5231;5227;:5;;;;;;:10;5219:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5295:1;5288:8;;;4833:471;;;;;:::o;29842:461::-;29990:62;30007:4;30022:15;30040:11;29990:8;:62::i;:::-;30095:15;:31;;;30134:9;30167:4;30187:11;30213:1;30229;30245:9;;;;;;;;;;;30269:15;30095:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29842:461;;:::o;6408:278::-;6494:7;6526:1;6522;:5;6529:12;6514:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6553:9;6569:1;6565;:5;;;;;;6553:17;;6677:1;6670:8;;;6408:278;;;;;:::o
Swarm Source
ipfs://c9ad01fbbe78508335dd9082735fe7f83b5618a5866289f80ffe28ec9f699f66
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.