ERC-20
Overview
Max Total Supply
2,000,000 $Lady
Holders
193
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
7,195 $LadyValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DividendTokenWithAntibot
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-01 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.1; library Address { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } pragma solidity ^0.8.0; interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { 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 _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20Permit { function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function nonces(address owner) external view returns (uint256); function DOMAIN_SEPARATOR() external view returns (bytes32); } library SafeERC20 { using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 oldAllowance = token.allowance(address(this), spender); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value)); } } function forceApprove(IERC20 token, address spender, uint256 value) internal { bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value); if (!_callOptionalReturnBool(token, approvalCall)) { _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0)); _callOptionalReturn(token, approvalCall); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); require(returndata.length == 0 || abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false // and not revert is the subcall reverts. (bool success, bytes memory returndata) = address(token).call(data); return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && Address.isContract(address(token)); } } library Clones { function clone(address implementation) internal returns (address instance) { /// @solidity memory-safe-assembly assembly { // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes // of the `implementation` address with the bytecode before the address. mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000)) // Packs the remaining 17 bytes of `implementation` with the bytecode after the address. mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3)) instance := create(0, 0x09, 0x37) } require(instance != address(0), "ERC1167: create failed"); } function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) { /// @solidity memory-safe-assembly assembly { // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes // of the `implementation` address with the bytecode before the address. mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000)) // Packs the remaining 17 bytes of `implementation` with the bytecode after the address. mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3)) instance := create2(0, 0x09, 0x37, salt) } require(instance != address(0), "ERC1167: create2 failed"); } function predictDeterministicAddress( address implementation, bytes32 salt, address deployer ) internal pure returns (address predicted) { /// @solidity memory-safe-assembly assembly { let ptr := mload(0x40) mstore(add(ptr, 0x38), deployer) mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff) mstore(add(ptr, 0x14), implementation) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73) mstore(add(ptr, 0x58), salt) mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37)) predicted := keccak256(add(ptr, 0x43), 0x55) } } function predictDeterministicAddress( address implementation, bytes32 salt ) internal view returns (address predicted) { return predictDeterministicAddress(implementation, salt, address(this)); } } pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } pragma solidity 0.8.19; interface IUniswapV2Caller { function swapExactTokensForTokensSupportingFeeOnTransferTokens( address router, uint256 amountIn, uint256 amountOutMin, address[] calldata path, uint256 deadline ) external; } interface IFee { function payFee( uint256 _tokenType, address creator, bool isAntibot, address referrer ) external payable; } interface IGemAntiBot { function setTokenOwner(address owner) external; function onPreTransferCheck( address from, address to, uint256 amount ) external; } interface DividendTokenDividendTrackerInterface { function initialize( address rewardToken_, uint256 minimumTokenBalanceForDividends_ ) external; function excludeFromDividends(address account) external; function isExcludedFromDividends(address account) external view returns (bool); function owner() external view returns (address); function updateClaimWait(uint256 newClaimWait) external; function claimWait() external view returns (uint256); function updateMinimumTokenBalanceForDividends(uint256 amount) external; function minimumTokenBalanceForDividends() external view returns (uint256); function totalDividendsDistributed() external view returns (uint256); function withdrawableDividendOf(address _owner) external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function getAccount(address _account) external view returns ( address account, int256 index, int256 iterationsUntilProcessed, uint256 withdrawableDividends, uint256 totalDividends, uint256 lastClaimTime, uint256 nextClaimTime, uint256 secondsUntilAutoClaimAvailable ); function getAccountAtIndex(uint256 index) external view returns ( address, int256, int256, uint256, uint256, uint256, uint256, uint256 ); function process(uint256 gas) external returns ( uint256, uint256, uint256 ); function processAccount(address payable account, bool automatic) external returns (bool); function getLastProcessedIndex() external view returns (uint256); function getNumberOfTokenHolders() external view returns (uint256); function setBalance(address payable account, uint256 newBalance) external; function distributeCAKEDividends(uint256 amount) external; } contract DividendTokenWithAntibot is ERC20, Ownable { using SafeERC20 for IERC20; struct Args { string name; string symbol; uint8 decimals; uint256 totalSupply; uint256 maxWallet; uint256 maxTransactionAmount; address rewardToken; address mainRouter; address marketingWallet; address dividendTracker; address baseTokenForMarket; uint24 sellLiquidityFee; uint24 buyLiquidityFee; uint24 sellMarketingFee; uint24 buyMarketingFee; uint24 sellRewardFee; uint24 buyRewardFee; uint256 minimumTokenBalanceForDividends; address tokenForMarketingFee; address feeContract; address uniswapV2Caller; } uint256 private constant MAX = ~uint256(0); IUniswapV2Caller public uniswapV2Caller; address public tokenForMarketingFee; uint8 private _decimals; address public baseTokenForMarket; address public mainRouter; address public mainPair; bool private swapping; address public dividendTracker; address public rewardToken; uint256 public swapTokensAtAmount; uint24 public sellRewardFee; uint24 public buyRewardFee; uint24 public sellLiquidityFee; uint24 public buyLiquidityFee; uint24 public sellMarketingFee; uint24 public buyMarketingFee; address public marketingWallet; uint256 public gasForProcessing; uint256 public maxWallet; uint256 public maxTransactionAmount; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public isExcludedFromMaxTransactionAmount; uint256 private _liquidityFeeTokens; uint256 private _marketingFeeTokens; address public gemAntiBot; bool public antiBotEnabled; mapping(address => bool) public automatedMarketMakerPairs; event UpdateDividendTracker( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdateSwapTokensAtAmount(uint256 newSwapTokensAtAmount, uint256 oldSwapTokensAtAmount); event SetAutomatedMarketMakerPair(address indexed pair, bool value); event UpdateMaxWallet(uint256 newMaxWallet, uint256 oldMaxWallet); event UpdateMaxTransactionAmount(uint256 newMaxTransactionAmount, uint256 oldMaxTransactionAmount); event MarketingWalletUpdated( address indexed newMarketingWallet, address indexed oldMarketingWallet ); event TokenForMarketingFeeUpdated( address indexed newTokenForMarketingFee, address indexed oldTokenForMarketingFee); event ExcludedFromMaxTransactionAmount(address indexed account, bool isExcluded); event MainRouterUpdated(address mainRouter, address mainPair, address baseTokenForMarket); event GasForProcessingUpdated( uint256 indexed newValue, uint256 indexed oldValue ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SendDividends(uint256 tokensSwapped, uint256 amount); event ProcessedDividendTracker( uint256 iterations, uint256 claims, uint256 lastProcessedIndex, bool indexed automatic, uint256 gas, address indexed processor ); event UpdateLiquidityFee( uint24 newSellLiquidityFee, uint24 newBuyLiquidityFee, uint24 oldSellLiquidityFee, uint24 oldBuyLiquidityFee ); event UpdateMarketingFee( uint24 newSellMarketingFee, uint24 newBuyMarketingFee, uint24 oldSellMarketingFee, uint24 oldBuyMarketingFee ); event UpdateRewardFee( uint24 newSellRewardFee, uint24 newBuyRewardFee, uint24 oldSellRewardFee, uint24 oldBuyRewardFee ); constructor( Args memory args, address[] memory autoApproveAddressList, address _gemAntiBot, address referrer ) payable ERC20(args.name, args.symbol) { IFee(args.feeContract).payFee{value: msg.value}(3, _msgSender(), true, referrer); uniswapV2Caller = IUniswapV2Caller(args.uniswapV2Caller); gemAntiBot = _gemAntiBot; IGemAntiBot(gemAntiBot).setTokenOwner(_msgSender()); antiBotEnabled = true; _decimals = args.decimals; rewardToken = args.rewardToken; marketingWallet = args.marketingWallet; emit MarketingWalletUpdated(marketingWallet, address(0)); baseTokenForMarket=args.baseTokenForMarket; sellLiquidityFee = args.sellLiquidityFee; buyLiquidityFee = args.buyLiquidityFee; emit UpdateLiquidityFee( sellLiquidityFee, buyLiquidityFee, 0, 0 ); sellMarketingFee = args.sellMarketingFee; buyMarketingFee = args.buyMarketingFee; emit UpdateMarketingFee( sellMarketingFee, buyMarketingFee, 0, 0 ); sellRewardFee = args.sellRewardFee; buyRewardFee = args.buyRewardFee; emit UpdateRewardFee( sellRewardFee, buyRewardFee, 0, 0 ); require(sellLiquidityFee+sellMarketingFee+sellRewardFee <= 200000, "sell fee <= 20%"); require(buyLiquidityFee+buyMarketingFee+buyRewardFee <= 200000, "buy fee <= 20%"); if(args.tokenForMarketingFee!=args.rewardToken && args.tokenForMarketingFee!=args.baseTokenForMarket){ tokenForMarketingFee=address(this); }else { tokenForMarketingFee=args.tokenForMarketingFee; } emit TokenForMarketingFeeUpdated(tokenForMarketingFee, address(0)); swapTokensAtAmount = args.totalSupply/10000; emit UpdateSwapTokensAtAmount(swapTokensAtAmount, 0); gasForProcessing = 300000; emit GasForProcessingUpdated(gasForProcessing, 0); dividendTracker = payable(Clones.clone(args.dividendTracker)); emit UpdateDividendTracker( dividendTracker, address(0) ); DividendTokenDividendTrackerInterface(dividendTracker).initialize( rewardToken, args.minimumTokenBalanceForDividends ); require(args.maxTransactionAmount>=args.totalSupply / 10000, "maxTransactionAmount >= totalSupply / 10000"); require(args.maxWallet>=args.totalSupply / 10000, "maxWallet >= totalSupply / 10000"); maxWallet=args.maxWallet; emit UpdateMaxWallet(maxWallet, 0); maxTransactionAmount=args.maxTransactionAmount; emit UpdateMaxTransactionAmount(maxTransactionAmount, 0); mainRouter = args.mainRouter; if(baseTokenForMarket != IUniswapV2Router02(mainRouter).WETH()){ IERC20(baseTokenForMarket).safeApprove(mainRouter, MAX); } _approve(address(this), address(uniswapV2Caller), MAX); _approve(address(this), mainRouter, MAX); for(uint256 i=0;i<autoApproveAddressList.length;i++){ _approve(_msgSender(), autoApproveAddressList[i], MAX); _isExcludedFromFees[autoApproveAddressList[i]] = true; isExcludedFromMaxTransactionAmount[autoApproveAddressList[i]]=true; } mainPair = IUniswapV2Factory(IUniswapV2Router02(mainRouter).factory()) .createPair(address(this), baseTokenForMarket); _setAutomatedMarketMakerPair(mainPair, true); emit MainRouterUpdated(mainRouter, mainPair, baseTokenForMarket); DividendTokenDividendTrackerInterface(dividendTracker).excludeFromDividends(dividendTracker); DividendTokenDividendTrackerInterface(dividendTracker).excludeFromDividends(address(this)); DividendTokenDividendTrackerInterface(dividendTracker).excludeFromDividends(owner()); DividendTokenDividendTrackerInterface(dividendTracker).excludeFromDividends(address(0xdead)); DividendTokenDividendTrackerInterface(dividendTracker).excludeFromDividends(mainRouter); _isExcludedFromFees[owner()] = true; _isExcludedFromFees[marketingWallet] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[address(0xdead)] = true; isExcludedFromMaxTransactionAmount[address(0xdead)]=true; isExcludedFromMaxTransactionAmount[address(this)]=true; isExcludedFromMaxTransactionAmount[marketingWallet]=true; isExcludedFromMaxTransactionAmount[owner()]=true; _mint(owner(), args.totalSupply); } function enableAntibot(bool enabled_) external onlyOwner { antiBotEnabled = enabled_; } receive() external payable {} function updateMainPair( address _mainRouter, address _baseTokenForMarket ) external onlyOwner { baseTokenForMarket = _baseTokenForMarket; if(mainRouter != _mainRouter){ _approve(address(this), _mainRouter, MAX); if (!DividendTokenDividendTrackerInterface(dividendTracker).isExcludedFromDividends(_mainRouter)) DividendTokenDividendTrackerInterface(dividendTracker).excludeFromDividends(_mainRouter); mainRouter = _mainRouter; } mainPair = IUniswapV2Factory(IUniswapV2Router02(mainRouter).factory()).createPair( address(this), baseTokenForMarket ); if(baseTokenForMarket != IUniswapV2Router02(mainRouter).WETH()){ IERC20(baseTokenForMarket).safeApprove(mainRouter, MAX); } emit MainRouterUpdated(mainRouter, mainPair, baseTokenForMarket); _setAutomatedMarketMakerPair(mainPair, true); } function setSwapTokensAtAmount(uint256 amount) external onlyOwner { require(amount > 0, "swapTokensAtAmount > 0"); emit UpdateSwapTokensAtAmount(amount, swapTokensAtAmount); swapTokensAtAmount = amount; } function updateDividendTracker(address newAddress) public onlyOwner { require( newAddress != dividendTracker, "The dividend tracker already has that address" ); address newDividendTracker =payable(newAddress); require( DividendTokenDividendTrackerInterface(newDividendTracker).owner() == address(this), "The new dividend tracker must be owned by the DIVIDENEDTOKEN token contract" ); DividendTokenDividendTrackerInterface(newDividendTracker).excludeFromDividends(newDividendTracker); DividendTokenDividendTrackerInterface(newDividendTracker).excludeFromDividends(address(this)); DividendTokenDividendTrackerInterface(newDividendTracker).excludeFromDividends(owner()); DividendTokenDividendTrackerInterface(newDividendTracker).excludeFromDividends(mainRouter); DividendTokenDividendTrackerInterface(newDividendTracker).excludeFromDividends(mainPair); emit UpdateDividendTracker(newAddress, dividendTracker); dividendTracker = newDividendTracker; } function updateMaxWallet(uint256 _maxWallet) external onlyOwner { require(_maxWallet>=totalSupply() / 10000, "maxWallet >= total supply / 10000"); emit UpdateMaxWallet(_maxWallet, maxWallet); maxWallet = _maxWallet; } function updateMaxTransactionAmount(uint256 _maxTransactionAmount) external onlyOwner { require(_maxTransactionAmount>=totalSupply() / 10000, "maxTransactionAmount >= total supply / 10000"); emit UpdateMaxTransactionAmount(_maxTransactionAmount, maxTransactionAmount); maxTransactionAmount = _maxTransactionAmount; } function excludeFromFees(address account, bool excluded) public onlyOwner { require(_isExcludedFromFees[account] != excluded, "already"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function decimals() public view override returns (uint8) { return _decimals; } function setMarketingWallet(address payable wallet) external onlyOwner { require(marketingWallet!=wallet, "already"); emit MarketingWalletUpdated(marketingWallet, wallet); marketingWallet = wallet; } function updateTokenForMarketingFee(address _tokenForMarketingFee) external onlyOwner { if(_tokenForMarketingFee!=rewardToken && _tokenForMarketingFee!=baseTokenForMarket){ _tokenForMarketingFee=address(this); } require(tokenForMarketingFee!=_tokenForMarketingFee, "already"); emit TokenForMarketingFeeUpdated(_tokenForMarketingFee, tokenForMarketingFee); tokenForMarketingFee = _tokenForMarketingFee; } function updateLiquidityFee( uint24 _sellLiquidityFee, uint24 _buyLiquidityFee ) external onlyOwner { require( _sellLiquidityFee+sellMarketingFee+sellRewardFee <= 200000, "sell fee <= 20%" ); require( _buyLiquidityFee+buyMarketingFee+buyRewardFee <= 200000, "buy fee <= 20%" ); emit UpdateLiquidityFee( _sellLiquidityFee, _buyLiquidityFee, sellLiquidityFee, buyLiquidityFee ); sellLiquidityFee = _sellLiquidityFee; buyLiquidityFee = _buyLiquidityFee; } function updateMarketingFee( uint24 _sellMarketingFee, uint24 _buyMarketingFee ) external onlyOwner { require( _sellMarketingFee+sellLiquidityFee+sellRewardFee <= 200000, "sell fee <= 20%" ); require( _buyMarketingFee+buyLiquidityFee+buyRewardFee <= 200000, "buy fee <= 20%" ); emit UpdateMarketingFee( _sellMarketingFee, _buyMarketingFee, sellMarketingFee, buyMarketingFee ); sellMarketingFee = _sellMarketingFee; buyMarketingFee = _buyMarketingFee; } function updateRewardFee( uint24 _sellRewardFee, uint24 _buyRewardFee ) external onlyOwner { require( _sellRewardFee+sellLiquidityFee+sellMarketingFee <= 200000, "sell fee <= 20%" ); require( _buyRewardFee+buyLiquidityFee+buyMarketingFee <= 200000, "buy fee <= 20%" ); emit UpdateRewardFee( _sellRewardFee, _buyRewardFee, sellRewardFee, buyRewardFee); sellRewardFee = _sellRewardFee; buyRewardFee = _buyRewardFee; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != mainPair, "The main pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; isExcludedFromMaxTransactionAmount[pair] = value; if (value && !DividendTokenDividendTrackerInterface(dividendTracker).isExcludedFromDividends(pair)) { DividendTokenDividendTrackerInterface(dividendTracker).excludeFromDividends(pair); } emit SetAutomatedMarketMakerPair(pair, value); } function excludeFromMaxTransactionAmount(address account, bool isEx) external onlyOwner { require(isExcludedFromMaxTransactionAmount[account]!=isEx, "already"); isExcludedFromMaxTransactionAmount[account] = isEx; emit ExcludedFromMaxTransactionAmount(account, isEx); } function updateGasForProcessing(uint256 newValue) public onlyOwner { require( newValue >= 200000 && newValue <= 500000, "gasForProcessing must be between 200,000 and 500,000" ); require( newValue != gasForProcessing, "Cannot update gasForProcessing to same value" ); emit GasForProcessingUpdated(newValue, gasForProcessing); gasForProcessing = newValue; } function updateClaimWait(uint256 claimWait) external onlyOwner { DividendTokenDividendTrackerInterface(dividendTracker).updateClaimWait(claimWait); } function getClaimWait() external view returns (uint256) { return DividendTokenDividendTrackerInterface(dividendTracker).claimWait(); } function updateMinimumTokenBalanceForDividends(uint256 amount) external onlyOwner { DividendTokenDividendTrackerInterface(dividendTracker).updateMinimumTokenBalanceForDividends(amount); } function getMinimumTokenBalanceForDividends() external view returns (uint256) { return DividendTokenDividendTrackerInterface(dividendTracker).minimumTokenBalanceForDividends(); } function getTotalDividendsDistributed() external view returns (uint256) { return DividendTokenDividendTrackerInterface(dividendTracker).totalDividendsDistributed(); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function withdrawableDividendOf(address account) public view returns (uint256) { return DividendTokenDividendTrackerInterface(dividendTracker).withdrawableDividendOf(account); } function dividendTokenBalanceOf(address account) public view returns (uint256) { return DividendTokenDividendTrackerInterface(dividendTracker).balanceOf(account); } function excludeFromDividends(address account) external onlyOwner { DividendTokenDividendTrackerInterface(dividendTracker).excludeFromDividends(account); } function isExcludedFromDividends(address account) public view returns (bool) { return DividendTokenDividendTrackerInterface(dividendTracker).isExcludedFromDividends(account); } function getAccountDividendsInfo(address account) external view returns ( address, int256, int256, uint256, uint256, uint256, uint256, uint256 ) { return DividendTokenDividendTrackerInterface(dividendTracker).getAccount(account); } function getAccountDividendsInfoAtIndex(uint256 index) external view returns ( address, int256, int256, uint256, uint256, uint256, uint256, uint256 ) { return DividendTokenDividendTrackerInterface(dividendTracker).getAccountAtIndex(index); } function processDividendTracker(uint256 gas) external { ( uint256 iterations, uint256 claims, uint256 lastProcessedIndex ) = DividendTokenDividendTrackerInterface(dividendTracker).process(gas); emit ProcessedDividendTracker( iterations, claims, lastProcessedIndex, false, gas, msg.sender ); } function claim() external { DividendTokenDividendTrackerInterface(dividendTracker).processAccount(payable(msg.sender), false); } function getLastProcessedIndex() external view returns (uint256) { return DividendTokenDividendTrackerInterface(dividendTracker).getLastProcessedIndex(); } function getNumberOfDividendTokenHolders() external view returns (uint256) { return DividendTokenDividendTrackerInterface(dividendTracker).getNumberOfTokenHolders(); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount>0, "ERC20: transfer zero amount"); if (antiBotEnabled) { IGemAntiBot(gemAntiBot).onPreTransferCheck(from, to, amount); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && !swapping && !automatedMarketMakerPairs[from] && from != owner() && to != owner() ) { swapping = true; if(_marketingFeeTokens>0) swapAndSendToFee(_marketingFeeTokens); if(_liquidityFeeTokens>0) swapAndLiquify(_liquidityFeeTokens); uint256 sellTokens = balanceOf(address(this)); if(sellTokens>0) swapAndSendDividends(sellTokens); _marketingFeeTokens=0; _liquidityFeeTokens=0; swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 _liquidityFee; uint256 _marketingFee; uint256 _rewardFee; if (takeFee) { if (automatedMarketMakerPairs[from]) { _rewardFee = amount*buyRewardFee/1000000; _liquidityFee = amount*buyLiquidityFee/1000000; _marketingFee = amount*buyMarketingFee/1000000; } else if (automatedMarketMakerPairs[to]) { _rewardFee = amount*sellRewardFee/1000000; _liquidityFee = amount*sellLiquidityFee/1000000; _marketingFee = amount*sellMarketingFee/1000000; } _liquidityFeeTokens = _liquidityFeeTokens+_liquidityFee; _marketingFeeTokens = _marketingFeeTokens+_marketingFee; uint256 _feeTotal=_rewardFee+_liquidityFee+_marketingFee; amount=amount-_feeTotal; if(_feeTotal>0) super._transfer(from, address(this), _feeTotal); } super._transfer(from, to, amount); try DividendTokenDividendTrackerInterface(dividendTracker).setBalance(payable(from), balanceOf(from)) {} catch {} try DividendTokenDividendTrackerInterface(dividendTracker).setBalance(payable(to), balanceOf(to)) {} catch {} if (!swapping) { if (!isExcludedFromMaxTransactionAmount[from]) { require( amount <= maxTransactionAmount, "ERC20: exceeds transfer limit" ); } if (!isExcludedFromMaxTransactionAmount[to]) { require( balanceOf(to) <= maxWallet, "ERC20: exceeds max wallet limit" ); } uint256 gas = gasForProcessing; try DividendTokenDividendTrackerInterface(dividendTracker).process(gas) returns ( uint256 iterations, uint256 claims, uint256 lastProcessedIndex ) { emit ProcessedDividendTracker( iterations, claims, lastProcessedIndex, true, gas, msg.sender ); } catch {} } } function swapAndSendToFee(uint256 tokens) private { if(tokenForMarketingFee==rewardToken){ uint256 initialCAKEBalance = IERC20(rewardToken).balanceOf( address(this) ); swapTokensForCake(tokens); uint256 newBalance = (IERC20(rewardToken).balanceOf(address(this)))-( initialCAKEBalance ); IERC20(rewardToken).safeTransfer(marketingWallet, newBalance); }else if(tokenForMarketingFee==baseTokenForMarket){ uint256 initialBalance = baseTokenForMarket==IUniswapV2Router02(mainRouter).WETH() ? address(this).balance : IERC20(baseTokenForMarket).balanceOf(address(this)); swapTokensForBaseToken(tokens); uint256 newBalance = baseTokenForMarket==IUniswapV2Router02(mainRouter).WETH() ? address(this).balance-initialBalance : IERC20(baseTokenForMarket).balanceOf(address(this))-initialBalance; if(baseTokenForMarket==IUniswapV2Router02(mainRouter).WETH()){ (bool success, )=address(marketingWallet).call{value: newBalance}(""); }else{ IERC20(baseTokenForMarket).safeTransfer(marketingWallet, newBalance); } }else{ _transfer(address(this), marketingWallet, tokens); } } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens/(2); uint256 otherHalf = tokens-(half); uint256 initialBalance = baseTokenForMarket==IUniswapV2Router02(mainRouter).WETH() ? address(this).balance : IERC20(baseTokenForMarket).balanceOf(address(this)); swapTokensForBaseToken(half); uint256 newBalance = baseTokenForMarket==IUniswapV2Router02(mainRouter).WETH() ? address(this).balance-initialBalance : IERC20(baseTokenForMarket).balanceOf(address(this))-initialBalance; addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForBaseToken(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = baseTokenForMarket; if (path[1] == IUniswapV2Router02(mainRouter).WETH()){ IUniswapV2Router02(mainRouter).swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of BaseToken path, address(this), block.timestamp ); }else{ uniswapV2Caller.swapExactTokensForTokensSupportingFeeOnTransferTokens( mainRouter, tokenAmount, 0, // accept any amount of BaseToken path, block.timestamp ); } } function swapTokensForCake(uint256 tokenAmount) private { if(baseTokenForMarket!=rewardToken){ address[] memory path = new address[](3); path[0] = address(this); path[1] = baseTokenForMarket; path[2] = rewardToken; IUniswapV2Router02(mainRouter).swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); }else{ address[] memory path = new address[](2); path[0] = address(this); path[1] = rewardToken; uniswapV2Caller.swapExactTokensForTokensSupportingFeeOnTransferTokens( mainRouter, tokenAmount, 0, // accept any amount of BaseToken path, block.timestamp ); } } function addLiquidity(uint256 tokenAmount, uint256 baseTokenAmount) private { if (baseTokenForMarket == IUniswapV2Router02(mainRouter).WETH()) IUniswapV2Router02(mainRouter).addLiquidityETH{value: baseTokenAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); else{ IUniswapV2Router02(mainRouter).addLiquidity( address(this), baseTokenForMarket, tokenAmount, baseTokenAmount, 0, 0, address(0xdead), block.timestamp ); } } function swapAndSendDividends(uint256 tokens) private { swapTokensForCake(tokens); uint256 dividends = IERC20(rewardToken).balanceOf(address(this)); IERC20(rewardToken).safeTransfer( dividendTracker, dividends ); DividendTokenDividendTrackerInterface(dividendTracker).distributeCAKEDividends(dividends); emit SendDividends(tokens, dividends); } function withdrawETH() external onlyOwner { (bool success, )=address(owner()).call{value: address(this).balance}(""); require(success, "Failed in withdrawal"); } function withdrawToken(address token) external onlyOwner{ require(address(this) != token, "Not allowed"); IERC20(token).safeTransfer(owner(), IERC20(token).balanceOf(address(this))); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxTransactionAmount","type":"uint256"},{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"mainRouter","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"},{"internalType":"address","name":"dividendTracker","type":"address"},{"internalType":"address","name":"baseTokenForMarket","type":"address"},{"internalType":"uint24","name":"sellLiquidityFee","type":"uint24"},{"internalType":"uint24","name":"buyLiquidityFee","type":"uint24"},{"internalType":"uint24","name":"sellMarketingFee","type":"uint24"},{"internalType":"uint24","name":"buyMarketingFee","type":"uint24"},{"internalType":"uint24","name":"sellRewardFee","type":"uint24"},{"internalType":"uint24","name":"buyRewardFee","type":"uint24"},{"internalType":"uint256","name":"minimumTokenBalanceForDividends","type":"uint256"},{"internalType":"address","name":"tokenForMarketingFee","type":"address"},{"internalType":"address","name":"feeContract","type":"address"},{"internalType":"address","name":"uniswapV2Caller","type":"address"}],"internalType":"struct DividendTokenWithAntibot.Args","name":"args","type":"tuple"},{"internalType":"address[]","name":"autoApproveAddressList","type":"address[]"},{"internalType":"address","name":"_gemAntiBot","type":"address"},{"internalType":"address","name":"referrer","type":"address"}],"stateMutability":"payable","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mainRouter","type":"address"},{"indexed":false,"internalType":"address","name":"mainPair","type":"address"},{"indexed":false,"internalType":"address","name":"baseTokenForMarket","type":"address"}],"name":"MainRouterUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newMarketingWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldMarketingWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"iterations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claims","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastProcessedIndex","type":"uint256"},{"indexed":true,"internalType":"bool","name":"automatic","type":"bool"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":true,"internalType":"address","name":"processor","type":"address"}],"name":"ProcessedDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newTokenForMarketingFee","type":"address"},{"indexed":true,"internalType":"address","name":"oldTokenForMarketingFee","type":"address"}],"name":"TokenForMarketingFeeUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint24","name":"newSellLiquidityFee","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"newBuyLiquidityFee","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"oldSellLiquidityFee","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"oldBuyLiquidityFee","type":"uint24"}],"name":"UpdateLiquidityFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint24","name":"newSellMarketingFee","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"newBuyMarketingFee","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"oldSellMarketingFee","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"oldBuyMarketingFee","type":"uint24"}],"name":"UpdateMarketingFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMaxTransactionAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldMaxTransactionAmount","type":"uint256"}],"name":"UpdateMaxTransactionAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMaxWallet","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldMaxWallet","type":"uint256"}],"name":"UpdateMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint24","name":"newSellRewardFee","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"newBuyRewardFee","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"oldSellRewardFee","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"oldBuyRewardFee","type":"uint24"}],"name":"UpdateRewardFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSwapTokensAtAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldSwapTokensAtAmount","type":"uint256"}],"name":"UpdateSwapTokensAtAmount","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseTokenForMarket","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dividendTokenBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled_","type":"bool"}],"name":"enableAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasForProcessing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gemAntiBot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountDividendsInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getAccountDividendsInfoAtIndex","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getClaimWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastProcessedIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumTokenBalanceForDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfDividendTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromDividends","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"processDividendTracker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenForMarketingFee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uniswapV2Caller","outputs":[{"internalType":"contract IUniswapV2Caller","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"claimWait","type":"uint256"}],"name":"updateClaimWait","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateDividendTracker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateGasForProcessing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"_sellLiquidityFee","type":"uint24"},{"internalType":"uint24","name":"_buyLiquidityFee","type":"uint24"}],"name":"updateLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mainRouter","type":"address"},{"internalType":"address","name":"_baseTokenForMarket","type":"address"}],"name":"updateMainPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"_sellMarketingFee","type":"uint24"},{"internalType":"uint24","name":"_buyMarketingFee","type":"uint24"}],"name":"updateMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmount","type":"uint256"}],"name":"updateMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumTokenBalanceForDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"_sellRewardFee","type":"uint24"},{"internalType":"uint24","name":"_buyRewardFee","type":"uint24"}],"name":"updateRewardFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenForMarketingFee","type":"address"}],"name":"updateTokenForMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040516200693838038062006938833981016040819052620000269162001953565b8351602085015160036200003b838262001c1d565b5060046200004a828262001c1d565b505050620000676200006162000f6160201b60201c565b62000f65565b6102608401516001600160a01b031663a5970b48346003336040516001600160e01b031960e086901b16815260048101929092526001600160a01b03908116602483015260016044830152851660648201526084016000604051808303818588803b158015620000d657600080fd5b505af1158015620000eb573d6000803e3d6000fd5b50505050610280850151600680546001600160a01b039283166001600160a01b03199182161790915560178054928616929091168217905590506318e02bd9336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200016d57600080fd5b505af115801562000182573d6000803e3d6000fd5b505060178054600160a01b60ff60a01b1991821681179092556040888101516007805490931660ff90911690930292909217905560c0870151600c80546001600160a01b03199081166001600160a01b0393841617909155610100890151600f8054909216921691821790559051600093509091507f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc67908390a3610140840151600880546001600160a01b0319166001600160a01b03909216919091179055610160840151600e805461018087015165ffffffffffff60301b19909116660100000000000062ffffff948516810262ffffff60481b1916919091176901000000000000000000928516830217928390556040805191840485168252919092049092166020820152600091810182905260608101919091527fdec183740138e3a28dfd6f973ecd3bf00cd5d9b2544f6763c0a87f721444c5d19060800160405180910390a16101a0840151600e80546101c087015165ffffffffffff60601b199091166c0100000000000000000000000062ffffff948516810262ffffff60781b191691909117600160781b928516830217928390556040805191840485168252919092049092166020820152600091810182905260608101919091527f70748cb9cb3bcb4dfd4fff8f2a6f23f636067b33e0244631f9abd38159c1de859060800160405180910390a16101e0840151600e805461020087015162ffffff93841665ffffffffffff1990921691909117630100000091841682021791829055604080518385168152919092049092166020830152600090820181905260608201527f2e7d9780ec398c47872eab5651ba43f0fa44ffed738321577e0db663fe8a05a59060800160405180910390a1600e5462030d409062ffffff8082169162000448916c010000000000000000000000008204811691660100000000000090041662001cff565b62000454919062001cff565b62ffffff1611156200049f5760405162461bcd60e51b815260206004820152600f60248201526e73656c6c20666565203c3d2032302560881b60448201526064015b60405180910390fd5b600e5462030d409062ffffff63010000008204811691620004d891600160781b8204811691690100000000000000000090041662001cff565b620004e4919062001cff565b62ffffff1611156200052a5760405162461bcd60e51b815260206004820152600e60248201526d62757920666565203c3d2032302560901b604482015260640162000496565b8360c001516001600160a01b03168461024001516001600160a01b0316141580156200057257508361014001516001600160a01b03168461024001516001600160a01b031614155b156200059057600780546001600160a01b03191630179055620005b6565b610240840151600780546001600160a01b0319166001600160a01b039092169190911790555b6007546040516000916001600160a01b0316907fe2b5774aa87aa100c6ec40513e7bc1d6f3c22e7abfdcd1e87401c3c791bde9ae908390a3612710846060015162000602919062001d25565b600d81905560408051918252600060208301527f1d3afd1a2942d06995fdb024306050a7b24ad00572be70ce8b1bea325780d28b910160405180910390a1620493e06010819055604051600091907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db7908390a3610120840151620006869062000fb7565b600b80546001600160a01b0319166001600160a01b03929092169182179055604051600091907f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a8908390a3600b54600c5461022086015160405163cd6dc68760e01b81526001600160a01b039283166004820152602481019190915291169063cd6dc68790604401600060405180830381600087803b1580156200072957600080fd5b505af11580156200073e573d6000803e3d6000fd5b50505050612710846060015162000756919062001d25565b8460a001511015620007bf5760405162461bcd60e51b815260206004820152602b60248201527f6d61785472616e73616374696f6e416d6f756e74203e3d20746f74616c53757060448201526a0706c79202f2031303030360ac1b606482015260840162000496565b6127108460600151620007d3919062001d25565b84608001511015620008285760405162461bcd60e51b815260206004820181905260248201527f6d617857616c6c6574203e3d20746f74616c537570706c79202f203130303030604482015260640162000496565b6080840151601181905560408051918252600060208301527fff64d41f60feb77d52f64ae64a9fc3929d57a89d0cc55728762468bae5e0fe52910160405180910390a160a0840151601281905560408051918252600060208301527f35eec0711af6fbe3039535323be51b57996b6945b0d55862607c7a02e52e4507910160405180910390a160e0840151600980546001600160a01b0319166001600160a01b039092169182179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200090d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000933919062001d48565b6008546001600160a01b039081169116146200096a576009546008546200096a916001600160a01b0391821691166000196200105a565b600654620009869030906001600160a01b0316600019620011a9565b600954620009a29030906001600160a01b0316600019620011a9565b60005b835181101562000a9c57620009e033858381518110620009c957620009c962001d6d565b6020026020010151600019620011a960201b60201c565b600160136000868481518110620009fb57620009fb62001d6d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600086848151811062000a555762000a5562001d6d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062000a938162001d83565b915050620009a5565b50600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000af1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b17919062001d48565b6008546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801562000b69573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b8f919062001d48565b600a80546001600160a01b0319166001600160a01b0392909216918217905562000bbb906001620012d1565b600954600a54600854604080516001600160a01b039485168152928416602084015292168183015290517f113a6e83812f48b2f83795e33cb009afb4ba6e240c9c643c5dc75791e4ce7ab69181900360600190a1600b5460405163031e79db60e41b81526001600160a01b0390911660048201819052906331e79db090602401600060405180830381600087803b15801562000c5657600080fd5b505af115801562000c6b573d6000803e3d6000fd5b5050600b5460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b15801562000cb557600080fd5b505af115801562000cca573d6000803e3d6000fd5b5050600b546001600160a01b031691506331e79db0905062000cf46005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801562000d3657600080fd5b505af115801562000d4b573d6000803e3d6000fd5b5050600b5460405163031e79db60e41b815261dead60048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b15801562000d9757600080fd5b505af115801562000dac573d6000803e3d6000fd5b5050600b5460095460405163031e79db60e41b81526001600160a01b039182166004820152911692506331e79db09150602401600060405180830381600087803b15801562000dfa57600080fd5b505af115801562000e0f573d6000803e3d6000fd5b5050505060016013600062000e296200143e60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600f805483168252601385528382208054871660019081179091553080845285842080548916831790557f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c80548916831790556014968790527f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db00805489168317905583528483208054881682179055905490921681529182208054909416811790935562000f0d6005546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905562000f5762000f4c6005546001600160a01b031690565b60608601516200144d565b5050505062001e4c565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620010555760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640162000496565b919050565b801580620010d85750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015620010b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010d6919062001d9f565b155b6200114c5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840162000496565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152620011a49185916200151016565b505050565b6001600160a01b0383166200120d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000496565b6001600160a01b038216620012705760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000496565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216600090815260186020908152604080832080548515801560ff199283168117909355601490945291909320805490911690921790915581906200138c5750600b5460405163c705c56960e01b81526001600160a01b0384811660048301529091169063c705c56990602401602060405180830381865afa15801562001364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200138a919062001db9565b155b15620013f457600b5460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b158015620013da57600080fd5b505af1158015620013ef573d6000803e3d6000fd5b505050505b816001600160a01b03167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab8260405162001432911515815260200190565b60405180910390a25050565b6005546001600160a01b031690565b6001600160a01b038216620014a55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000496565b8060026000828254620014b9919062001ddd565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200155f906001600160a01b038516908490620015e4565b90508051600014806200158357508080602001905181019062001583919062001db9565b620011a45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000496565b6060620015f58484600085620015fd565b949350505050565b606082471015620016605760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000496565b600080866001600160a01b031685876040516200167e919062001df9565b60006040518083038185875af1925050503d8060008114620016bd576040519150601f19603f3d011682016040523d82523d6000602084013e620016c2565b606091505b509092509050620016d687838387620016e1565b979650505050505050565b60608315620017555782516000036200174d576001600160a01b0385163b6200174d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000496565b5081620015f5565b620015f583838151156200176c5781518083602001fd5b8060405162461bcd60e51b815260040162000496919062001e17565b634e487b7160e01b600052604160045260246000fd5b6040516102a081016001600160401b0381118282101715620017c457620017c462001788565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620017f557620017f562001788565b604052919050565b60005b838110156200181a57818101518382015260200162001800565b50506000910152565b600082601f8301126200183557600080fd5b81516001600160401b0381111562001851576200185162001788565b62001866601f8201601f1916602001620017ca565b8181528460208386010111156200187c57600080fd5b620015f5826020830160208701620017fd565b805160ff811681146200105557600080fd5b80516001600160a01b03811681146200105557600080fd5b805162ffffff811681146200105557600080fd5b600082601f830112620018df57600080fd5b815160206001600160401b03821115620018fd57620018fd62001788565b8160051b6200190e828201620017ca565b92835284810182019282810190878511156200192957600080fd5b83870192505b84831015620016d6576200194383620018a1565b825291830191908301906200192f565b600080600080608085870312156200196a57600080fd5b84516001600160401b03808211156200198257600080fd5b908601906102a082890312156200199857600080fd5b620019a26200179e565b825182811115620019b257600080fd5b620019c08a82860162001823565b825250602083015182811115620019d657600080fd5b620019e48a82860162001823565b602083015250620019f8604084016200188f565b6040820152606083015160608201526080830151608082015260a083015160a082015262001a2960c08401620018a1565b60c082015262001a3c60e08401620018a1565b60e082015261010062001a51818501620018a1565b9082015261012062001a65848201620018a1565b9082015261014062001a79848201620018a1565b9082015261016062001a8d848201620018b9565b9082015261018062001aa1848201620018b9565b908201526101a062001ab5848201620018b9565b908201526101c062001ac9848201620018b9565b908201526101e062001add848201620018b9565b9082015261020062001af1848201620018b9565b90820152610220838101519082015261024062001b10818501620018a1565b9082015261026062001b24848201620018a1565b9082015261028062001b38848201620018a1565b90820152602088015190965091508082111562001b5457600080fd5b5062001b6387828801620018cd565b93505062001b7460408601620018a1565b915062001b8460608601620018a1565b905092959194509250565b600181811c9082168062001ba457607f821691505b60208210810362001bc557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620011a457600081815260208120601f850160051c8101602086101562001bf45750805b601f850160051c820191505b8181101562001c155782815560010162001c00565b505050505050565b81516001600160401b0381111562001c395762001c3962001788565b62001c518162001c4a845462001b8f565b8462001bcb565b602080601f83116001811462001c89576000841562001c705750858301515b600019600386901b1c1916600185901b17855562001c15565b600085815260208120601f198616915b8281101562001cba5788860151825594840194600190910190840162001c99565b508582101562001cd95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b62ffffff81811683821601908082111562001d1e5762001d1e62001ce9565b5092915050565b60008262001d4357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121562001d5b57600080fd5b62001d6682620018a1565b9392505050565b634e487b7160e01b600052603260045260246000fd5b60006001820162001d985762001d9862001ce9565b5060010190565b60006020828403121562001db257600080fd5b5051919050565b60006020828403121562001dcc57600080fd5b8151801515811462001d6657600080fd5b8082018082111562001df35762001df362001ce9565b92915050565b6000825162001e0d818460208701620017fd565b9190910192915050565b602081526000825180602084015262001e38816040850160208701620017fd565b601f01601f19169190910160400192915050565b614adc8062001e5c6000396000f3fe6080604052600436106103fe5760003560e01c80639213691311610213578063d5bf72b711610123578063ec44adc8116100ab578063f2fde38b1161007a578063f2fde38b14610c78578063f637434214610c98578063f7c618c114610cbb578063f8b45b0514610cdb578063fe49fc4114610cf157600080fd5b8063ec44adc814610bf5578063f0a568c014610c15578063f11a24d314610c35578063f27fd25414610c5857600080fd5b8063e086e5ec116100f2578063e086e5ec14610b65578063e2f4560514610b7a578063e7841ec014610b90578063e9481eee14610ba5578063e98030c714610bd557600080fd5b8063d5bf72b714610ae8578063d8c6404b14610b08578063dd62ed3e14610b29578063de0aad5314610b4957600080fd5b8063aa498023116101a6578063bdd4f29f11610175578063bdd4f29f14610a5d578063c024666814610a72578063c705c56914610a92578063c8c8ebe414610ab2578063cf188ad014610ac857600080fd5b8063aa49802314610988578063ad56c13c146109a8578063afa4f3b214610a0d578063b62496f514610a2d57600080fd5b8063a26579ad116101e2578063a26579ad14610913578063a457c2d714610928578063a8b9d24014610948578063a9059cbb1461096857600080fd5b806392136913146108a557806395d89b41146108c85780639a7a23d6146108dd5780639c1b8af5146108fd57600080fd5b80635d098b381161030e57806377ec7449116102a157806385af30c51161027057806385af30c514610807578063871c128d1461082757806388bdd9be1461084757806389476069146108675780638da5cb5b1461088757600080fd5b806377ec7449146107845780637bce5a04146107a45780637c75ad3a146107c757806382685df5146107e757600080fd5b8063700bb191116102dd578063700bb191146106f957806370a0823114610719578063715018a61461074f57806375f0a8741461076457600080fd5b80635d098b381461068457806364b0f653146106a45780636843cd84146106b95780636c516a70146106d957600080fd5b80632c1f521611610391578063395093511161036057806339509351146105d65780633ad3e6ff146105f657806348a5317e146106165780634e71d92d146106365780634fbee1931461064b57600080fd5b80632c1f52161461053d57806330bb4cff14610575578063313ce5671461058a57806331e79db0146105b657600080fd5b806318160ddd116103cd57806318160ddd146104be5780631c499ab0146104dd57806323b872dd146104fd5780632ae2f1211461051d57600080fd5b806306fdde031461040a578063095ea7b3146104355780630cfe2f3f146104655780630dcb2e891461049c57600080fd5b3661040557005b600080fd5b34801561041657600080fd5b5061041f610d11565b60405161042c919061452f565b60405180910390f35b34801561044157600080fd5b50610455610450366004614577565b610da3565b604051901515815260200161042c565b34801561047157600080fd5b50600e54610488906301000000900462ffffff1681565b60405162ffffff909116815260200161042c565b3480156104a857600080fd5b506104bc6104b73660046145a3565b610dbd565b005b3480156104ca57600080fd5b506002545b60405190815260200161042c565b3480156104e957600080fd5b506104bc6104f83660046145a3565b610e27565b34801561050957600080fd5b506104556105183660046145bc565b610ee5565b34801561052957600080fd5b506104bc61053836600461460b565b610f09565b34801561054957600080fd5b50600b5461055d906001600160a01b031681565b6040516001600160a01b03909116815260200161042c565b34801561058157600080fd5b506104cf610fb1565b34801561059657600080fd5b50600754600160a01b900460ff1660405160ff909116815260200161042c565b3480156105c257600080fd5b506104bc6105d1366004614644565b611024565b3480156105e257600080fd5b506104556105f1366004614577565b61105e565b34801561060257600080fd5b5060075461055d906001600160a01b031681565b34801561062257600080fd5b5060085461055d906001600160a01b031681565b34801561064257600080fd5b506104bc611080565b34801561065757600080fd5b50610455610666366004614644565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561069057600080fd5b506104bc61069f366004614644565b6110f8565b3480156106b057600080fd5b506104cf611189565b3480156106c557600080fd5b506104cf6106d4366004614644565b6111d3565b3480156106e557600080fd5b506104bc6106f4366004614668565b611243565b34801561070557600080fd5b506104bc6107143660046145a3565b611584565b34801561072557600080fd5b506104cf610734366004614644565b6001600160a01b031660009081526020819052604090205490565b34801561075b57600080fd5b506104bc611656565b34801561077057600080fd5b50600f5461055d906001600160a01b031681565b34801561079057600080fd5b5060175461055d906001600160a01b031681565b3480156107b057600080fd5b50600e5461048890600160781b900462ffffff1681565b3480156107d357600080fd5b5060065461055d906001600160a01b031681565b3480156107f357600080fd5b506104bc6108023660046146ae565b61166a565b34801561081357600080fd5b50600a5461055d906001600160a01b031681565b34801561083357600080fd5b506104bc6108423660046145a3565b6117a4565b34801561085357600080fd5b506104bc610862366004614644565b6118c4565b34801561087357600080fd5b506104bc610882366004614644565b611c8b565b34801561089357600080fd5b506005546001600160a01b031661055d565b3480156108b157600080fd5b50600e5461048890600160601b900462ffffff1681565b3480156108d457600080fd5b5061041f611d67565b3480156108e957600080fd5b506104bc6108f836600461460b565b611d76565b34801561090957600080fd5b506104cf60105481565b34801561091f57600080fd5b506104cf611e0c565b34801561093457600080fd5b50610455610943366004614577565b611e56565b34801561095457600080fd5b506104cf610963366004614644565b611ed1565b34801561097457600080fd5b50610455610983366004614577565b611f04565b34801561099457600080fd5b506104bc6109a33660046145a3565b611f12565b3480156109b457600080fd5b506109c86109c3366004614644565b611fd6565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000161042c565b348015610a1957600080fd5b506104bc610a283660046145a3565b612071565b348015610a3957600080fd5b50610455610a48366004614644565b60186020526000908152604090205460ff1681565b348015610a6957600080fd5b506104cf612104565b348015610a7e57600080fd5b506104bc610a8d36600461460b565b61214e565b348015610a9e57600080fd5b50610455610aad366004614644565b6121ee565b348015610abe57600080fd5b506104cf60125481565b348015610ad457600080fd5b5060095461055d906001600160a01b031681565b348015610af457600080fd5b506104bc610b033660046146ae565b61225d565b348015610b1457600080fd5b5060175461045590600160a01b900460ff1681565b348015610b3557600080fd5b506104cf610b44366004614668565b6123b0565b348015610b5557600080fd5b50600e546104889062ffffff1681565b348015610b7157600080fd5b506104bc6123db565b348015610b8657600080fd5b506104cf600d5481565b348015610b9c57600080fd5b506104cf61248e565b348015610bb157600080fd5b50610455610bc0366004614644565b60146020526000908152604090205460ff1681565b348015610be157600080fd5b506104bc610bf03660046145a3565b6124d8565b348015610c0157600080fd5b506104bc610c103660046146ae565b612511565b348015610c2157600080fd5b506104bc610c30366004614644565b61265b565b348015610c4157600080fd5b50600e5461048890600160481b900462ffffff1681565b348015610c6457600080fd5b506109c8610c733660046145a3565b612721565b348015610c8457600080fd5b506104bc610c93366004614644565b612763565b348015610ca457600080fd5b50600e5461048890600160301b900462ffffff1681565b348015610cc757600080fd5b50600c5461055d906001600160a01b031681565b348015610ce757600080fd5b506104cf60115481565b348015610cfd57600080fd5b506104bc610d0c3660046146e1565b6127d9565b606060038054610d20906146fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4c906146fe565b8015610d995780601f10610d6e57610100808354040283529160200191610d99565b820191906000526020600020905b815481529060010190602001808311610d7c57829003601f168201915b5050505050905090565b600033610db18185856127ff565b60019150505b92915050565b610dc5612923565b600b54604051630dcb2e8960e01b8152600481018390526001600160a01b0390911690630dcb2e89906024015b600060405180830381600087803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b5050505050565b610e2f612923565b612710610e3b60025490565b610e45919061474e565b811015610ea35760405162461bcd60e51b815260206004820152602160248201527f6d617857616c6c6574203e3d20746f74616c20737570706c79202f20313030306044820152600360fc1b60648201526084015b60405180910390fd5b6011546040805183815260208101929092527fff64d41f60feb77d52f64ae64a9fc3929d57a89d0cc55728762468bae5e0fe52910160405180910390a1601155565b600033610ef385828561297d565b610efe8585856129f7565b506001949350505050565b610f11612923565b6001600160a01b03821660009081526014602052604090205481151560ff909116151503610f515760405162461bcd60e51b8152600401610e9a90614770565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f82170bbd72c16b30c410014b7382121a699ed119a182e48a0b6cadcc89104ac991015b60405180910390a25050565b600b54604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae9160048083019260209291908290030181865afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101f9190614791565b905090565b61102c612923565b600b5460405163031e79db60e41b81526001600160a01b038381166004830152909116906331e79db090602401610df2565b600033610db181858561107183836123b0565b61107b91906147aa565b6127ff565b600b5460405163bc4c4b3760e01b8152336004820152600060248201526001600160a01b039091169063bc4c4b37906044016020604051808303816000875af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f591906147bd565b50565b611100612923565b600f546001600160a01b0380831691160361112d5760405162461bcd60e51b8152600401610e9a90614770565b600f546040516001600160a01b038084169216907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a3600f80546001600160a01b0319166001600160a01b0392909216919091179055565b600b54604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde9160048083019260209291908290030181865afa158015610ffb573d6000803e3d6000fd5b600b546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a08231906024015b602060405180830381865afa15801561121f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190614791565b61124b612923565b600880546001600160a01b0319166001600160a01b03838116919091179091556009548382169116146113735761128530836000196127ff565b600b5460405163c705c56960e01b81526001600160a01b0384811660048301529091169063c705c56990602401602060405180830381865afa1580156112cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f391906147bd565b61135757600b5460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b15801561133e57600080fd5b505af1158015611352573d6000803e3d6000fd5b505050505b600980546001600160a01b0319166001600160a01b0384161790555b600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ea91906147da565b6008546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801561143b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145f91906147da565b600a80546001600160a01b0319166001600160a01b03928316179055600954604080516315ab88c960e31b81529051919092169163ad5c46489160048083019260209291908290030181865afa1580156114bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e191906147da565b6008546001600160a01b0390811691161461151557600954600854611515916001600160a01b039182169116600019613108565b600954600a54600854604080516001600160a01b039485168152928416602084015292168183015290517f113a6e83812f48b2f83795e33cb009afb4ba6e240c9c643c5dc75791e4ce7ab69181900360600190a1600a54611580906001600160a01b03166001613255565b5050565b600b546040516001624d3b8760e01b0319815260048101839052600091829182916001600160a01b03169063ffb2c479906024016060604051808303816000875af11580156115d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fb91906147f7565b604080518481526020810184905290810182905260608101889052929550909350915033906000907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a350505050565b61165e612923565b61166860006133ae565b565b611672612923565b600e5462030d409062ffffff600160601b820481169161169b91600160301b9091041685614825565b6116a59190614825565b62ffffff1611156116c85760405162461bcd60e51b8152600401610e9a90614848565b600e5462030d409062ffffff600160781b82048116916116f191600160481b9091041684614825565b6116fb9190614825565b62ffffff16111561171e5760405162461bcd60e51b8152600401610e9a90614871565b600e546040805162ffffff858116825284811660208301528084168284015263010000009093049092166060830152517f2e7d9780ec398c47872eab5651ba43f0fa44ffed738321577e0db663fe8a05a59181900360800190a1600e805462ffffff92831663010000000265ffffffffffff199091169290931691909117919091179055565b6117ac612923565b62030d4081101580156117c257506207a1208111155b61182b5760405162461bcd60e51b815260206004820152603460248201527f676173466f7250726f63657373696e67206d757374206265206265747765656e6044820152730203230302c30303020616e64203530302c3030360641b6064820152608401610e9a565b60105481036118915760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460448201526b6f2073616d652076616c756560a01b6064820152608401610e9a565b60105460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db790600090a3601055565b6118cc612923565b600b546001600160a01b03908116908216036119405760405162461bcd60e51b815260206004820152602d60248201527f546865206469766964656e6420747261636b657220616c72656164792068617360448201526c2074686174206164647265737360981b6064820152608401610e9a565b6000819050306001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b191906147da565b6001600160a01b031614611a415760405162461bcd60e51b815260206004820152604b60248201527f546865206e6577206469766964656e6420747261636b6572206d75737420626560448201527f206f776e656420627920746865204449564944454e4544544f4b454e20746f6b60648201526a195b8818dbdb9d1c9858dd60aa1b608482015260a401610e9a565b60405163031e79db60e41b81526001600160a01b03821660048201819052906331e79db090602401600060405180830381600087803b158015611a8357600080fd5b505af1158015611a97573d6000803e3d6000fd5b505060405163031e79db60e41b81523060048201526001600160a01b03841692506331e79db09150602401600060405180830381600087803b158015611adc57600080fd5b505af1158015611af0573d6000803e3d6000fd5b50505050806001600160a01b03166331e79db0611b156005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015611b5657600080fd5b505af1158015611b6a573d6000803e3d6000fd5b505060095460405163031e79db60e41b81526001600160a01b03918216600482015290841692506331e79db09150602401600060405180830381600087803b158015611bb557600080fd5b505af1158015611bc9573d6000803e3d6000fd5b5050600a5460405163031e79db60e41b81526001600160a01b03918216600482015290841692506331e79db09150602401600060405180830381600087803b158015611c1457600080fd5b505af1158015611c28573d6000803e3d6000fd5b5050600b546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600b80546001600160a01b0319166001600160a01b039290921691909117905550565b611c93612923565b6001600160a01b0381163003611cd95760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b6044820152606401610e9a565b6110f5611cee6005546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d569190614791565b6001600160a01b0384169190613400565b606060048054610d20906146fe565b611d7e612923565b600a546001600160a01b0390811690831603611e025760405162461bcd60e51b815260206004820152603e60248201527f546865206d61696e20706169722063616e6e6f742062652072656d6f7665642060448201527f66726f6d206175746f6d617465644d61726b65744d616b6572506169727300006064820152608401610e9a565b6115808282613255565b600b5460408051631bc9e27b60e21b815290516000926001600160a01b031691636f2789ec9160048083019260209291908290030181865afa158015610ffb573d6000803e3d6000fd5b60003381611e6482866123b0565b905083811015611ec45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610e9a565b610efe82868684036127ff565b600b546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401611202565b600033610db18185856129f7565b611f1a612923565b612710611f2660025490565b611f30919061474e565b811015611f945760405162461bcd60e51b815260206004820152602c60248201527f6d61785472616e73616374696f6e416d6f756e74203e3d20746f74616c20737560448201526b070706c79202f2031303030360a41b6064820152608401610e9a565b6012546040805183815260208101929092527f35eec0711af6fbe3039535323be51b57996b6945b0d55862607c7a02e52e4507910160405180910390a1601255565b600b5460405163fbcbc0f160e01b81526001600160a01b038381166004830152600092839283928392839283928392839291169063fbcbc0f1906024015b61010060405180830381865afa158015612032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120569190614899565b97509750975097509750975097509750919395975091939597565b612079612923565b600081116120c25760405162461bcd60e51b8152602060048201526016602482015275073776170546f6b656e734174416d6f756e74203e20360541b6044820152606401610e9a565b600d546040805183815260208101929092527f1d3afd1a2942d06995fdb024306050a7b24ad00572be70ce8b1bea325780d28b910160405180910390a1600d55565b600b5460408051632f842d8560e21b815290516000926001600160a01b03169163be10b6149160048083019260209291908290030181865afa158015610ffb573d6000803e3d6000fd5b612156612923565b6001600160a01b03821660009081526013602052604090205481151560ff9091161515036121965760405162461bcd60e51b8152600401610e9a90614770565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610fa5565b600b5460405163c705c56960e01b81526001600160a01b038381166004830152600092169063c705c56990602401602060405180830381865afa158015612239573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db791906147bd565b612265612923565b600e5462030d409062ffffff8082169161228891600160601b9091041685614825565b6122929190614825565b62ffffff1611156122b55760405162461bcd60e51b8152600401610e9a90614848565b600e5462030d409062ffffff630100000082048116916122de91600160781b9091041684614825565b6122e89190614825565b62ffffff16111561230b5760405162461bcd60e51b8152600401610e9a90614871565b600e546040805162ffffff85811682528481166020830152600160301b8404811682840152600160481b9093049092166060830152517fdec183740138e3a28dfd6f973ecd3bf00cd5d9b2544f6763c0a87f721444c5d19181900360800190a1600e80546bffffffffffff0000000000001916600160301b62ffffff948516026bffffff000000000000000000191617600160481b9290931691909102919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6123e3612923565b60006123f76005546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114612441576040519150601f19603f3d011682016040523d82523d6000602084013e612446565b606091505b50509050806110f55760405162461bcd60e51b815260206004820152601460248201527311985a5b1959081a5b881dda5d1a191c985dd85b60621b6044820152606401610e9a565b600b546040805163039e107b60e61b815290516000926001600160a01b03169163e7841ec09160048083019260209291908290030181865afa158015610ffb573d6000803e3d6000fd5b6124e0612923565b600b5460405163e98030c760e01b8152600481018390526001600160a01b039091169063e98030c790602401610df2565b612519612923565b600e5462030d409062ffffff8082169161253c91600160301b9091041685614825565b6125469190614825565b62ffffff1611156125695760405162461bcd60e51b8152600401610e9a90614848565b600e5462030d409062ffffff6301000000820481169161259291600160481b9091041684614825565b61259c9190614825565b62ffffff1611156125bf5760405162461bcd60e51b8152600401610e9a90614871565b600e546040805162ffffff85811682528481166020830152600160601b8404811682840152600160781b9093049092166060830152517f70748cb9cb3bcb4dfd4fff8f2a6f23f636067b33e0244631f9abd38159c1de859181900360800190a1600e805465ffffffffffff60601b1916600160601b62ffffff9485160262ffffff60781b191617600160781b9290931691909102919091179055565b612663612923565b600c546001600160a01b0382811691161480159061268f57506008546001600160a01b03828116911614155b156126975750305b6007546001600160a01b038083169116036126c45760405162461bcd60e51b8152600401610e9a90614770565b6007546040516001600160a01b03918216918316907fe2b5774aa87aa100c6ec40513e7bc1d6f3c22e7abfdcd1e87401c3c791bde9ae90600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b600b54604051635183d6fd60e01b81526004810183905260009182918291829182918291829182916001600160a01b0390911690635183d6fd90602401612014565b61276b612923565b6001600160a01b0381166127d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e9a565b6110f5816133ae565b6127e1612923565b60178054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b0383166128615760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e9a565b6001600160a01b0382166128c25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e9a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146116685760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e9a565b600061298984846123b0565b905060001981146129f157818110156129e45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610e9a565b6129f184848484036127ff565b50505050565b6001600160a01b038316612a1d5760405162461bcd60e51b8152600401610e9a90614903565b6001600160a01b038216612a435760405162461bcd60e51b8152600401610e9a90614948565b60008111612a935760405162461bcd60e51b815260206004820152601b60248201527f45524332303a207472616e73666572207a65726f20616d6f756e7400000000006044820152606401610e9a565b601754600160a01b900460ff1615612b145760175460405163090ec10b60e31b81526001600160a01b03858116600483015284811660248301526044820184905290911690634876085890606401600060405180830381600087803b158015612afb57600080fd5b505af1158015612b0f573d6000803e3d6000fd5b505050505b30600090815260208190526040902054600d5481108015908190612b425750600a54600160a01b900460ff16155b8015612b6757506001600160a01b03851660009081526018602052604090205460ff16155b8015612b8157506005546001600160a01b03868116911614155b8015612b9b57506005546001600160a01b03858116911614155b15612c1157600a805460ff60a01b1916600160a01b17905560165415612bc657612bc6601654613430565b60155415612bd957612bd960155461389a565b306000908152602081905260409020548015612bf857612bf881613b1f565b5060006016819055601555600a805460ff60a01b191690555b600a546001600160a01b03861660009081526013602052604090205460ff600160a01b909204821615911680612c5f57506001600160a01b03851660009081526013602052604090205460ff165b15612c68575060005b60008060008315612e0e576001600160a01b03891660009081526018602052604090205460ff1615612d1957600e54620f424090612cb2906301000000900462ffffff168961498b565b612cbc919061474e565b600e54909150620f424090612cdd90600160481b900462ffffff168961498b565b612ce7919061474e565b600e54909350620f424090612d0890600160781b900462ffffff168961498b565b612d12919061474e565b9150612db4565b6001600160a01b03881660009081526018602052604090205460ff1615612db457600e54620f424090612d519062ffffff168961498b565b612d5b919061474e565b600e54909150620f424090612d7c90600160301b900462ffffff168961498b565b612d86919061474e565b600e54909350620f424090612da790600160601b900462ffffff168961498b565b612db1919061474e565b91505b82601554612dc291906147aa565b601555601654612dd39083906147aa565b601655600082612de385846147aa565b612ded91906147aa565b9050612df981896149a2565b97508015612e0c57612e0c8a3083613c51565b505b612e19898989613c51565b600b546001600160a01b031663e30443bc8a612e4a816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612e9057600080fd5b505af1925050508015612ea1575060015b50600b546001600160a01b031663e30443bc89612ed3816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612f1957600080fd5b505af1925050508015612f2a575060015b50600a54600160a01b900460ff166130fd576001600160a01b03891660009081526014602052604090205460ff16612fae57601254871115612fae5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2065786365656473207472616e73666572206c696d69740000006044820152606401610e9a565b6001600160a01b03881660009081526014602052604090205460ff16613038576011546001600160a01b03891660009081526020819052604090205411156130385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a2065786365656473206d61782077616c6c6574206c696d6974006044820152606401610e9a565b601054600b546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c479906024016060604051808303816000875af19250505080156130a5575060408051601f3d908101601f191682019092526130a2918101906147f7565b60015b156130fb5760408051848152602081018490529081018290526060810185905233906001907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a35050505b505b505050505050505050565b8015806131825750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561315c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131809190614791565b155b6131ed5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610e9a565b6040516001600160a01b03831660248201526044810182905261325090849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613d7b565b505050565b6001600160a01b038216600090815260186020908152604080832080548515801560ff1992831681179093556014909452919093208054909116909217909155819061330c5750600b5460405163c705c56960e01b81526001600160a01b0384811660048301529091169063c705c56990602401602060405180830381865afa1580156132e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330a91906147bd565b155b1561337157600b5460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b15801561335857600080fd5b505af115801561336c573d6000803e3d6000fd5b505050505b816001600160a01b03167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab82604051610fa5911515815260200190565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03831660248201526044810182905261325090849063a9059cbb60e01b90606401613219565b600c546007546001600160a01b0391821691160361355b57600c546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b59190614791565b90506134c082613e50565b600c546040516370a0823160e01b815230600482015260009183916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561350d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135319190614791565b61353b91906149a2565b600f54600c54919250613250916001600160a01b03908116911683613400565b6008546007546001600160a01b0391821691160361388257600954604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156135bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e191906147da565b6008546001600160a01b03908116911614613667576008546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561363e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136629190614791565b613669565b475b90506136748261402f565b600954604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156136be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e291906147da565b6008546001600160a01b03908116911614613772576008546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa15801561373f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137639190614791565b61376d91906149a2565b61377c565b61377c82476149a2565b9050600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f591906147da565b6008546001600160a01b0391821691160361386557600f546040516000916001600160a01b03169083908381818185875af1925050503d8060008114613857576040519150601f19603f3d011682016040523d82523d6000602084013e61385c565b606091505b50505050505050565b600f54600854613250916001600160a01b03918216911683613400565b600f546110f59030906001600160a01b0316836129f7565b60006138a760028361474e565b905060006138b582846149a2565b90506000600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561390c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393091906147da565b6008546001600160a01b039081169116146139b6576008546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561398d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b19190614791565b6139b8565b475b90506139c38361402f565b600954604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015613a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3191906147da565b6008546001600160a01b03908116911614613ac1576008546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab29190614791565b613abc91906149a2565b613acb565b613acb82476149a2565b9050613ad783826141ba565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b613b2881613e50565b600c546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b959190614791565b600b54600c54919250613bb5916001600160a01b03908116911683613400565b600b5460405163ba72a95560e01b8152600481018390526001600160a01b039091169063ba72a95590602401600060405180830381600087803b158015613bfb57600080fd5b505af1158015613c0f573d6000803e3d6000fd5b505060408051858152602081018590527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3935001905060405180910390a15050565b6001600160a01b038316613c775760405162461bcd60e51b8152600401610e9a90614903565b6001600160a01b038216613c9d5760405162461bcd60e51b8152600401610e9a90614948565b6001600160a01b03831660009081526020819052604090205481811015613d155760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610e9a565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36129f1565b6000613dd0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661437b9092919063ffffffff16565b9050805160001480613df1575080806020019051810190613df191906147bd565b6132505760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e9a565b600c546008546001600160a01b03908116911614613f7d5760408051600380825260808201909252600091602082016060803683370190505090503081600081518110613e9f57613e9f6149b5565b6001600160a01b039283166020918202929092010152600854825191169082906001908110613ed057613ed06149b5565b6001600160a01b039283166020918202929092010152600c54825191169082906002908110613f0157613f016149b5565b6001600160a01b039283166020918202929092010152600954604051635c11d79560e01b8152911690635c11d79590613f47908590600090869030904290600401614a0f565b600060405180830381600087803b158015613f6157600080fd5b505af1158015613f75573d6000803e3d6000fd5b505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613fb257613fb26149b5565b6001600160a01b039283166020918202929092010152600c54825191169082906001908110613fe357613fe36149b5565b6001600160a01b039283166020918202929092010152600654600954604051637274ca1b60e11b81529183169263e4e9943692613f479290911690869060009087904290600401614a4b565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110614064576140646149b5565b6001600160a01b039283166020918202929092010152600854825191169082906001908110614095576140956149b5565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156140ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061411291906147da565b6001600160a01b03168160018151811061412e5761412e6149b5565b60200260200101516001600160a01b03160361417d5760095460405163791ac94760e01b81526001600160a01b039091169063791ac94790613f47908590600090869030904290600401614a0f565b600654600954604051637274ca1b60e11b81526001600160a01b039283169263e4e9943692613f4792911690869060009087904290600401614a4b565b600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561420d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423191906147da565b6008546001600160a01b039182169116036142d95760095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156142b4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e2091906147f7565b60095460085460405162e8e33760e81b81523060048201526001600160a01b039182166024820152604481018590526064810184905260006084820181905260a482015261dead60c48201524260e482015291169063e8e3370090610104016060604051808303816000875af1158015614357573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2091906147f7565b606061438a8484600085614392565b949350505050565b6060824710156143f35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610e9a565b600080866001600160a01b0316858760405161440f9190614a8a565b60006040518083038185875af1925050503d806000811461444c576040519150601f19603f3d011682016040523d82523d6000602084013e614451565b606091505b50915091506144628783838761446d565b979650505050505050565b606083156144dc5782516000036144d5576001600160a01b0385163b6144d55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e9a565b508161438a565b61438a83838151156144f15781518083602001fd5b8060405162461bcd60e51b8152600401610e9a919061452f565b60005b8381101561452657818101518382015260200161450e565b50506000910152565b602081526000825180602084015261454e81604085016020870161450b565b601f01601f19169190910160400192915050565b6001600160a01b03811681146110f557600080fd5b6000806040838503121561458a57600080fd5b823561459581614562565b946020939093013593505050565b6000602082840312156145b557600080fd5b5035919050565b6000806000606084860312156145d157600080fd5b83356145dc81614562565b925060208401356145ec81614562565b929592945050506040919091013590565b80151581146110f557600080fd5b6000806040838503121561461e57600080fd5b823561462981614562565b91506020830135614639816145fd565b809150509250929050565b60006020828403121561465657600080fd5b813561466181614562565b9392505050565b6000806040838503121561467b57600080fd5b823561468681614562565b9150602083013561463981614562565b803562ffffff811681146146a957600080fd5b919050565b600080604083850312156146c157600080fd5b6146ca83614696565b91506146d860208401614696565b90509250929050565b6000602082840312156146f357600080fd5b8135614661816145fd565b600181811c9082168061471257607f821691505b60208210810361473257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261476b57634e487b7160e01b600052601260045260246000fd5b500490565b602080825260079082015266616c726561647960c81b604082015260600190565b6000602082840312156147a357600080fd5b5051919050565b80820180821115610db757610db7614738565b6000602082840312156147cf57600080fd5b8151614661816145fd565b6000602082840312156147ec57600080fd5b815161466181614562565b60008060006060848603121561480c57600080fd5b8351925060208401519150604084015190509250925092565b62ffffff81811683821601908082111561484157614841614738565b5092915050565b6020808252600f908201526e73656c6c20666565203c3d2032302560881b604082015260600190565b6020808252600e908201526d62757920666565203c3d2032302560901b604082015260600190565b600080600080600080600080610100898b0312156148b657600080fd5b88516148c181614562565b809850506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e089015190509295985092959890939650565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8082028115828204841417610db757610db7614738565b81810381811115610db757610db7614738565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015614a045781516001600160a01b0316875295820195908201906001016149df565b509495945050505050565b85815284602082015260a060408201526000614a2e60a08301866149cb565b6001600160a01b0394909416606083015250608001529392505050565b60018060a01b038616815284602082015283604082015260a060608201526000614a7860a08301856149cb565b90508260808301529695505050505050565b60008251614a9c81846020870161450b565b919091019291505056fea26469706673582212201809c771636edbf78a140981dd48d0afe04c55f7fa6c1831117d053de1e670f764736f6c63430008130033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000065438378b3793c1184041cdfe42ee4efc7419361000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000071afd498d00000000000000000000000000000000000000000000000000000000246139ca8000000000000000000000000000000000000000000000000000000006d23ad5f800000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000958504a702840eea022cc59b02ddea9edfb855070000000000000000000000009cc421962fc72f11c5c2ddf79fe6b5fe5e7cd94e000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000002bf200000000000000000000000000000000000000000000000000000000000000fa0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c0dcc752af9be6a07a67934471d7cd901a6094e60000000000000000000000001ccfe8c40ef259566433716002e379dfffbf5a3e00000000000000000000000000000000000000000000000000000000000000074c616479626f74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005244c6164790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f041690d9cbe398d3d51f25c87902c1403affe66
Deployed Bytecode
0x6080604052600436106103fe5760003560e01c80639213691311610213578063d5bf72b711610123578063ec44adc8116100ab578063f2fde38b1161007a578063f2fde38b14610c78578063f637434214610c98578063f7c618c114610cbb578063f8b45b0514610cdb578063fe49fc4114610cf157600080fd5b8063ec44adc814610bf5578063f0a568c014610c15578063f11a24d314610c35578063f27fd25414610c5857600080fd5b8063e086e5ec116100f2578063e086e5ec14610b65578063e2f4560514610b7a578063e7841ec014610b90578063e9481eee14610ba5578063e98030c714610bd557600080fd5b8063d5bf72b714610ae8578063d8c6404b14610b08578063dd62ed3e14610b29578063de0aad5314610b4957600080fd5b8063aa498023116101a6578063bdd4f29f11610175578063bdd4f29f14610a5d578063c024666814610a72578063c705c56914610a92578063c8c8ebe414610ab2578063cf188ad014610ac857600080fd5b8063aa49802314610988578063ad56c13c146109a8578063afa4f3b214610a0d578063b62496f514610a2d57600080fd5b8063a26579ad116101e2578063a26579ad14610913578063a457c2d714610928578063a8b9d24014610948578063a9059cbb1461096857600080fd5b806392136913146108a557806395d89b41146108c85780639a7a23d6146108dd5780639c1b8af5146108fd57600080fd5b80635d098b381161030e57806377ec7449116102a157806385af30c51161027057806385af30c514610807578063871c128d1461082757806388bdd9be1461084757806389476069146108675780638da5cb5b1461088757600080fd5b806377ec7449146107845780637bce5a04146107a45780637c75ad3a146107c757806382685df5146107e757600080fd5b8063700bb191116102dd578063700bb191146106f957806370a0823114610719578063715018a61461074f57806375f0a8741461076457600080fd5b80635d098b381461068457806364b0f653146106a45780636843cd84146106b95780636c516a70146106d957600080fd5b80632c1f521611610391578063395093511161036057806339509351146105d65780633ad3e6ff146105f657806348a5317e146106165780634e71d92d146106365780634fbee1931461064b57600080fd5b80632c1f52161461053d57806330bb4cff14610575578063313ce5671461058a57806331e79db0146105b657600080fd5b806318160ddd116103cd57806318160ddd146104be5780631c499ab0146104dd57806323b872dd146104fd5780632ae2f1211461051d57600080fd5b806306fdde031461040a578063095ea7b3146104355780630cfe2f3f146104655780630dcb2e891461049c57600080fd5b3661040557005b600080fd5b34801561041657600080fd5b5061041f610d11565b60405161042c919061452f565b60405180910390f35b34801561044157600080fd5b50610455610450366004614577565b610da3565b604051901515815260200161042c565b34801561047157600080fd5b50600e54610488906301000000900462ffffff1681565b60405162ffffff909116815260200161042c565b3480156104a857600080fd5b506104bc6104b73660046145a3565b610dbd565b005b3480156104ca57600080fd5b506002545b60405190815260200161042c565b3480156104e957600080fd5b506104bc6104f83660046145a3565b610e27565b34801561050957600080fd5b506104556105183660046145bc565b610ee5565b34801561052957600080fd5b506104bc61053836600461460b565b610f09565b34801561054957600080fd5b50600b5461055d906001600160a01b031681565b6040516001600160a01b03909116815260200161042c565b34801561058157600080fd5b506104cf610fb1565b34801561059657600080fd5b50600754600160a01b900460ff1660405160ff909116815260200161042c565b3480156105c257600080fd5b506104bc6105d1366004614644565b611024565b3480156105e257600080fd5b506104556105f1366004614577565b61105e565b34801561060257600080fd5b5060075461055d906001600160a01b031681565b34801561062257600080fd5b5060085461055d906001600160a01b031681565b34801561064257600080fd5b506104bc611080565b34801561065757600080fd5b50610455610666366004614644565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561069057600080fd5b506104bc61069f366004614644565b6110f8565b3480156106b057600080fd5b506104cf611189565b3480156106c557600080fd5b506104cf6106d4366004614644565b6111d3565b3480156106e557600080fd5b506104bc6106f4366004614668565b611243565b34801561070557600080fd5b506104bc6107143660046145a3565b611584565b34801561072557600080fd5b506104cf610734366004614644565b6001600160a01b031660009081526020819052604090205490565b34801561075b57600080fd5b506104bc611656565b34801561077057600080fd5b50600f5461055d906001600160a01b031681565b34801561079057600080fd5b5060175461055d906001600160a01b031681565b3480156107b057600080fd5b50600e5461048890600160781b900462ffffff1681565b3480156107d357600080fd5b5060065461055d906001600160a01b031681565b3480156107f357600080fd5b506104bc6108023660046146ae565b61166a565b34801561081357600080fd5b50600a5461055d906001600160a01b031681565b34801561083357600080fd5b506104bc6108423660046145a3565b6117a4565b34801561085357600080fd5b506104bc610862366004614644565b6118c4565b34801561087357600080fd5b506104bc610882366004614644565b611c8b565b34801561089357600080fd5b506005546001600160a01b031661055d565b3480156108b157600080fd5b50600e5461048890600160601b900462ffffff1681565b3480156108d457600080fd5b5061041f611d67565b3480156108e957600080fd5b506104bc6108f836600461460b565b611d76565b34801561090957600080fd5b506104cf60105481565b34801561091f57600080fd5b506104cf611e0c565b34801561093457600080fd5b50610455610943366004614577565b611e56565b34801561095457600080fd5b506104cf610963366004614644565b611ed1565b34801561097457600080fd5b50610455610983366004614577565b611f04565b34801561099457600080fd5b506104bc6109a33660046145a3565b611f12565b3480156109b457600080fd5b506109c86109c3366004614644565b611fd6565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000161042c565b348015610a1957600080fd5b506104bc610a283660046145a3565b612071565b348015610a3957600080fd5b50610455610a48366004614644565b60186020526000908152604090205460ff1681565b348015610a6957600080fd5b506104cf612104565b348015610a7e57600080fd5b506104bc610a8d36600461460b565b61214e565b348015610a9e57600080fd5b50610455610aad366004614644565b6121ee565b348015610abe57600080fd5b506104cf60125481565b348015610ad457600080fd5b5060095461055d906001600160a01b031681565b348015610af457600080fd5b506104bc610b033660046146ae565b61225d565b348015610b1457600080fd5b5060175461045590600160a01b900460ff1681565b348015610b3557600080fd5b506104cf610b44366004614668565b6123b0565b348015610b5557600080fd5b50600e546104889062ffffff1681565b348015610b7157600080fd5b506104bc6123db565b348015610b8657600080fd5b506104cf600d5481565b348015610b9c57600080fd5b506104cf61248e565b348015610bb157600080fd5b50610455610bc0366004614644565b60146020526000908152604090205460ff1681565b348015610be157600080fd5b506104bc610bf03660046145a3565b6124d8565b348015610c0157600080fd5b506104bc610c103660046146ae565b612511565b348015610c2157600080fd5b506104bc610c30366004614644565b61265b565b348015610c4157600080fd5b50600e5461048890600160481b900462ffffff1681565b348015610c6457600080fd5b506109c8610c733660046145a3565b612721565b348015610c8457600080fd5b506104bc610c93366004614644565b612763565b348015610ca457600080fd5b50600e5461048890600160301b900462ffffff1681565b348015610cc757600080fd5b50600c5461055d906001600160a01b031681565b348015610ce757600080fd5b506104cf60115481565b348015610cfd57600080fd5b506104bc610d0c3660046146e1565b6127d9565b606060038054610d20906146fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4c906146fe565b8015610d995780601f10610d6e57610100808354040283529160200191610d99565b820191906000526020600020905b815481529060010190602001808311610d7c57829003601f168201915b5050505050905090565b600033610db18185856127ff565b60019150505b92915050565b610dc5612923565b600b54604051630dcb2e8960e01b8152600481018390526001600160a01b0390911690630dcb2e89906024015b600060405180830381600087803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b5050505050565b610e2f612923565b612710610e3b60025490565b610e45919061474e565b811015610ea35760405162461bcd60e51b815260206004820152602160248201527f6d617857616c6c6574203e3d20746f74616c20737570706c79202f20313030306044820152600360fc1b60648201526084015b60405180910390fd5b6011546040805183815260208101929092527fff64d41f60feb77d52f64ae64a9fc3929d57a89d0cc55728762468bae5e0fe52910160405180910390a1601155565b600033610ef385828561297d565b610efe8585856129f7565b506001949350505050565b610f11612923565b6001600160a01b03821660009081526014602052604090205481151560ff909116151503610f515760405162461bcd60e51b8152600401610e9a90614770565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f82170bbd72c16b30c410014b7382121a699ed119a182e48a0b6cadcc89104ac991015b60405180910390a25050565b600b54604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae9160048083019260209291908290030181865afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101f9190614791565b905090565b61102c612923565b600b5460405163031e79db60e41b81526001600160a01b038381166004830152909116906331e79db090602401610df2565b600033610db181858561107183836123b0565b61107b91906147aa565b6127ff565b600b5460405163bc4c4b3760e01b8152336004820152600060248201526001600160a01b039091169063bc4c4b37906044016020604051808303816000875af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f591906147bd565b50565b611100612923565b600f546001600160a01b0380831691160361112d5760405162461bcd60e51b8152600401610e9a90614770565b600f546040516001600160a01b038084169216907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a3600f80546001600160a01b0319166001600160a01b0392909216919091179055565b600b54604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde9160048083019260209291908290030181865afa158015610ffb573d6000803e3d6000fd5b600b546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a08231906024015b602060405180830381865afa15801561121f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190614791565b61124b612923565b600880546001600160a01b0319166001600160a01b03838116919091179091556009548382169116146113735761128530836000196127ff565b600b5460405163c705c56960e01b81526001600160a01b0384811660048301529091169063c705c56990602401602060405180830381865afa1580156112cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f391906147bd565b61135757600b5460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b15801561133e57600080fd5b505af1158015611352573d6000803e3d6000fd5b505050505b600980546001600160a01b0319166001600160a01b0384161790555b600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ea91906147da565b6008546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801561143b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145f91906147da565b600a80546001600160a01b0319166001600160a01b03928316179055600954604080516315ab88c960e31b81529051919092169163ad5c46489160048083019260209291908290030181865afa1580156114bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e191906147da565b6008546001600160a01b0390811691161461151557600954600854611515916001600160a01b039182169116600019613108565b600954600a54600854604080516001600160a01b039485168152928416602084015292168183015290517f113a6e83812f48b2f83795e33cb009afb4ba6e240c9c643c5dc75791e4ce7ab69181900360600190a1600a54611580906001600160a01b03166001613255565b5050565b600b546040516001624d3b8760e01b0319815260048101839052600091829182916001600160a01b03169063ffb2c479906024016060604051808303816000875af11580156115d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fb91906147f7565b604080518481526020810184905290810182905260608101889052929550909350915033906000907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a350505050565b61165e612923565b61166860006133ae565b565b611672612923565b600e5462030d409062ffffff600160601b820481169161169b91600160301b9091041685614825565b6116a59190614825565b62ffffff1611156116c85760405162461bcd60e51b8152600401610e9a90614848565b600e5462030d409062ffffff600160781b82048116916116f191600160481b9091041684614825565b6116fb9190614825565b62ffffff16111561171e5760405162461bcd60e51b8152600401610e9a90614871565b600e546040805162ffffff858116825284811660208301528084168284015263010000009093049092166060830152517f2e7d9780ec398c47872eab5651ba43f0fa44ffed738321577e0db663fe8a05a59181900360800190a1600e805462ffffff92831663010000000265ffffffffffff199091169290931691909117919091179055565b6117ac612923565b62030d4081101580156117c257506207a1208111155b61182b5760405162461bcd60e51b815260206004820152603460248201527f676173466f7250726f63657373696e67206d757374206265206265747765656e6044820152730203230302c30303020616e64203530302c3030360641b6064820152608401610e9a565b60105481036118915760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460448201526b6f2073616d652076616c756560a01b6064820152608401610e9a565b60105460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db790600090a3601055565b6118cc612923565b600b546001600160a01b03908116908216036119405760405162461bcd60e51b815260206004820152602d60248201527f546865206469766964656e6420747261636b657220616c72656164792068617360448201526c2074686174206164647265737360981b6064820152608401610e9a565b6000819050306001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b191906147da565b6001600160a01b031614611a415760405162461bcd60e51b815260206004820152604b60248201527f546865206e6577206469766964656e6420747261636b6572206d75737420626560448201527f206f776e656420627920746865204449564944454e4544544f4b454e20746f6b60648201526a195b8818dbdb9d1c9858dd60aa1b608482015260a401610e9a565b60405163031e79db60e41b81526001600160a01b03821660048201819052906331e79db090602401600060405180830381600087803b158015611a8357600080fd5b505af1158015611a97573d6000803e3d6000fd5b505060405163031e79db60e41b81523060048201526001600160a01b03841692506331e79db09150602401600060405180830381600087803b158015611adc57600080fd5b505af1158015611af0573d6000803e3d6000fd5b50505050806001600160a01b03166331e79db0611b156005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015611b5657600080fd5b505af1158015611b6a573d6000803e3d6000fd5b505060095460405163031e79db60e41b81526001600160a01b03918216600482015290841692506331e79db09150602401600060405180830381600087803b158015611bb557600080fd5b505af1158015611bc9573d6000803e3d6000fd5b5050600a5460405163031e79db60e41b81526001600160a01b03918216600482015290841692506331e79db09150602401600060405180830381600087803b158015611c1457600080fd5b505af1158015611c28573d6000803e3d6000fd5b5050600b546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600b80546001600160a01b0319166001600160a01b039290921691909117905550565b611c93612923565b6001600160a01b0381163003611cd95760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b6044820152606401610e9a565b6110f5611cee6005546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d569190614791565b6001600160a01b0384169190613400565b606060048054610d20906146fe565b611d7e612923565b600a546001600160a01b0390811690831603611e025760405162461bcd60e51b815260206004820152603e60248201527f546865206d61696e20706169722063616e6e6f742062652072656d6f7665642060448201527f66726f6d206175746f6d617465644d61726b65744d616b6572506169727300006064820152608401610e9a565b6115808282613255565b600b5460408051631bc9e27b60e21b815290516000926001600160a01b031691636f2789ec9160048083019260209291908290030181865afa158015610ffb573d6000803e3d6000fd5b60003381611e6482866123b0565b905083811015611ec45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610e9a565b610efe82868684036127ff565b600b546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401611202565b600033610db18185856129f7565b611f1a612923565b612710611f2660025490565b611f30919061474e565b811015611f945760405162461bcd60e51b815260206004820152602c60248201527f6d61785472616e73616374696f6e416d6f756e74203e3d20746f74616c20737560448201526b070706c79202f2031303030360a41b6064820152608401610e9a565b6012546040805183815260208101929092527f35eec0711af6fbe3039535323be51b57996b6945b0d55862607c7a02e52e4507910160405180910390a1601255565b600b5460405163fbcbc0f160e01b81526001600160a01b038381166004830152600092839283928392839283928392839291169063fbcbc0f1906024015b61010060405180830381865afa158015612032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120569190614899565b97509750975097509750975097509750919395975091939597565b612079612923565b600081116120c25760405162461bcd60e51b8152602060048201526016602482015275073776170546f6b656e734174416d6f756e74203e20360541b6044820152606401610e9a565b600d546040805183815260208101929092527f1d3afd1a2942d06995fdb024306050a7b24ad00572be70ce8b1bea325780d28b910160405180910390a1600d55565b600b5460408051632f842d8560e21b815290516000926001600160a01b03169163be10b6149160048083019260209291908290030181865afa158015610ffb573d6000803e3d6000fd5b612156612923565b6001600160a01b03821660009081526013602052604090205481151560ff9091161515036121965760405162461bcd60e51b8152600401610e9a90614770565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610fa5565b600b5460405163c705c56960e01b81526001600160a01b038381166004830152600092169063c705c56990602401602060405180830381865afa158015612239573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db791906147bd565b612265612923565b600e5462030d409062ffffff8082169161228891600160601b9091041685614825565b6122929190614825565b62ffffff1611156122b55760405162461bcd60e51b8152600401610e9a90614848565b600e5462030d409062ffffff630100000082048116916122de91600160781b9091041684614825565b6122e89190614825565b62ffffff16111561230b5760405162461bcd60e51b8152600401610e9a90614871565b600e546040805162ffffff85811682528481166020830152600160301b8404811682840152600160481b9093049092166060830152517fdec183740138e3a28dfd6f973ecd3bf00cd5d9b2544f6763c0a87f721444c5d19181900360800190a1600e80546bffffffffffff0000000000001916600160301b62ffffff948516026bffffff000000000000000000191617600160481b9290931691909102919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6123e3612923565b60006123f76005546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114612441576040519150601f19603f3d011682016040523d82523d6000602084013e612446565b606091505b50509050806110f55760405162461bcd60e51b815260206004820152601460248201527311985a5b1959081a5b881dda5d1a191c985dd85b60621b6044820152606401610e9a565b600b546040805163039e107b60e61b815290516000926001600160a01b03169163e7841ec09160048083019260209291908290030181865afa158015610ffb573d6000803e3d6000fd5b6124e0612923565b600b5460405163e98030c760e01b8152600481018390526001600160a01b039091169063e98030c790602401610df2565b612519612923565b600e5462030d409062ffffff8082169161253c91600160301b9091041685614825565b6125469190614825565b62ffffff1611156125695760405162461bcd60e51b8152600401610e9a90614848565b600e5462030d409062ffffff6301000000820481169161259291600160481b9091041684614825565b61259c9190614825565b62ffffff1611156125bf5760405162461bcd60e51b8152600401610e9a90614871565b600e546040805162ffffff85811682528481166020830152600160601b8404811682840152600160781b9093049092166060830152517f70748cb9cb3bcb4dfd4fff8f2a6f23f636067b33e0244631f9abd38159c1de859181900360800190a1600e805465ffffffffffff60601b1916600160601b62ffffff9485160262ffffff60781b191617600160781b9290931691909102919091179055565b612663612923565b600c546001600160a01b0382811691161480159061268f57506008546001600160a01b03828116911614155b156126975750305b6007546001600160a01b038083169116036126c45760405162461bcd60e51b8152600401610e9a90614770565b6007546040516001600160a01b03918216918316907fe2b5774aa87aa100c6ec40513e7bc1d6f3c22e7abfdcd1e87401c3c791bde9ae90600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b600b54604051635183d6fd60e01b81526004810183905260009182918291829182918291829182916001600160a01b0390911690635183d6fd90602401612014565b61276b612923565b6001600160a01b0381166127d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e9a565b6110f5816133ae565b6127e1612923565b60178054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b0383166128615760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e9a565b6001600160a01b0382166128c25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e9a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146116685760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e9a565b600061298984846123b0565b905060001981146129f157818110156129e45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610e9a565b6129f184848484036127ff565b50505050565b6001600160a01b038316612a1d5760405162461bcd60e51b8152600401610e9a90614903565b6001600160a01b038216612a435760405162461bcd60e51b8152600401610e9a90614948565b60008111612a935760405162461bcd60e51b815260206004820152601b60248201527f45524332303a207472616e73666572207a65726f20616d6f756e7400000000006044820152606401610e9a565b601754600160a01b900460ff1615612b145760175460405163090ec10b60e31b81526001600160a01b03858116600483015284811660248301526044820184905290911690634876085890606401600060405180830381600087803b158015612afb57600080fd5b505af1158015612b0f573d6000803e3d6000fd5b505050505b30600090815260208190526040902054600d5481108015908190612b425750600a54600160a01b900460ff16155b8015612b6757506001600160a01b03851660009081526018602052604090205460ff16155b8015612b8157506005546001600160a01b03868116911614155b8015612b9b57506005546001600160a01b03858116911614155b15612c1157600a805460ff60a01b1916600160a01b17905560165415612bc657612bc6601654613430565b60155415612bd957612bd960155461389a565b306000908152602081905260409020548015612bf857612bf881613b1f565b5060006016819055601555600a805460ff60a01b191690555b600a546001600160a01b03861660009081526013602052604090205460ff600160a01b909204821615911680612c5f57506001600160a01b03851660009081526013602052604090205460ff165b15612c68575060005b60008060008315612e0e576001600160a01b03891660009081526018602052604090205460ff1615612d1957600e54620f424090612cb2906301000000900462ffffff168961498b565b612cbc919061474e565b600e54909150620f424090612cdd90600160481b900462ffffff168961498b565b612ce7919061474e565b600e54909350620f424090612d0890600160781b900462ffffff168961498b565b612d12919061474e565b9150612db4565b6001600160a01b03881660009081526018602052604090205460ff1615612db457600e54620f424090612d519062ffffff168961498b565b612d5b919061474e565b600e54909150620f424090612d7c90600160301b900462ffffff168961498b565b612d86919061474e565b600e54909350620f424090612da790600160601b900462ffffff168961498b565b612db1919061474e565b91505b82601554612dc291906147aa565b601555601654612dd39083906147aa565b601655600082612de385846147aa565b612ded91906147aa565b9050612df981896149a2565b97508015612e0c57612e0c8a3083613c51565b505b612e19898989613c51565b600b546001600160a01b031663e30443bc8a612e4a816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612e9057600080fd5b505af1925050508015612ea1575060015b50600b546001600160a01b031663e30443bc89612ed3816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612f1957600080fd5b505af1925050508015612f2a575060015b50600a54600160a01b900460ff166130fd576001600160a01b03891660009081526014602052604090205460ff16612fae57601254871115612fae5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2065786365656473207472616e73666572206c696d69740000006044820152606401610e9a565b6001600160a01b03881660009081526014602052604090205460ff16613038576011546001600160a01b03891660009081526020819052604090205411156130385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a2065786365656473206d61782077616c6c6574206c696d6974006044820152606401610e9a565b601054600b546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c479906024016060604051808303816000875af19250505080156130a5575060408051601f3d908101601f191682019092526130a2918101906147f7565b60015b156130fb5760408051848152602081018490529081018290526060810185905233906001907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a35050505b505b505050505050505050565b8015806131825750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561315c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131809190614791565b155b6131ed5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610e9a565b6040516001600160a01b03831660248201526044810182905261325090849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613d7b565b505050565b6001600160a01b038216600090815260186020908152604080832080548515801560ff1992831681179093556014909452919093208054909116909217909155819061330c5750600b5460405163c705c56960e01b81526001600160a01b0384811660048301529091169063c705c56990602401602060405180830381865afa1580156132e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330a91906147bd565b155b1561337157600b5460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b15801561335857600080fd5b505af115801561336c573d6000803e3d6000fd5b505050505b816001600160a01b03167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab82604051610fa5911515815260200190565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03831660248201526044810182905261325090849063a9059cbb60e01b90606401613219565b600c546007546001600160a01b0391821691160361355b57600c546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b59190614791565b90506134c082613e50565b600c546040516370a0823160e01b815230600482015260009183916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561350d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135319190614791565b61353b91906149a2565b600f54600c54919250613250916001600160a01b03908116911683613400565b6008546007546001600160a01b0391821691160361388257600954604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156135bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e191906147da565b6008546001600160a01b03908116911614613667576008546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561363e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136629190614791565b613669565b475b90506136748261402f565b600954604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156136be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e291906147da565b6008546001600160a01b03908116911614613772576008546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa15801561373f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137639190614791565b61376d91906149a2565b61377c565b61377c82476149a2565b9050600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f591906147da565b6008546001600160a01b0391821691160361386557600f546040516000916001600160a01b03169083908381818185875af1925050503d8060008114613857576040519150601f19603f3d011682016040523d82523d6000602084013e61385c565b606091505b50505050505050565b600f54600854613250916001600160a01b03918216911683613400565b600f546110f59030906001600160a01b0316836129f7565b60006138a760028361474e565b905060006138b582846149a2565b90506000600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561390c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393091906147da565b6008546001600160a01b039081169116146139b6576008546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561398d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b19190614791565b6139b8565b475b90506139c38361402f565b600954604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015613a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3191906147da565b6008546001600160a01b03908116911614613ac1576008546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab29190614791565b613abc91906149a2565b613acb565b613acb82476149a2565b9050613ad783826141ba565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b613b2881613e50565b600c546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b959190614791565b600b54600c54919250613bb5916001600160a01b03908116911683613400565b600b5460405163ba72a95560e01b8152600481018390526001600160a01b039091169063ba72a95590602401600060405180830381600087803b158015613bfb57600080fd5b505af1158015613c0f573d6000803e3d6000fd5b505060408051858152602081018590527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3935001905060405180910390a15050565b6001600160a01b038316613c775760405162461bcd60e51b8152600401610e9a90614903565b6001600160a01b038216613c9d5760405162461bcd60e51b8152600401610e9a90614948565b6001600160a01b03831660009081526020819052604090205481811015613d155760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610e9a565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36129f1565b6000613dd0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661437b9092919063ffffffff16565b9050805160001480613df1575080806020019051810190613df191906147bd565b6132505760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e9a565b600c546008546001600160a01b03908116911614613f7d5760408051600380825260808201909252600091602082016060803683370190505090503081600081518110613e9f57613e9f6149b5565b6001600160a01b039283166020918202929092010152600854825191169082906001908110613ed057613ed06149b5565b6001600160a01b039283166020918202929092010152600c54825191169082906002908110613f0157613f016149b5565b6001600160a01b039283166020918202929092010152600954604051635c11d79560e01b8152911690635c11d79590613f47908590600090869030904290600401614a0f565b600060405180830381600087803b158015613f6157600080fd5b505af1158015613f75573d6000803e3d6000fd5b505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613fb257613fb26149b5565b6001600160a01b039283166020918202929092010152600c54825191169082906001908110613fe357613fe36149b5565b6001600160a01b039283166020918202929092010152600654600954604051637274ca1b60e11b81529183169263e4e9943692613f479290911690869060009087904290600401614a4b565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110614064576140646149b5565b6001600160a01b039283166020918202929092010152600854825191169082906001908110614095576140956149b5565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156140ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061411291906147da565b6001600160a01b03168160018151811061412e5761412e6149b5565b60200260200101516001600160a01b03160361417d5760095460405163791ac94760e01b81526001600160a01b039091169063791ac94790613f47908590600090869030904290600401614a0f565b600654600954604051637274ca1b60e11b81526001600160a01b039283169263e4e9943692613f4792911690869060009087904290600401614a4b565b600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561420d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423191906147da565b6008546001600160a01b039182169116036142d95760095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156142b4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e2091906147f7565b60095460085460405162e8e33760e81b81523060048201526001600160a01b039182166024820152604481018590526064810184905260006084820181905260a482015261dead60c48201524260e482015291169063e8e3370090610104016060604051808303816000875af1158015614357573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2091906147f7565b606061438a8484600085614392565b949350505050565b6060824710156143f35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610e9a565b600080866001600160a01b0316858760405161440f9190614a8a565b60006040518083038185875af1925050503d806000811461444c576040519150601f19603f3d011682016040523d82523d6000602084013e614451565b606091505b50915091506144628783838761446d565b979650505050505050565b606083156144dc5782516000036144d5576001600160a01b0385163b6144d55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e9a565b508161438a565b61438a83838151156144f15781518083602001fd5b8060405162461bcd60e51b8152600401610e9a919061452f565b60005b8381101561452657818101518382015260200161450e565b50506000910152565b602081526000825180602084015261454e81604085016020870161450b565b601f01601f19169190910160400192915050565b6001600160a01b03811681146110f557600080fd5b6000806040838503121561458a57600080fd5b823561459581614562565b946020939093013593505050565b6000602082840312156145b557600080fd5b5035919050565b6000806000606084860312156145d157600080fd5b83356145dc81614562565b925060208401356145ec81614562565b929592945050506040919091013590565b80151581146110f557600080fd5b6000806040838503121561461e57600080fd5b823561462981614562565b91506020830135614639816145fd565b809150509250929050565b60006020828403121561465657600080fd5b813561466181614562565b9392505050565b6000806040838503121561467b57600080fd5b823561468681614562565b9150602083013561463981614562565b803562ffffff811681146146a957600080fd5b919050565b600080604083850312156146c157600080fd5b6146ca83614696565b91506146d860208401614696565b90509250929050565b6000602082840312156146f357600080fd5b8135614661816145fd565b600181811c9082168061471257607f821691505b60208210810361473257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261476b57634e487b7160e01b600052601260045260246000fd5b500490565b602080825260079082015266616c726561647960c81b604082015260600190565b6000602082840312156147a357600080fd5b5051919050565b80820180821115610db757610db7614738565b6000602082840312156147cf57600080fd5b8151614661816145fd565b6000602082840312156147ec57600080fd5b815161466181614562565b60008060006060848603121561480c57600080fd5b8351925060208401519150604084015190509250925092565b62ffffff81811683821601908082111561484157614841614738565b5092915050565b6020808252600f908201526e73656c6c20666565203c3d2032302560881b604082015260600190565b6020808252600e908201526d62757920666565203c3d2032302560901b604082015260600190565b600080600080600080600080610100898b0312156148b657600080fd5b88516148c181614562565b809850506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e089015190509295985092959890939650565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8082028115828204841417610db757610db7614738565b81810381811115610db757610db7614738565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015614a045781516001600160a01b0316875295820195908201906001016149df565b509495945050505050565b85815284602082015260a060408201526000614a2e60a08301866149cb565b6001600160a01b0394909416606083015250608001529392505050565b60018060a01b038616815284602082015283604082015260a060608201526000614a7860a08301856149cb565b90508260808301529695505050505050565b60008251614a9c81846020870161450b565b919091019291505056fea26469706673582212201809c771636edbf78a140981dd48d0afe04c55f7fa6c1831117d053de1e670f764736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000065438378b3793c1184041cdfe42ee4efc7419361000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000071afd498d00000000000000000000000000000000000000000000000000000000246139ca8000000000000000000000000000000000000000000000000000000006d23ad5f800000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000958504a702840eea022cc59b02ddea9edfb855070000000000000000000000009cc421962fc72f11c5c2ddf79fe6b5fe5e7cd94e000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000002bf200000000000000000000000000000000000000000000000000000000000000fa0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c0dcc752af9be6a07a67934471d7cd901a6094e60000000000000000000000001ccfe8c40ef259566433716002e379dfffbf5a3e00000000000000000000000000000000000000000000000000000000000000074c616479626f74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005244c6164790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f041690d9cbe398d3d51f25c87902c1403affe66
-----Decoded View---------------
Arg [0] : args (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [1] : autoApproveAddressList (address[]): 0xF041690D9cBE398d3D51F25C87902C1403AffE66
Arg [2] : _gemAntiBot (address): 0x65438378B3793C1184041cdfE42ee4EFc7419361
Arg [3] : referrer (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
31 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000003a0
Arg [2] : 00000000000000000000000065438378b3793c1184041cdfe42ee4efc7419361
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 00000000000000000000000000000000000000000000000000000000000002a0
Arg [5] : 00000000000000000000000000000000000000000000000000000000000002e0
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [7] : 00000000000000000000000000000000000000000000000000071afd498d0000
Arg [8] : 0000000000000000000000000000000000000000000000000000246139ca8000
Arg [9] : 000000000000000000000000000000000000000000000000000006d23ad5f800
Arg [10] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [11] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [12] : 000000000000000000000000958504a702840eea022cc59b02ddea9edfb85507
Arg [13] : 0000000000000000000000009cc421962fc72f11c5c2ddf79fe6b5fe5e7cd94e
Arg [14] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [16] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [17] : 0000000000000000000000000000000000000000000000000000000000004e20
Arg [18] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [19] : 00000000000000000000000000000000000000000000000000000000000186a0
Arg [20] : 000000000000000000000000000000000000000000000000000000000002bf20
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000fa0
Arg [22] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [23] : 000000000000000000000000c0dcc752af9be6a07a67934471d7cd901a6094e6
Arg [24] : 0000000000000000000000001ccfe8c40ef259566433716002e379dfffbf5a3e
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [26] : 4c616479626f7400000000000000000000000000000000000000000000000000
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [28] : 244c616479000000000000000000000000000000000000000000000000000000
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [30] : 000000000000000000000000f041690d9cbe398d3d51f25c87902c1403affe66
Deployed Bytecode Sourcemap
30816:29891:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6025:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6943:201;;;;;;;;;;-1:-1:-1;6943:201:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;6943:201:0;1126:187:1;32075:26:0;;;;;;;;;;-1:-1:-1;32075:26:0;;;;;;;;;;;;;;1492:8:1;1480:21;;;1462:40;;1450:2;1435:18;32075:26:0;1318:190:1;47878:224:0;;;;;;;;;;-1:-1:-1;47878:224:0;;;;;:::i;:::-;;:::i;:::-;;6340:108;;;;;;;;;;-1:-1:-1;6428:12:0;;6340:108;;;1844:25:1;;;1832:2;1817:18;6340:108:0;1698:177:1;42229:257:0;;;;;;;;;;-1:-1:-1;42229:257:0;;;;;:::i;:::-;;:::i;7150:261::-;;;;;;;;;;-1:-1:-1;7150:261:0;;;;;:::i;:::-;;:::i;46748:323::-;;;;;;;;;;-1:-1:-1;46748:323:0;;;;;:::i;:::-;;:::i;31925:30::-;;;;;;;;;;-1:-1:-1;31925:30:0;;;;-1:-1:-1;;;;;31925:30:0;;;;;;-1:-1:-1;;;;;3015:32:1;;;2997:51;;2985:2;2970:18;31925:30:0;2851:203:1;48342:180:0;;;;;;;;;;;;;:::i;43147:92::-;;;;;;;;;;-1:-1:-1;43222:9:0;;-1:-1:-1;;;43222:9:0;;;;43147:92;;3231:4:1;3219:17;;;3201:36;;3189:2;3174:18;43147:92:0;3059:184:1;49113:169:0;;;;;;;;;;-1:-1:-1;49113:169:0;;;;;:::i;:::-;;:::i;7417:238::-;;;;;;;;;;-1:-1:-1;7417:238:0;;;;;:::i;:::-;;:::i;31719:35::-;;;;;;;;;;-1:-1:-1;31719:35:0;;;;-1:-1:-1;;;;;31719:35:0;;;31791:33;;;;;;;;;;-1:-1:-1;31791:33:0;;;;-1:-1:-1;;;;;31791:33:0;;;50784:142;;;;;;;;;;;;;:::i;48530:126::-;;;;;;;;;;-1:-1:-1;48530:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;48620:28:0;48596:4;48620:28;;;:19;:28;;;;;;;;;48530:126;43247:239;;;;;;;;;;-1:-1:-1;43247:239:0;;;;;:::i;:::-;;:::i;51111:181::-;;;;;;;;;;;;;:::i;48895:210::-;;;;;;;;;;-1:-1:-1;48895:210:0;;;;;:::i;:::-;;:::i;39820:1020::-;;;;;;;;;;-1:-1:-1;39820:1020:0;;;;;:::i;:::-;;:::i;50326:450::-;;;;;;;;;;-1:-1:-1;50326:450:0;;;;;:::i;:::-;;:::i;6454:127::-;;;;;;;;;;-1:-1:-1;6454:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6555:18:0;6528:7;6555:18;;;;;;;;;;;;6454:127;11659:103;;;;;;;;;;;;;:::i;32260:30::-;;;;;;;;;;-1:-1:-1;32260:30:0;;;;-1:-1:-1;;;;;32260:30:0;;;32624:25;;;;;;;;;;-1:-1:-1;32624:25:0;;;;-1:-1:-1;;;;;32624:25:0;;;32222:29;;;;;;;;;;-1:-1:-1;32222:29:0;;;;-1:-1:-1;;;32222:29:0;;;;;;31671:39;;;;;;;;;;-1:-1:-1;31671:39:0;;;;-1:-1:-1;;;;;31671:39:0;;;45325:620;;;;;;;;;;-1:-1:-1;45325:620:0;;;;;:::i;:::-;;:::i;31863:23::-;;;;;;;;;;-1:-1:-1;31863:23:0;;;;-1:-1:-1;;;;;31863:23:0;;;47077:466;;;;;;;;;;-1:-1:-1;47077:466:0;;;;;:::i;:::-;;:::i;41100:1121::-;;;;;;;;;;-1:-1:-1;41100:1121:0;;;;;:::i;:::-;;:::i;60497:207::-;;;;;;;;;;-1:-1:-1;60497:207:0;;;;;:::i;:::-;;:::i;11428:87::-;;;;;;;;;;-1:-1:-1;11501:6:0;;-1:-1:-1;;;;;11501:6:0;11428:87;;32185:30;;;;;;;;;;-1:-1:-1;32185:30:0;;;;-1:-1:-1;;;32185:30:0;;;;;;6131:104;;;;;;;;;;;;;:::i;45955:304::-;;;;;;;;;;-1:-1:-1;45955:304:0;;;;;:::i;:::-;;:::i;32297:31::-;;;;;;;;;;;;;;;;47722:148;;;;;;;;;;;;;:::i;7661:436::-;;;;;;;;;;-1:-1:-1;7661:436:0;;;;;:::i;:::-;;:::i;48664:223::-;;;;;;;;;;-1:-1:-1;48664:223:0;;;;;:::i;:::-;;:::i;6587:193::-;;;;;;;;;;-1:-1:-1;6587:193:0;;;;;:::i;:::-;;:::i;42494:379::-;;;;;;;;;;-1:-1:-1;42494:379:0;;;;;:::i;:::-;;:::i;49520:390::-;;;;;;;;;;-1:-1:-1;49520:390:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;5170:32:1;;;5152:51;;5234:2;5219:18;;5212:34;;;;5262:18;;;5255:34;;;;5320:2;5305:18;;5298:34;;;;5363:3;5348:19;;5341:35;5190:3;5392:19;;5385:35;5451:3;5436:19;;5429:35;5495:3;5480:19;;5473:35;5139:3;5124:19;49520:390:0;4813:701:1;40848:244:0;;;;;;;;;;-1:-1:-1;40848:244:0;;;;;:::i;:::-;;:::i;32689:57::-;;;;;;;;;;-1:-1:-1;32689:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;48110:224;;;;;;;;;;;;;:::i;42884:255::-;;;;;;;;;;-1:-1:-1;42884:255:0;;;;;:::i;:::-;;:::i;49290:222::-;;;;;;;;;;-1:-1:-1;49290:222:0;;;;;:::i;:::-;;:::i;32366:35::-;;;;;;;;;;;;;;;;31831:25;;;;;;;;;;-1:-1:-1;31831:25:0;;;;-1:-1:-1;;;;;31831:25:0;;;43977:659;;;;;;;;;;-1:-1:-1;43977:659:0;;;;;:::i;:::-;;:::i;32656:26::-;;;;;;;;;;-1:-1:-1;32656:26:0;;;;-1:-1:-1;;;32656:26:0;;;;;;6786:151;;;;;;;;;;-1:-1:-1;6786:151:0;;;;;:::i;:::-;;:::i;32041:27::-;;;;;;;;;;-1:-1:-1;32041:27:0;;;;;;;;60307:184;;;;;;;;;;;;;:::i;31999:33::-;;;;;;;;;;;;;;;;50934:169;;;;;;;;;;;;;:::i;32467:66::-;;;;;;;;;;-1:-1:-1;32467:66:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;47551:163;;;;;;;;;;-1:-1:-1;47551:163:0;;;;;:::i;:::-;;:::i;44644:673::-;;;;;;;;;;-1:-1:-1;44644:673:0;;;;;:::i;:::-;;:::i;43494:475::-;;;;;;;;;;-1:-1:-1;43494:475:0;;;;;:::i;:::-;;:::i;32147:29::-;;;;;;;;;;-1:-1:-1;32147:29:0;;;;-1:-1:-1;;;32147:29:0;;;;;;49918:400;;;;;;;;;;-1:-1:-1;49918:400:0;;;;;:::i;:::-;;:::i;11768:201::-;;;;;;;;;;-1:-1:-1;11768:201:0;;;;;:::i;:::-;;:::i;32110:30::-;;;;;;;;;;-1:-1:-1;32110:30:0;;;;-1:-1:-1;;;32110:30:0;;;;;;31964:26;;;;;;;;;;-1:-1:-1;31964:26:0;;;;-1:-1:-1;;;;;31964:26:0;;;32335:24;;;;;;;;;;;;;;;;39676:101;;;;;;;;;;-1:-1:-1;39676:101:0;;;;;:::i;:::-;;:::i;6025:100::-;6079:13;6112:5;6105:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6025:100;:::o;6943:201::-;7026:4;5489:10;7082:32;5489:10;7098:7;7107:6;7082:8;:32::i;:::-;7132:4;7125:11;;;6943:201;;;;;:::o;47878:224::-;11389:13;:11;:13::i;:::-;48032:15:::1;::::0;47994:100:::1;::::0;-1:-1:-1;;;47994:100:0;;::::1;::::0;::::1;1844:25:1::0;;;-1:-1:-1;;;;;48032:15:0;;::::1;::::0;47994:92:::1;::::0;1817:18:1;;47994:100:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;47878:224:::0;:::o;42229:257::-;11389:13;:11;:13::i;:::-;42340:5:::1;42324:13;6428:12:::0;;;6340:108;42324:13:::1;:21;;;;:::i;:::-;42312:10;:33;;42304:79;;;::::0;-1:-1:-1;;;42304:79:0;;6706:2:1;42304:79:0::1;::::0;::::1;6688:21:1::0;6745:2;6725:18;;;6718:30;6784:34;6764:18;;;6757:62;-1:-1:-1;;;6835:18:1;;;6828:31;6876:19;;42304:79:0::1;;;;;;;;;42427:9;::::0;42399:38:::1;::::0;;7080:25:1;;;7136:2;7121:18;;7114:34;;;;42399:38:0::1;::::0;7053:18:1;42399:38:0::1;;;;;;;42448:9;:22:::0;42229:257::o;7150:261::-;7247:4;5489:10;7305:38;7321:4;5489:10;7336:6;7305:15;:38::i;:::-;7354:27;7364:4;7370:2;7374:6;7354:9;:27::i;:::-;-1:-1:-1;7399:4:0;;7150:261;-1:-1:-1;;;;7150:261:0:o;46748:323::-;11389:13;:11;:13::i;:::-;-1:-1:-1;;;;;46878:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;:49;::::1;;:43;::::0;;::::1;:49;;::::0;46870:69:::1;;;;-1:-1:-1::0;;;46870:69:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;46950:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;;;;:50;;-1:-1:-1;;46950:50:0::1;::::0;::::1;;::::0;;::::1;::::0;;;47016:47;;1266:41:1;;;47016:47:0::1;::::0;1239:18:1;47016:47:0::1;;;;;;;;46748:323:::0;;:::o;48342:180::-;48470:15;;48432:82;;;-1:-1:-1;;;48432:82:0;;;;48405:7;;-1:-1:-1;;;;;48470:15:0;;48432:80;;:82;;;;;;;;;;;;;;48470:15;48432:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48425:89;;48342:180;:::o;49113:169::-;11389:13;:11;:13::i;:::-;49228:15:::1;::::0;49190:84:::1;::::0;-1:-1:-1;;;49190:84:0;;-1:-1:-1;;;;;3015:32:1;;;49190:84:0::1;::::0;::::1;2997:51:1::0;49228:15:0;;::::1;::::0;49190:75:::1;::::0;2970:18:1;;49190:84:0::1;2851:203:1::0;7417:238:0;7505:4;5489:10;7561:64;5489:10;7577:7;7614:10;7586:25;5489:10;7577:7;7586:9;:25::i;:::-;:38;;;;:::i;:::-;7561:8;:64::i;50784:142::-;50859:15;;50821:97;;-1:-1:-1;;;50821:97:0;;50899:10;50821:97;;;7997:51:1;50859:15:0;8064:18:1;;;8057:50;-1:-1:-1;;;;;50859:15:0;;;;50821:69;;7970:18:1;;50821:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;50784:142::o;43247:239::-;11389:13;:11;:13::i;:::-;43337:15:::1;::::0;-1:-1:-1;;;;;43337:23:0;;::::1;:15:::0;::::1;:23:::0;43329:43:::1;;;;-1:-1:-1::0;;;43329:43:0::1;;;;;;;:::i;:::-;43411:15;::::0;43388:47:::1;::::0;-1:-1:-1;;;;;43388:47:0;;::::1;::::0;43411:15:::1;::::0;43388:47:::1;::::0;43411:15:::1;::::0;43388:47:::1;43446:15;:24:::0;;-1:-1:-1;;;;;;43446:24:0::1;-1:-1:-1::0;;;;;43446:24:0;;;::::1;::::0;;;::::1;::::0;;43247:239::o;51111:181::-;51242:15;;51204:80;;;-1:-1:-1;;;51204:80:0;;;;51177:7;;-1:-1:-1;;;;;51242:15:0;;51204:78;;:80;;;;;;;;;;;;;;51242:15;51204:80;;;;;;;;;;;;;;48895:210;49062:15;;49024:73;;-1:-1:-1;;;49024:73:0;;-1:-1:-1;;;;;3015:32:1;;;49024:73:0;;;2997:51:1;48992:7:0;;49062:15;;49024:64;;2970:18:1;;49024:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;39820:1020::-;11389:13;:11;:13::i;:::-;39954:18:::1;:40:::0;;-1:-1:-1;;;;;;39954:40:0::1;-1:-1:-1::0;;;;;39954:40:0;;::::1;::::0;;;::::1;::::0;;;40008:10:::1;::::0;:25;;::::1;:10:::0;::::1;:25;40005:354;;40049:41;40066:4;40073:11:::0;-1:-1:-1;;40049:8:0::1;:41::i;:::-;40148:15;::::0;40110:91:::1;::::0;-1:-1:-1;;;40110:91:0;;-1:-1:-1;;;;;3015:32:1;;;40110:91:0::1;::::0;::::1;2997:51:1::0;40148:15:0;;::::1;::::0;40110:78:::1;::::0;2970:18:1;;40110:91:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40105:203;;40258:15;::::0;40220:88:::1;::::0;-1:-1:-1;;;40220:88:0;;-1:-1:-1;;;;;3015:32:1;;;40220:88:0::1;::::0;::::1;2997:51:1::0;40258:15:0;;::::1;::::0;40220:75:::1;::::0;2970:18:1;;40220:88:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;40105:203;40323:10;:24:::0;;-1:-1:-1;;;;;;40323:24:0::1;-1:-1:-1::0;;;;;40323:24:0;::::1;;::::0;;40005:354:::1;40418:10;;;;;;;;;-1:-1:-1::0;;;;;40418:10:0::1;-1:-1:-1::0;;;;;40399:38:0::1;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40494:18;::::0;40381:142:::1;::::0;-1:-1:-1;;;40381:142:0;;40474:4:::1;40381:142;::::0;::::1;8836:34:1::0;-1:-1:-1;;;;;40494:18:0;;::::1;8886::1::0;;;8879:43;40381:70:0;::::1;::::0;::::1;::::0;8771:18:1;;40381:142:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40370:8;:153:::0;;-1:-1:-1;;;;;;40370:153:0::1;-1:-1:-1::0;;;;;40370:153:0;;::::1;;::::0;;40578:10:::1;::::0;40559:37:::1;::::0;;-1:-1:-1;;;40559:37:0;;;;40578:10;;;::::1;::::0;40559:35:::1;::::0;:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;40578:10;40559:37:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40537:18;::::0;-1:-1:-1;;;;;40537:18:0;;::::1;:59:::0;::::1;;40534:157;;40663:10;::::0;40631:18:::1;::::0;40624:55:::1;::::0;-1:-1:-1;;;;;40631:18:0;;::::1;::::0;40663:10:::1;-1:-1:-1::0;;40624:38:0::1;:55::i;:::-;40734:10;::::0;40746:8:::1;::::0;40756:18:::1;::::0;40716:59:::1;::::0;;-1:-1:-1;;;;;40734:10:0;;::::1;9173:34:1::0;;40746:8:0;;::::1;9238:2:1::0;9223:18;;9216:43;40756:18:0;::::1;9275::1::0;;;9268:43;40716:59:0;;::::1;::::0;;;;9123:2:1;40716:59:0;;::::1;40815:8;::::0;40786:44:::1;::::0;-1:-1:-1;;;;;40815:8:0::1;::::0;40786:28:::1;:44::i;:::-;39820:1020:::0;;:::o;50326:450::-;50546:15;;50508:67;;-1:-1:-1;;;;;;50508:67:0;;;;;1844:25:1;;;50406:18:0;;;;;;-1:-1:-1;;;;;50546:15:0;;50508:62;;1817:18:1;;50508:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50591:177;;;9864:25:1;;;9920:2;9905:18;;9898:34;;;9948:18;;;9941:34;;;10006:2;9991:18;;9984:34;;;50391:184:0;;-1:-1:-1;50391:184:0;;-1:-1:-1;50391:184:0;-1:-1:-1;50747:10:0;;50709:5;;50591:177;;9851:3:1;9836:19;50591:177:0;;;;;;;50380:396;;;50326:450;:::o;11659:103::-;11389:13;:11;:13::i;:::-;11724:30:::1;11751:1;11724:18;:30::i;:::-;11659:103::o:0;45325:620::-;11389:13;:11;:13::i;:::-;45504:16:::1;::::0;45524:6:::1;::::0;45504:16:::1;-1:-1:-1::0;;;45504:16:0;::::1;::::0;::::1;::::0;45472:31:::1;::::0;-1:-1:-1;;;45487:16:0;;::::1;;45472:14:::0;:31:::1;:::i;:::-;:48;;;;:::i;:::-;:58;;;;45450:123;;;;-1:-1:-1::0;;;45450:123:0::1;;;;;;;:::i;:::-;45636:15;::::0;45655:6:::1;::::0;45636:15:::1;-1:-1:-1::0;;;45636:15:0;::::1;::::0;::::1;::::0;45606:29:::1;::::0;-1:-1:-1;;;45620:15:0;;::::1;;45606:13:::0;:29:::1;:::i;:::-;:45;;;;:::i;:::-;:55;;;;45584:119;;;;-1:-1:-1::0;;;45584:119:0::1;;;;;;;:::i;:::-;45807:13;::::0;45719:130:::1;::::0;;45807:13:::1;11159:15:1::0;;;11141:34;;11211:15;;;11206:2;11191:18;;11184:43;45807:13:0;;::::1;11243:18:1::0;;;11236:43;45836:12:0;;;::::1;::::0;;::::1;11310:2:1::0;11295:18;;11288:43;45719:130:0;::::1;::::0;;;;11101:3:1;45719:130:0;;::::1;45860:13;:30:::0;;::::1;45901:28:::0;;::::1;::::0;::::1;-1:-1:-1::0;;45901:28:0;;;45860:30;;;::::1;45901:28:::0;;;;;;;::::1;::::0;;45325:620::o;47077:466::-;11389:13;:11;:13::i;:::-;47189:6:::1;47177:8;:18;;:40;;;;;47211:6;47199:8;:18;;47177:40;47155:142;;;::::0;-1:-1:-1;;;47155:142:0;;11544:2:1;47155:142:0::1;::::0;::::1;11526:21:1::0;11583:2;11563:18;;;11556:30;11622:34;11602:18;;;11595:62;-1:-1:-1;;;11673:18:1;;;11666:50;11733:19;;47155:142:0::1;11342:416:1::0;47155:142:0::1;47342:16;;47330:8;:28:::0;47308:122:::1;;;::::0;-1:-1:-1;;;47308:122:0;;11965:2:1;47308:122:0::1;::::0;::::1;11947:21:1::0;12004:2;11984:18;;;11977:30;12043:34;12023:18;;;12016:62;-1:-1:-1;;;12094:18:1;;;12087:42;12146:19;;47308:122:0::1;11763:408:1::0;47308:122:0::1;47480:16;::::0;47446:51:::1;::::0;47470:8;;47446:51:::1;::::0;;;::::1;47508:16;:27:::0;47077:466::o;41100:1121::-;11389:13;:11;:13::i;:::-;41215:15:::1;::::0;-1:-1:-1;;;;;41215:15:0;;::::1;41201:29:::0;;::::1;::::0;41179:124:::1;;;::::0;-1:-1:-1;;;41179:124:0;;12378:2:1;41179:124:0::1;::::0;::::1;12360:21:1::0;12417:2;12397:18;;;12390:30;12456:34;12436:18;;;12429:62;-1:-1:-1;;;12507:18:1;;;12500:43;12560:19;;41179:124:0::1;12176:409:1::0;41179:124:0::1;41316:26;41352:10;41316:47;;41475:4;-1:-1:-1::0;;;;;41398:82:0::1;41436:18;-1:-1:-1::0;;;;;41398:63:0::1;;:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;41398:82:0::1;;41376:207;;;::::0;-1:-1:-1;;;41376:207:0;;12792:2:1;41376:207:0::1;::::0;::::1;12774:21:1::0;12831:2;12811:18;;;12804:30;12870:34;12850:18;;;12843:62;12941:34;12921:18;;;12914:62;-1:-1:-1;;;12992:19:1;;;12985:42;13044:19;;41376:207:0::1;12590:479:1::0;41376:207:0::1;41596:98;::::0;-1:-1:-1;;;41596:98:0;;-1:-1:-1;;;;;41596:78:0;::::1;:98;::::0;::::1;2997:51:1::0;;;41596:78:0;::::1;::::0;2970:18:1;;41596:98:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;41705:93:0::1;::::0;-1:-1:-1;;;41705:93:0;;41792:4:::1;41705:93;::::0;::::1;2997:51:1::0;-1:-1:-1;;;;;41705:78:0;::::1;::::0;-1:-1:-1;41705:78:0::1;::::0;-1:-1:-1;2970:18:1;;41705:93:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41847:18;-1:-1:-1::0;;;;;41809:78:0::1;;41888:7;11501:6:::0;;-1:-1:-1;;;;;11501:6:0;;11428:87;41888:7:::1;41809:87;::::0;-1:-1:-1;;;;;;41809:87:0::1;::::0;;;;;;-1:-1:-1;;;;;3015:32:1;;;41809:87:0::1;::::0;::::1;2997:51:1::0;2970:18;;41809:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;41986:10:0::1;::::0;41907:90:::1;::::0;-1:-1:-1;;;41907:90:0;;-1:-1:-1;;;;;41986:10:0;;::::1;41907:90;::::0;::::1;2997:51:1::0;41907:78:0;;::::1;::::0;-1:-1:-1;41907:78:0::1;::::0;-1:-1:-1;2970:18:1;;41907:90:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;42087:8:0::1;::::0;42008:88:::1;::::0;-1:-1:-1;;;42008:88:0;;-1:-1:-1;;;;;42087:8:0;;::::1;42008:88;::::0;::::1;2997:51:1::0;42008:78:0;;::::1;::::0;-1:-1:-1;42008:78:0::1;::::0;-1:-1:-1;2970:18:1;;42008:88:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;42148:15:0::1;::::0;42114:50:::1;::::0;-1:-1:-1;;;;;42148:15:0;;::::1;::::0;-1:-1:-1;42114:50:0;;::::1;::::0;-1:-1:-1;42114:50:0::1;::::0;42148:15:::1;::::0;42114:50:::1;42177:15;:36:::0;;-1:-1:-1;;;;;;42177:36:0::1;-1:-1:-1::0;;;;;42177:36:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;41100:1121:0:o;60497:207::-;11389:13;:11;:13::i;:::-;-1:-1:-1;;;;;60572:22:0;::::1;60580:4;60572:22:::0;60564:46:::1;;;::::0;-1:-1:-1;;;60564:46:0;;13276:2:1;60564:46:0::1;::::0;::::1;13258:21:1::0;13315:2;13295:18;;;13288:30;-1:-1:-1;;;13334:18:1;;;13327:41;13385:18;;60564:46:0::1;13074:335:1::0;60564:46:0::1;60621:75;60648:7;11501:6:::0;;-1:-1:-1;;;;;11501:6:0;;11428:87;60648:7:::1;60657:38;::::0;-1:-1:-1;;;60657:38:0;;60689:4:::1;60657:38;::::0;::::1;2997:51:1::0;-1:-1:-1;;;;;60657:23:0;::::1;::::0;::::1;::::0;2970:18:1;;60657:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;60621:26:0;::::1;::::0;:75;:26:::1;:75::i;6131:104::-:0;6187:13;6220:7;6213:14;;;;;:::i;45955:304::-;11389:13;:11;:13::i;:::-;46099:8:::1;::::0;-1:-1:-1;;;;;46099:8:0;;::::1;46091:16:::0;;::::1;::::0;46069:128:::1;;;::::0;-1:-1:-1;;;46069:128:0;;13616:2:1;46069:128:0::1;::::0;::::1;13598:21:1::0;13655:2;13635:18;;;13628:30;13694:34;13674:18;;;13667:62;13765:32;13745:18;;;13738:60;13815:19;;46069:128:0::1;13414:426:1::0;46069:128:0::1;46210:41;46239:4;46245:5;46210:28;:41::i;47722:148::-:0;47834:15;;47796:66;;;-1:-1:-1;;;47796:66:0;;;;47769:7;;-1:-1:-1;;;;;47834:15:0;;47796:64;;:66;;;;;;;;;;;;;;47834:15;47796:66;;;;;;;;;;;;;;7661:436;7754:4;5489:10;7754:4;7837:25;5489:10;7854:7;7837:9;:25::i;:::-;7810:52;;7901:15;7881:16;:35;;7873:85;;;;-1:-1:-1;;;7873:85:0;;14047:2:1;7873:85:0;;;14029:21:1;14086:2;14066:18;;;14059:30;14125:34;14105:18;;;14098:62;-1:-1:-1;;;14176:18:1;;;14169:35;14221:19;;7873:85:0;13845:401:1;7873:85:0;7994:60;8003:5;8010:7;8038:15;8019:16;:34;7994:8;:60::i;48664:223::-;48831:15;;48793:86;;-1:-1:-1;;;48793:86:0;;-1:-1:-1;;;;;3015:32:1;;;48793:86:0;;;2997:51:1;48761:7:0;;48831:15;;48793:77;;2970:18:1;;48793:86:0;2851:203:1;6587:193:0;6666:4;5489:10;6722:28;5489:10;6739:2;6743:6;6722:9;:28::i;42494:379::-;11389:13;:11;:13::i;:::-;42661:5:::1;42645:13;6428:12:::0;;;6340:108;42645:13:::1;:21;;;;:::i;:::-;42622;:44;;42614:101;;;::::0;-1:-1:-1;;;42614:101:0;;14453:2:1;42614:101:0::1;::::0;::::1;14435:21:1::0;14492:2;14472:18;;;14465:30;14531:34;14511:18;;;14504:62;-1:-1:-1;;;14582:18:1;;;14575:42;14634:19;;42614:101:0::1;14251:408:1::0;42614:101:0::1;42781:20;::::0;42731:71:::1;::::0;;7080:25:1;;;7136:2;7121:18;;7114:34;;;;42731:71:0::1;::::0;7053:18:1;42731:71:0::1;;;;;;;42813:20;:44:::0;42494:379::o;49520:390::-;49866:15;;49828:74;;-1:-1:-1;;;49828:74:0;;-1:-1:-1;;;;;3015:32:1;;;49828:74:0;;;2997:51:1;49634:7:0;;;;;;;;;;;;;;;;49866:15;;;49828:65;;2970:18:1;;49828:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49821:81;;;;;;;;;;;;;;;;49520:390;;;;;;;;;:::o;40848:244::-;11389:13;:11;:13::i;:::-;40942:1:::1;40933:6;:10;40925:45;;;::::0;-1:-1:-1;;;40925:45:0;;15552:2:1;40925:45:0::1;::::0;::::1;15534:21:1::0;15591:2;15571:18;;;15564:30;-1:-1:-1;;;15610:18:1;;;15603:52;15672:18;;40925:45:0::1;15350:346:1::0;40925:45:0::1;41019:18;::::0;40986:52:::1;::::0;;7080:25:1;;;7136:2;7121:18;;7114:34;;;;40986:52:0::1;::::0;7053:18:1;40986:52:0::1;;;;;;;41049:18;:27:::0;40848:244::o;48110:224::-;48276:15;;48238:88;;;-1:-1:-1;;;48238:88:0;;;;48206:7;;-1:-1:-1;;;;;48276:15:0;;48238:86;;:88;;;;;;;;;;;;;;48276:15;48238:88;;;;;;;;;;;;;;42884:255;11389:13;:11;:13::i;:::-;-1:-1:-1;;;;;42977:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;42969:60:::1;;;;-1:-1:-1::0;;;42969:60:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;43040:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;43040:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;43097:34;;1266:41:1;;;43097:34:0::1;::::0;1239:18:1;43097:34:0::1;1126:187:1::0;49290:222:0;49455:15;;49417:87;;-1:-1:-1;;;49417:87:0;;-1:-1:-1;;;;;3015:32:1;;;49417:87:0;;;2997:51:1;49388:4:0;;49455:15;;49417:78;;2970:18:1;;49417:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;43977:659::-;11389:13;:11;:13::i;:::-;44168::::1;::::0;44185:6:::1;::::0;44168:13:::1;::::0;;::::1;::::0;44133:34:::1;::::0;-1:-1:-1;;;44151:16:0;;::::1;;44133:17:::0;:34:::1;:::i;:::-;:48;;;;:::i;:::-;:58;;;;44111:123;;;;-1:-1:-1::0;;;44111:123:0::1;;;;;;;:::i;:::-;44300:12;::::0;44316:6:::1;::::0;44300:12:::1;::::0;;::::1;::::0;::::1;::::0;44267:32:::1;::::0;-1:-1:-1;;;44284:15:0;;::::1;;44267:16:::0;:32:::1;:::i;:::-;:45;;;;:::i;:::-;:55;;;;44245:119;;;;-1:-1:-1::0;;;44245:119:0::1;;;;;;;:::i;:::-;44476:16;::::0;44380:153:::1;::::0;;44476:16:::1;11159:15:1::0;;;11141:34;;11211:15;;;11206:2;11191:18;;11184:43;-1:-1:-1;;;44476:16:0;::::1;::::0;::::1;11243:18:1::0;;;11236:43;-1:-1:-1;;;44507:15:0;;::::1;::::0;;::::1;11310:2:1::0;11295:18;;11288:43;44380:153:0;::::1;::::0;;;;11101:3:1;44380:153:0;;::::1;44544:16;:36:::0;;-1:-1:-1;;44591:34:0;-1:-1:-1;;;44544:36:0::1;::::0;;::::1;;-1:-1:-1::0;;44591:34:0;;-1:-1:-1;;;44591:34:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;43977:659::o;6786:151::-;-1:-1:-1;;;;;6902:18:0;;;6875:7;6902:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6786:151::o;60307:184::-;11389:13;:11;:13::i;:::-;60361:12:::1;60385:7;11501:6:::0;;-1:-1:-1;;;;;11501:6:0;;11428:87;60385:7:::1;-1:-1:-1::0;;;;;60377:21:0::1;60406;60377:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;60360:72;;;60451:7;60443:40;;;::::0;-1:-1:-1;;;60443:40:0;;16113:2:1;60443:40:0::1;::::0;::::1;16095:21:1::0;16152:2;16132:18;;;16125:30;-1:-1:-1;;;16171:18:1;;;16164:50;16231:18;;60443:40:0::1;15911:344:1::0;50934:169:0;51055:15;;51017:78;;;-1:-1:-1;;;51017:78:0;;;;50990:7;;-1:-1:-1;;;;;51055:15:0;;51017:76;;:78;;;;;;;;;;;;;;51055:15;51017:78;;;;;;;;;;;;;;47551:163;11389:13;:11;:13::i;:::-;47663:15:::1;::::0;47625:81:::1;::::0;-1:-1:-1;;;47625:81:0;;::::1;::::0;::::1;1844:25:1::0;;;-1:-1:-1;;;;;47663:15:0;;::::1;::::0;47625:70:::1;::::0;1817:18:1;;47625:81:0::1;1698:177:1::0;44644:673:0;11389:13;:11;:13::i;:::-;44835::::1;::::0;44852:6:::1;::::0;44835:13:::1;::::0;;::::1;::::0;44800:34:::1;::::0;-1:-1:-1;;;44818:16:0;;::::1;;44800:17:::0;:34:::1;:::i;:::-;:48;;;;:::i;:::-;:58;;;;44778:123;;;;-1:-1:-1::0;;;44778:123:0::1;;;;;;;:::i;:::-;44967:12;::::0;44983:6:::1;::::0;44967:12:::1;::::0;;::::1;::::0;::::1;::::0;44934:32:::1;::::0;-1:-1:-1;;;44951:15:0;;::::1;;44934:16:::0;:32:::1;:::i;:::-;:45;;;;:::i;:::-;:55;;;;44912:119;;;;-1:-1:-1::0;;;44912:119:0::1;;;;;;;:::i;:::-;45150:16;::::0;45054:153:::1;::::0;;45150:16:::1;11159:15:1::0;;;11141:34;;11211:15;;;11206:2;11191:18;;11184:43;-1:-1:-1;;;45150:16:0;::::1;::::0;::::1;11243:18:1::0;;;11236:43;-1:-1:-1;;;45181:15:0;;::::1;::::0;;::::1;11310:2:1::0;11295:18;;11288:43;45054:153:0;::::1;::::0;;;;11101:3:1;45054:153:0;;::::1;45220:16;:36:::0;;-1:-1:-1;;;;45267:34:0;-1:-1:-1;;;45220:36:0::1;::::0;;::::1;;-1:-1:-1::0;;;;45267:34:0;;-1:-1:-1;;;45267:34:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;44644:673::o;43494:475::-;11389:13;:11;:13::i;:::-;43625:11:::1;::::0;-1:-1:-1;;;;;43602:34:0;;::::1;43625:11:::0;::::1;43602:34;::::0;::::1;::::0;:79:::1;;-1:-1:-1::0;43663:18:0::1;::::0;-1:-1:-1;;;;;43640:41:0;;::::1;43663:18:::0;::::1;43640:41;;43602:79;43599:145;;;-1:-1:-1::0;43727:4:0::1;43599:145;43762:20;::::0;-1:-1:-1;;;;;43762:43:0;;::::1;:20:::0;::::1;:43:::0;43754:63:::1;;;;-1:-1:-1::0;;;43754:63:0::1;;;;;;;:::i;:::-;43884:20;::::0;43833:72:::1;::::0;-1:-1:-1;;;;;43884:20:0;;::::1;::::0;43833:72;::::1;::::0;::::1;::::0;43884:20:::1;::::0;43833:72:::1;43916:20;:44:::0;;-1:-1:-1;;;;;;43916:44:0::1;-1:-1:-1::0;;;;;43916:44:0;;;::::1;::::0;;;::::1;::::0;;43494:475::o;49918:400::-;50269:15;;50231:79;;-1:-1:-1;;;50231:79:0;;;;;1844:25:1;;;50037:7:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;50269:15:0;;;;50231:72;;1817:18:1;;50231:79:0;1698:177:1;11768:201:0;11389:13;:11;:13::i;:::-;-1:-1:-1;;;;;11857:22:0;::::1;11849:73;;;::::0;-1:-1:-1;;;11849:73:0;;16462:2:1;11849:73:0::1;::::0;::::1;16444:21:1::0;16501:2;16481:18;;;16474:30;16540:34;16520:18;;;16513:62;-1:-1:-1;;;16591:18:1;;;16584:36;16637:19;;11849:73:0::1;16260:402:1::0;11849:73:0::1;11933:28;11952:8;11933:18;:28::i;39676:101::-:0;11389:13;:11;:13::i;:::-;39744:14:::1;:25:::0;;;::::1;;-1:-1:-1::0;;;39744:25:0::1;-1:-1:-1::0;;;;39744:25:0;;::::1;::::0;;;::::1;::::0;;39676:101::o;10150:346::-;-1:-1:-1;;;;;10252:19:0;;10244:68;;;;-1:-1:-1;;;10244:68:0;;16869:2:1;10244:68:0;;;16851:21:1;16908:2;16888:18;;;16881:30;16947:34;16927:18;;;16920:62;-1:-1:-1;;;16998:18:1;;;16991:34;17042:19;;10244:68:0;16667:400:1;10244:68:0;-1:-1:-1;;;;;10331:21:0;;10323:68;;;;-1:-1:-1;;;10323:68:0;;17274:2:1;10323:68:0;;;17256:21:1;17313:2;17293:18;;;17286:30;17352:34;17332:18;;;17325:62;-1:-1:-1;;;17403:18:1;;;17396:32;17445:19;;10323:68:0;17072:398:1;10323:68:0;-1:-1:-1;;;;;10404:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10456:32;;1844:25:1;;;10456:32:0;;1817:18:1;10456:32:0;;;;;;;10150:346;;;:::o;11521:132::-;11501:6;;-1:-1:-1;;;;;11501:6:0;5489:10;11585:23;11577:68;;;;-1:-1:-1;;;11577:68:0;;17677:2:1;11577:68:0;;;17659:21:1;;;17696:18;;;17689:30;17755:34;17735:18;;;17728:62;17807:18;;11577:68:0;17475:356:1;10502:419:0;10603:24;10630:25;10640:5;10647:7;10630:9;:25::i;:::-;10603:52;;-1:-1:-1;;10670:16:0;:37;10666:248;;10752:6;10732:16;:26;;10724:68;;;;-1:-1:-1;;;10724:68:0;;18038:2:1;10724:68:0;;;18020:21:1;18077:2;18057:18;;;18050:30;18116:31;18096:18;;;18089:59;18165:18;;10724:68:0;17836:353:1;10724:68:0;10836:51;10845:5;10852:7;10880:6;10861:16;:25;10836:8;:51::i;:::-;10592:329;10502:419;;;:::o;51300:3754::-;-1:-1:-1;;;;;51432:18:0;;51424:68;;;;-1:-1:-1;;;51424:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;51511:16:0;;51503:64;;;;-1:-1:-1;;;51503:64:0;;;;;;;:::i;:::-;51593:1;51586:6;:8;51578:48;;;;-1:-1:-1;;;51578:48:0;;19206:2:1;51578:48:0;;;19188:21:1;19245:2;19225:18;;;19218:30;19284:29;19264:18;;;19257:57;19331:18;;51578:48:0;19004:351:1;51578:48:0;51641:14;;-1:-1:-1;;;51641:14:0;;;;51637:107;;;51684:10;;51672:60;;-1:-1:-1;;;51672:60:0;;-1:-1:-1;;;;;19618:15:1;;;51672:60:0;;;19600:34:1;19670:15;;;19650:18;;;19643:43;19702:18;;;19695:34;;;51684:10:0;;;;51672:42;;19535:18:1;;51672:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51637:107;51803:4;51754:28;6555:18;;;;;;;;;;;51861;;51837:42;;;;;;;51910:33;;-1:-1:-1;51935:8:0;;-1:-1:-1;;;51935:8:0;;;;51934:9;51910:33;:82;;;;-1:-1:-1;;;;;;51961:31:0;;;;;;:25;:31;;;;;;;;51960:32;51910:82;:114;;;;-1:-1:-1;11501:6:0;;-1:-1:-1;;;;;52009:15:0;;;11501:6;;52009:15;;51910:114;:144;;;;-1:-1:-1;11501:6:0;;-1:-1:-1;;;;;52041:13:0;;;11501:6;;52041:13;;51910:144;51892:650;;;52081:8;:15;;-1:-1:-1;;;;52081:15:0;-1:-1:-1;;;52081:15:0;;;52114:19;;:21;52111:80;;52154:37;52171:19;;52154:16;:37::i;:::-;52209:19;;:21;52206:78;;52249:35;52264:19;;52249:14;:35::i;:::-;52340:4;52301:18;6555;;;;;;;;;;;52364:12;;52361:66;;52395:32;52416:10;52395:20;:32::i;:::-;-1:-1:-1;52462:1:0;52442:19;:21;;;52478:19;:21;52514:8;:16;;-1:-1:-1;;;;52514:16:0;;;51892:650;52570:8;;-1:-1:-1;;;;;52595:25:0;;52554:12;52595:25;;;:19;:25;;;;;;52570:8;-1:-1:-1;;;52570:8:0;;;;;52569:9;;52595:25;;:52;;-1:-1:-1;;;;;;52624:23:0;;;;;;:19;:23;;;;;;;;52595:52;52591:100;;;-1:-1:-1;52674:5:0;52591:100;52701:21;52733;52765:18;52798:7;52794:887;;;-1:-1:-1;;;;;52826:31:0;;;;;;:25;:31;;;;;;;;52822:504;;;52898:12;;52911:7;;52891:19;;52898:12;;;;;52891:6;:19;:::i;:::-;:27;;;;:::i;:::-;52960:15;;52878:40;;-1:-1:-1;52976:7:0;;52953:22;;-1:-1:-1;;;52960:15:0;;;;52953:6;:22;:::i;:::-;:30;;;;:::i;:::-;53025:15;;52937:46;;-1:-1:-1;53041:7:0;;53018:22;;-1:-1:-1;;;53025:15:0;;;;53018:6;:22;:::i;:::-;:30;;;;:::i;:::-;53002:46;;52822:504;;;-1:-1:-1;;;;;53087:29:0;;;;;;:25;:29;;;;;;;;53083:243;;;53157:13;;53171:7;;53150:20;;53157:13;;53150:6;:20;:::i;:::-;:28;;;;:::i;:::-;53220:16;;53137:41;;-1:-1:-1;53237:7:0;;53213:23;;-1:-1:-1;;;53220:16:0;;;;53213:6;:23;:::i;:::-;:31;;;;:::i;:::-;53286:16;;53197:47;;-1:-1:-1;53303:7:0;;53279:23;;-1:-1:-1;;;53286:16:0;;;;53279:6;:23;:::i;:::-;:31;;;;:::i;:::-;53263:47;;53083:243;53382:13;53362:19;;:33;;;;:::i;:::-;53340:19;:55;53432:19;;:33;;53452:13;;53432:33;:::i;:::-;53410:19;:55;53480:17;53523:13;53498:24;53509:13;53498:10;:24;:::i;:::-;:38;;;;:::i;:::-;53480:56;-1:-1:-1;53558:16:0;53480:56;53558:6;:16;:::i;:::-;53551:23;-1:-1:-1;53592:11:0;;53589:80;;53622:47;53638:4;53652;53659:9;53622:15;:47::i;:::-;52807:874;52794:887;53701:33;53717:4;53723:2;53727:6;53701:15;:33::i;:::-;53802:15;;-1:-1:-1;;;;;53802:15:0;53764:65;53838:4;53845:15;53838:4;-1:-1:-1;;;;;6555:18:0;6528:7;6555:18;;;;;;;;;;;;6454:127;53845:15;53764:97;;-1:-1:-1;;;;;;53764:97:0;;;;;;;-1:-1:-1;;;;;20254:32:1;;;53764:97:0;;;20236:51:1;20303:18;;;20296:34;20209:18;;53764:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53747:135;53934:15;;-1:-1:-1;;;;;53934:15:0;53896:65;53970:2;53975:13;53970:2;-1:-1:-1;;;;;6555:18:0;6528:7;6555:18;;;;;;;;;;;;6454:127;53975:13;53896:93;;-1:-1:-1;;;;;;53896:93:0;;;;;;;-1:-1:-1;;;;;20254:32:1;;;53896:93:0;;;20236:51:1;20303:18;;;20296:34;20209:18;;53896:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53892:109;54018:8;;-1:-1:-1;;;54018:8:0;;;;54013:1034;;-1:-1:-1;;;;;54048:40:0;;;;;;:34;:40;;;;;;;;54043:215;;54149:20;;54139:6;:30;;54109:133;;;;-1:-1:-1;;;54109:133:0;;20543:2:1;54109:133:0;;;20525:21:1;20582:2;20562:18;;;20555:30;20621:31;20601:18;;;20594:59;20670:18;;54109:133:0;20341:353:1;54109:133:0;-1:-1:-1;;;;;54277:38:0;;;;;;:34;:38;;;;;;;;54272:211;;54383:9;;-1:-1:-1;;;;;6555:18:0;;6528:7;6555:18;;;;;;;;;;;54366:26;;54336:131;;;;-1:-1:-1;;;54336:131:0;;20901:2:1;54336:131:0;;;20883:21:1;20940:2;20920:18;;;20913:30;20979:33;20959:18;;;20952:61;21030:18;;54336:131:0;20699:355:1;54336:131:0;54511:16;;54586:15;;54548:67;;-1:-1:-1;;;;;;54548:67:0;;;;;1844:25:1;;;-1:-1:-1;;;;;54586:15:0;;;;54548:62;;1817:18:1;;54548:67:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;54548:67:0;;;;;;;;-1:-1:-1;;54548:67:0;;;;;;;;;;;;:::i;:::-;;;54544:492;;;54779:232;;;9864:25:1;;;9920:2;9905:18;;9898:34;;;9948:18;;;9941:34;;;10006:2;9991:18;;9984:34;;;54982:10:0;;54929:4;;54779:232;;9851:3:1;9836:19;54779:232:0;;;;;;;54616:411;;;54544:492;54028:1019;54013:1034;51413:3641;;;;;;51300:3754;;;:::o;12987:582::-;13317:10;;;13316:62;;-1:-1:-1;13333:39:0;;-1:-1:-1;;;13333:39:0;;13357:4;13333:39;;;8836:34:1;-1:-1:-1;;;;;8906:15:1;;;8886:18;;;8879:43;13333:15:0;;;;;8771:18:1;;13333:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;13316:62;13294:166;;;;-1:-1:-1;;;13294:166:0;;21261:2:1;13294:166:0;;;21243:21:1;21300:2;21280:18;;;21273:30;21339:34;21319:18;;;21312:62;-1:-1:-1;;;21390:18:1;;;21383:52;21452:19;;13294:166:0;21059:418:1;13294:166:0;13498:62;;-1:-1:-1;;;;;20254:32:1;;13498:62:0;;;20236:51:1;20303:18;;;20296:34;;;13471:90:0;;13491:5;;-1:-1:-1;;;13521:22:0;20209:18:1;;13498:62:0;;;;-1:-1:-1;;13498:62:0;;;;;;;;;;;;;;-1:-1:-1;;;;;13498:62:0;-1:-1:-1;;;;;;13498:62:0;;;;;;;;;;13471:19;:90::i;:::-;12987:582;;;:::o;46267:473::-;-1:-1:-1;;;;;46358:31:0;;;;;;:25;:31;;;;;;;;:39;;;;;;-1:-1:-1;;46358:39:0;;;;;;;;46408:34;:40;;;;;;;:48;;;;;;;;;;;46392:5;;46471:94;;-1:-1:-1;46519:15:0;;46481:84;;-1:-1:-1;;;46481:84:0;;-1:-1:-1;;;;;3015:32:1;;;46481:84:0;;;2997:51:1;46519:15:0;;;;46481:78;;2970:18:1;;46481:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46480:85;46471:94;46467:208;;;46620:15;;46582:81;;-1:-1:-1;;;46582:81:0;;-1:-1:-1;;;;;3015:32:1;;;46582:81:0;;;2997:51:1;46620:15:0;;;;46582:75;;2970:18:1;;46582:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46467:208;46720:4;-1:-1:-1;;;;;46692:40:0;;46726:5;46692:40;;;;1291:14:1;1284:22;1266:41;;1254:2;1239:18;;1126:187;11975:191:0;12068:6;;;-1:-1:-1;;;;;12085:17:0;;;-1:-1:-1;;;;;;12085:17:0;;;;;;;12118:40;;12068:6;;;12085:17;12068:6;;12118:40;;12049:16;;12118:40;12038:128;11975:191;:::o;12593:177::-;12703:58;;-1:-1:-1;;;;;20254:32:1;;12703:58:0;;;20236:51:1;20303:18;;;20296:34;;;12676:86:0;;12696:5;;-1:-1:-1;;;12726:23:0;20209:18:1;;12703:58:0;20046:290:1;55062:1396:0;55148:11;;55126:20;;-1:-1:-1;;;;;55148:11:0;;;55126:20;;:33;55123:1318;;55211:11;;55204:76;;-1:-1:-1;;;55204:76:0;;55260:4;55204:76;;;2997:51:1;55175:26:0;;-1:-1:-1;;;;;55211:11:0;;55204:29;;2970:18:1;;55204:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;55175:105;;55295:25;55313:6;55295:17;:25::i;:::-;55364:11;;55357:44;;-1:-1:-1;;;55357:44:0;;55395:4;55357:44;;;2997:51:1;55335:18:0;;55422;;-1:-1:-1;;;;;55364:11:0;;;;55357:29;;2970:18:1;;55357:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;55356:99;;;;:::i;:::-;55503:15;;55477:11;;55335:120;;-1:-1:-1;55470:61:0;;-1:-1:-1;;;;;55477:11:0;;;;55503:15;55335:120;55470:32;:61::i;55123:1318::-;55573:18;;55551:20;;-1:-1:-1;;;;;55573:18:0;;;55551:20;;:40;55548:893;;55671:10;;55652:37;;;-1:-1:-1;;;55652:37:0;;;;55607:22;;-1:-1:-1;;;;;55671:10:0;;55652:35;;:37;;;;;;;;;;;;;;55671:10;55652:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;55632:18;;-1:-1:-1;;;;;55632:18:0;;;:57;;;:153;;55741:18;;55734:51;;-1:-1:-1;;;55734:51:0;;55779:4;55734:51;;;2997::1;-1:-1:-1;;;;;55741:18:0;;;;55734:36;;2970:18:1;;55734:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;55632:153;;;55692:21;55632:153;55607:178;;55800:30;55823:6;55800:22;:30::i;:::-;55905:10;;55886:37;;;-1:-1:-1;;;55886:37:0;;;;55845:18;;-1:-1:-1;;;;;55905:10:0;;55886:35;;:37;;;;;;;;;;;;;;55905:10;55886:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;55866:18;;-1:-1:-1;;;;;55866:18:0;;;:57;;;:182;;55989:18;;55982:51;;-1:-1:-1;;;55982:51:0;;56027:4;55982:51;;;2997::1;56034:14:0;;-1:-1:-1;;;;;55989:18:0;;55982:36;;2970:18:1;;55982:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;;;;:::i;:::-;55866:182;;;55926:36;55948:14;55926:21;:36;:::i;:::-;55845:203;;56105:10;;;;;;;;;-1:-1:-1;;;;;56105:10:0;-1:-1:-1;;;;;56086:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;56066:18;;-1:-1:-1;;;;;56066:57:0;;;:18;;:57;56063:286;;56168:15;;56160:52;;56144:12;;-1:-1:-1;;;;;56168:15:0;;56197:10;;56144:12;56160:52;56144:12;56160:52;56197:10;56168:15;56160:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;12987:582:0:o;56063:286::-;56305:15;;56272:18;;56265:68;;-1:-1:-1;;;;;56272:18:0;;;;56305:15;56322:10;56265:39;:68::i;55548:893::-;56405:15;;56380:49;;56398:4;;-1:-1:-1;;;;;56405:15:0;56422:6;56380:9;:49::i;56466:684::-;56525:12;56540:10;56548:1;56540:6;:10;:::i;:::-;56525:25;-1:-1:-1;56561:17:0;56581:13;56525:25;56581:6;:13;:::i;:::-;56561:33;;56607:22;56671:10;;;;;;;;;-1:-1:-1;;;;;56671:10:0;-1:-1:-1;;;;;56652:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;56632:18;;-1:-1:-1;;;;;56632:18:0;;;:57;;;:149;;56737:18;;56730:51;;-1:-1:-1;;;56730:51:0;;56775:4;56730:51;;;2997::1;-1:-1:-1;;;;;56737:18:0;;;;56730:36;;2970:18:1;;56730:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;56632:149;;;56692:21;56632:149;56607:174;;56794:28;56817:4;56794:22;:28::i;:::-;56894:10;;56875:37;;;-1:-1:-1;;;56875:37:0;;;;56834:18;;-1:-1:-1;;;;;56894:10:0;;56875:35;;:37;;;;;;;;;;;;;;56894:10;56875:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;56855:18;;-1:-1:-1;;;;;56855:18:0;;;:57;;;:178;;56974:18;;56967:51;;-1:-1:-1;;;56967:51:0;;57012:4;56967:51;;;2997::1;57019:14:0;;-1:-1:-1;;;;;56974:18:0;;56967:36;;2970:18:1;;56967:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;;;;:::i;:::-;56855:178;;;56915:36;56937:14;56915:21;:36;:::i;:::-;56834:199;;57046:35;57059:9;57070:10;57046:12;:35::i;:::-;57099:43;;;21963:25:1;;;22019:2;22004:18;;21997:34;;;22047:18;;;22040:34;;;57099:43:0;;21951:2:1;21936:18;57099:43:0;;;;;;;56514:636;;;;56466:684;:::o;59872:429::-;59937:25;59955:6;59937:17;:25::i;:::-;60000:11;;59993:44;;-1:-1:-1;;;59993:44:0;;60031:4;59993:44;;;2997:51:1;59973:17:0;;-1:-1:-1;;;;;60000:11:0;;59993:29;;2970:18:1;;59993:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;60095:15;;60055:11;;59973:64;;-1:-1:-1;60048:97:0;;-1:-1:-1;;;;;60055:11:0;;;;60095:15;59973:64;60048:32;:97::i;:::-;60194:15;;60156:89;;-1:-1:-1;;;60156:89:0;;;;;1844:25:1;;;-1:-1:-1;;;;;60194:15:0;;;;60156:78;;1817:18:1;;60156:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;60261:32:0;;;7080:25:1;;;7136:2;7121:18;;7114:34;;;60261:32:0;;-1:-1:-1;7053:18:1;;-1:-1:-1;60261:32:0;;;;;;;59926:375;59872:429;:::o;8103:806::-;-1:-1:-1;;;;;8200:18:0;;8192:68;;;;-1:-1:-1;;;8192:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8279:16:0;;8271:64;;;;-1:-1:-1;;;8271:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8421:15:0;;8399:19;8421:15;;;;;;;;;;;8455:21;;;;8447:72;;;;-1:-1:-1;;;8447:72:0;;22287:2:1;8447:72:0;;;22269:21:1;22326:2;22306:18;;;22299:30;22365:34;22345:18;;;22338:62;-1:-1:-1;;;22416:18:1;;;22409:36;22462:19;;8447:72:0;22085:402:1;8447:72:0;-1:-1:-1;;;;;8555:15:0;;;:9;:15;;;;;;;;;;;8573:20;;;8555:38;;8773:13;;;;;;;;;;:23;;;;;;8825:26;;1844:25:1;;;8773:13:0;;8825:26;;1817:18:1;8825:26:0;;;;;;;8864:37;12987:582;15198:649;15622:23;15648:69;15676:4;15648:69;;;;;;;;;;;;;;;;;15656:5;-1:-1:-1;;;;;15648:27:0;;;:69;;;;;:::i;:::-;15622:95;;15736:10;:17;15757:1;15736:22;:56;;;;15773:10;15762:30;;;;;;;;;;;;:::i;:::-;15728:111;;;;-1:-1:-1;;;15728:111:0;;22694:2:1;15728:111:0;;;22676:21:1;22733:2;22713:18;;;22706:30;22772:34;22752:18;;;22745:62;-1:-1:-1;;;22823:18:1;;;22816:40;22873:19;;15728:111:0;22492:406:1;58029:982:0;58119:11;;58099:18;;-1:-1:-1;;;;;58099:18:0;;;58119:11;;58099:31;58096:898;;58170:16;;;58184:1;58170:16;;;;;;;;;58146:21;;58170:16;;;;;;;;;;-1:-1:-1;58170:16:0;58146:40;;58219:4;58201;58206:1;58201:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;58201:23:0;;;:7;;;;;;;;;:23;58249:18;;58239:7;;58249:18;;;58239:4;;58249:18;;58239:7;;;;;;:::i;:::-;-1:-1:-1;;;;;58239:28:0;;;:7;;;;;;;;;:28;58292:11;;58282:7;;58292:11;;;58282:4;;58287:1;;58282:7;;;;;;:::i;:::-;-1:-1:-1;;;;;58282:21:0;;;:7;;;;;;;;;:21;58337:10;;58318:238;;-1:-1:-1;;;58318:238:0;;58337:10;;;58318:84;;:238;;58421:11;;58337:10;;58471:4;;58502;;58526:15;;58318:238;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;58131:437;50821:97;50784:142::o;58096:898::-;58611:16;;;58625:1;58611:16;;;;;;;;58587:21;;58611:16;;;;;;;;;;-1:-1:-1;58611:16:0;58587:40;;58660:4;58642;58647:1;58642:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;58642:23:0;;;:7;;;;;;;;;:23;58690:11;;58680:7;;58690:11;;;58680:4;;58690:11;;58680:7;;;;;;:::i;:::-;-1:-1:-1;;;;;58680:21:0;;;:7;;;;;;;;;:21;58716:15;;58804:10;;58716:254;;-1:-1:-1;;;58716:254:0;;:15;;;;:69;;:254;;58804:10;;;;58833:11;;58716:15;;58917:4;;58940:15;;58716:254;;;:::i;57158:863::-;57254:16;;;57268:1;57254:16;;;;;;;;57230:21;;57254:16;;;;;;;;;;-1:-1:-1;57254:16:0;57230:40;;57299:4;57281;57286:1;57281:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;57281:23:0;;;:7;;;;;;;;;:23;57325:18;;57315:7;;57325:18;;;57315:4;;57325:18;;57315:7;;;;;;:::i;:::-;-1:-1:-1;;;;;57315:28:0;;;:7;;;;;;;;;;:28;;;;57390:10;;57371:37;;;-1:-1:-1;;;57371:37:0;;;;57390:10;;;;;57371:35;;:37;;;;;57315:7;;57371:37;;;;;57390:10;57371:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;57360:48:0;:4;57365:1;57360:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;57360:48:0;;57356:658;;57443:10;;57424:269;;-1:-1:-1;;;57424:269:0;;-1:-1:-1;;;;;57443:10:0;;;;57424:81;;:269;;57524:11;;57443:10;;57608:4;;57639;;57663:15;;57424:269;;;:::i;57356:658::-;57724:15;;57816:10;;57724:278;;-1:-1:-1;;;57724:278:0;;-1:-1:-1;;;;;57724:15:0;;;;:69;;:278;;57816:10;;;57849:11;;57724:15;;57941:4;;57968:15;;57724:278;;;:::i;59019:845::-;59151:10;;;;;;;;;-1:-1:-1;;;;;59151:10:0;-1:-1:-1;;;;;59132:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;59110:18;;-1:-1:-1;;;;;59110:59:0;;;:18;;:59;59106:733;;59204:10;;59185:309;;-1:-1:-1;;;59185:309:0;;59282:4;59185:309;;;25148:34:1;25198:18;;;25191:34;;;59204:10:0;25241:18:1;;;25234:34;;;25284:18;;;25277:34;59438:6:0;25327:19:1;;;25320:44;59464:15:0;25380:19:1;;;25373:35;-1:-1:-1;;;;;59204:10:0;;;;59185:46;;59239:15;;25082:19:1;;59185:309:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;59106:733::-;59543:10;;59618:18;;59524:299;;-1:-1:-1;;;59524:299:0;;59594:4;59524:299;;;25816:34:1;-1:-1:-1;;;;;59618:18:0;;;25866::1;;;25859:43;25918:18;;;25911:34;;;25961:18;;;25954:34;;;59543:10:0;26004:19:1;;;25997:35;;;26048:19;;;26041:35;59767:6:0;26092:19:1;;;26085:44;59793:15:0;26145:19:1;;;26138:35;59543:10:0;;;59524:43;;25750:19:1;;59524:299:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;931:229::-;1068:12;1100:52;1122:6;1130:4;1136:1;1139:12;1100:21;:52::i;:::-;1093:59;931:229;-1:-1:-1;;;;931:229:0:o;1398:455::-;1568:12;1626:5;1601:21;:30;;1593:81;;;;-1:-1:-1;;;1593:81:0;;26386:2:1;1593:81:0;;;26368:21:1;26425:2;26405:18;;;26398:30;26464:34;26444:18;;;26437:62;-1:-1:-1;;;26515:18:1;;;26508:36;26561:19;;1593:81:0;26184:402:1;1593:81:0;1686:12;1700:23;1727:6;-1:-1:-1;;;;;1727:11:0;1746:5;1753:4;1727:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:73;;;;1776:69;1803:6;1811:7;1820:10;1832:12;1776:26;:69::i;:::-;1769:76;1398:455;-1:-1:-1;;;;;;;1398:455:0:o;2947:644::-;3132:12;3161:7;3157:427;;;3189:10;:17;3210:1;3189:22;3185:290;;-1:-1:-1;;;;;378:19:0;;;3399:60;;;;-1:-1:-1;;;3399:60:0;;27085:2:1;3399:60:0;;;27067:21:1;27124:2;27104:18;;;27097:30;27163:31;27143:18;;;27136:59;27212:18;;3399:60:0;26883:353:1;3399:60:0;-1:-1:-1;3496:10:0;3489:17;;3157:427;3539:33;3547:10;3559:12;4069:17;;:21;4065:388;;4301:10;4295:17;4358:15;4345:10;4341:2;4337:19;4330:44;4065:388;4428:12;4421:20;;-1:-1:-1;;;4421:20:0;;;;;;;;:::i;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1513:180::-;1572:6;1625:2;1613:9;1604:7;1600:23;1596:32;1593:52;;;1641:1;1638;1631:12;1593:52;-1:-1:-1;1664:23:1;;1513:180;-1:-1:-1;1513:180:1:o;1880:456::-;1957:6;1965;1973;2026:2;2014:9;2005:7;2001:23;1997:32;1994:52;;;2042:1;2039;2032:12;1994:52;2081:9;2068:23;2100:31;2125:5;2100:31;:::i;:::-;2150:5;-1:-1:-1;2207:2:1;2192:18;;2179:32;2220:33;2179:32;2220:33;:::i;:::-;1880:456;;2272:7;;-1:-1:-1;;;2326:2:1;2311:18;;;;2298:32;;1880:456::o;2341:118::-;2427:5;2420:13;2413:21;2406:5;2403:32;2393:60;;2449:1;2446;2439:12;2464:382;2529:6;2537;2590:2;2578:9;2569:7;2565:23;2561:32;2558:52;;;2606:1;2603;2596:12;2558:52;2645:9;2632:23;2664:31;2689:5;2664:31;:::i;:::-;2714:5;-1:-1:-1;2771:2:1;2756:18;;2743:32;2784:30;2743:32;2784:30;:::i;:::-;2833:7;2823:17;;;2464:382;;;;;:::o;3248:247::-;3307:6;3360:2;3348:9;3339:7;3335:23;3331:32;3328:52;;;3376:1;3373;3366:12;3328:52;3415:9;3402:23;3434:31;3459:5;3434:31;:::i;:::-;3484:5;3248:247;-1:-1:-1;;;3248:247:1:o;3760:388::-;3828:6;3836;3889:2;3877:9;3868:7;3864:23;3860:32;3857:52;;;3905:1;3902;3895:12;3857:52;3944:9;3931:23;3963:31;3988:5;3963:31;:::i;:::-;4013:5;-1:-1:-1;4070:2:1;4055:18;;4042:32;4083:33;4042:32;4083:33;:::i;4386:161::-;4453:20;;4513:8;4502:20;;4492:31;;4482:59;;4537:1;4534;4527:12;4482:59;4386:161;;;:::o;4552:256::-;4618:6;4626;4679:2;4667:9;4658:7;4654:23;4650:32;4647:52;;;4695:1;4692;4685:12;4647:52;4718:28;4736:9;4718:28;:::i;:::-;4708:38;;4765:37;4798:2;4787:9;4783:18;4765:37;:::i;:::-;4755:47;;4552:256;;;;;:::o;5519:241::-;5575:6;5628:2;5616:9;5607:7;5603:23;5599:32;5596:52;;;5644:1;5641;5634:12;5596:52;5683:9;5670:23;5702:28;5724:5;5702:28;:::i;5765:380::-;5844:1;5840:12;;;;5887;;;5908:61;;5962:4;5954:6;5950:17;5940:27;;5908:61;6015:2;6007:6;6004:14;5984:18;5981:38;5978:161;;6061:10;6056:3;6052:20;6049:1;6042:31;6096:4;6093:1;6086:15;6124:4;6121:1;6114:15;5978:161;;5765:380;;;:::o;6150:127::-;6211:10;6206:3;6202:20;6199:1;6192:31;6242:4;6239:1;6232:15;6266:4;6263:1;6256:15;6282:217;6322:1;6348;6338:132;;6392:10;6387:3;6383:20;6380:1;6373:31;6427:4;6424:1;6417:15;6455:4;6452:1;6445:15;6338:132;-1:-1:-1;6484:9:1;;6282:217::o;7159:330::-;7361:2;7343:21;;;7400:1;7380:18;;;7373:29;-1:-1:-1;;;7433:2:1;7418:18;;7411:37;7480:2;7465:18;;7159:330::o;7494:184::-;7564:6;7617:2;7605:9;7596:7;7592:23;7588:32;7585:52;;;7633:1;7630;7623:12;7585:52;-1:-1:-1;7656:16:1;;7494:184;-1:-1:-1;7494:184:1:o;7683:125::-;7748:9;;;7769:10;;;7766:36;;;7782:18;;:::i;8118:245::-;8185:6;8238:2;8226:9;8217:7;8213:23;8209:32;8206:52;;;8254:1;8251;8244:12;8206:52;8286:9;8280:16;8305:28;8327:5;8305:28;:::i;8368:251::-;8438:6;8491:2;8479:9;8470:7;8466:23;8462:32;8459:52;;;8507:1;8504;8497:12;8459:52;8539:9;8533:16;8558:31;8583:5;8558:31;:::i;9322:306::-;9410:6;9418;9426;9479:2;9467:9;9458:7;9454:23;9450:32;9447:52;;;9495:1;9492;9485:12;9447:52;9524:9;9518:16;9508:26;;9574:2;9563:9;9559:18;9553:25;9543:35;;9618:2;9607:9;9603:18;9597:25;9587:35;;9322:306;;;;;:::o;10029:170::-;10096:8;10124:10;;;10136;;;10120:27;;10159:11;;;10156:37;;;10173:18;;:::i;:::-;10156:37;10029:170;;;;:::o;10204:339::-;10406:2;10388:21;;;10445:2;10425:18;;;10418:30;-1:-1:-1;;;10479:2:1;10464:18;;10457:45;10534:2;10519:18;;10204:339::o;10548:338::-;10750:2;10732:21;;;10789:2;10769:18;;;10762:30;-1:-1:-1;;;10823:2:1;10808:18;;10801:44;10877:2;10862:18;;10548:338::o;14664:681::-;14795:6;14803;14811;14819;14827;14835;14843;14851;14904:3;14892:9;14883:7;14879:23;14875:33;14872:53;;;14921:1;14918;14911:12;14872:53;14953:9;14947:16;14972:31;14997:5;14972:31;:::i;:::-;15022:5;15012:15;;;15067:2;15056:9;15052:18;15046:25;15036:35;;15111:2;15100:9;15096:18;15090:25;15080:35;;15155:2;15144:9;15140:18;15134:25;15124:35;;15199:3;15188:9;15184:19;15178:26;15168:36;;15244:3;15233:9;15229:19;15223:26;15213:36;;15289:3;15278:9;15274:19;15268:26;15258:36;;15334:3;15323:9;15319:19;15313:26;15303:36;;14664:681;;;;;;;;;;;:::o;18194:401::-;18396:2;18378:21;;;18435:2;18415:18;;;18408:30;18474:34;18469:2;18454:18;;18447:62;-1:-1:-1;;;18540:2:1;18525:18;;18518:35;18585:3;18570:19;;18194:401::o;18600:399::-;18802:2;18784:21;;;18841:2;18821:18;;;18814:30;18880:34;18875:2;18860:18;;18853:62;-1:-1:-1;;;18946:2:1;18931:18;;18924:33;18989:3;18974:19;;18600:399::o;19740:168::-;19813:9;;;19844;;19861:15;;;19855:22;;19841:37;19831:71;;19882:18;;:::i;19913:128::-;19980:9;;;20001:11;;;19998:37;;;20015:18;;:::i;23035:127::-;23096:10;23091:3;23087:20;23084:1;23077:31;23127:4;23124:1;23117:15;23151:4;23148:1;23141:15;23167:461;23220:3;23258:5;23252:12;23285:6;23280:3;23273:19;23311:4;23340:2;23335:3;23331:12;23324:19;;23377:2;23370:5;23366:14;23398:1;23408:195;23422:6;23419:1;23416:13;23408:195;;;23487:13;;-1:-1:-1;;;;;23483:39:1;23471:52;;23543:12;;;;23578:15;;;;23519:1;23437:9;23408:195;;;-1:-1:-1;23619:3:1;;23167:461;-1:-1:-1;;;;;23167:461:1:o;23633:582::-;23932:6;23921:9;23914:25;23975:6;23970:2;23959:9;23955:18;23948:34;24018:3;24013:2;24002:9;23998:18;23991:31;23895:4;24039:57;24091:3;24080:9;24076:19;24068:6;24039:57;:::i;:::-;-1:-1:-1;;;;;24132:32:1;;;;24127:2;24112:18;;24105:60;-1:-1:-1;24196:3:1;24181:19;24174:35;24031:65;23633:582;-1:-1:-1;;;23633:582:1:o;24220:::-;24548:1;24544;24539:3;24535:11;24531:19;24523:6;24519:32;24508:9;24501:51;24588:6;24583:2;24572:9;24568:18;24561:34;24631:6;24626:2;24615:9;24611:18;24604:34;24674:3;24669:2;24658:9;24654:18;24647:31;24482:4;24695:57;24747:3;24736:9;24732:19;24724:6;24695:57;:::i;:::-;24687:65;;24789:6;24783:3;24772:9;24768:19;24761:35;24220:582;;;;;;;;:::o;26591:287::-;26720:3;26758:6;26752:13;26774:66;26833:6;26828:3;26821:4;26813:6;26809:17;26774:66;:::i;:::-;26856:16;;;;;26591:287;-1:-1:-1;;26591:287:1:o
Swarm Source
ipfs://1809c771636edbf78a140981dd48d0afe04c55f7fa6c1831117d053de1e670f7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.