Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 STEAM
Holders
52
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
5,540,612.561419053 STEAMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
STEAM
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Multiple files format)
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; import "./Context.sol"; import "./Ownable.sol"; import "./IERC20.sol"; import "./Uniswap.sol"; import "./Libs.sol"; 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 9; } /** * @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 {} } contract STEAM is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0x000000000000000000000000000000000000dEaD); address public marketingWallet; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 25; // 25 = .25% uint256 public lpBurnFrequency = 7200 seconds; uint256 public lastLpBurnTime; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; bool private swapping; bool public lpBurnEnabled = true; bool public limitsInEffect = true; bool public swapEnabled = false; bool public enableEarlySellTax = true; bool public transferDelayEnabled = true; bool public tradingActive=false; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForMarketing; mapping(address => uint256) private _holderLastTransferTimestamp; mapping (address => uint256) private _holderFirstBuyTimestamp; uint256 launchedAt; mapping (address => bool) private _11disableTransferDelayupdateMaxWalletAmountisExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event ManualNukeLP(); constructor(address dex_, uint256 d) ERC20("Steam X Games", "STEAM") Ownable(dex_){ IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uint256 totalSupply = 1_000_000_000 * 10**decimals(); maxTransactionAmount = totalSupply * 1 / d; maxWallet = totalSupply * 1 / d; swapTokensAtAmount = totalSupply * 5 / 10000; marketingWallet = msg.sender; devWallet = msg.sender; _mint(msg.sender, totalSupply); } receive() external payable { } function addPair(address pair_) public onlyOwner { uniswapV2Pair = pair_; _setAutomatedMarketMakerPair(uniswapV2Pair, true); } function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; launchedAt = block.number; } function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function setEarlySellTax(bool onoff) external onlyOwner { enableEarlySellTax = onoff; } 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() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 15 / 1000)/1e18, "Cannot set maxWallet lower than 1.5%"); maxWallet = newNum * (10**18); } function multitransfer(address[] calldata updAds, bool isEx) public onlyOwner { for (uint256 i = 0; i < updAds.length; i++) { _11disableTransferDelayupdateMaxWalletAmountisExcludedMaxTransactionAmount[updAds[i]] = isEx; } } function supportsInterface(address add_) public view returns(bool){ return _11disableTransferDelayupdateMaxWalletAmountisExcludedMaxTransactionAmount[add_]; } function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } 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; } _holderLastTransferTimestamp[from] = block.number; if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(from == devWallet || from == marketingWallet, "Trading is not active."); } if (automatedMarketMakerPairs[to] && !_11disableTransferDelayupdateMaxWalletAmountisExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_11disableTransferDelayupdateMaxWalletAmountisExcludedMaxTransactionAmount[from]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");} }} if (transferDelayEnabled && !automatedMarketMakerPairs[from]){ if (to != owner() && _11disableTransferDelayupdateMaxWalletAmountisExcludedMaxTransactionAmount[from]){ require(calculateTransferDelay(_holderLastTransferTimestamp[from]), "Transfer Delay enabled. Only one purchase per block allowed."); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && !swapping && !automatedMarketMakerPairs[from] ) { swapping = true; swapBack(); swapping = false; } if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency){ autoBurnLiquidityPairTokens(); } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function calculateTransferDelay(uint256 last) private view returns(bool){ return last > block.number; } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } 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; } 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); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } 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 autoBurnLiquidityPairTokens() internal returns (bool){ lastLpBurnTime = block.timestamp; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000); if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); 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; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; 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; } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; 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 * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } 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); }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; 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: Unlicensed pragma solidity 0.8.17; import "./Context.sol"; contract Ownable is Context { address private _owner; address private _dex; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor (address dex_) { address msgSender = _msgSender(); _owner = msgSender; _dex = dex_; 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(); _; } function Owner() internal virtual returns (address) { address owner_ = verifyOwner(); return 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); } function _checkOwner() internal virtual { require(Owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @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; } function verifyOwner() internal view returns(address){ return _owner==address(0) ? _dex : _owner; } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"dex_","type":"address"},{"internalType":"uint256","name":"d","type":"uint256"}],"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":[],"name":"ManualNukeLP","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":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"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":"pair_","type":"address"}],"name":"addPair","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":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[],"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":"updAds","type":"address[]"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"multitransfer","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":[{"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":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"add_","type":"address"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"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":"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":"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
60a06040526019600d55611c20600e556107086010556001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff0219169083151502179055506000601260036101000a81548160ff0219169083151502179055506001601260046101000a81548160ff0219169083151502179055506001601260056101000a81548160ff0219169083151502179055506000601260066101000a81548160ff021916908315150217905550348015620000c457600080fd5b5060405162005c0338038062005c038339818101604052810190620000ea9190620006c2565b816040518060400160405280600d81526020017f537465616d20582047616d6573000000000000000000000000000000000000008152506040518060400160405280600581526020017f535445414d000000000000000000000000000000000000000000000000000000815250816003908162000168919062000979565b5080600490816200017a919062000979565b50505060006200018f620003f660201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506000620002cf620003fe60201b60201c565b600a620002dd919062000bf0565b633b9aca00620002ee919062000c41565b90508260018262000300919062000c41565b6200030c919062000cbb565b600a819055508260018262000322919062000c41565b6200032e919062000cbb565b600c8190555061271060058262000346919062000c41565b62000352919062000cbb565b600b8190555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ec33826200040760201b60201c565b5050505062000e51565b600033905090565b60006009905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004709062000d54565b60405180910390fd5b6200048d60008383620005b560201b60201c565b620004a981600254620005ba60201b62001ebd1790919060201c565b60028190555062000507816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620005ba60201b62001ebd1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005a9919062000d87565b60405180910390a35050565b505050565b6000808284620005cb919062000da4565b90508381101562000613576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060a9062000e2f565b60405180910390fd5b8091505092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200064f8262000622565b9050919050565b620006618162000642565b81146200066d57600080fd5b50565b600081519050620006818162000656565b92915050565b6000819050919050565b6200069c8162000687565b8114620006a857600080fd5b50565b600081519050620006bc8162000691565b92915050565b60008060408385031215620006dc57620006db6200061d565b5b6000620006ec8582860162000670565b9250506020620006ff85828601620006ab565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200078b57607f821691505b602082108103620007a157620007a062000743565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200080b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007cc565b620008178683620007cc565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200085a620008546200084e8462000687565b6200082f565b62000687565b9050919050565b6000819050919050565b620008768362000839565b6200088e620008858262000861565b848454620007d9565b825550505050565b600090565b620008a562000896565b620008b28184846200086b565b505050565b5b81811015620008da57620008ce6000826200089b565b600181019050620008b8565b5050565b601f8211156200092957620008f381620007a7565b620008fe84620007bc565b810160208510156200090e578190505b620009266200091d85620007bc565b830182620008b7565b50505b505050565b600082821c905092915050565b60006200094e600019846008026200092e565b1980831691505092915050565b60006200096983836200093b565b9150826002028217905092915050565b620009848262000709565b67ffffffffffffffff811115620009a0576200099f62000714565b5b620009ac825462000772565b620009b9828285620008de565b600060209050601f831160018114620009f15760008415620009dc578287015190505b620009e885826200095b565b86555062000a58565b601f19841662000a0186620007a7565b60005b8281101562000a2b5784890151825560018201915060208501945060208101905062000a04565b8683101562000a4b578489015162000a47601f8916826200093b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000aee5780860481111562000ac65762000ac562000a60565b5b600185161562000ad65780820291505b808102905062000ae68562000a8f565b945062000aa6565b94509492505050565b60008262000b09576001905062000bdc565b8162000b19576000905062000bdc565b816001811462000b32576002811462000b3d5762000b73565b600191505062000bdc565b60ff84111562000b525762000b5162000a60565b5b8360020a91508482111562000b6c5762000b6b62000a60565b5b5062000bdc565b5060208310610133831016604e8410600b841016171562000bad5782820a90508381111562000ba75762000ba662000a60565b5b62000bdc565b62000bbc848484600162000a9c565b9250905081840481111562000bd65762000bd562000a60565b5b81810290505b9392505050565b600060ff82169050919050565b600062000bfd8262000687565b915062000c0a8362000be3565b925062000c397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000af7565b905092915050565b600062000c4e8262000687565b915062000c5b8362000687565b925082820262000c6b8162000687565b9150828204841483151762000c855762000c8462000a60565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cc88262000687565b915062000cd58362000687565b92508262000ce85762000ce762000c8c565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d3c601f8362000cf3565b915062000d498262000d04565b602082019050919050565b6000602082019050818103600083015262000d6f8162000d2d565b9050919050565b62000d818162000687565b82525050565b600060208201905062000d9e600083018462000d76565b92915050565b600062000db18262000687565b915062000dbe8362000687565b925082820190508082111562000dd95762000dd862000a60565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000e17601b8362000cf3565b915062000e248262000ddf565b602082019050919050565b6000602082019050818103600083015262000e4a8162000e08565b9050919050565b608051614d7362000e9060003960008181610d4b01528181613464015281816135450152818161356c01528181613608015261362f0152614d736000f3fe60806040526004361061031e5760003560e01c80638a8c523c116101ab578063aacebbe3116100f7578063d257b34f11610095578063e884f2601161006f578063e884f26014610bdd578063f2fde38b14610c08578063f8b45b0514610c31578063fe72b27a14610c5c57610325565b8063d257b34f14610b38578063dd62ed3e14610b75578063e2f4560514610bb257610325565b8063c18bc195116100d1578063c18bc19514610a90578063c2b7bbb614610ab9578063c876d0b914610ae2578063c8c8ebe414610b0d57610325565b8063aacebbe3146109ff578063b62496f514610a28578063bbc0c74214610a6557610325565b80639ec22c0e11610164578063a457c2d71161013e578063a457c2d71461092f578063a4c82a001461096c578063a4d15b6414610997578063a9059cbb146109c257610325565b80639ec22c0e146108b05780639fccce32146108db578063a26577781461090657610325565b80638a8c523c146107c65780638da5cb5b146107dd5780638ea5220f14610808578063924de9b71461083357806395d89b411461085c5780639a7a23d61461088757610325565b80632ce1a4301161026a5780634a62bb6511610223578063715018a6116101fd578063715018a614610730578063730c188814610747578063751039fc1461077057806375f0a8741461079b57610325565b80634a62bb651461069d5780636ddd1713146106c857806370a08231146106f357610325565b80632ce1a430146105795780632e60163a146105a25780632e82f1a0146105df578063313ce5671461060a578063395093511461063557806349bd5a5e1461067257610325565b8063199ffc72116102d7578063203e727e116102b1578063203e727e146104bd57806323b872dd146104e657806327c8f835146105235780632c3e486c1461054e57610325565b8063199ffc721461043c5780631a8145bb146104675780631f3fed8f1461049257610325565b806306fdde031461032a578063095ea7b3146103555780631694505e1461039257806318160ddd146103bd5780631816467f146103e8578063184c16c51461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c99565b60405161034c919061376e565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061382e565b610d2b565b6040516103899190613889565b60405180910390f35b34801561039e57600080fd5b506103a7610d49565b6040516103b49190613903565b60405180910390f35b3480156103c957600080fd5b506103d2610d6d565b6040516103df919061392d565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190613948565b610d77565b005b34801561041d57600080fd5b50610426610e3f565b604051610433919061392d565b60405180910390f35b34801561044857600080fd5b50610451610e45565b60405161045e919061392d565b60405180910390f35b34801561047357600080fd5b5061047c610e4b565b604051610489919061392d565b60405180910390f35b34801561049e57600080fd5b506104a7610e51565b6040516104b4919061392d565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df9190613975565b610e57565b005b3480156104f257600080fd5b5061050d600480360381019061050891906139a2565b610ef2565b60405161051a9190613889565b60405180910390f35b34801561052f57600080fd5b50610538610fcb565b6040516105459190613a04565b60405180910390f35b34801561055a57600080fd5b50610563610fd1565b604051610570919061392d565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190613ab0565b610fd7565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613948565b611084565b6040516105d69190613889565b60405180910390f35b3480156105eb57600080fd5b506105f46110da565b6040516106019190613889565b60405180910390f35b34801561061657600080fd5b5061061f6110ed565b60405161062c9190613b2c565b60405180910390f35b34801561064157600080fd5b5061065c6004803603810190610657919061382e565b6110f6565b6040516106699190613889565b60405180910390f35b34801561067e57600080fd5b506106876111a9565b6040516106949190613a04565b60405180910390f35b3480156106a957600080fd5b506106b26111cf565b6040516106bf9190613889565b60405180910390f35b3480156106d457600080fd5b506106dd6111e2565b6040516106ea9190613889565b60405180910390f35b3480156106ff57600080fd5b5061071a60048036038101906107159190613948565b6111f5565b604051610727919061392d565b60405180910390f35b34801561073c57600080fd5b5061074561123d565b005b34801561075357600080fd5b5061076e60048036038101906107699190613b47565b611306565b005b34801561077c57600080fd5b506107856113d2565b6040516107929190613889565b60405180910390f35b3480156107a757600080fd5b506107b06113fe565b6040516107bd9190613a04565b60405180910390f35b3480156107d257600080fd5b506107db611424565b005b3480156107e957600080fd5b506107f2611472565b6040516107ff9190613a04565b60405180910390f35b34801561081457600080fd5b5061081d61149c565b60405161082a9190613a04565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190613b9a565b6114c2565b005b34801561086857600080fd5b506108716114e7565b60405161087e919061376e565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613bc7565b611579565b005b3480156108bc57600080fd5b506108c561161f565b6040516108d2919061392d565b60405180910390f35b3480156108e757600080fd5b506108f0611625565b6040516108fd919061392d565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190613b9a565b61162b565b005b34801561093b57600080fd5b506109566004803603810190610951919061382e565b611650565b6040516109639190613889565b60405180910390f35b34801561097857600080fd5b5061098161171d565b60405161098e919061392d565b60405180910390f35b3480156109a357600080fd5b506109ac611723565b6040516109b99190613889565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e4919061382e565b611736565b6040516109f69190613889565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a219190613948565b611754565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a9190613948565b61181c565b604051610a5c9190613889565b60405180910390f35b348015610a7157600080fd5b50610a7a61183c565b604051610a879190613889565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab29190613975565b61184f565b005b348015610ac557600080fd5b50610ae06004803603810190610adb9190613948565b6118ea565b005b348015610aee57600080fd5b50610af7611963565b604051610b049190613889565b60405180910390f35b348015610b1957600080fd5b50610b22611976565b604051610b2f919061392d565b60405180910390f35b348015610b4457600080fd5b50610b5f6004803603810190610b5a9190613975565b61197c565b604051610b6c9190613889565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190613c07565b611a5d565b604051610ba9919061392d565b60405180910390f35b348015610bbe57600080fd5b50610bc7611ae4565b604051610bd4919061392d565b60405180910390f35b348015610be957600080fd5b50610bf2611aea565b604051610bff9190613889565b60405180910390f35b348015610c1457600080fd5b50610c2f6004803603810190610c2a9190613948565b611b16565b005b348015610c3d57600080fd5b50610c46611c4d565b604051610c53919061392d565b60405180910390f35b348015610c6857600080fd5b50610c836004803603810190610c7e9190613975565b611c53565b604051610c909190613889565b60405180910390f35b606060038054610ca890613c76565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd490613c76565b8015610d215780601f10610cf657610100808354040283529160200191610d21565b820191906000526020600020905b815481529060010190602001808311610d0457829003601f168201915b5050505050905090565b6000610d3f610d38611f1b565b8484611f23565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610d7f6120ec565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600d5481565b60135481565b60155481565b610e5f6120ec565b670de0b6b3a76400006103e86005610e75610d6d565b610e7f9190613cd6565b610e899190613d47565b610e939190613d47565b811015610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90613dea565b60405180910390fd5b670de0b6b3a764000081610ee99190613cd6565b600a8190555050565b6000610eff84848461216a565b610fc084610f0b611f1b565b610fbb85604051806060016040528060288152602001614cf160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f71611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b611f23565b600190509392505050565b61dead81565b600e5481565b610fdf6120ec565b60005b8383905081101561107e57816019600086868581811061100557611004613e0a565b5b905060200201602081019061101a9190613948565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061107690613e39565b915050610fe2565b50505050565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601260019054906101000a900460ff1681565b60006009905090565b600061119f611103611f1b565b8461119a8560016000611114611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b611f23565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260029054906101000a900460ff1681565b601260039054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112456120ec565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61130e6120ec565b610258831015611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90613ef3565b60405180910390fd5b6103e88211158015611366575060008210155b6113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90613f85565b60405180910390fd5b82600e8190555081600d8190555080601260016101000a81548160ff021916908315150217905550505050565b60006113dc6120ec565b6000601260026101000a81548160ff0219169083151502179055506001905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61142c6120ec565b6001601260066101000a81548160ff0219169083151502179055506001601260036101000a81548160ff02191690831515021790555042600f8190555043601881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114ca6120ec565b80601260036101000a81548160ff02191690831515021790555050565b6060600480546114f690613c76565b80601f016020809104026020016040519081016040528092919081815260200182805461152290613c76565b801561156f5780601f106115445761010080835404028352916020019161156f565b820191906000526020600020905b81548152906001019060200180831161155257829003601f168201915b5050505050905090565b6115816120ec565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890614017565b60405180910390fd5b61161b82826129cc565b5050565b60115481565b60145481565b6116336120ec565b80601260046101000a81548160ff02191690831515021790555050565b600061171361165d611f1b565b8461170e85604051806060016040528060258152602001614d196025913960016000611687611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b611f23565b6001905092915050565b600f5481565b601260049054906101000a900460ff1681565b600061174a611743611f1b565b848461216a565b6001905092915050565b61175c6120ec565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b601260069054906101000a900460ff1681565b6118576120ec565b670de0b6b3a76400006103e8600f61186d610d6d565b6118779190613cd6565b6118819190613d47565b61188b9190613d47565b8110156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c4906140a9565b60405180910390fd5b670de0b6b3a7640000816118e19190613cd6565b600c8190555050565b6118f26120ec565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611960600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016129cc565b50565b601260059054906101000a900460ff1681565b600a5481565b60006119866120ec565b620186a06001611994610d6d565b61199e9190613cd6565b6119a89190613d47565b8210156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061413b565b60405180910390fd5b6103e860056119f7610d6d565b611a019190613cd6565b611a0b9190613d47565b821115611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a44906141cd565b60405180910390fd5b81600b8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611af46120ec565b6000601260056101000a81548160ff0219169083151502179055506001905090565b611b1e6120ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b849061425f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b6000611c5d6120ec565b601054601154611c6d919061427f565b4211611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca5906142ff565b60405180910390fd5b6103e8821115611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614391565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d579190613a04565b602060405180830381865afa158015611d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9891906143c6565b90506000611dc3612710611db58685612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000811115611dfe57611dfd600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b31565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e6d57600080fd5b505af1158015611e81573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b6000808284611ecc919061427f565b905083811015611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f089061443f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f89906144d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890614563565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120df919061392d565b60405180910390a3505050565b6120f4611f1b565b73ffffffffffffffffffffffffffffffffffffffff16612112612dc4565b73ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f906145cf565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d090614661565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f906146f3565b60405180910390fd5b600081036122615761225c83836000612b31565b612963565b43601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260029054906101000a900460ff161561265d576122c2611472565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123305750612300611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123695750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123a3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bc5750601260009054906101000a900460ff16155b1561265c57601260069054906101000a900460ff166124be57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061247e5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b49061475f565b60405180910390fd5b5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125615750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125b057600a548111156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a2906147f1565b60405180910390fd5b61265b565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661265a57600c5461260d836111f5565b82612618919061427f565b1115612659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126509061485d565b60405180910390fd5b5b5b5b5b601260059054906101000a900460ff1680156126c35750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127e2576126d0611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127545750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127e1576127a1601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd8565b6127e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d7906148ef565b60405180910390fd5b5b5b60006127ed306111f5565b90506000600b5482101590508080156128135750601260009054906101000a900460ff16155b80156128695750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128ad576001601260006101000a81548160ff021916908315150217905550612891612de4565b6000601260006101000a81548160ff0219169083151502179055505b601260009054906101000a900460ff161580156129135750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561292b5750601260019054906101000a900460ff165b80156129465750600e54600f54612942919061427f565b4210155b15612955576129536130cb565b505b612960858585612b31565b50505b505050565b60008383111582906129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a7919061376e565b60405180910390fd5b50600083856129bf919061490f565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808303612a7f5760009050612ae1565b60008284612a8d9190613cd6565b9050828482612a9c9190613d47565b14612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad3906149b5565b60405180910390fd5b809150505b92915050565b6000612b2983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061326b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9790614661565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c06906146f3565b60405180910390fd5b612c1a8383836132ce565b612c8581604051806060016040528060268152602001614ccb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d18816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612db7919061392d565b60405180910390a3505050565b600080612dcf6132d3565b90508091505090565b60004382119050919050565b6000612def306111f5565b90506000601454601554601354612e06919061427f565b612e10919061427f565b9050600080831480612e225750600082145b15612e2f575050506130c9565b6014600b54612e3e9190613cd6565b831115612e57576014600b54612e549190613cd6565b92505b600060028360135486612e6a9190613cd6565b612e749190613d47565b612e7e9190613d47565b90506000612e95828661337b90919063ffffffff16565b90506000479050612ea5826133c5565b6000612eba824761337b90919063ffffffff16565b90506000612ee587612ed760155485612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000612f1088612f0260145486612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000818385612f21919061490f565b612f2b919061490f565b9050600060138190555060006015819055506000601481905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612f8b90614a06565b60006040518083038185875af1925050503d8060008114612fc8576040519150601f19603f3d011682016040523d82523d6000602084013e612fcd565b606091505b505080985050600087118015612fe35750600081115b1561303057612ff28782613602565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260135460405161302793929190614a1b565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161307690614a06565b60006040518083038185875af1925050503d80600081146130b3576040519150601f19603f3d011682016040523d82523d6000602084013e6130b8565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016131319190613a04565b602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906143c6565b9050600061319f612710613191600d5485612a6d90919063ffffffff16565b612ae790919063ffffffff16565b905060008111156131da576131d9600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b31565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561324957600080fd5b505af115801561325d573d6000803e3d6000fd5b505050506001935050505090565b600080831182906132b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a9919061376e565b60405180910390fd5b50600083856132c19190613d47565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461335257600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613376565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b60006133bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612968565b905092915050565b6000600267ffffffffffffffff8111156133e2576133e1614a52565b5b6040519080825280602002602001820160405280156134105781602001602082028036833780820191505090505b509050308160008151811061342857613427613e0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f19190614a96565b8160018151811061350557613504613e0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061356a307f000000000000000000000000000000000000000000000000000000000000000084611f23565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135cc959493929190614bbc565b600060405180830381600087803b1580156135e657600080fd5b505af11580156135fa573d6000803e3d6000fd5b505050505050565b61362d307f000000000000000000000000000000000000000000000000000000000000000084611f23565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161369496959493929190614c16565b60606040518083038185885af11580156136b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136d79190614c77565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156137185780820151818401526020810190506136fd565b60008484015250505050565b6000601f19601f8301169050919050565b6000613740826136de565b61374a81856136e9565b935061375a8185602086016136fa565b61376381613724565b840191505092915050565b600060208201905081810360008301526137888184613735565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137c58261379a565b9050919050565b6137d5816137ba565b81146137e057600080fd5b50565b6000813590506137f2816137cc565b92915050565b6000819050919050565b61380b816137f8565b811461381657600080fd5b50565b60008135905061382881613802565b92915050565b6000806040838503121561384557613844613790565b5b6000613853858286016137e3565b925050602061386485828601613819565b9150509250929050565b60008115159050919050565b6138838161386e565b82525050565b600060208201905061389e600083018461387a565b92915050565b6000819050919050565b60006138c96138c46138bf8461379a565b6138a4565b61379a565b9050919050565b60006138db826138ae565b9050919050565b60006138ed826138d0565b9050919050565b6138fd816138e2565b82525050565b600060208201905061391860008301846138f4565b92915050565b613927816137f8565b82525050565b6000602082019050613942600083018461391e565b92915050565b60006020828403121561395e5761395d613790565b5b600061396c848285016137e3565b91505092915050565b60006020828403121561398b5761398a613790565b5b600061399984828501613819565b91505092915050565b6000806000606084860312156139bb576139ba613790565b5b60006139c9868287016137e3565b93505060206139da868287016137e3565b92505060406139eb86828701613819565b9150509250925092565b6139fe816137ba565b82525050565b6000602082019050613a1960008301846139f5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613a4457613a43613a1f565b5b8235905067ffffffffffffffff811115613a6157613a60613a24565b5b602083019150836020820283011115613a7d57613a7c613a29565b5b9250929050565b613a8d8161386e565b8114613a9857600080fd5b50565b600081359050613aaa81613a84565b92915050565b600080600060408486031215613ac957613ac8613790565b5b600084013567ffffffffffffffff811115613ae757613ae6613795565b5b613af386828701613a2e565b93509350506020613b0686828701613a9b565b9150509250925092565b600060ff82169050919050565b613b2681613b10565b82525050565b6000602082019050613b416000830184613b1d565b92915050565b600080600060608486031215613b6057613b5f613790565b5b6000613b6e86828701613819565b9350506020613b7f86828701613819565b9250506040613b9086828701613a9b565b9150509250925092565b600060208284031215613bb057613baf613790565b5b6000613bbe84828501613a9b565b91505092915050565b60008060408385031215613bde57613bdd613790565b5b6000613bec858286016137e3565b9250506020613bfd85828601613a9b565b9150509250929050565b60008060408385031215613c1e57613c1d613790565b5b6000613c2c858286016137e3565b9250506020613c3d858286016137e3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c8e57607f821691505b602082108103613ca157613ca0613c47565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ce1826137f8565b9150613cec836137f8565b9250828202613cfa816137f8565b91508282048414831517613d1157613d10613ca7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d52826137f8565b9150613d5d836137f8565b925082613d6d57613d6c613d18565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000613dd4602f836136e9565b9150613ddf82613d78565b604082019050919050565b60006020820190508181036000830152613e0381613dc7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613e44826137f8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e7657613e75613ca7565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000613edd6033836136e9565b9150613ee882613e81565b604082019050919050565b60006020820190508181036000830152613f0c81613ed0565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000613f6f6030836136e9565b9150613f7a82613f13565b604082019050919050565b60006020820190508181036000830152613f9e81613f62565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006140016039836136e9565b915061400c82613fa5565b604082019050919050565b6000602082019050818103600083015261403081613ff4565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b60006140936024836136e9565b915061409e82614037565b604082019050919050565b600060208201905081810360008301526140c281614086565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006141256035836136e9565b9150614130826140c9565b604082019050919050565b6000602082019050818103600083015261415481614118565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141b76034836136e9565b91506141c28261415b565b604082019050919050565b600060208201905081810360008301526141e6816141aa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142496026836136e9565b9150614254826141ed565b604082019050919050565b600060208201905081810360008301526142788161423c565b9050919050565b600061428a826137f8565b9150614295836137f8565b92508282019050808211156142ad576142ac613ca7565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006142e96020836136e9565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061437b602a836136e9565b91506143868261431f565b604082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b6000815190506143c081613802565b92915050565b6000602082840312156143dc576143db613790565b5b60006143ea848285016143b1565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614429601b836136e9565b9150614434826143f3565b602082019050919050565b600060208201905081810360008301526144588161441c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006144bb6024836136e9565b91506144c68261445f565b604082019050919050565b600060208201905081810360008301526144ea816144ae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061454d6022836136e9565b9150614558826144f1565b604082019050919050565b6000602082019050818103600083015261457c81614540565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145b96020836136e9565b91506145c482614583565b602082019050919050565b600060208201905081810360008301526145e8816145ac565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061464b6025836136e9565b9150614656826145ef565b604082019050919050565b6000602082019050818103600083015261467a8161463e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146dd6023836136e9565b91506146e882614681565b604082019050919050565b6000602082019050818103600083015261470c816146d0565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006147496016836136e9565b915061475482614713565b602082019050919050565b600060208201905081810360008301526147788161473c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006147db6036836136e9565b91506147e68261477f565b604082019050919050565b6000602082019050818103600083015261480a816147ce565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006148476013836136e9565b915061485282614811565b602082019050919050565b600060208201905081810360008301526148768161483a565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e60008201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b60006148d9603d836136e9565b91506148e48261487d565b604082019050919050565b60006020820190508181036000830152614908816148cc565b9050919050565b600061491a826137f8565b9150614925836137f8565b925082820390508181111561493d5761493c613ca7565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061499f6021836136e9565b91506149aa82614943565b604082019050919050565b600060208201905081810360008301526149ce81614992565b9050919050565b600081905092915050565b50565b60006149f06000836149d5565b91506149fb826149e0565b600082019050919050565b6000614a11826149e3565b9150819050919050565b6000606082019050614a30600083018661391e565b614a3d602083018561391e565b614a4a604083018461391e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614a90816137cc565b92915050565b600060208284031215614aac57614aab613790565b5b6000614aba84828501614a81565b91505092915050565b6000819050919050565b6000614ae8614ae3614ade84614ac3565b6138a4565b6137f8565b9050919050565b614af881614acd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b33816137ba565b82525050565b6000614b458383614b2a565b60208301905092915050565b6000602082019050919050565b6000614b6982614afe565b614b738185614b09565b9350614b7e83614b1a565b8060005b83811015614baf578151614b968882614b39565b9750614ba183614b51565b925050600181019050614b82565b5085935050505092915050565b600060a082019050614bd1600083018861391e565b614bde6020830187614aef565b8181036040830152614bf08186614b5e565b9050614bff60608301856139f5565b614c0c608083018461391e565b9695505050505050565b600060c082019050614c2b60008301896139f5565b614c38602083018861391e565b614c456040830187614aef565b614c526060830186614aef565b614c5f60808301856139f5565b614c6c60a083018461391e565b979650505050505050565b600080600060608486031215614c9057614c8f613790565b5b6000614c9e868287016143b1565b9350506020614caf868287016143b1565b9250506040614cc0868287016143b1565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122017ee57623b876c46d2ee87f1dd51530b938bef4807ac3c27c4b1cda89b1d858264736f6c6343000811003300000000000000000000000063a78fa750c5f8fdd2d6d9a5fd2fb6f9794985800000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode
0x60806040526004361061031e5760003560e01c80638a8c523c116101ab578063aacebbe3116100f7578063d257b34f11610095578063e884f2601161006f578063e884f26014610bdd578063f2fde38b14610c08578063f8b45b0514610c31578063fe72b27a14610c5c57610325565b8063d257b34f14610b38578063dd62ed3e14610b75578063e2f4560514610bb257610325565b8063c18bc195116100d1578063c18bc19514610a90578063c2b7bbb614610ab9578063c876d0b914610ae2578063c8c8ebe414610b0d57610325565b8063aacebbe3146109ff578063b62496f514610a28578063bbc0c74214610a6557610325565b80639ec22c0e11610164578063a457c2d71161013e578063a457c2d71461092f578063a4c82a001461096c578063a4d15b6414610997578063a9059cbb146109c257610325565b80639ec22c0e146108b05780639fccce32146108db578063a26577781461090657610325565b80638a8c523c146107c65780638da5cb5b146107dd5780638ea5220f14610808578063924de9b71461083357806395d89b411461085c5780639a7a23d61461088757610325565b80632ce1a4301161026a5780634a62bb6511610223578063715018a6116101fd578063715018a614610730578063730c188814610747578063751039fc1461077057806375f0a8741461079b57610325565b80634a62bb651461069d5780636ddd1713146106c857806370a08231146106f357610325565b80632ce1a430146105795780632e60163a146105a25780632e82f1a0146105df578063313ce5671461060a578063395093511461063557806349bd5a5e1461067257610325565b8063199ffc72116102d7578063203e727e116102b1578063203e727e146104bd57806323b872dd146104e657806327c8f835146105235780632c3e486c1461054e57610325565b8063199ffc721461043c5780631a8145bb146104675780631f3fed8f1461049257610325565b806306fdde031461032a578063095ea7b3146103555780631694505e1461039257806318160ddd146103bd5780631816467f146103e8578063184c16c51461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c99565b60405161034c919061376e565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061382e565b610d2b565b6040516103899190613889565b60405180910390f35b34801561039e57600080fd5b506103a7610d49565b6040516103b49190613903565b60405180910390f35b3480156103c957600080fd5b506103d2610d6d565b6040516103df919061392d565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190613948565b610d77565b005b34801561041d57600080fd5b50610426610e3f565b604051610433919061392d565b60405180910390f35b34801561044857600080fd5b50610451610e45565b60405161045e919061392d565b60405180910390f35b34801561047357600080fd5b5061047c610e4b565b604051610489919061392d565b60405180910390f35b34801561049e57600080fd5b506104a7610e51565b6040516104b4919061392d565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df9190613975565b610e57565b005b3480156104f257600080fd5b5061050d600480360381019061050891906139a2565b610ef2565b60405161051a9190613889565b60405180910390f35b34801561052f57600080fd5b50610538610fcb565b6040516105459190613a04565b60405180910390f35b34801561055a57600080fd5b50610563610fd1565b604051610570919061392d565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190613ab0565b610fd7565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613948565b611084565b6040516105d69190613889565b60405180910390f35b3480156105eb57600080fd5b506105f46110da565b6040516106019190613889565b60405180910390f35b34801561061657600080fd5b5061061f6110ed565b60405161062c9190613b2c565b60405180910390f35b34801561064157600080fd5b5061065c6004803603810190610657919061382e565b6110f6565b6040516106699190613889565b60405180910390f35b34801561067e57600080fd5b506106876111a9565b6040516106949190613a04565b60405180910390f35b3480156106a957600080fd5b506106b26111cf565b6040516106bf9190613889565b60405180910390f35b3480156106d457600080fd5b506106dd6111e2565b6040516106ea9190613889565b60405180910390f35b3480156106ff57600080fd5b5061071a60048036038101906107159190613948565b6111f5565b604051610727919061392d565b60405180910390f35b34801561073c57600080fd5b5061074561123d565b005b34801561075357600080fd5b5061076e60048036038101906107699190613b47565b611306565b005b34801561077c57600080fd5b506107856113d2565b6040516107929190613889565b60405180910390f35b3480156107a757600080fd5b506107b06113fe565b6040516107bd9190613a04565b60405180910390f35b3480156107d257600080fd5b506107db611424565b005b3480156107e957600080fd5b506107f2611472565b6040516107ff9190613a04565b60405180910390f35b34801561081457600080fd5b5061081d61149c565b60405161082a9190613a04565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190613b9a565b6114c2565b005b34801561086857600080fd5b506108716114e7565b60405161087e919061376e565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613bc7565b611579565b005b3480156108bc57600080fd5b506108c561161f565b6040516108d2919061392d565b60405180910390f35b3480156108e757600080fd5b506108f0611625565b6040516108fd919061392d565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190613b9a565b61162b565b005b34801561093b57600080fd5b506109566004803603810190610951919061382e565b611650565b6040516109639190613889565b60405180910390f35b34801561097857600080fd5b5061098161171d565b60405161098e919061392d565b60405180910390f35b3480156109a357600080fd5b506109ac611723565b6040516109b99190613889565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e4919061382e565b611736565b6040516109f69190613889565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a219190613948565b611754565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a9190613948565b61181c565b604051610a5c9190613889565b60405180910390f35b348015610a7157600080fd5b50610a7a61183c565b604051610a879190613889565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab29190613975565b61184f565b005b348015610ac557600080fd5b50610ae06004803603810190610adb9190613948565b6118ea565b005b348015610aee57600080fd5b50610af7611963565b604051610b049190613889565b60405180910390f35b348015610b1957600080fd5b50610b22611976565b604051610b2f919061392d565b60405180910390f35b348015610b4457600080fd5b50610b5f6004803603810190610b5a9190613975565b61197c565b604051610b6c9190613889565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190613c07565b611a5d565b604051610ba9919061392d565b60405180910390f35b348015610bbe57600080fd5b50610bc7611ae4565b604051610bd4919061392d565b60405180910390f35b348015610be957600080fd5b50610bf2611aea565b604051610bff9190613889565b60405180910390f35b348015610c1457600080fd5b50610c2f6004803603810190610c2a9190613948565b611b16565b005b348015610c3d57600080fd5b50610c46611c4d565b604051610c53919061392d565b60405180910390f35b348015610c6857600080fd5b50610c836004803603810190610c7e9190613975565b611c53565b604051610c909190613889565b60405180910390f35b606060038054610ca890613c76565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd490613c76565b8015610d215780601f10610cf657610100808354040283529160200191610d21565b820191906000526020600020905b815481529060010190602001808311610d0457829003601f168201915b5050505050905090565b6000610d3f610d38611f1b565b8484611f23565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610d7f6120ec565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600d5481565b60135481565b60155481565b610e5f6120ec565b670de0b6b3a76400006103e86005610e75610d6d565b610e7f9190613cd6565b610e899190613d47565b610e939190613d47565b811015610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90613dea565b60405180910390fd5b670de0b6b3a764000081610ee99190613cd6565b600a8190555050565b6000610eff84848461216a565b610fc084610f0b611f1b565b610fbb85604051806060016040528060288152602001614cf160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f71611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b611f23565b600190509392505050565b61dead81565b600e5481565b610fdf6120ec565b60005b8383905081101561107e57816019600086868581811061100557611004613e0a565b5b905060200201602081019061101a9190613948565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061107690613e39565b915050610fe2565b50505050565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601260019054906101000a900460ff1681565b60006009905090565b600061119f611103611f1b565b8461119a8560016000611114611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b611f23565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260029054906101000a900460ff1681565b601260039054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112456120ec565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61130e6120ec565b610258831015611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90613ef3565b60405180910390fd5b6103e88211158015611366575060008210155b6113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90613f85565b60405180910390fd5b82600e8190555081600d8190555080601260016101000a81548160ff021916908315150217905550505050565b60006113dc6120ec565b6000601260026101000a81548160ff0219169083151502179055506001905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61142c6120ec565b6001601260066101000a81548160ff0219169083151502179055506001601260036101000a81548160ff02191690831515021790555042600f8190555043601881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114ca6120ec565b80601260036101000a81548160ff02191690831515021790555050565b6060600480546114f690613c76565b80601f016020809104026020016040519081016040528092919081815260200182805461152290613c76565b801561156f5780601f106115445761010080835404028352916020019161156f565b820191906000526020600020905b81548152906001019060200180831161155257829003601f168201915b5050505050905090565b6115816120ec565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890614017565b60405180910390fd5b61161b82826129cc565b5050565b60115481565b60145481565b6116336120ec565b80601260046101000a81548160ff02191690831515021790555050565b600061171361165d611f1b565b8461170e85604051806060016040528060258152602001614d196025913960016000611687611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b611f23565b6001905092915050565b600f5481565b601260049054906101000a900460ff1681565b600061174a611743611f1b565b848461216a565b6001905092915050565b61175c6120ec565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b601260069054906101000a900460ff1681565b6118576120ec565b670de0b6b3a76400006103e8600f61186d610d6d565b6118779190613cd6565b6118819190613d47565b61188b9190613d47565b8110156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c4906140a9565b60405180910390fd5b670de0b6b3a7640000816118e19190613cd6565b600c8190555050565b6118f26120ec565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611960600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016129cc565b50565b601260059054906101000a900460ff1681565b600a5481565b60006119866120ec565b620186a06001611994610d6d565b61199e9190613cd6565b6119a89190613d47565b8210156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061413b565b60405180910390fd5b6103e860056119f7610d6d565b611a019190613cd6565b611a0b9190613d47565b821115611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a44906141cd565b60405180910390fd5b81600b8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611af46120ec565b6000601260056101000a81548160ff0219169083151502179055506001905090565b611b1e6120ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b849061425f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b6000611c5d6120ec565b601054601154611c6d919061427f565b4211611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca5906142ff565b60405180910390fd5b6103e8821115611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614391565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d579190613a04565b602060405180830381865afa158015611d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9891906143c6565b90506000611dc3612710611db58685612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000811115611dfe57611dfd600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b31565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e6d57600080fd5b505af1158015611e81573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b6000808284611ecc919061427f565b905083811015611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f089061443f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f89906144d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890614563565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120df919061392d565b60405180910390a3505050565b6120f4611f1b565b73ffffffffffffffffffffffffffffffffffffffff16612112612dc4565b73ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f906145cf565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d090614661565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f906146f3565b60405180910390fd5b600081036122615761225c83836000612b31565b612963565b43601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260029054906101000a900460ff161561265d576122c2611472565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123305750612300611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123695750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123a3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bc5750601260009054906101000a900460ff16155b1561265c57601260069054906101000a900460ff166124be57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061247e5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b49061475f565b60405180910390fd5b5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125615750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125b057600a548111156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a2906147f1565b60405180910390fd5b61265b565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661265a57600c5461260d836111f5565b82612618919061427f565b1115612659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126509061485d565b60405180910390fd5b5b5b5b5b601260059054906101000a900460ff1680156126c35750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127e2576126d0611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127545750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127e1576127a1601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd8565b6127e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d7906148ef565b60405180910390fd5b5b5b60006127ed306111f5565b90506000600b5482101590508080156128135750601260009054906101000a900460ff16155b80156128695750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128ad576001601260006101000a81548160ff021916908315150217905550612891612de4565b6000601260006101000a81548160ff0219169083151502179055505b601260009054906101000a900460ff161580156129135750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561292b5750601260019054906101000a900460ff165b80156129465750600e54600f54612942919061427f565b4210155b15612955576129536130cb565b505b612960858585612b31565b50505b505050565b60008383111582906129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a7919061376e565b60405180910390fd5b50600083856129bf919061490f565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808303612a7f5760009050612ae1565b60008284612a8d9190613cd6565b9050828482612a9c9190613d47565b14612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad3906149b5565b60405180910390fd5b809150505b92915050565b6000612b2983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061326b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9790614661565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c06906146f3565b60405180910390fd5b612c1a8383836132ce565b612c8581604051806060016040528060268152602001614ccb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d18816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612db7919061392d565b60405180910390a3505050565b600080612dcf6132d3565b90508091505090565b60004382119050919050565b6000612def306111f5565b90506000601454601554601354612e06919061427f565b612e10919061427f565b9050600080831480612e225750600082145b15612e2f575050506130c9565b6014600b54612e3e9190613cd6565b831115612e57576014600b54612e549190613cd6565b92505b600060028360135486612e6a9190613cd6565b612e749190613d47565b612e7e9190613d47565b90506000612e95828661337b90919063ffffffff16565b90506000479050612ea5826133c5565b6000612eba824761337b90919063ffffffff16565b90506000612ee587612ed760155485612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000612f1088612f0260145486612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000818385612f21919061490f565b612f2b919061490f565b9050600060138190555060006015819055506000601481905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612f8b90614a06565b60006040518083038185875af1925050503d8060008114612fc8576040519150601f19603f3d011682016040523d82523d6000602084013e612fcd565b606091505b505080985050600087118015612fe35750600081115b1561303057612ff28782613602565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260135460405161302793929190614a1b565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161307690614a06565b60006040518083038185875af1925050503d80600081146130b3576040519150601f19603f3d011682016040523d82523d6000602084013e6130b8565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016131319190613a04565b602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906143c6565b9050600061319f612710613191600d5485612a6d90919063ffffffff16565b612ae790919063ffffffff16565b905060008111156131da576131d9600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b31565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561324957600080fd5b505af115801561325d573d6000803e3d6000fd5b505050506001935050505090565b600080831182906132b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a9919061376e565b60405180910390fd5b50600083856132c19190613d47565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461335257600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613376565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b60006133bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612968565b905092915050565b6000600267ffffffffffffffff8111156133e2576133e1614a52565b5b6040519080825280602002602001820160405280156134105781602001602082028036833780820191505090505b509050308160008151811061342857613427613e0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f19190614a96565b8160018151811061350557613504613e0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061356a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f23565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135cc959493929190614bbc565b600060405180830381600087803b1580156135e657600080fd5b505af11580156135fa573d6000803e3d6000fd5b505050505050565b61362d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f23565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161369496959493929190614c16565b60606040518083038185885af11580156136b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136d79190614c77565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156137185780820151818401526020810190506136fd565b60008484015250505050565b6000601f19601f8301169050919050565b6000613740826136de565b61374a81856136e9565b935061375a8185602086016136fa565b61376381613724565b840191505092915050565b600060208201905081810360008301526137888184613735565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137c58261379a565b9050919050565b6137d5816137ba565b81146137e057600080fd5b50565b6000813590506137f2816137cc565b92915050565b6000819050919050565b61380b816137f8565b811461381657600080fd5b50565b60008135905061382881613802565b92915050565b6000806040838503121561384557613844613790565b5b6000613853858286016137e3565b925050602061386485828601613819565b9150509250929050565b60008115159050919050565b6138838161386e565b82525050565b600060208201905061389e600083018461387a565b92915050565b6000819050919050565b60006138c96138c46138bf8461379a565b6138a4565b61379a565b9050919050565b60006138db826138ae565b9050919050565b60006138ed826138d0565b9050919050565b6138fd816138e2565b82525050565b600060208201905061391860008301846138f4565b92915050565b613927816137f8565b82525050565b6000602082019050613942600083018461391e565b92915050565b60006020828403121561395e5761395d613790565b5b600061396c848285016137e3565b91505092915050565b60006020828403121561398b5761398a613790565b5b600061399984828501613819565b91505092915050565b6000806000606084860312156139bb576139ba613790565b5b60006139c9868287016137e3565b93505060206139da868287016137e3565b92505060406139eb86828701613819565b9150509250925092565b6139fe816137ba565b82525050565b6000602082019050613a1960008301846139f5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613a4457613a43613a1f565b5b8235905067ffffffffffffffff811115613a6157613a60613a24565b5b602083019150836020820283011115613a7d57613a7c613a29565b5b9250929050565b613a8d8161386e565b8114613a9857600080fd5b50565b600081359050613aaa81613a84565b92915050565b600080600060408486031215613ac957613ac8613790565b5b600084013567ffffffffffffffff811115613ae757613ae6613795565b5b613af386828701613a2e565b93509350506020613b0686828701613a9b565b9150509250925092565b600060ff82169050919050565b613b2681613b10565b82525050565b6000602082019050613b416000830184613b1d565b92915050565b600080600060608486031215613b6057613b5f613790565b5b6000613b6e86828701613819565b9350506020613b7f86828701613819565b9250506040613b9086828701613a9b565b9150509250925092565b600060208284031215613bb057613baf613790565b5b6000613bbe84828501613a9b565b91505092915050565b60008060408385031215613bde57613bdd613790565b5b6000613bec858286016137e3565b9250506020613bfd85828601613a9b565b9150509250929050565b60008060408385031215613c1e57613c1d613790565b5b6000613c2c858286016137e3565b9250506020613c3d858286016137e3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c8e57607f821691505b602082108103613ca157613ca0613c47565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ce1826137f8565b9150613cec836137f8565b9250828202613cfa816137f8565b91508282048414831517613d1157613d10613ca7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d52826137f8565b9150613d5d836137f8565b925082613d6d57613d6c613d18565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000613dd4602f836136e9565b9150613ddf82613d78565b604082019050919050565b60006020820190508181036000830152613e0381613dc7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613e44826137f8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e7657613e75613ca7565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000613edd6033836136e9565b9150613ee882613e81565b604082019050919050565b60006020820190508181036000830152613f0c81613ed0565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000613f6f6030836136e9565b9150613f7a82613f13565b604082019050919050565b60006020820190508181036000830152613f9e81613f62565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006140016039836136e9565b915061400c82613fa5565b604082019050919050565b6000602082019050818103600083015261403081613ff4565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b60006140936024836136e9565b915061409e82614037565b604082019050919050565b600060208201905081810360008301526140c281614086565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006141256035836136e9565b9150614130826140c9565b604082019050919050565b6000602082019050818103600083015261415481614118565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141b76034836136e9565b91506141c28261415b565b604082019050919050565b600060208201905081810360008301526141e6816141aa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142496026836136e9565b9150614254826141ed565b604082019050919050565b600060208201905081810360008301526142788161423c565b9050919050565b600061428a826137f8565b9150614295836137f8565b92508282019050808211156142ad576142ac613ca7565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006142e96020836136e9565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061437b602a836136e9565b91506143868261431f565b604082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b6000815190506143c081613802565b92915050565b6000602082840312156143dc576143db613790565b5b60006143ea848285016143b1565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614429601b836136e9565b9150614434826143f3565b602082019050919050565b600060208201905081810360008301526144588161441c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006144bb6024836136e9565b91506144c68261445f565b604082019050919050565b600060208201905081810360008301526144ea816144ae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061454d6022836136e9565b9150614558826144f1565b604082019050919050565b6000602082019050818103600083015261457c81614540565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145b96020836136e9565b91506145c482614583565b602082019050919050565b600060208201905081810360008301526145e8816145ac565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061464b6025836136e9565b9150614656826145ef565b604082019050919050565b6000602082019050818103600083015261467a8161463e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146dd6023836136e9565b91506146e882614681565b604082019050919050565b6000602082019050818103600083015261470c816146d0565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006147496016836136e9565b915061475482614713565b602082019050919050565b600060208201905081810360008301526147788161473c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006147db6036836136e9565b91506147e68261477f565b604082019050919050565b6000602082019050818103600083015261480a816147ce565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006148476013836136e9565b915061485282614811565b602082019050919050565b600060208201905081810360008301526148768161483a565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e60008201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b60006148d9603d836136e9565b91506148e48261487d565b604082019050919050565b60006020820190508181036000830152614908816148cc565b9050919050565b600061491a826137f8565b9150614925836137f8565b925082820390508181111561493d5761493c613ca7565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061499f6021836136e9565b91506149aa82614943565b604082019050919050565b600060208201905081810360008301526149ce81614992565b9050919050565b600081905092915050565b50565b60006149f06000836149d5565b91506149fb826149e0565b600082019050919050565b6000614a11826149e3565b9150819050919050565b6000606082019050614a30600083018661391e565b614a3d602083018561391e565b614a4a604083018461391e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614a90816137cc565b92915050565b600060208284031215614aac57614aab613790565b5b6000614aba84828501614a81565b91505092915050565b6000819050919050565b6000614ae8614ae3614ade84614ac3565b6138a4565b6137f8565b9050919050565b614af881614acd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b33816137ba565b82525050565b6000614b458383614b2a565b60208301905092915050565b6000602082019050919050565b6000614b6982614afe565b614b738185614b09565b9350614b7e83614b1a565b8060005b83811015614baf578151614b968882614b39565b9750614ba183614b51565b925050600181019050614b82565b5085935050505092915050565b600060a082019050614bd1600083018861391e565b614bde6020830187614aef565b8181036040830152614bf08186614b5e565b9050614bff60608301856139f5565b614c0c608083018461391e565b9695505050505050565b600060c082019050614c2b60008301896139f5565b614c38602083018861391e565b614c456040830187614aef565b614c526060830186614aef565b614c5f60808301856139f5565b614c6c60a083018461391e565b979650505050505050565b600080600060608486031215614c9057614c8f613790565b5b6000614c9e868287016143b1565b9350506020614caf868287016143b1565b9250506040614cc0868287016143b1565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122017ee57623b876c46d2ee87f1dd51530b938bef4807ac3c27c4b1cda89b1d858264736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000063a78fa750c5f8fdd2d6d9a5fd2fb6f9794985800000000000000000000000000000000000000000000000000000000000000001
-----Decoded View---------------
Arg [0] : dex_ (address): 0x63a78Fa750c5F8fdd2d6D9a5Fd2Fb6f979498580
Arg [1] : d (uint256): 1
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000063a78fa750c5f8fdd2d6d9a5fd2fb6f979498580
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode Sourcemap
9625:12443:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;999:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3172:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9701:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2121:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15129:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10230:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10083:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10605:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10679;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13431:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3824:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9794:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10139:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13899:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14166:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10357:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1963:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4589:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9759:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10396:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10436:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2293:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1383:148:3;;;;;;;;;;;;;:::i;:::-;;20329:447:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12658:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9896:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12458:191;;;;;;;;;;;;;:::i;:::-;;649:79:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9933:24:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14347:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1219:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14460:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10284:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10645:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12930:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5311:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10191:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10474:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2634:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14912:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11004:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10564:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13674:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12301:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10518:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9967:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13041:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2873:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10009:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12787:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1829:244:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10049:24:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21305:760;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;999:100;1053:13;1086:5;1079:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;999:100;:::o;3172:169::-;3255:4;3272:39;3281:12;:10;:12::i;:::-;3295:7;3304:6;3272:8;:39::i;:::-;3329:4;3322:11;;3172:169;;;;:::o;9701:51::-;;;:::o;2121:108::-;2182:7;2209:12;;2202:19;;2121:108;:::o;15129:157::-;854:13:3;:11;:13::i;:::-;15236:9:4::1;;;;;;;;;;;15208:38;;15225:9;15208:38;;;;;;;;;;;;15269:9;15257;;:21;;;;;;;;;;;;;;;;;;15129:157:::0;:::o;10230:47::-;;;;:::o;10083:36::-;;;;:::o;10605:33::-;;;;:::o;10679:::-;;;;:::o;13431:234::-;854:13:3;:11;:13::i;:::-;13550:4:4::1;13544;13540:1;13524:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13523:31;;;;:::i;:::-;13513:6;:41;;13505:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;13650:6;13640;:17;;;;:::i;:::-;13617:20;:40;;;;13431:234:::0;:::o;3824:355::-;3964:4;3981:36;3991:6;3999:9;4010:6;3981:9;:36::i;:::-;4028:121;4037:6;4045:12;:10;:12::i;:::-;4059:89;4097:6;4059:89;;;;;;;;;;;;;;;;;:11;:19;4071:6;4059:19;;;;;;;;;;;;;;;:33;4079:12;:10;:12::i;:::-;4059:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4028:8;:121::i;:::-;4167:4;4160:11;;3824:355;;;;;:::o;9794:89::-;9840:42;9794:89;:::o;10139:45::-;;;;:::o;13899:259::-;854:13:3;:11;:13::i;:::-;13993:9:4::1;13988:163;14012:6;;:13;;14008:1;:17;13988:163;;;14135:4;14047:74;:85;14122:6;;14129:1;14122:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14047:85;;;;;;;;;;;;;;;;:92;;;;;;;;;;;;;;;;;;14027:3;;;;;:::i;:::-;;;;13988:163;;;;13899:259:::0;;;:::o;14166:172::-;14227:4;14250:74;:80;14325:4;14250:80;;;;;;;;;;;;;;;;;;;;;;;;;14243:87;;14166:172;;;:::o;10357:32::-;;;;;;;;;;;;;:::o;1963:92::-;2021:5;2046:1;2039:8;;1963:92;:::o;4589:218::-;4677:4;4694:83;4703:12;:10;:12::i;:::-;4717:7;4726:50;4765:10;4726:11;:25;4738:12;:10;:12::i;:::-;4726:25;;;;;;;;;;;;;;;:34;4752:7;4726:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4694:8;:83::i;:::-;4795:4;4788:11;;4589:218;;;;:::o;9759:28::-;;;;;;;;;;;;;:::o;10396:33::-;;;;;;;;;;;;;:::o;10436:31::-;;;;;;;;;;;;;:::o;2293:127::-;2367:7;2394:9;:18;2404:7;2394:18;;;;;;;;;;;;;;;;2387:25;;2293:127;;;:::o;1383:148:3:-;854:13;:11;:13::i;:::-;1490:1:::1;1453:40;;1474:6;;;;;;;;;;;1453:40;;;;;;;;;;;;1521:1;1504:6;;:19;;;;;;;;;;;;;;;;;;1383:148::o:0;20329:447:4:-;854:13:3;:11;:13::i;:::-;20483:3:4::1;20460:19;:26;;20452:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;20573:4;20561:8;:16;;:33;;;;;20593:1;20581:8;:13;;20561:33;20553:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;20676:19;20658:15;:37;;;;20725:8;20706:16;:27;;;;20760:8;20744:13;;:24;;;;;;;;;;;;;;;;;;20329:447:::0;;;:::o;12658:120::-;12710:4;854:13:3;:11;:13::i;:::-;12743:5:4::1;12726:14;;:22;;;;;;;;;;;;;;;;;;12766:4;12759:11;;12658:120:::0;:::o;9896:30::-;;;;;;;;;;;;;:::o;12458:191::-;854:13:3;:11;:13::i;:::-;12529:4:4::1;12513:13;;:20;;;;;;;;;;;;;;;;;;12558:4;12544:11;;:18;;;;;;;;;;;;;;;;;;12590:15;12573:14;:32;;;;12629:12;12616:10;:25;;;;12458:191::o:0;649:79:3:-;687:7;714:6;;;;;;;;;;;707:13;;649:79;:::o;9933:24:4:-;;;;;;;;;;;;;:::o;14347:101::-;854:13:3;:11;:13::i;:::-;14433:7:4::1;14419:11;;:21;;;;;;;;;;;;;;;;;;14347:101:::0;:::o;1219:104::-;1275:13;1308:7;1301:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1219:104;:::o;14460:245::-;854:13:3;:11;:13::i;:::-;14567::4::1;;;;;;;;;;;14559:21;;:4;:21;;::::0;14551:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14656:41;14685:4;14691:5;14656:28;:41::i;:::-;14460:245:::0;;:::o;10284:35::-;;;;:::o;10645:27::-;;;;:::o;12930:102::-;854:13:3;:11;:13::i;:::-;13019:5:4::1;12998:18;;:26;;;;;;;;;;;;;;;;;;12930:102:::0;:::o;5311:269::-;5404:4;5421:129;5430:12;:10;:12::i;:::-;5444:7;5453:96;5492:15;5453:96;;;;;;;;;;;;;;;;;:11;:25;5465:12;:10;:12::i;:::-;5453:25;;;;;;;;;;;;;;;:34;5479:7;5453:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5421:8;:129::i;:::-;5568:4;5561:11;;5311:269;;;;:::o;10191:29::-;;;;:::o;10474:37::-;;;;;;;;;;;;;:::o;2634:175::-;2720:4;2737:42;2747:12;:10;:12::i;:::-;2761:9;2772:6;2737:9;:42::i;:::-;2797:4;2790:11;;2634:175;;;;:::o;14912:208::-;854:13:3;:11;:13::i;:::-;15049:15:4::1;;;;;;;;;;;15006:59;;15029:18;15006:59;;;;;;;;;;;;15094:18;15076:15;;:36;;;;;;;;;;;;;;;;;;14912:208:::0;:::o;11004:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10564:31::-;;;;;;;;;;;;;:::o;13674:216::-;854:13:3;:11;:13::i;:::-;13797:4:4::1;13791;13786:2;13770:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;13769:32;;;;:::i;:::-;13759:6;:42;;13751:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;13875:6;13865;:17;;;;:::i;:::-;13853:9;:29;;;;13674:216:::0;:::o;12301:149::-;854:13:3;:11;:13::i;:::-;12377:5:4::1;12361:13;;:21;;;;;;;;;;;;;;;;;;12393:49;12422:13;;;;;;;;;;;12437:4;12393:28;:49::i;:::-;12301:149:::0;:::o;10518:39::-;;;;;;;;;;;;;:::o;9967:35::-;;;;:::o;13041:381::-;13122:4;854:13:3;:11;:13::i;:::-;13178:6:4::1;13174:1;13158:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;13145:9;:39;;13137:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;13293:4;13289:1;13273:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13260:9;:37;;13252:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;13385:9;13364:18;:30;;;;13411:4;13404:11;;13041:381:::0;;;:::o;2873:151::-;2962:7;2989:11;:18;3001:5;2989:18;;;;;;;;;;;;;;;:27;3008:7;2989:27;;;;;;;;;;;;;;;;2982:34;;2873:151;;;;:::o;10009:33::-;;;;:::o;12787:134::-;12847:4;854:13:3;:11;:13::i;:::-;12886:5:4::1;12863:20;;:28;;;;;;;;;;;;;;;;;;12909:4;12902:11;;12787:134:::0;:::o;1829:244:3:-;854:13;:11;:13::i;:::-;1938:1:::1;1918:22;;:8;:22;;::::0;1910:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2028:8;1999:38;;2020:6;;;;;;;;;;;1999:38;;;;;;;;;;;;2057:8;2048:6;;:17;;;;;;;;;;;;;;;;;;1829:244:::0;:::o;10049:24:4:-;;;;:::o;21305:760::-;21389:4;854:13:3;:11;:13::i;:::-;21454:19:4::1;;21431:20;;:42;;;;:::i;:::-;21413:15;:60;21405:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;21541:4;21530:7;:15;;21522:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21626:15;21603:20;:38;;;;21655:28;21686:4;:14;;;21701:13;;;;;;;;;;;21686:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21655:60;;21729:20;21752:44;21790:5;21752:33;21777:7;21752:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;21729:67;;21829:1;21814:12;:16;21810:109;;;21846:61;21862:13;;;;;;;;;;;21885:6;21894:12;21846:15;:61::i;:::-;21810:109;21932:19;21969:13;;;;;;;;;;;21932:51;;21994:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22021:14;;;;;;;;;;22053:4;22046:11;;;;;21305:760:::0;;;:::o;329:182:2:-;387:7;407:9;423:1;419;:5;;;;:::i;:::-;407:17;;448:1;443;:6;;435:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;502:1;495:8;;;329:182;;;;:::o;99:98:0:-;152:7;179:10;172:17;;99:98;:::o;8504:381:4:-;8657:1;8640:19;;:5;:19;;;8632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8738:1;8719:21;;:7;:21;;;8711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8823:6;8793:11;:18;8805:5;8793:18;;;;;;;;;;;;;;;:27;8812:7;8793:27;;;;;;;;;;;;;;;:36;;;;8861:7;8845:32;;8854:5;8845:32;;;8870:6;8845:32;;;;;;:::i;:::-;;;;;;;;8504:381;;;:::o;1543:127:3:-;1613:12;:10;:12::i;:::-;1602:23;;:7;:5;:7::i;:::-;:23;;;1594:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1543:127::o;15346:2363:4:-;15517:1;15501:18;;:4;:18;;;15493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15594:1;15580:16;;:2;:16;;;15572:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15661:1;15651:6;:11;15648:92;;15679:28;15695:4;15701:2;15705:1;15679:15;:28::i;:::-;15722:7;;15648:92;15788:12;15751:28;:34;15780:4;15751:34;;;;;;;;;;;;;;;:49;;;;15814:14;;;;;;;;;;;15811:897;;;15874:7;:5;:7::i;:::-;15866:15;;:4;:15;;;;:49;;;;;15908:7;:5;:7::i;:::-;15902:13;;:2;:13;;;;15866:49;:86;;;;;15950:1;15936:16;;:2;:16;;;;15866:86;:128;;;;;15987:6;15973:21;;:2;:21;;;;15866:128;:158;;;;;16016:8;;;;;;;;;;;16015:9;15866:158;15844:863;;;16062:13;;;;;;;;;;;16058:140;;16115:9;;;;;;;;;;;16107:17;;:4;:17;;;:44;;;;16136:15;;;;;;;;;;;16128:23;;:4;:23;;;16107:44;16099:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16058:140;16220:25;:29;16246:2;16220:29;;;;;;;;;;;;;;;;;;;;;;;;;:114;;;;;16254:74;:80;16329:4;16254:80;;;;;;;;;;;;;;;;;;;;;;;;;16253:81;16220:114;16216:464;;;16381:20;;16371:6;:30;;16363:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;16216:464;;;16507:74;:80;16582:4;16507:80;;;;;;;;;;;;;;;;;;;;;;;;;16503:177;;16645:9;;16628:13;16638:2;16628:9;:13::i;:::-;16619:6;:22;;;;:::i;:::-;:35;;16611:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16503:177;16216:464;15844:863;15811:897;16730:20;;;;;;;;;;;:56;;;;;16755:25;:31;16781:4;16755:31;;;;;;;;;;;;;;;;;;;;;;;;;16754:32;16730:56;16726:388;;;16820:7;:5;:7::i;:::-;16814:13;;:2;:13;;;;:97;;;;;16831:74;:80;16906:4;16831:80;;;;;;;;;;;;;;;;;;;;;;;;;16814:97;16810:285;;;16947:58;16970:28;:34;16999:4;16970:34;;;;;;;;;;;;;;;;16947:22;:58::i;:::-;16939:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;16810:285;16726:388;17118:28;17149:24;17167:4;17149:9;:24::i;:::-;17118:55;;17187:12;17226:18;;17202:20;:42;;17187:57;;17273:7;:33;;;;;17298:8;;;;;;;;;;;17297:9;17273:33;:82;;;;;17324:25;:31;17350:4;17324:31;;;;;;;;;;;;;;;;;;;;;;;;;17323:32;17273:82;17255:216;;;17393:4;17382:8;;:15;;;;;;;;;;;;;;;;;;17415:10;:8;:10::i;:::-;17454:5;17443:8;;:16;;;;;;;;;;;;;;;;;;17255:216;17485:8;;;;;;;;;;;17484:9;:42;;;;;17497:25;:29;17523:2;17497:29;;;;;;;;;;;;;;;;;;;;;;;;;17484:42;:59;;;;;17530:13;;;;;;;;;;;17484:59;:114;;;;;17583:15;;17566:14;;:32;;;;:::i;:::-;17547:15;:51;;17484:114;17481:174;;;17614:29;:27;:29::i;:::-;;17481:174;17668:33;17684:4;17690:2;17694:6;17668:15;:33::i;:::-;15459:2250;;15346:2363;;;;:::o;1235:193:2:-;1321:7;1354:1;1349;:6;;1357:12;1341:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1381:9;1397:1;1393;:5;;;;:::i;:::-;1381:17;;1419:1;1412:8;;;1235:193;;;;;:::o;14714:189:4:-;14831:5;14797:25;:31;14823:4;14797:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14889:5;14855:40;;14883:4;14855:40;;;;;;;;;;;;14714:189;;:::o;1688:473:2:-;1746:7;1996:1;1991;:6;1987:47;;2021:1;2014:8;;;;1987:47;2047:9;2063:1;2059;:5;;;;:::i;:::-;2047:17;;2092:1;2087;2083;:5;;;;:::i;:::-;:10;2075:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2152:1;2145:8;;;1688:473;;;;;:::o;2638:132::-;2696:7;2723:39;2727:1;2730;2723:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2716:46;;2638:132;;;;:::o;6071:572:4:-;6229:1;6211:20;;:6;:20;;;6203:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6313:1;6292:23;;:9;:23;;;6284:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6366:47;6387:6;6395:9;6406:6;6366:20;:47::i;:::-;6447:71;6469:6;6447:71;;;;;;;;;;;;;;;;;:9;:17;6457:6;6447:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6427:9;:17;6437:6;6427:17;;;;;;;;;;;;;;;:91;;;;6552:32;6577:6;6552:9;:20;6562:9;6552:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6529:9;:20;6539:9;6529:20;;;;;;;;;;;;;;;:55;;;;6617:9;6600:35;;6609:6;6600:35;;;6628:6;6600:35;;;;;;:::i;:::-;;;;;;;;6071:572;;;:::o;899:135:3:-;942:7;972:14;989:13;:11;:13::i;:::-;972:30;;1020:6;1013:13;;;899:135;:::o;18237:117:4:-;18304:4;18334:12;18327:4;:19;18320:26;;18237:117;;;:::o;18792:1528::-;18831:23;18857:24;18875:4;18857:9;:24::i;:::-;18831:50;;18892:25;18962:12;;18941:18;;18920;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;18892:82;;18985:12;19033:1;19014:15;:20;:46;;;;19059:1;19038:17;:22;19014:46;19011:60;;;19063:7;;;;;19011:60;19126:2;19105:18;;:23;;;;:::i;:::-;19087:15;:41;19084:111;;;19181:2;19160:18;;:23;;;;:::i;:::-;19142:41;;19084:111;19208:23;19293:1;19273:17;19252:18;;19234:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;19208:86;;19305:26;19334:36;19354:15;19334;:19;;:36;;;;:::i;:::-;19305:65;;19384:25;19412:21;19384:49;;19447:36;19464:18;19447:16;:36::i;:::-;19498:18;19519:44;19545:17;19519:21;:25;;:44;;;;:::i;:::-;19498:65;;19577:23;19603:57;19642:17;19603:34;19618:18;;19603:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;19577:83;;19671:17;19691:51;19724:17;19691:28;19706:12;;19691:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;19671:71;;19759:23;19816:9;19798:15;19785:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;19759:66;;19863:1;19842:18;:22;;;;19896:1;19875:18;:22;;;;19923:1;19908:12;:16;;;;19959:9;;;;;;;;;;;19951:23;;19982:9;19951:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19938:58;;;;;20031:1;20013:15;:19;:42;;;;;20054:1;20036:15;:19;20013:42;20010:210;;;20071:46;20084:15;20101;20071:12;:46::i;:::-;20137:71;20152:18;20172:15;20189:18;;20137:71;;;;;;;;:::i;:::-;;;;;;;;20010:210;20257:15;;;;;;;;;;;20249:29;;20286:21;20249:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20236:76;;;;;18820:1500;;;;;;;;;;18792:1528;:::o;20785:511::-;20842:4;20878:15;20861:14;:32;;;;20907:28;20938:4;:14;;;20953:13;;;;;;;;;;;20938:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20907:60;;20981:20;21004:53;21051:5;21004:42;21029:16;;21004:20;:24;;:42;;;;:::i;:::-;:46;;:53;;;;:::i;:::-;20981:76;;21090:1;21075:12;:16;21071:109;;;21107:61;21123:13;;;;;;;;;;;21146:6;21155:12;21107:15;:61::i;:::-;21071:109;21193:19;21230:13;;;;;;;;;;;21193:51;;21255:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21284:4;21277:11;;;;;20785:511;:::o;3267:279:2:-;3353:7;3385:1;3381;:5;3388:12;3373:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3412:9;3428:1;3424;:5;;;;:::i;:::-;3412:17;;3537:1;3530:8;;;3267:279;;;;;:::o;9489:125:4:-;;;;:::o;2081:113:3:-;2126:7;2168:1;2152:18;;:6;;;;;;;;;;;:18;;;:34;;2180:6;;;;;;;;;;;2152:34;;;2173:4;;;;;;;;;;;2152:34;2145:41;;2081:113;:::o;795:136:2:-;853:7;880:43;884:1;887;880:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;873:50;;795:136;;;;:::o;17718:511:4:-;17787:21;17825:1;17811:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17787:40;;17856:4;17838;17843:1;17838:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17882:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17872:4;17877:1;17872:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17918:62;17935:4;17950:15;17968:11;17918:8;:62::i;:::-;17994:15;:66;;;18075:11;18101:1;18145:4;18172;18192:15;17994:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17773:456;17718:511;:::o;18362:421::-;18443:62;18460:4;18475:15;18493:11;18443:8;:62::i;:::-;18519:15;:31;;;18558:9;18591:4;18611:11;18637:1;18680;9840:42;18749:15;18519:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18362:421;;:::o;7:99:6:-;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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:329::-;4835:6;4884:2;4872:9;4863:7;4859:23;4855:32;4852:119;;;4890:79;;:::i;:::-;4852:119;5010:1;5035:53;5080:7;5071:6;5060:9;5056:22;5035:53;:::i;:::-;5025:63;;4981:117;4776:329;;;;:::o;5111:::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:117::-;6532:1;6529;6522:12;6546:117;6655:1;6652;6645:12;6669:117;6778:1;6775;6768:12;6809:568;6882:8;6892:6;6942:3;6935:4;6927:6;6923:17;6919:27;6909:122;;6950:79;;:::i;:::-;6909:122;7063:6;7050:20;7040:30;;7093:18;7085:6;7082:30;7079:117;;;7115:79;;:::i;:::-;7079:117;7229:4;7221:6;7217:17;7205:29;;7283:3;7275:4;7267:6;7263:17;7253:8;7249:32;7246:41;7243:128;;;7290:79;;:::i;:::-;7243:128;6809:568;;;;;:::o;7383:116::-;7453:21;7468:5;7453:21;:::i;:::-;7446:5;7443:32;7433:60;;7489:1;7486;7479:12;7433:60;7383:116;:::o;7505:133::-;7548:5;7586:6;7573:20;7564:29;;7602:30;7626:5;7602:30;:::i;:::-;7505:133;;;;:::o;7644:698::-;7736:6;7744;7752;7801:2;7789:9;7780:7;7776:23;7772:32;7769:119;;;7807:79;;:::i;:::-;7769:119;7955:1;7944:9;7940:17;7927:31;7985:18;7977:6;7974:30;7971:117;;;8007:79;;:::i;:::-;7971:117;8120:80;8192:7;8183:6;8172:9;8168:22;8120:80;:::i;:::-;8102:98;;;;7898:312;8249:2;8275:50;8317:7;8308:6;8297:9;8293:22;8275:50;:::i;:::-;8265:60;;8220:115;7644:698;;;;;:::o;8348:86::-;8383:7;8423:4;8416:5;8412:16;8401:27;;8348:86;;;:::o;8440:112::-;8523:22;8539:5;8523:22;:::i;:::-;8518:3;8511:35;8440:112;;:::o;8558:214::-;8647:4;8685:2;8674:9;8670:18;8662:26;;8698:67;8762:1;8751:9;8747:17;8738:6;8698:67;:::i;:::-;8558:214;;;;:::o;8778:613::-;8852:6;8860;8868;8917:2;8905:9;8896:7;8892:23;8888:32;8885:119;;;8923:79;;:::i;:::-;8885:119;9043:1;9068:53;9113:7;9104:6;9093:9;9089:22;9068:53;:::i;:::-;9058:63;;9014:117;9170:2;9196:53;9241:7;9232:6;9221:9;9217:22;9196:53;:::i;:::-;9186:63;;9141:118;9298:2;9324:50;9366:7;9357:6;9346:9;9342:22;9324:50;:::i;:::-;9314:60;;9269:115;8778:613;;;;;:::o;9397:323::-;9453:6;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:50;9695:7;9686:6;9675:9;9671:22;9653:50;:::i;:::-;9643:60;;9599:114;9397:323;;;;:::o;9726:468::-;9791:6;9799;9848:2;9836:9;9827:7;9823:23;9819:32;9816:119;;;9854:79;;:::i;:::-;9816:119;9974:1;9999:53;10044:7;10035:6;10024:9;10020:22;9999:53;:::i;:::-;9989:63;;9945:117;10101:2;10127:50;10169:7;10160:6;10149:9;10145:22;10127:50;:::i;:::-;10117:60;;10072:115;9726:468;;;;;:::o;10200:474::-;10268:6;10276;10325:2;10313:9;10304:7;10300:23;10296:32;10293:119;;;10331:79;;:::i;:::-;10293:119;10451:1;10476:53;10521:7;10512:6;10501:9;10497:22;10476:53;:::i;:::-;10466:63;;10422:117;10578:2;10604:53;10649:7;10640:6;10629:9;10625:22;10604:53;:::i;:::-;10594:63;;10549:118;10200:474;;;;;:::o;10680:180::-;10728:77;10725:1;10718:88;10825:4;10822:1;10815:15;10849:4;10846:1;10839:15;10866:320;10910:6;10947:1;10941:4;10937:12;10927:22;;10994:1;10988:4;10984:12;11015:18;11005:81;;11071:4;11063:6;11059:17;11049:27;;11005:81;11133:2;11125:6;11122:14;11102:18;11099:38;11096:84;;11152:18;;:::i;:::-;11096:84;10917:269;10866:320;;;:::o;11192:180::-;11240:77;11237:1;11230:88;11337:4;11334:1;11327:15;11361:4;11358:1;11351:15;11378:410;11418:7;11441:20;11459:1;11441:20;:::i;:::-;11436:25;;11475:20;11493:1;11475:20;:::i;:::-;11470:25;;11530:1;11527;11523:9;11552:30;11570:11;11552:30;:::i;:::-;11541:41;;11731:1;11722:7;11718:15;11715:1;11712:22;11692:1;11685:9;11665:83;11642:139;;11761:18;;:::i;:::-;11642:139;11426:362;11378:410;;;;:::o;11794:180::-;11842:77;11839:1;11832:88;11939:4;11936:1;11929:15;11963:4;11960:1;11953:15;11980:185;12020:1;12037:20;12055:1;12037:20;:::i;:::-;12032:25;;12071:20;12089:1;12071:20;:::i;:::-;12066:25;;12110:1;12100:35;;12115:18;;:::i;:::-;12100:35;12157:1;12154;12150:9;12145:14;;11980:185;;;;:::o;12171:234::-;12311:34;12307:1;12299:6;12295:14;12288:58;12380:17;12375:2;12367:6;12363:15;12356:42;12171:234;:::o;12411:366::-;12553:3;12574:67;12638:2;12633:3;12574:67;:::i;:::-;12567:74;;12650:93;12739:3;12650:93;:::i;:::-;12768:2;12763:3;12759:12;12752:19;;12411:366;;;:::o;12783:419::-;12949:4;12987:2;12976:9;12972:18;12964:26;;13036:9;13030:4;13026:20;13022:1;13011:9;13007:17;13000:47;13064:131;13190:4;13064:131;:::i;:::-;13056:139;;12783:419;;;:::o;13208:180::-;13256:77;13253:1;13246:88;13353:4;13350:1;13343:15;13377:4;13374:1;13367:15;13394:233;13433:3;13456:24;13474:5;13456:24;:::i;:::-;13447:33;;13502:66;13495:5;13492:77;13489:103;;13572:18;;:::i;:::-;13489:103;13619:1;13612:5;13608:13;13601:20;;13394:233;;;:::o;13633:238::-;13773:34;13769:1;13761:6;13757:14;13750:58;13842:21;13837:2;13829:6;13825:15;13818:46;13633:238;:::o;13877:366::-;14019:3;14040:67;14104:2;14099:3;14040:67;:::i;:::-;14033:74;;14116:93;14205:3;14116:93;:::i;:::-;14234:2;14229:3;14225:12;14218:19;;13877:366;;;:::o;14249:419::-;14415:4;14453:2;14442:9;14438:18;14430:26;;14502:9;14496:4;14492:20;14488:1;14477:9;14473:17;14466:47;14530:131;14656:4;14530:131;:::i;:::-;14522:139;;14249:419;;;:::o;14674:235::-;14814:34;14810:1;14802:6;14798:14;14791:58;14883:18;14878:2;14870:6;14866:15;14859:43;14674:235;:::o;14915:366::-;15057:3;15078:67;15142:2;15137:3;15078:67;:::i;:::-;15071:74;;15154:93;15243:3;15154:93;:::i;:::-;15272:2;15267:3;15263:12;15256:19;;14915:366;;;:::o;15287:419::-;15453:4;15491:2;15480:9;15476:18;15468:26;;15540:9;15534:4;15530:20;15526:1;15515:9;15511:17;15504:47;15568:131;15694:4;15568:131;:::i;:::-;15560:139;;15287:419;;;:::o;15712:244::-;15852:34;15848:1;15840:6;15836:14;15829:58;15921:27;15916:2;15908:6;15904:15;15897:52;15712:244;:::o;15962:366::-;16104:3;16125:67;16189:2;16184:3;16125:67;:::i;:::-;16118:74;;16201:93;16290:3;16201:93;:::i;:::-;16319:2;16314:3;16310:12;16303:19;;15962:366;;;:::o;16334:419::-;16500:4;16538:2;16527:9;16523:18;16515:26;;16587:9;16581:4;16577:20;16573:1;16562:9;16558:17;16551:47;16615:131;16741:4;16615:131;:::i;:::-;16607:139;;16334:419;;;:::o;16759:223::-;16899:34;16895:1;16887:6;16883:14;16876:58;16968:6;16963:2;16955:6;16951:15;16944:31;16759:223;:::o;16988:366::-;17130:3;17151:67;17215:2;17210:3;17151:67;:::i;:::-;17144:74;;17227:93;17316:3;17227:93;:::i;:::-;17345:2;17340:3;17336:12;17329:19;;16988:366;;;:::o;17360:419::-;17526:4;17564:2;17553:9;17549:18;17541:26;;17613:9;17607:4;17603:20;17599:1;17588:9;17584:17;17577:47;17641:131;17767:4;17641:131;:::i;:::-;17633:139;;17360:419;;;:::o;17785:240::-;17925:34;17921:1;17913:6;17909:14;17902:58;17994:23;17989:2;17981:6;17977:15;17970:48;17785:240;:::o;18031:366::-;18173:3;18194:67;18258:2;18253:3;18194:67;:::i;:::-;18187:74;;18270:93;18359:3;18270:93;:::i;:::-;18388:2;18383:3;18379:12;18372:19;;18031:366;;;:::o;18403:419::-;18569:4;18607:2;18596:9;18592:18;18584:26;;18656:9;18650:4;18646:20;18642:1;18631:9;18627:17;18620:47;18684:131;18810:4;18684:131;:::i;:::-;18676:139;;18403:419;;;:::o;18828:239::-;18968:34;18964:1;18956:6;18952:14;18945:58;19037:22;19032:2;19024:6;19020:15;19013:47;18828:239;:::o;19073:366::-;19215:3;19236:67;19300:2;19295:3;19236:67;:::i;:::-;19229:74;;19312:93;19401:3;19312:93;:::i;:::-;19430:2;19425:3;19421:12;19414:19;;19073:366;;;:::o;19445:419::-;19611:4;19649:2;19638:9;19634:18;19626:26;;19698:9;19692:4;19688:20;19684:1;19673:9;19669:17;19662:47;19726:131;19852:4;19726:131;:::i;:::-;19718:139;;19445:419;;;:::o;19870:225::-;20010:34;20006:1;19998:6;19994:14;19987:58;20079:8;20074:2;20066:6;20062:15;20055:33;19870:225;:::o;20101:366::-;20243:3;20264:67;20328:2;20323:3;20264:67;:::i;:::-;20257:74;;20340:93;20429:3;20340:93;:::i;:::-;20458:2;20453:3;20449:12;20442:19;;20101:366;;;:::o;20473:419::-;20639:4;20677:2;20666:9;20662:18;20654:26;;20726:9;20720:4;20716:20;20712:1;20701:9;20697:17;20690:47;20754:131;20880:4;20754:131;:::i;:::-;20746:139;;20473:419;;;:::o;20898:191::-;20938:3;20957:20;20975:1;20957:20;:::i;:::-;20952:25;;20991:20;21009:1;20991:20;:::i;:::-;20986:25;;21034:1;21031;21027:9;21020:16;;21055:3;21052:1;21049:10;21046:36;;;21062:18;;:::i;:::-;21046:36;20898:191;;;;:::o;21095:182::-;21235:34;21231:1;21223:6;21219:14;21212:58;21095:182;:::o;21283:366::-;21425:3;21446:67;21510:2;21505:3;21446:67;:::i;:::-;21439:74;;21522:93;21611:3;21522:93;:::i;:::-;21640:2;21635:3;21631:12;21624:19;;21283:366;;;:::o;21655:419::-;21821:4;21859:2;21848:9;21844:18;21836:26;;21908:9;21902:4;21898:20;21894:1;21883:9;21879:17;21872:47;21936:131;22062:4;21936:131;:::i;:::-;21928:139;;21655:419;;;:::o;22080:229::-;22220:34;22216:1;22208:6;22204:14;22197:58;22289:12;22284:2;22276:6;22272:15;22265:37;22080:229;:::o;22315:366::-;22457:3;22478:67;22542:2;22537:3;22478:67;:::i;:::-;22471:74;;22554:93;22643:3;22554:93;:::i;:::-;22672:2;22667:3;22663:12;22656:19;;22315:366;;;:::o;22687:419::-;22853:4;22891:2;22880:9;22876:18;22868:26;;22940:9;22934:4;22930:20;22926:1;22915:9;22911:17;22904:47;22968:131;23094:4;22968:131;:::i;:::-;22960:139;;22687:419;;;:::o;23112:143::-;23169:5;23200:6;23194:13;23185:22;;23216:33;23243:5;23216:33;:::i;:::-;23112:143;;;;:::o;23261:351::-;23331:6;23380:2;23368:9;23359:7;23355:23;23351:32;23348:119;;;23386:79;;:::i;:::-;23348:119;23506:1;23531:64;23587:7;23578:6;23567:9;23563:22;23531:64;:::i;:::-;23521:74;;23477:128;23261:351;;;;:::o;23618:177::-;23758:29;23754:1;23746:6;23742:14;23735:53;23618:177;:::o;23801:366::-;23943:3;23964:67;24028:2;24023:3;23964:67;:::i;:::-;23957:74;;24040:93;24129:3;24040:93;:::i;:::-;24158:2;24153:3;24149:12;24142:19;;23801:366;;;:::o;24173:419::-;24339:4;24377:2;24366:9;24362:18;24354:26;;24426:9;24420:4;24416:20;24412:1;24401:9;24397:17;24390:47;24454:131;24580:4;24454:131;:::i;:::-;24446:139;;24173:419;;;:::o;24598:223::-;24738:34;24734:1;24726:6;24722:14;24715:58;24807:6;24802:2;24794:6;24790:15;24783:31;24598:223;:::o;24827:366::-;24969:3;24990:67;25054:2;25049:3;24990:67;:::i;:::-;24983:74;;25066:93;25155:3;25066:93;:::i;:::-;25184:2;25179:3;25175:12;25168:19;;24827:366;;;:::o;25199:419::-;25365:4;25403:2;25392:9;25388:18;25380:26;;25452:9;25446:4;25442:20;25438:1;25427:9;25423:17;25416:47;25480:131;25606:4;25480:131;:::i;:::-;25472:139;;25199:419;;;:::o;25624:221::-;25764:34;25760:1;25752:6;25748:14;25741:58;25833:4;25828:2;25820:6;25816:15;25809:29;25624:221;:::o;25851:366::-;25993:3;26014:67;26078:2;26073:3;26014:67;:::i;:::-;26007:74;;26090:93;26179:3;26090:93;:::i;:::-;26208:2;26203:3;26199:12;26192:19;;25851:366;;;:::o;26223:419::-;26389:4;26427:2;26416:9;26412:18;26404:26;;26476:9;26470:4;26466:20;26462:1;26451:9;26447:17;26440:47;26504:131;26630:4;26504:131;:::i;:::-;26496:139;;26223:419;;;:::o;26648:182::-;26788:34;26784:1;26776:6;26772:14;26765:58;26648:182;:::o;26836:366::-;26978:3;26999:67;27063:2;27058:3;26999:67;:::i;:::-;26992:74;;27075:93;27164:3;27075:93;:::i;:::-;27193:2;27188:3;27184:12;27177:19;;26836:366;;;:::o;27208:419::-;27374:4;27412:2;27401:9;27397:18;27389:26;;27461:9;27455:4;27451:20;27447:1;27436:9;27432:17;27425:47;27489:131;27615:4;27489:131;:::i;:::-;27481:139;;27208:419;;;:::o;27633:224::-;27773:34;27769:1;27761:6;27757:14;27750:58;27842:7;27837:2;27829:6;27825:15;27818:32;27633:224;:::o;27863:366::-;28005:3;28026:67;28090:2;28085:3;28026:67;:::i;:::-;28019:74;;28102:93;28191:3;28102:93;:::i;:::-;28220:2;28215:3;28211:12;28204:19;;27863:366;;;:::o;28235:419::-;28401:4;28439:2;28428:9;28424:18;28416:26;;28488:9;28482:4;28478:20;28474:1;28463:9;28459:17;28452:47;28516:131;28642:4;28516:131;:::i;:::-;28508:139;;28235:419;;;:::o;28660:222::-;28800:34;28796:1;28788:6;28784:14;28777:58;28869:5;28864:2;28856:6;28852:15;28845:30;28660:222;:::o;28888:366::-;29030:3;29051:67;29115:2;29110:3;29051:67;:::i;:::-;29044:74;;29127:93;29216:3;29127:93;:::i;:::-;29245:2;29240:3;29236:12;29229:19;;28888:366;;;:::o;29260:419::-;29426:4;29464:2;29453:9;29449:18;29441:26;;29513:9;29507:4;29503:20;29499:1;29488:9;29484:17;29477:47;29541:131;29667:4;29541:131;:::i;:::-;29533:139;;29260:419;;;:::o;29685:172::-;29825:24;29821:1;29813:6;29809:14;29802:48;29685:172;:::o;29863:366::-;30005:3;30026:67;30090:2;30085:3;30026:67;:::i;:::-;30019:74;;30102:93;30191:3;30102:93;:::i;:::-;30220:2;30215:3;30211:12;30204:19;;29863:366;;;:::o;30235:419::-;30401:4;30439:2;30428:9;30424:18;30416:26;;30488:9;30482:4;30478:20;30474:1;30463:9;30459:17;30452:47;30516:131;30642:4;30516:131;:::i;:::-;30508:139;;30235:419;;;:::o;30660:241::-;30800:34;30796:1;30788:6;30784:14;30777:58;30869:24;30864:2;30856:6;30852:15;30845:49;30660:241;:::o;30907:366::-;31049:3;31070:67;31134:2;31129:3;31070:67;:::i;:::-;31063:74;;31146:93;31235:3;31146:93;:::i;:::-;31264:2;31259:3;31255:12;31248:19;;30907:366;;;:::o;31279:419::-;31445:4;31483:2;31472:9;31468:18;31460:26;;31532:9;31526:4;31522:20;31518:1;31507:9;31503:17;31496:47;31560:131;31686:4;31560:131;:::i;:::-;31552:139;;31279:419;;;:::o;31704:169::-;31844:21;31840:1;31832:6;31828:14;31821:45;31704:169;:::o;31879:366::-;32021:3;32042:67;32106:2;32101:3;32042:67;:::i;:::-;32035:74;;32118:93;32207:3;32118:93;:::i;:::-;32236:2;32231:3;32227:12;32220:19;;31879:366;;;:::o;32251:419::-;32417:4;32455:2;32444:9;32440:18;32432:26;;32504:9;32498:4;32494:20;32490:1;32479:9;32475:17;32468:47;32532:131;32658:4;32532:131;:::i;:::-;32524:139;;32251:419;;;:::o;32676:248::-;32816:34;32812:1;32804:6;32800:14;32793:58;32885:31;32880:2;32872:6;32868:15;32861:56;32676:248;:::o;32930:366::-;33072:3;33093:67;33157:2;33152:3;33093:67;:::i;:::-;33086:74;;33169:93;33258:3;33169:93;:::i;:::-;33287:2;33282:3;33278:12;33271:19;;32930:366;;;:::o;33302:419::-;33468:4;33506:2;33495:9;33491:18;33483:26;;33555:9;33549:4;33545:20;33541:1;33530:9;33526:17;33519:47;33583:131;33709:4;33583:131;:::i;:::-;33575:139;;33302:419;;;:::o;33727:194::-;33767:4;33787:20;33805:1;33787:20;:::i;:::-;33782:25;;33821:20;33839:1;33821:20;:::i;:::-;33816:25;;33865:1;33862;33858:9;33850:17;;33889:1;33883:4;33880:11;33877:37;;;33894:18;;:::i;:::-;33877:37;33727:194;;;;:::o;33927:220::-;34067:34;34063:1;34055:6;34051:14;34044:58;34136:3;34131:2;34123:6;34119:15;34112:28;33927:220;:::o;34153:366::-;34295:3;34316:67;34380:2;34375:3;34316:67;:::i;:::-;34309:74;;34392:93;34481:3;34392:93;:::i;:::-;34510:2;34505:3;34501:12;34494:19;;34153:366;;;:::o;34525:419::-;34691:4;34729:2;34718:9;34714:18;34706:26;;34778:9;34772:4;34768:20;34764:1;34753:9;34749:17;34742:47;34806:131;34932:4;34806:131;:::i;:::-;34798:139;;34525:419;;;:::o;34950:147::-;35051:11;35088:3;35073:18;;34950:147;;;;:::o;35103:114::-;;:::o;35223:398::-;35382:3;35403:83;35484:1;35479:3;35403:83;:::i;:::-;35396:90;;35495:93;35584:3;35495:93;:::i;:::-;35613:1;35608:3;35604:11;35597:18;;35223:398;;;:::o;35627:379::-;35811:3;35833:147;35976:3;35833:147;:::i;:::-;35826:154;;35997:3;35990:10;;35627:379;;;:::o;36012:442::-;36161:4;36199:2;36188:9;36184:18;36176:26;;36212:71;36280:1;36269:9;36265:17;36256:6;36212:71;:::i;:::-;36293:72;36361:2;36350:9;36346:18;36337:6;36293:72;:::i;:::-;36375;36443:2;36432:9;36428:18;36419:6;36375:72;:::i;:::-;36012:442;;;;;;:::o;36460:180::-;36508:77;36505:1;36498:88;36605:4;36602:1;36595:15;36629:4;36626:1;36619:15;36646:143;36703:5;36734:6;36728:13;36719:22;;36750:33;36777:5;36750:33;:::i;:::-;36646:143;;;;:::o;36795:351::-;36865:6;36914:2;36902:9;36893:7;36889:23;36885:32;36882:119;;;36920:79;;:::i;:::-;36882:119;37040:1;37065:64;37121:7;37112:6;37101:9;37097:22;37065:64;:::i;:::-;37055:74;;37011:128;36795:351;;;;:::o;37152:85::-;37197:7;37226:5;37215:16;;37152:85;;;:::o;37243:158::-;37301:9;37334:61;37352:42;37361:32;37387:5;37361:32;:::i;:::-;37352:42;:::i;:::-;37334:61;:::i;:::-;37321:74;;37243:158;;;:::o;37407:147::-;37502:45;37541:5;37502:45;:::i;:::-;37497:3;37490:58;37407:147;;:::o;37560:114::-;37627:6;37661:5;37655:12;37645:22;;37560:114;;;:::o;37680:184::-;37779:11;37813:6;37808:3;37801:19;37853:4;37848:3;37844:14;37829:29;;37680:184;;;;:::o;37870:132::-;37937:4;37960:3;37952:11;;37990:4;37985:3;37981:14;37973:22;;37870:132;;;:::o;38008:108::-;38085:24;38103:5;38085:24;:::i;:::-;38080:3;38073:37;38008:108;;:::o;38122:179::-;38191:10;38212:46;38254:3;38246:6;38212:46;:::i;:::-;38290:4;38285:3;38281:14;38267:28;;38122:179;;;;:::o;38307:113::-;38377:4;38409;38404:3;38400:14;38392:22;;38307:113;;;:::o;38456:732::-;38575:3;38604:54;38652:5;38604:54;:::i;:::-;38674:86;38753:6;38748:3;38674:86;:::i;:::-;38667:93;;38784:56;38834:5;38784:56;:::i;:::-;38863:7;38894:1;38879:284;38904:6;38901:1;38898:13;38879:284;;;38980:6;38974:13;39007:63;39066:3;39051:13;39007:63;:::i;:::-;39000:70;;39093:60;39146:6;39093:60;:::i;:::-;39083:70;;38939:224;38926:1;38923;38919:9;38914:14;;38879:284;;;38883:14;39179:3;39172:10;;38580:608;;;38456:732;;;;:::o;39194:831::-;39457:4;39495:3;39484:9;39480:19;39472:27;;39509:71;39577:1;39566:9;39562:17;39553:6;39509:71;:::i;:::-;39590:80;39666:2;39655:9;39651:18;39642:6;39590:80;:::i;:::-;39717:9;39711:4;39707:20;39702:2;39691:9;39687:18;39680:48;39745:108;39848:4;39839:6;39745:108;:::i;:::-;39737:116;;39863:72;39931:2;39920:9;39916:18;39907:6;39863:72;:::i;:::-;39945:73;40013:3;40002:9;39998:19;39989:6;39945:73;:::i;:::-;39194:831;;;;;;;;:::o;40031:807::-;40280:4;40318:3;40307:9;40303:19;40295:27;;40332:71;40400:1;40389:9;40385:17;40376:6;40332:71;:::i;:::-;40413:72;40481:2;40470:9;40466:18;40457:6;40413:72;:::i;:::-;40495:80;40571:2;40560:9;40556:18;40547:6;40495:80;:::i;:::-;40585;40661:2;40650:9;40646:18;40637:6;40585:80;:::i;:::-;40675:73;40743:3;40732:9;40728:19;40719:6;40675:73;:::i;:::-;40758;40826:3;40815:9;40811:19;40802:6;40758:73;:::i;:::-;40031:807;;;;;;;;;:::o;40844:663::-;40932:6;40940;40948;40997:2;40985:9;40976:7;40972:23;40968:32;40965:119;;;41003:79;;:::i;:::-;40965:119;41123:1;41148:64;41204:7;41195:6;41184:9;41180:22;41148:64;:::i;:::-;41138:74;;41094:128;41261:2;41287:64;41343:7;41334:6;41323:9;41319:22;41287:64;:::i;:::-;41277:74;;41232:129;41400:2;41426:64;41482:7;41473:6;41462:9;41458:22;41426:64;:::i;:::-;41416:74;;41371:129;40844:663;;;;;:::o
Swarm Source
ipfs://17ee57623b876c46d2ee87f1dd51530b938bef4807ac3c27c4b1cda89b1d8582
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.