Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 41 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Swap Back Se... | 15443986 | 875 days ago | IN | 0 ETH | 0.00038207 | ||||
Approve | 15443981 | 875 days ago | IN | 0 ETH | 0.00049664 | ||||
Airdrop | 15443970 | 875 days ago | IN | 0 ETH | 0.0008877 | ||||
Approve | 15443874 | 875 days ago | IN | 0 ETH | 0.00067239 | ||||
Approve | 15443848 | 875 days ago | IN | 0 ETH | 0.00067817 | ||||
Approve | 15443844 | 875 days ago | IN | 0 ETH | 0.00041544 | ||||
Approve | 15443843 | 875 days ago | IN | 0 ETH | 0.00076956 | ||||
Approve | 15443842 | 875 days ago | IN | 0 ETH | 0.00074335 | ||||
Approve | 15443837 | 875 days ago | IN | 0 ETH | 0.00059078 | ||||
Approve | 15443825 | 875 days ago | IN | 0 ETH | 0.00057242 | ||||
Approve | 15443809 | 875 days ago | IN | 0 ETH | 0.00107035 | ||||
Approve | 15443801 | 875 days ago | IN | 0 ETH | 0.00087118 | ||||
Approve | 15443792 | 875 days ago | IN | 0 ETH | 0.00066659 | ||||
Approve | 15443776 | 875 days ago | IN | 0 ETH | 0.00042459 | ||||
Approve | 15443774 | 875 days ago | IN | 0 ETH | 0.00043092 | ||||
Approve | 15443772 | 875 days ago | IN | 0 ETH | 0.00279246 | ||||
Approve | 15443771 | 875 days ago | IN | 0 ETH | 0.0004518 | ||||
Approve | 15443769 | 875 days ago | IN | 0 ETH | 0.00051225 | ||||
Approve | 15443768 | 875 days ago | IN | 0 ETH | 0.00040799 | ||||
Approve | 15443764 | 875 days ago | IN | 0 ETH | 0.00048424 | ||||
Approve | 15443764 | 875 days ago | IN | 0 ETH | 0.00279246 | ||||
Approve | 15443762 | 875 days ago | IN | 0 ETH | 0.00047402 | ||||
Approve | 15443759 | 875 days ago | IN | 0 ETH | 0.00051474 | ||||
Approve | 15443758 | 875 days ago | IN | 0 ETH | 0.00057934 | ||||
Approve | 15443758 | 875 days ago | IN | 0 ETH | 0.00057755 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15443885 | 875 days ago | 0.00350973 ETH | ||||
15443885 | 875 days ago | 0.00350973 ETH | ||||
15443848 | 875 days ago | 0.00551222 ETH | ||||
15443848 | 875 days ago | 0.00551222 ETH | ||||
15443848 | 875 days ago | 0.00551222 ETH | ||||
15443848 | 875 days ago | 0.00551222 ETH | ||||
15443821 | 875 days ago | 0.00783658 ETH | ||||
15443821 | 875 days ago | 0.00783658 ETH | ||||
15443808 | 875 days ago | 0.00581516 ETH | ||||
15443808 | 875 days ago | 0.00581516 ETH | ||||
15443774 | 875 days ago | 0.0049894 ETH | ||||
15443774 | 875 days ago | 0.0049894 ETH | ||||
15443773 | 875 days ago | 0.00580116 ETH | ||||
15443773 | 875 days ago | 0.00580116 ETH | ||||
15443773 | 875 days ago | 0.00660461 ETH | ||||
15443773 | 875 days ago | 0.00660461 ETH | ||||
15443773 | 875 days ago | 0.00689488 ETH | ||||
15443773 | 875 days ago | 0.00689488 ETH | ||||
15443773 | 875 days ago | 0.00794572 ETH | ||||
15443773 | 875 days ago | 0.00794572 ETH | ||||
15443771 | 875 days ago | 0.00907381 ETH | ||||
15443771 | 875 days ago | 0.00907381 ETH | ||||
15443765 | 875 days ago | 0.00946427 ETH | ||||
15443765 | 875 days ago | 0.00946427 ETH | ||||
15443755 | 875 days ago | 0.00554475 ETH |
Loading...
Loading
Contract Name:
Immortal
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-31 */ /** $IMMORTAL. There's not a better word to describe this token. Lp will be locked 1 month after launch. 2 months at 200K. 3 months at 300K. 4 months at 400K. 5 months at 500K. And so on each +100K. I will renounce the ownership after lowering sell tax to 1%. It will be 90% at the moment of launch. $Immortal. The higher it goes, the longer LP will be locked for. I have the connections and the competences to list this on major platforms. Allow me to. The first medium will unlock at 500K cap. That's when the first $Immortal upgrade will happen. Do not fade, you common mortal. $Immortal is here to stay. */ //SPDX-License-Identifier: MIT pragma solidity ^0.7.4; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 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; } } /** * BEP20 standard interface. */ interface IBEP20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * Allows for contract ownership along with multi-address authorization */ abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } /** * Authorize address. Owner only */ function authorize(address adr) public onlyOwner { authorizations[adr] = true; } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address' authorization status */ function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { 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 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; } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IBEP20 MATIC = IBEP20(0xdAC17F958D2ee523a2206206994597C13D831ec7); //the reward token you want distributed address WBNB = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; //SETMEUP, change this to 1 hour instead of 10mins uint256 public minPeriod = 45 minutes; uint256 public minDistribution = 1 * (10 ** 18); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _token = msg.sender; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 balanceBefore = MATIC.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WBNB; path[1] = address(MATIC); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = MATIC.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); MATIC.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract Immortal is IBEP20, Auth { using SafeMath for uint256; address MATIC = 0xdAC17F958D2ee523a2206206994597C13D831ec7; //Input the token address of whatever your reward is. leave 431,432,433 as is. address WBNB = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "$IMMORTAL"; //name of your token here. 436 is symbol, leave decimals as is. if you want to change decimals, then you need to make sure the math works out with the rest of the code since everywhere else the code is written with assumption of 4 decimals string constant _symbol = "IMMO"; uint8 constant _decimals = 4; uint256 _totalSupply = 1 * 10**9 * (10 ** _decimals); uint256 public _maxTxAmount = _totalSupply * 5 / 100; bool public blacklistMode = true; mapping (address => bool) public isBlacklisted; //max wallet holding of 4% uint256 public _maxWalletToken = ( _totalSupply * 5 ) / 100; // 2 is the percentage of max wallet. if you want smaller or bigger max wallets justa djust 3. mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isMaxWalletExempt; mapping (address => bool) isTimelockExempt; mapping (address => bool) isDividendExempt; uint256 liquidityFee = 0; //fees. uint256 reflectionFee = 0; uint256 marketingFee = 1; uint256 public totalFee = 1; uint256 public sellBias = 89; uint256 feeDenominator = 100; address public autoLiquidityReceiver; address public marketingFeeReceiver; address public lockedPool; address public unlockedPool; uint256 targetLiquidity = 99; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; uint256 public launchedAt; DividendDistributor distributor; uint256 distributorGas = 100000; // Cooldown & timer functionality bool public buyCooldownEnabled = false; uint8 public cooldownTimerInterval = 30; //this is in seconds. mapping (address => uint) private cooldownTimer; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 10 / 10000; // will start swapping once 0.01% of supply is in the swap wallet bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pair = IDEXFactory(router.factory()).createPair(WBNB, address(this)); _allowances[address(this)][address(router)] = uint256(-1); distributor = new DividendDistributor(address(router)); isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isMaxWalletExempt[msg.sender] = true; // No timelock for these people isTimelockExempt[msg.sender] = true; isTimelockExempt[DEAD] = true; isTimelockExempt[address(this)] = true; // TO DO, manually whitelist this //isFeeExempt[_presaleContract] = true; //isTxLimitExempt[_presaleContract] = true; //isDividendExempt[_presaleContract] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; // NICE! autoLiquidityReceiver = 0x4A203E5522D6E32EcDBA4E57ee5e07DAdDeC5C4C; marketingFeeReceiver = 0x4A203E5522D6E32EcDBA4E57ee5e07DAdDeC5C4C; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, uint256(-1)); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != uint256(-1)){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } //settting the maximum permitted wallet holding (percent of total supply) function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() { _maxWalletToken = (_totalSupply * maxWallPercent ) / 100; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } // max wallet code if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver && !isMaxWalletExempt[recipient] && !isMaxWalletExempt[sender]){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");} // cooldown timer, so a bot doesnt do quick trades! 1min gap between 2 trades. if (sender == pair && buyCooldownEnabled && !isTimelockExempt[recipient]) { require(cooldownTimer[recipient] < block.timestamp,"Please wait for cooldown between buys"); cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval; } // Blacklist if(blacklistMode){ require(!isBlacklisted[sender],"Blacklisted"); } // Checks max transaction limit checkTxLimit(sender, recipient, amount); // Liquidity, Maintained at 25% if(lockedPool != recipient && lockedPool != sender && unlockedPool != recipient && unlockedPool != sender) { if(shouldSwapBack()){ swapBack(); } } //Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); // Dividend tracker if(!isDividendExempt[sender]) { try distributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]) { try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, address recipient, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded"); } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !(isFeeExempt[sender] || isFeeExempt[recipient]); } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount = (sender != pair ? amount.mul(totalFee.add(sellBias)).div(feeDenominator) : amount.mul(totalFee).div(feeDenominator)); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function clearStuckBalance(uint256 amountPercentage) external onlyOwner { uint256 amountBNB = address(this).balance; payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100); } // enable cooldown between trades function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner { buyCooldownEnabled = _status; cooldownTimerInterval = _interval; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WBNB; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountBNB = address(this).balance.sub(balanceBefore); uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2); uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee); uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee); try distributor.deposit{value: amountBNBReflection}() {} catch {} (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}(""); // only to supress warning msg tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } } function setTxLimit(uint256 amount) external authorized { _maxTxAmount = amount; } function setIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function enable_blacklist(bool _status) public onlyOwner { blacklistMode = _status; } function manage_blacklist(address[] calldata addresses, bool status) external authorized { for (uint256 i; i < addresses.length; ++i) { isBlacklisted[addresses[i]] = status; } } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function setIsMaxWalletExempt(address holder, bool exempt) external authorized { isMaxWalletExempt[holder] = exempt; } function setIsTimelockExempt(address holder, bool exempt) external authorized { isTimelockExempt[holder] = exempt; } function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator, uint256 _sellBias) external authorized { liquidityFee = _liquidityFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; sellBias = _sellBias; totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; } function setStakingPools(address _lockedPool, address _unlockedPool) external authorized { lockedPool = _lockedPool; unlockedPool = _unlockedPool; } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } /* Airdrop Begins */ function airdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner { uint256 SCCC = 0; require(addresses.length == tokens.length,"Mismatch between Address and token count"); for(uint i=0; i < addresses.length; i++){ SCCC = SCCC + tokens[i]; } require(balanceOf(from) >= SCCC, "Not enough tokens to airdrop"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens[i]); if(!isDividendExempt[addresses[i]]) { try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} } } // Dividend tracker if(!isDividendExempt[from]) { try distributor.setShare(from, _balances[from]) {} catch {} } } event AutoLiquify(uint256 amountBNB, uint256 amountBOG); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockedPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBias","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_sellBias","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lockedPool","type":"address"},{"internalType":"address","name":"_unlockedPool","type":"address"}],"name":"setStakingPools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockedPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405273dac17f958d2ee523a2206206994597c13d831ec7600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460ff16600a0a633b9aca00026006556064600560065402816200015457fe5b046007556001600860006101000a81548160ff0219169083151502179055506064600560065402816200018357fe5b04600a556000601255600060135560016014556001601555605960165560646017556063601c556064601d55620186a06022556000602360006101000a81548160ff021916908315150217905550601e602360016101000a81548160ff021916908360ff1602179055506001602560006101000a81548160ff021916908315150217905550612710600a60065402816200021957fe5b046026553480156200022a57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038257600080fd5b505afa15801562000397573d6000803e3d6000fd5b505050506040513d6020811015620003ae57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200046857600080fd5b505af11580156200047d573d6000803e3d6000fd5b505050506040513d60208110156200049457600080fd5b8101908080519060200190929190505050601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005d99062000b33565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000616573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550734a203e5522d6e32ecdba4e57ee5e07daddec5c4c601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734a203e5522d6e32ecdba4e57ee5e07daddec5c4c601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000b41565b6119d18062005dae83390190565b61525d8062000b516000396000f3fe6080604052600436106103545760003560e01c80637d1db4a5116101c6578063bf56b371116100f7578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14611393578063f887ea40146113f0578063fe575a8714611431578063fe9fbb80146114985761035b565b8063f0b37c0414611294578063f2fde38b146112e5578063f708a64f146113365761035b565b8063d51ed1c8116100d1578063d51ed1c814611138578063dd62ed3e14611187578063df20fd491461120c578063e96fada2146112535761035b565b8063bf56b3711461106f578063c04a78ad1461109a578063ca33e64c146110f75761035b565b806395d89b4111610164578063a4b45c001161013e578063a4b45c0014610efb578063a8aa1b3114610f6c578063a9059cbb14610fad578063b6a5d7de1461101e5761035b565b806395d89b4114610e055780639d1944f514610e95578063a317234014610ed05761035b565b8063893d20e8116101a0578063893d20e814610c94578063896648c114610cd55780638e2eee8414610d025780638e56b2ca14610d945761035b565b80637d1db4a514610bed5780637d3c0c6514610c1857806382bf293c14610c595761035b565b80632d594567116102a0578063617fe0ed1161023e5780636ddd1713116102185780636ddd171314610b0257806370a0823114610b2f578063722b62ad14610b9457806378109e5414610bc25761035b565b8063617fe0ed14610a37578063658d4b7f14610a64578063693eb77714610ac15761035b565b806350db71fb1161027a57806350db71fb146108fb578063571ac8b0146109585780635c85974f146109bf5780635e562f3b146109fa5761035b565b80632d5945671461081c5780632f54bf6e14610866578063313ce567146108cd5761035b565b806318160ddd1161030d578063201e7991116102e7578063201e7991146106d657806323b872dd1461071b5780632b112e49146107ac5780632d48e896146107d75761035b565b806318160ddd146106455780631da1db5e146106705780631df4ccfc146106ab5761035b565b8063025ff12f146103605780630445b6671461045b57806304a66b481461048657806306fdde03146104e9578063095ea7b3146105795780631161ae39146105ea5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b506104596004803603606081101561038357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156103c057600080fd5b8201836020820111156103d257600080fd5b803590602001918460208302840111640100000000831117156103f457600080fd5b90919293919293908035906020019064010000000081111561041557600080fd5b82018360208201111561042757600080fd5b8035906020019184602083028401116401000000008311171561044957600080fd5b90919293919293905050506114ff565b005b34801561046757600080fd5b506104706119eb565b6040518082815260200191505060405180910390f35b34801561049257600080fd5b506104e7600480360360a08110156104a957600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506119f1565b005b3480156104f557600080fd5b506104fe611ad1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561053e578082015181840152602081019050610523565b50505050905090810190601f16801561056b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561058557600080fd5b506105d26004803603604081101561059c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b0e565b60405180821515815260200191505060405180910390f35b3480156105f657600080fd5b5061062d6004803603604081101561060d57600080fd5b810190808035906020019092919080359060200190929190505050611c00565b60405180821515815260200191505060405180910390f35b34801561065157600080fd5b5061065a611c15565b6040518082815260200191505060405180910390f35b34801561067c57600080fd5b506106a96004803603602081101561069357600080fd5b8101908080359060200190929190505050611c1f565b005b3480156106b757600080fd5b506106c0611d18565b6040518082815260200191505060405180910390f35b3480156106e257600080fd5b50610719600480360360408110156106f957600080fd5b810190808035906020019092919080359060200190929190505050611d1e565b005b34801561072757600080fd5b506107946004803603606081101561073e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dab565b60405180821515815260200191505060405180910390f35b3480156107b857600080fd5b506107c1611fab565b6040518082815260200191505060405180910390f35b3480156107e357600080fd5b5061081a600480360360408110156107fa57600080fd5b81019080803590602001909291908035906020019092919050505061202d565b005b34801561082857600080fd5b506108646004803603604081101561083f57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050612141565b005b34801561087257600080fd5b506108b56004803603602081101561088957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f5565b60405180821515815260200191505060405180910390f35b3480156108d957600080fd5b506108e261224e565b604051808260ff16815260200191505060405180910390f35b34801561090757600080fd5b506109566004803603604081101561091e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612257565b005b34801561096457600080fd5b506109a76004803603602081101561097b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061232d565b60405180821515815260200191505060405180910390f35b3480156109cb57600080fd5b506109f8600480360360208110156109e257600080fd5b8101908080359060200190929190505050612360565b005b348015610a0657600080fd5b50610a3560048036036020811015610a1d57600080fd5b810190808035151590602001909291905050506123e5565b005b348015610a4357600080fd5b50610a4c61247d565b60405180821515815260200191505060405180910390f35b348015610a7057600080fd5b50610abf60048036036040811015610a8757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612490565b005b348015610acd57600080fd5b50610ad6612566565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b0e57600080fd5b50610b1761258c565b60405180821515815260200191505060405180910390f35b348015610b3b57600080fd5b50610b7e60048036036020811015610b5257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061259f565b6040518082815260200191505060405180910390f35b348015610ba057600080fd5b50610ba96125e8565b604051808260ff16815260200191505060405180910390f35b348015610bce57600080fd5b50610bd76125fb565b6040518082815260200191505060405180910390f35b348015610bf957600080fd5b50610c02612601565b6040518082815260200191505060405180910390f35b348015610c2457600080fd5b50610c2d612607565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6557600080fd5b50610c9260048036036020811015610c7c57600080fd5b810190808035906020019092919050505061262d565b005b348015610ca057600080fd5b50610ca96126c0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ce157600080fd5b50610cea6126e9565b60405180821515815260200191505060405180910390f35b348015610d0e57600080fd5b50610d9260048036036040811015610d2557600080fd5b8101908080359060200190640100000000811115610d4257600080fd5b820183602082011115610d5457600080fd5b80359060200191846020830284011164010000000083111715610d7657600080fd5b90919293919293908035151590602001909291905050506126fc565b005b348015610da057600080fd5b50610e0360048036036040811015610db757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612815565b005b348015610e1157600080fd5b50610e1a612916565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e5a578082015181840152602081019050610e3f565b50505050905090810190601f168015610e875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ea157600080fd5b50610ece60048036036020811015610eb857600080fd5b8101908080359060200190929190505050612953565b005b348015610edc57600080fd5b50610ee56129e7565b6040518082815260200191505060405180910390f35b348015610f0757600080fd5b50610f6a60048036036040811015610f1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ed565b005b348015610f7857600080fd5b50610f81612aee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fb957600080fd5b5061100660048036036040811015610fd057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b14565b60405180821515815260200191505060405180910390f35b34801561102a57600080fd5b5061106d6004803603602081101561104157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b29565b005b34801561107b57600080fd5b50611084612bfe565b6040518082815260200191505060405180910390f35b3480156110a657600080fd5b506110f5600480360360408110156110bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c04565b005b34801561110357600080fd5b5061110c612cda565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561114457600080fd5b506111716004803603602081101561115b57600080fd5b8101908080359060200190929190505050612d00565b6040518082815260200191505060405180910390f35b34801561119357600080fd5b506111f6600480360360408110156111aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d72565b6040518082815260200191505060405180910390f35b34801561121857600080fd5b506112516004803603604081101561122f57600080fd5b8101908080351515906020019092919080359060200190929190505050612df9565b005b34801561125f57600080fd5b50611268612e99565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156112a057600080fd5b506112e3600480360360208110156112b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ebf565b005b3480156112f157600080fd5b506113346004803603602081101561130857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f95565b005b34801561134257600080fd5b506113916004803603604081101561135957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506130f7565b005b34801561139f57600080fd5b506113ee600480360360408110156113b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613402565b005b3480156113fc57600080fd5b506114056134d8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561143d57600080fd5b506114806004803603602081101561145457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134fe565b60405180821515815260200191505060405180910390f35b3480156114a457600080fd5b506114e7600480360360208110156114bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061351e565b60405180821515815260200191505060405180910390f35b611508336121f5565b61157a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008282905085859050146115da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061517c6028913960400191505060405180910390fd5b60005b8585905081101561160c578383828181106115f457fe5b905060200201358201915080806001019150506115dd565b50806116178761259f565b101561168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f700000000081525060200191505060405180910390fd5b60005b858590508110156118a3576116de878787848181106116a957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168686858181106116d257fe5b90506020020135613574565b50601160008787848181106116ef57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661189657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968787848181106117a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600b60008a8a878181106117cf57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561187a57600080fd5b505af192505050801561188b575060015b61189457611895565b5b5b808060010191505061168e565b50601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119e357602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156119c757600080fd5b505af19250505080156119d8575060015b6119e1576119e2565b5b5b505050505050565b60265481565b6119fa3361351e565b611a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b84601281905550836013819055508260148190555080601681905550611aad83611a9f868861374790919063ffffffff16565b61374790919063ffffffff16565b6015819055508160178190555060175460155410611aca57600080fd5b5050505050565b60606040518060400160405280600981526020017f24494d4d4f5254414c0000000000000000000000000000000000000000000000815250905090565b600081600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600082611c0c83612d00565b11905092915050565b6000600654905090565b611c28336121f5565b611c9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484840281611ce757fe5b049081150290604051600060405180830381858888f19350505050158015611d13573d6000803e3d6000fd5b505050565b60155481565b611d273361351e565b611d99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601c8190555080601d819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611f9757611f16826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611fa284848461388f565b90509392505050565b6000612028611fdb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b61201a612009600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b6006546144da90919063ffffffff16565b6144da90919063ffffffff16565b905090565b6120363361351e565b6120a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561212557600080fd5b505af1158015612139573d6000803e3d6000fd5b505050505050565b61214a336121f5565b6121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602360006101000a81548160ff02191690831515021790555080602360016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006004905090565b6122603361351e565b6122d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612359827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b0e565b9050919050565b6123693361351e565b6123db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b6123ee336121f5565b612460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b602360009054906101000a900460ff1681565b6124993361351e565b61250b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602560009054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602360019054906101000a900460ff1681565b600a5481565b60075481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612636336121f5565b6126a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60648160065402816126b657fe5b04600a8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900460ff1681565b6127053361351e565b612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005b8383905081101561280f57816009600086868581811061279657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600101905061277a565b50505050565b61281e3361351e565b612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60606040518060400160405280600481526020017f494d4d4f00000000000000000000000000000000000000000000000000000000815250905090565b61295c3361351e565b6129ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106129dd57600080fd5b8060228190555050565b60165481565b6129f63361351e565b612a68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612b2133848461388f565b905092915050565b612b32336121f5565b612ba4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60205481565b612c0d3361351e565b612c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612d6b612d0d611fab565b612d5d612d4e6002612d40601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b61452490919063ffffffff16565b8561452490919063ffffffff16565b6145aa90919063ffffffff16565b9050919050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612e023361351e565b612e74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602560006101000a81548160ff021916908315150217905550806026819055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ec8336121f5565b612f3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612f9e336121f5565b613010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6131003361351e565b613172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131fc5750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61320557600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561331357602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050506133fe565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156133e557600080fd5b505af11580156133f9573d6000803e3d6000fd5b505050505b5050565b61340b3361351e565b61347d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006135ff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369482600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000808284019050838110156137c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600083831115829061387c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613841578082015181840152602081019050613826565b50505050905090810190601f16801561386e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602760009054906101000a900460ff16156138b8576138b1848484613574565b90506144d3565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561393e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156139985750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156139f25750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613a4c5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613aa65750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613afc5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b525750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613bc3576000613b628461259f565b9050600a548382011115613bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001806151ea603e913960400191505060405180910390fd5b505b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015613c2c5750602360009054906101000a900460ff165b8015613c825750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d775742602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806151a46025913960400191505060405180910390fd5b602360019054906101000a900460ff1660ff164201602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600860009054906101000a900460ff1615613e4d57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f426c61636b6c697374656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b613e588484846145f4565b8273ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613f0457508373ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015613f5e57508273ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015613fb857508373ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15613fd457613fc5614719565b15613fd357613fd26147f0565b5b5b61405d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006140ac8585614e2c565b6140b657826140c1565b6140c08584614ed8565b5b905061411581600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661429757602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561427b57600080fd5b505af192505050801561428c575060015b61429557614296565b5b5b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166143d657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156143ba57600080fd5b505af19250505080156143cb575060015b6143d4576143d5565b5b5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796022546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561444d57600080fd5b505af192505050801561445e575060015b61446757614468565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b600061451c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506137cf565b905092915050565b60008083141561453757600090506145a4565b600082840290508284828161454857fe5b041461459f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806151c96021913960400191505060405180910390fd5b809150505b92915050565b60006145ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506150b5565b905092915050565b6007548111158061464e5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806146a25750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614714576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b505050565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156147865750602760009054906101000a900460ff16155b801561479e5750602560009054906101000a900460ff165b80156147eb5750602654600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602760006101000a81548160ff021916908315150217905550600061481b601c54601d54611c00565b6148275760125461482a565b60005b9050600061486a600261485c60155461484e8660265461452490919063ffffffff16565b6145aa90919063ffffffff16565b6145aa90919063ffffffff16565b90506000614883826026546144da90919063ffffffff16565b90506060600267ffffffffffffffff8111801561489f57600080fd5b506040519080825280602002602001820160405280156148ce5781602001602082028036833780820191505090505b50905030816000815181106148df57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061494957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614a4c578082015181840152602081019050614a31565b505050509050019650505050505050600060405180830381600087803b158015614a7557600080fd5b505af1158015614a89573d6000803e3d6000fd5b505050506000614aa282476144da90919063ffffffff16565b90506000614ace614abd6002896145aa90919063ffffffff16565b6015546144da90919063ffffffff16565b90506000614b0a6002614afc84614aee8c8861452490919063ffffffff16565b6145aa90919063ffffffff16565b6145aa90919063ffffffff16565b90506000614b3583614b276013548761452490919063ffffffff16565b6145aa90919063ffffffff16565b90506000614b6084614b526014548861452490919063ffffffff16565b6145aa90919063ffffffff16565b9050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015614bcc57600080fd5b505af193505050508015614bde575060015b614be757614be8565b5b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d8060008114614c6f576040519150601f19603f3d011682016040523d82523d6000602084013e614c74565b606091505b505090506000905060008a1115614e0457601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015614d7157600080fd5b505af1158015614d85573d6000803e3d6000fd5b50505050506040513d6060811015614d9c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051808381526020018281526020019250505060405180910390a15b50505050505050505050506000602760006101000a81548160ff021916908315150217905550565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614ecf5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b600080601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614f5f57614f5a601754614f4c6015548661452490919063ffffffff16565b6145aa90919063ffffffff16565b614f9d565b614f9c601754614f8e614f7f60165460155461374790919063ffffffff16565b8661452490919063ffffffff16565b6145aa90919063ffffffff16565b5b9050614ff181600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36150ac81846144da90919063ffffffff16565b91505092915050565b60008083118290615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561512657808201518184015260208101905061510b565b50505050905090810190601f1680156151535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161516d57fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220636f6f6c646f776e206265747765656e2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea2646970667358221220dd60d80a35af25409b4212fdaf87522c00b7895009cf43d6996db65d56ec76c064736f6c63430007040033608060405273dac17f958d2ee523a2206206994597c13d831ec7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610a8c600d55670de0b6b3a7640000600e553480156100df57600080fd5b506040516119d13803806119d18339818101604052602081101561010257600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561016257737a250d5630b4cf539739df2c5dacb4c659f2488d610164565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506117dd806101f46000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461033b578063f0fc6bca14610366578063ffb2c4791461037d578063ffd49c84146103b8576100dd565b8063ce7c2ac214610293578063d0e30db014610306578063e2d2e21914610310576100dd565b80632d48e896116100bb5780632d48e896146101cd5780633a98ef39146102125780634fab0ae81461023d578063997664d714610268576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610168575b600080fd5b3480156100ee57600080fd5b506100f76103e3565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101666004803603604081101561013057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103e9565b005b34801561017457600080fd5b506101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a8565b6040518082815260200191505060405180910390f35b3480156101d957600080fd5b50610210600480360360408110156101f057600080fd5b8101908080359060200190929190803590602001909291905050506107c2565b005b34801561021e57600080fd5b5061022761082c565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b50610252610832565b6040518082815260200191505060405180910390f35b34801561027457600080fd5b5061027d610838565b6040518082815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b60405180848152602001838152602001828152602001935050505060405180910390f35b61030e610868565b005b34801561031c57600080fd5b50610325610ce3565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b50610350610ce9565b6040518082815260200191505060405180910390f35b34801561037257600080fd5b5061037b610cef565b005b34801561038957600080fd5b506103b6600480360360208110156103a057600080fd5b8101908080359060200190929190505050610cfa565b005b3480156103c457600080fd5b506103cd610e74565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104965761049582610e7a565b5b6000811180156104e857506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104fb576104f682611140565b61055d565b60008114801561054d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561055c5761055b826111ef565b5b5b6105c6816105b8600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546113c890919063ffffffff16565b61141290919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061065e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fd57600090506107bd565b600061074a600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a5576000925050506107bd565b6107b881836113c890919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c057600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b810190808051906020019092919050505090506060600267ffffffffffffffff811180156109a257600080fd5b506040519080825280602002602001820160405280156109d15781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610a0457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a6e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610b66578082015181840152602081019050610b4b565b50505050905001955050505050506000604051808303818588803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b50505050506000610c7e83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c3557600080fd5b505afa158015610c49573d6000803e3d6000fd5b505050506040513d6020811015610c5f57600080fd5b81019080805190602001909291905050506113c890919063ffffffff16565b9050610c958160095461141290919063ffffffff16565b600981905550610cd8610cc7600854610cb984600c546114cc90919063ffffffff16565b61155290919063ffffffff16565b600b5461141290919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610cf833610e7a565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5257600080fd5b600060048054905090506000811415610d6b5750610e71565b6000805a905060005b8483108015610d8257508381105b15610e6c5783600f5410610d99576000600f819055505b610ddb6004600f5481548110610dab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661159c565b15610e2357610e226004600f5481548110610df257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e7a565b5b610e48610e395a846113c890919063ffffffff16565b8461141290919063ffffffff16565b92505a9150600f600081548092919060010191905055508080600101915050610d74565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610eca5761113d565b6000610ed5826106a8565b9050600081111561113b57610ef581600a5461141290919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061106381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461141290919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506110f4600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050038154811061120457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061127b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061131c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061139057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061140a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611600565b905092915050565b600080828401905083811015611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006114c5600c546114b7600b54856114cc90919063ffffffff16565b61155290919063ffffffff16565b9050919050565b6000808314156114df576000905061154c565b60008284029050828482816114f057fe5b0414611547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117876021913960400191505060405180910390fd5b809150505b92915050565b600061159483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116c0565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156115f95750600e546115f7836106a8565b115b9050919050565b60008383111582906116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611672578082015181840152602081019050611657565b50505050905090810190601f16801561169f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808311829061176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611731578082015181840152602081019050611716565b50505050905090810190601f16801561175e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161177857fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212200c91d2eb4262ee9bec2e8952e19537685bfcc88f5f494c0f2988901ca23a2df664736f6c63430007040033
Deployed Bytecode
0x6080604052600436106103545760003560e01c80637d1db4a5116101c6578063bf56b371116100f7578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14611393578063f887ea40146113f0578063fe575a8714611431578063fe9fbb80146114985761035b565b8063f0b37c0414611294578063f2fde38b146112e5578063f708a64f146113365761035b565b8063d51ed1c8116100d1578063d51ed1c814611138578063dd62ed3e14611187578063df20fd491461120c578063e96fada2146112535761035b565b8063bf56b3711461106f578063c04a78ad1461109a578063ca33e64c146110f75761035b565b806395d89b4111610164578063a4b45c001161013e578063a4b45c0014610efb578063a8aa1b3114610f6c578063a9059cbb14610fad578063b6a5d7de1461101e5761035b565b806395d89b4114610e055780639d1944f514610e95578063a317234014610ed05761035b565b8063893d20e8116101a0578063893d20e814610c94578063896648c114610cd55780638e2eee8414610d025780638e56b2ca14610d945761035b565b80637d1db4a514610bed5780637d3c0c6514610c1857806382bf293c14610c595761035b565b80632d594567116102a0578063617fe0ed1161023e5780636ddd1713116102185780636ddd171314610b0257806370a0823114610b2f578063722b62ad14610b9457806378109e5414610bc25761035b565b8063617fe0ed14610a37578063658d4b7f14610a64578063693eb77714610ac15761035b565b806350db71fb1161027a57806350db71fb146108fb578063571ac8b0146109585780635c85974f146109bf5780635e562f3b146109fa5761035b565b80632d5945671461081c5780632f54bf6e14610866578063313ce567146108cd5761035b565b806318160ddd1161030d578063201e7991116102e7578063201e7991146106d657806323b872dd1461071b5780632b112e49146107ac5780632d48e896146107d75761035b565b806318160ddd146106455780631da1db5e146106705780631df4ccfc146106ab5761035b565b8063025ff12f146103605780630445b6671461045b57806304a66b481461048657806306fdde03146104e9578063095ea7b3146105795780631161ae39146105ea5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b506104596004803603606081101561038357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156103c057600080fd5b8201836020820111156103d257600080fd5b803590602001918460208302840111640100000000831117156103f457600080fd5b90919293919293908035906020019064010000000081111561041557600080fd5b82018360208201111561042757600080fd5b8035906020019184602083028401116401000000008311171561044957600080fd5b90919293919293905050506114ff565b005b34801561046757600080fd5b506104706119eb565b6040518082815260200191505060405180910390f35b34801561049257600080fd5b506104e7600480360360a08110156104a957600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506119f1565b005b3480156104f557600080fd5b506104fe611ad1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561053e578082015181840152602081019050610523565b50505050905090810190601f16801561056b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561058557600080fd5b506105d26004803603604081101561059c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b0e565b60405180821515815260200191505060405180910390f35b3480156105f657600080fd5b5061062d6004803603604081101561060d57600080fd5b810190808035906020019092919080359060200190929190505050611c00565b60405180821515815260200191505060405180910390f35b34801561065157600080fd5b5061065a611c15565b6040518082815260200191505060405180910390f35b34801561067c57600080fd5b506106a96004803603602081101561069357600080fd5b8101908080359060200190929190505050611c1f565b005b3480156106b757600080fd5b506106c0611d18565b6040518082815260200191505060405180910390f35b3480156106e257600080fd5b50610719600480360360408110156106f957600080fd5b810190808035906020019092919080359060200190929190505050611d1e565b005b34801561072757600080fd5b506107946004803603606081101561073e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dab565b60405180821515815260200191505060405180910390f35b3480156107b857600080fd5b506107c1611fab565b6040518082815260200191505060405180910390f35b3480156107e357600080fd5b5061081a600480360360408110156107fa57600080fd5b81019080803590602001909291908035906020019092919050505061202d565b005b34801561082857600080fd5b506108646004803603604081101561083f57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050612141565b005b34801561087257600080fd5b506108b56004803603602081101561088957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f5565b60405180821515815260200191505060405180910390f35b3480156108d957600080fd5b506108e261224e565b604051808260ff16815260200191505060405180910390f35b34801561090757600080fd5b506109566004803603604081101561091e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612257565b005b34801561096457600080fd5b506109a76004803603602081101561097b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061232d565b60405180821515815260200191505060405180910390f35b3480156109cb57600080fd5b506109f8600480360360208110156109e257600080fd5b8101908080359060200190929190505050612360565b005b348015610a0657600080fd5b50610a3560048036036020811015610a1d57600080fd5b810190808035151590602001909291905050506123e5565b005b348015610a4357600080fd5b50610a4c61247d565b60405180821515815260200191505060405180910390f35b348015610a7057600080fd5b50610abf60048036036040811015610a8757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612490565b005b348015610acd57600080fd5b50610ad6612566565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b0e57600080fd5b50610b1761258c565b60405180821515815260200191505060405180910390f35b348015610b3b57600080fd5b50610b7e60048036036020811015610b5257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061259f565b6040518082815260200191505060405180910390f35b348015610ba057600080fd5b50610ba96125e8565b604051808260ff16815260200191505060405180910390f35b348015610bce57600080fd5b50610bd76125fb565b6040518082815260200191505060405180910390f35b348015610bf957600080fd5b50610c02612601565b6040518082815260200191505060405180910390f35b348015610c2457600080fd5b50610c2d612607565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6557600080fd5b50610c9260048036036020811015610c7c57600080fd5b810190808035906020019092919050505061262d565b005b348015610ca057600080fd5b50610ca96126c0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ce157600080fd5b50610cea6126e9565b60405180821515815260200191505060405180910390f35b348015610d0e57600080fd5b50610d9260048036036040811015610d2557600080fd5b8101908080359060200190640100000000811115610d4257600080fd5b820183602082011115610d5457600080fd5b80359060200191846020830284011164010000000083111715610d7657600080fd5b90919293919293908035151590602001909291905050506126fc565b005b348015610da057600080fd5b50610e0360048036036040811015610db757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612815565b005b348015610e1157600080fd5b50610e1a612916565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e5a578082015181840152602081019050610e3f565b50505050905090810190601f168015610e875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ea157600080fd5b50610ece60048036036020811015610eb857600080fd5b8101908080359060200190929190505050612953565b005b348015610edc57600080fd5b50610ee56129e7565b6040518082815260200191505060405180910390f35b348015610f0757600080fd5b50610f6a60048036036040811015610f1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ed565b005b348015610f7857600080fd5b50610f81612aee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fb957600080fd5b5061100660048036036040811015610fd057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b14565b60405180821515815260200191505060405180910390f35b34801561102a57600080fd5b5061106d6004803603602081101561104157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b29565b005b34801561107b57600080fd5b50611084612bfe565b6040518082815260200191505060405180910390f35b3480156110a657600080fd5b506110f5600480360360408110156110bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c04565b005b34801561110357600080fd5b5061110c612cda565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561114457600080fd5b506111716004803603602081101561115b57600080fd5b8101908080359060200190929190505050612d00565b6040518082815260200191505060405180910390f35b34801561119357600080fd5b506111f6600480360360408110156111aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d72565b6040518082815260200191505060405180910390f35b34801561121857600080fd5b506112516004803603604081101561122f57600080fd5b8101908080351515906020019092919080359060200190929190505050612df9565b005b34801561125f57600080fd5b50611268612e99565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156112a057600080fd5b506112e3600480360360208110156112b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ebf565b005b3480156112f157600080fd5b506113346004803603602081101561130857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f95565b005b34801561134257600080fd5b506113916004803603604081101561135957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506130f7565b005b34801561139f57600080fd5b506113ee600480360360408110156113b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613402565b005b3480156113fc57600080fd5b506114056134d8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561143d57600080fd5b506114806004803603602081101561145457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134fe565b60405180821515815260200191505060405180910390f35b3480156114a457600080fd5b506114e7600480360360208110156114bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061351e565b60405180821515815260200191505060405180910390f35b611508336121f5565b61157a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008282905085859050146115da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061517c6028913960400191505060405180910390fd5b60005b8585905081101561160c578383828181106115f457fe5b905060200201358201915080806001019150506115dd565b50806116178761259f565b101561168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f700000000081525060200191505060405180910390fd5b60005b858590508110156118a3576116de878787848181106116a957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168686858181106116d257fe5b90506020020135613574565b50601160008787848181106116ef57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661189657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968787848181106117a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600b60008a8a878181106117cf57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561187a57600080fd5b505af192505050801561188b575060015b61189457611895565b5b5b808060010191505061168e565b50601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119e357602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156119c757600080fd5b505af19250505080156119d8575060015b6119e1576119e2565b5b5b505050505050565b60265481565b6119fa3361351e565b611a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b84601281905550836013819055508260148190555080601681905550611aad83611a9f868861374790919063ffffffff16565b61374790919063ffffffff16565b6015819055508160178190555060175460155410611aca57600080fd5b5050505050565b60606040518060400160405280600981526020017f24494d4d4f5254414c0000000000000000000000000000000000000000000000815250905090565b600081600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600082611c0c83612d00565b11905092915050565b6000600654905090565b611c28336121f5565b611c9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484840281611ce757fe5b049081150290604051600060405180830381858888f19350505050158015611d13573d6000803e3d6000fd5b505050565b60155481565b611d273361351e565b611d99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601c8190555080601d819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611f9757611f16826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611fa284848461388f565b90509392505050565b6000612028611fdb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b61201a612009600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b6006546144da90919063ffffffff16565b6144da90919063ffffffff16565b905090565b6120363361351e565b6120a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561212557600080fd5b505af1158015612139573d6000803e3d6000fd5b505050505050565b61214a336121f5565b6121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602360006101000a81548160ff02191690831515021790555080602360016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006004905090565b6122603361351e565b6122d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612359827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b0e565b9050919050565b6123693361351e565b6123db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b6123ee336121f5565b612460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b602360009054906101000a900460ff1681565b6124993361351e565b61250b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602560009054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602360019054906101000a900460ff1681565b600a5481565b60075481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612636336121f5565b6126a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60648160065402816126b657fe5b04600a8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900460ff1681565b6127053361351e565b612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005b8383905081101561280f57816009600086868581811061279657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600101905061277a565b50505050565b61281e3361351e565b612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60606040518060400160405280600481526020017f494d4d4f00000000000000000000000000000000000000000000000000000000815250905090565b61295c3361351e565b6129ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b081106129dd57600080fd5b8060228190555050565b60165481565b6129f63361351e565b612a68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612b2133848461388f565b905092915050565b612b32336121f5565b612ba4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60205481565b612c0d3361351e565b612c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612d6b612d0d611fab565b612d5d612d4e6002612d40601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661259f565b61452490919063ffffffff16565b8561452490919063ffffffff16565b6145aa90919063ffffffff16565b9050919050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612e023361351e565b612e74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602560006101000a81548160ff021916908315150217905550806026819055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ec8336121f5565b612f3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612f9e336121f5565b613010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6131003361351e565b613172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131fc5750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61320557600080fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561331357602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050506133fe565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156133e557600080fd5b505af11580156133f9573d6000803e3d6000fd5b505050505b5050565b61340b3361351e565b61347d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006135ff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369482600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000808284019050838110156137c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600083831115829061387c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613841578082015181840152602081019050613826565b50505050905090810190601f16801561386e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602760009054906101000a900460ff16156138b8576138b1848484613574565b90506144d3565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561393e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156139985750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156139f25750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613a4c5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613aa65750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613afc5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b525750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613bc3576000613b628461259f565b9050600a548382011115613bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001806151ea603e913960400191505060405180910390fd5b505b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015613c2c5750602360009054906101000a900460ff165b8015613c825750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d775742602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806151a46025913960400191505060405180910390fd5b602360019054906101000a900460ff1660ff164201602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600860009054906101000a900460ff1615613e4d57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f426c61636b6c697374656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b613e588484846145f4565b8273ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613f0457508373ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015613f5e57508273ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015613fb857508373ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15613fd457613fc5614719565b15613fd357613fd26147f0565b5b5b61405d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137cf9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006140ac8585614e2c565b6140b657826140c1565b6140c08584614ed8565b5b905061411581600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661429757602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561427b57600080fd5b505af192505050801561428c575060015b61429557614296565b5b5b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166143d657602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156143ba57600080fd5b505af19250505080156143cb575060015b6143d4576143d5565b5b5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796022546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561444d57600080fd5b505af192505050801561445e575060015b61446757614468565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b600061451c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506137cf565b905092915050565b60008083141561453757600090506145a4565b600082840290508284828161454857fe5b041461459f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806151c96021913960400191505060405180910390fd5b809150505b92915050565b60006145ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506150b5565b905092915050565b6007548111158061464e5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806146a25750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614714576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b505050565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156147865750602760009054906101000a900460ff16155b801561479e5750602560009054906101000a900460ff165b80156147eb5750602654600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602760006101000a81548160ff021916908315150217905550600061481b601c54601d54611c00565b6148275760125461482a565b60005b9050600061486a600261485c60155461484e8660265461452490919063ffffffff16565b6145aa90919063ffffffff16565b6145aa90919063ffffffff16565b90506000614883826026546144da90919063ffffffff16565b90506060600267ffffffffffffffff8111801561489f57600080fd5b506040519080825280602002602001820160405280156148ce5781602001602082028036833780820191505090505b50905030816000815181106148df57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061494957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614a4c578082015181840152602081019050614a31565b505050509050019650505050505050600060405180830381600087803b158015614a7557600080fd5b505af1158015614a89573d6000803e3d6000fd5b505050506000614aa282476144da90919063ffffffff16565b90506000614ace614abd6002896145aa90919063ffffffff16565b6015546144da90919063ffffffff16565b90506000614b0a6002614afc84614aee8c8861452490919063ffffffff16565b6145aa90919063ffffffff16565b6145aa90919063ffffffff16565b90506000614b3583614b276013548761452490919063ffffffff16565b6145aa90919063ffffffff16565b90506000614b6084614b526014548861452490919063ffffffff16565b6145aa90919063ffffffff16565b9050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015614bcc57600080fd5b505af193505050508015614bde575060015b614be757614be8565b5b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d8060008114614c6f576040519150601f19603f3d011682016040523d82523d6000602084013e614c74565b606091505b505090506000905060008a1115614e0457601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015614d7157600080fd5b505af1158015614d85573d6000803e3d6000fd5b50505050506040513d6060811015614d9c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051808381526020018281526020019250505060405180910390a15b50505050505050505050506000602760006101000a81548160ff021916908315150217905550565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680614ecf5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b600080601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614f5f57614f5a601754614f4c6015548661452490919063ffffffff16565b6145aa90919063ffffffff16565b614f9d565b614f9c601754614f8e614f7f60165460155461374790919063ffffffff16565b8661452490919063ffffffff16565b6145aa90919063ffffffff16565b5b9050614ff181600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374790919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36150ac81846144da90919063ffffffff16565b91505092915050565b60008083118290615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561512657808201518184015260208101905061510b565b50505050905090810190601f1680156151535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161516d57fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220636f6f6c646f776e206265747765656e2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea2646970667358221220dd60d80a35af25409b4212fdaf87522c00b7895009cf43d6996db65d56ec76c064736f6c63430007040033
Deployed Bytecode Sourcemap
12308:15863:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27313:789;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14727:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25215:471;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16512:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16934:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27128:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16242:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21674:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13964:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26273:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17446:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26803:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26464:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21938:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4075:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16336:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25077:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17158:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23886:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24345:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14520:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24673:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14158:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14690:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16682:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14565:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13332:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13144:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14190:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17898:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16598:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13205:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24452:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25930:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16422:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26655:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13998:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25694:228;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14341:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17282:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3748:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14369:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24937:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14071:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26953:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16793:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26109:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14114:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3918:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4475:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23990:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24801:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14310:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13244:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4249:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27313:789;3464:19;3472:10;3464:7;:19::i;:::-;3456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27429:12:::1;27482:6;;:13;;27462:9;;:16;;:33;27454:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27552:6;27548:82;27566:9;;:16;;27562:1;:20;27548:82;;;27613:6;;27620:1;27613:9;;;;;;;;;;;;;27606:4;:16;27599:23;;27584:3;;;;;;;27548:82;;;;27665:4;27646:15;27656:4;27646:9;:15::i;:::-;:23;;27638:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;27715:6;27711:250;27729:9;;:16;;27725:1;:20;27711:250;;;27762:43;27777:4;27782:9;;27792:1;27782:12;;;;;;;;;;;;;;;27795:6;;27802:1;27795:9;;;;;;;;;;;;;27762:14;:43::i;:::-;;27820:16;:30;27837:9;;27847:1;27837:12;;;;;;;;;;;;;;;27820:30;;;;;;;;;;;;;;;;;;;;;;;;;27816:138;;27871:11;;;;;;;;;;;:20;;;27892:9;;27902:1;27892:12;;;;;;;;;;;;;;;27906:9;:23;27916:9;;27926:1;27916:12;;;;;;;;;;;;;;;27906:23;;;;;;;;;;;;;;;;27871:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27867:75;;;;;;27816:138;27747:3;;;;;;;27711:250;;;;27998:16;:22;28015:4;27998:22;;;;;;;;;;;;;;;;;;;;;;;;;27994:105;;28037:11;;;;;;;;;;;:20;;;28058:4;28064:9;:15;28074:4;28064:15;;;;;;;;;;;;;;;;28037:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;28033:59;;;;;;27994:105;3496:1;27313:789:::0;;;;;:::o;14727:56::-;;;;:::o;25215:471::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25392:13:::1;25377:12;:28;;;;25432:14;25416:13;:30;;;;25472:13;25457:12;:28;;;;25507:9;25496:8;:20;;;;25538:52;25576:13;25538:33;25556:14;25538:13;:17;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;25527:8;:63;;;;25618:15;25601:14;:32;;;;25663:14;;25652:8;;:25;25644:34;;;::::0;::::1;;25215:471:::0;;;;;:::o;16512:80::-;16560:13;16584:5;;;;;;;;;;;;;;;;;16577:12;;16512:80;:::o;16934:216::-;17009:4;17061:6;17026:11;:23;17038:10;17026:23;;;;;;;;;;;;;;;:32;17050:7;17026:32;;;;;;;;;;;;;;;:41;;;;17104:7;17083:37;;17092:10;17083:37;;;17113:6;17083:37;;;;;;;;;;;;;;;;;;17138:4;17131:11;;16934:216;;;;:::o;27128:150::-;27208:4;27264:6;27232:29;27252:8;27232:19;:29::i;:::-;:38;27225:45;;27128:150;;;;:::o;16242:88::-;16297:7;16315:12;;16308:19;;16242:88;:::o;21674:217::-;3464:19;3472:10;3464:7;:19::i;:::-;3456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21757:17:::1;21777:21;21757:41;;21817:20;;;;;;;;;;;21809:38;;:74;21879:3;21860:16;21848:9;:28;:34;;;;;;21809:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;3496:1;21674:217:::0;:::o;13964:27::-;;;;:::o;26273:183::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26389:7:::1;26371:15;:25;;;;26436:12;26407:26;:41;;;;26273:183:::0;;:::o;17446:364::-;17546:4;17609:2;17566:11;:19;17578:6;17566:19;;;;;;;;;;;;;;;:31;17586:10;17566:31;;;;;;;;;;;;;;;;:46;17563:180;;17662:69;17698:6;17662:69;;;;;;;;;;;;;;;;;:11;:19;17674:6;17662:19;;;;;;;;;;;;;;;:31;17682:10;17662:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;17628:11;:19;17640:6;17628:19;;;;;;;;;;;;;;;:31;17648:10;17628:31;;;;;;;;;;;;;;;:103;;;;17563:180;17762:40;17776:6;17784:9;17795:6;17762:13;:40::i;:::-;17755:47;;17446:364;;;;;:::o;26803:142::-;26856:7;26883:54;26921:15;26931:4;;;;;;;;;;;26921:9;:15::i;:::-;26883:33;26900:15;26910:4;;;;;;;;;;;26900:9;:15::i;:::-;26883:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;26876:61;;26803:142;:::o;26464:183::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26574:11:::1;;;;;;;;;;;:35;;;26610:10;26622:16;26574:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26464:183:::0;;:::o;21938:164::-;3464:19;3472:10;3464:7;:19::i;:::-;3456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22043:7:::1;22022:18;;:28;;;;;;;;;;;;;;;;;;22085:9;22061:21;;:33;;;;;;;;;;;;;;;;;;21938:164:::0;;:::o;4075:103::-;4130:4;4165:5;;;;;;;;;;;4154:16;;:7;:16;;;4147:23;;4075:103;;;:::o;16336:80::-;16388:5;13075:1;16397:16;;16336:80;:::o;25077:130::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25193:6:::1;25166:16;:24;25183:6;25166:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;25077:130:::0;;:::o;17158:116::-;17213:4;17237:29;17245:7;17262:2;17237:7;:29::i;:::-;17230:36;;17158:116;;;:::o;23886:96::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23968:6:::1;23953:12;:21;;;;23886:96:::0;:::o;24345:99::-;3464:19;3472:10;3464:7;:19::i;:::-;3456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24429:7:::1;24413:13;;:23;;;;;;;;;;;;;;;;;;24345:99:::0;:::o;14520:38::-;;;;;;;;;;;;;:::o;24673:120::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24779:6:::1;24757:11;:19;24769:6;24757:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;24673:120:::0;;:::o;14158:25::-;;;;;;;;;;;;;:::o;14690:30::-;;;;;;;;;;;;;:::o;16682:105::-;16748:7;16766:9;:18;16776:7;16766:18;;;;;;;;;;;;;;;;16759:25;;16682:105;;;:::o;14565:39::-;;;;;;;;;;;;;:::o;13332:59::-;;;;:::o;13144:52::-;;;;:::o;14190:27::-;;;;;;;;;;;;;:::o;17898:149::-;3464:19;3472:10;3464:7;:19::i;:::-;3456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18036:3:::1;18017:14;18002:12;;:29;18001:38;;;;;;17983:15;:56;;;;17898:149:::0;:::o;16598:78::-;16650:7;16668:5;;;;;;;;;;;16661:12;;16598:78;:::o;13205:32::-;;;;;;;;;;;;;:::o;24452:213::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24557:9:::1;24552:106;24572:9;;:16;;24568:1;:20;24552:106;;;24640:6;24610:13;:27;24624:9;;24634:1;24624:12;;;;;;;;;;;;;;;24610:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24590:3;;;;;24552:106;;;;24452:213:::0;;;:::o;25930:171::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26043:11:::1;26030:10;;:24;;;;;;;;;;;;;;;;;;26080:13;26065:12;;:28;;;;;;;;;;;;;;;;;;25930:171:::0;;:::o;16422:84::-;16472:13;16496:7;;;;;;;;;;;;;;;;;16489:14;;16422:84;:::o;26655:136::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26745:6:::1;26739:3;:12;26731:21;;;::::0;::::1;;26780:3;26763:14;:20;;;;26655:136:::0;:::o;13998:28::-;;;;:::o;25694:228::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25837:22:::1;25813:21;;:46;;;;;;;;;;;;;;;;;;25893:21;25870:20;;:44;;;;;;;;;;;;;;;;;;25694:228:::0;;:::o;14341:19::-;;;;;;;;;;;;;:::o;17282:156::-;17362:4;17386:44;17400:10;17412:9;17423:6;17386:13;:44::i;:::-;17379:51;;17282:156;;;;:::o;3748:94::-;3464:19;3472:10;3464:7;:19::i;:::-;3456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3830:4:::1;3808:14:::0;:19:::1;3823:3;3808:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3748:94:::0;:::o;14369:25::-;;;;:::o;24937:132::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25055:6:::1;25027:17;:25;25045:6;25027:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24937:132:::0;;:::o;14071:36::-;;;;;;;;;;;;;:::o;26953:167::-;27021:7;27048:64;27089:22;:20;:22::i;:::-;27048:36;27061:22;27081:1;27061:15;27071:4;;;;;;;;;;;27061:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;27048:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;27041:71;;26953:167;;;:::o;16793:133::-;16877:7;16895:11;:19;16907:6;16895:19;;;;;;;;;;;;;;;:28;16915:7;16895:28;;;;;;;;;;;;;;;;16888:35;;16793:133;;;;:::o;26109:156::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26215:8:::1;26201:11;;:22;;;;;;;;;;;;;;;;;;26250:7;26234:13;:23;;;;26109:156:::0;;:::o;14114:35::-;;;;;;;;;;;;;:::o;3918:97::-;3464:19;3472:10;3464:7;:19::i;:::-;3456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4002:5:::1;3980:14;:19;3995:3;3980:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3918:97:::0;:::o;4475:173::-;3464:19;3472:10;3464:7;:19::i;:::-;3456:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4559:3:::1;4551:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4595:4;4573:14:::0;:19:::1;4588:3;4573:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4615:25;4636:3;4615:25;;;;;;;;;;;;;;;;;;;;4475:173:::0;:::o;23990:347::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24105:4:::1;24087:23;;:6;:23;;;;:41;;;;;24124:4;;;;;;;;;;;24114:14;;:6;:14;;;;24087:41;24079:50;;;::::0;::::1;;24167:6;24140:16;:24;24157:6;24140:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24187:6;24184:146;;;24209:11;;;;;;;;;;;:20;;;24230:6;24238:1;24209:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24184:146;;;24271:11;;;;;;;;;;;:20;;;24292:6;24300:9;:17;24310:6;24300:17;;;;;;;;;;;;;;;;24271:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24184:146;23990:347:::0;;:::o;24801:128::-;3633:24;3646:10;3633:12;:24::i;:::-;3625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24915:6:::1;24889:15;:23;24905:6;24889:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;24801:128:::0;;:::o;14310:24::-;;;;;;;;;;;;;:::o;13244:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;4249:107::-;4305:4;4329:14;:19;4344:3;4329:19;;;;;;;;;;;;;;;;;;;;;;;;;4322:26;;4249:107;;;:::o;20322:330::-;20415:4;20452:53;20474:6;20452:53;;;;;;;;;;;;;;;;;:9;:17;20462:6;20452:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20432:9;:17;20442:6;20432:17;;;;;;;;;;;;;;;:73;;;;20539:32;20564:6;20539:9;:20;20549:9;20539:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20516:9;:20;20526:9;20516:20;;;;;;;;;;;;;;;:55;;;;20604:9;20587:35;;20596:6;20587:35;;;20615:6;20587:35;;;;;;;;;;;;;;;;;;20640:4;20633:11;;20322:330;;;;;:::o;805:181::-;863:7;883:9;899:1;895;:5;883:17;;924:1;919;:6;;911:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;977:1;970:8;;;805:181;;;;:::o;1134:192::-;1220:7;1253:1;1248;:6;;1256:12;1240:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:9;1296:1;1292;:5;1280:17;;1317:1;1310:8;;;1134:192;;;;;:::o;18055:2255::-;18147:4;18167:6;;;;;;;;;;;18164:63;;;18183:41;18198:6;18206:9;18217:6;18183:14;:41::i;:::-;18176:48;;;;18164:63;18272:14;:22;18287:6;18272:22;;;;;;;;;;;;;;;;;;;;;;;;;18271:23;:53;;;;;18319:4;18298:26;;:9;:26;;;;18271:53;:84;;;;;18350:4;;;;;;;;;;;18329:26;;:9;:26;;;;18271:84;:105;;;;;18372:4;;;;;;;;;;;18359:17;;:9;:17;;;;18271:105;:142;;;;;18393:20;;;;;;;;;;;18380:33;;:9;:33;;;;18271:142;:180;;;;;18430:21;;;;;;;;;;;18417:34;;:9;:34;;;;18271:180;:213;;;;;18456:17;:28;18474:9;18456:28;;;;;;;;;;;;;;;;;;;;;;;;;18455:29;18271:213;:243;;;;;18489:17;:25;18507:6;18489:25;;;;;;;;;;;;;;;;;;;;;;;;;18488:26;18271:243;18267:435;;;18530:18;18551:20;18561:9;18551;:20::i;:::-;18530:41;;18619:15;;18608:6;18595:10;:19;18594:40;;18586:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18267:435;;18836:4;;;;;;;;;;;18826:14;;:6;:14;;;:49;;;;;18857:18;;;;;;;;;;;18826:49;:94;;;;;18893:16;:27;18910:9;18893:27;;;;;;;;;;;;;;;;;;;;;;;;;18892:28;18826:94;18822:299;;;18972:15;18945:13;:24;18959:9;18945:24;;;;;;;;;;;;;;;;:42;18937:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19088:21;;;;;;;;;;;19070:39;;:15;:39;19043:13;:24;19057:9;19043:24;;;;;;;;;;;;;;;:66;;;;18822:299;19158:13;;;;;;;;;;;19155:93;;;19196:13;:21;19210:6;19196:21;;;;;;;;;;;;;;;;;;;;;;;;;19195:22;19187:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19155:93;19303:39;19316:6;19324:9;19335:6;19303:12;:39::i;:::-;19413:9;19399:23;;:10;;;;;;;;;;;:23;;;;:47;;;;;19440:6;19426:20;;:10;;;;;;;;;;;:20;;;;19399:47;:76;;;;;19466:9;19450:25;;:12;;;;;;;;;;;:25;;;;19399:76;:102;;;;;19495:6;19479:22;;:12;;;;;;;;;;;:22;;;;19399:102;19396:168;;;19521:16;:14;:16::i;:::-;19518:35;;;19540:10;:8;:10::i;:::-;19518:35;19396:168;19623:53;19645:6;19623:53;;;;;;;;;;;;;;;;;:9;:17;19633:6;19623:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19603:9;:17;19613:6;19603:17;;;;;;;;;;;;;;;:73;;;;19689:22;19714:32;19728:6;19736:9;19714:13;:32::i;:::-;:67;;19775:6;19714:67;;;19749:23;19757:6;19765;19749:7;:23::i;:::-;19714:67;19689:92;;19815:40;19840:14;19815:9;:20;19825:9;19815:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;19792:9;:20;19802:9;19792:20;;;;;;;;;;;;;;;:63;;;;19901:16;:24;19918:6;19901:24;;;;;;;;;;;;;;;;;;;;;;;;;19897:119;;19946:11;;;;;;;;;;;:20;;;19967:6;19975:9;:17;19985:6;19975:17;;;;;;;;;;;;;;;;19946:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19942:63;;;;;;19897:119;20032:16;:27;20049:9;20032:27;;;;;;;;;;;;;;;;;;;;;;;;;20028:129;;20080:11;;;;;;;;;;;:20;;;20101:9;20112;:20;20122:9;20112:20;;;;;;;;;;;;;;;;20080:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20076:69;;;;;;20028:129;20173:11;;;;;;;;;;;:19;;;20193:14;;20173:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20169:51;;;;;;20254:9;20237:43;;20246:6;20237:43;;;20265:14;20237:43;;;;;;;;;;;;;;;;;;20298:4;20291:11;;;18055:2255;;;;;;:::o;992:136::-;1050:7;1077:43;1081:1;1084;1077:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1070:50;;992:136;;;;:::o;1332:250::-;1390:7;1419:1;1414;:6;1410:47;;;1444:1;1437:8;;;;1410:47;1469:9;1485:1;1481;:5;1469:17;;1514:1;1509;1505;:5;;;;;;:10;1497:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1573:1;1566:8;;;1332:250;;;;;:::o;1588:132::-;1646:7;1673:39;1677:1;1680;1673:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1666:46;;1588:132;;;;:::o;20660:215::-;20776:12;;20766:6;:22;;:49;;;;20792:15;:23;20808:6;20792:23;;;;;;;;;;;;;;;;;;;;;;;;;20766:49;:79;;;;20819:15;:26;20835:9;20819:26;;;;;;;;;;;;;;;;;;;;;;;;;20766:79;20758:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20660:215;;;:::o;21469:197::-;21518:4;21556;;;;;;;;;;;21542:18;;:10;:18;;;;:38;;;;;21574:6;;;;;;;;;;;21573:7;21542:38;:62;;;;;21593:11;;;;;;;;;;;21542:62;:116;;;;;21645:13;;21617:9;:24;21635:4;21617:24;;;;;;;;;;;;;;;;:41;;21542:116;21535:123;;21469:197;:::o;22110:1766::-;14905:4;14896:6;;:13;;;;;;;;;;;;;;;;;;22159:27:::1;22189:60;22205:15;;22222:26;;22189:15;:60::i;:::-;:79;;22256:12;;22189:79;;;22252:1;22189:79;22159:109;;22279:23;22305:59;22362:1;22305:52;22348:8;;22305:38;22323:19;22305:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;22279:85;;22375:20;22398:34;22416:15;22398:13;;:17;;:34;;;;:::i;:::-;22375:57;;22445:21;22483:1;22469:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22445:40;;22514:4;22496;22501:1;22496:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;22540:4;;;;;;;;;;;22530;22535:1;22530:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;22557:21;22581;22557:45;;22615:6;;;;;;;;;;;:57;;;22687:12;22714:1;22730:4;22757;22777:15;22615:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22816:17;22836:40;22862:13;22836:21;:25;;:40;;;;:::i;:::-;22816:60;;22889:19;22911:40;22924:26;22948:1;22924:19;:23;;:26;;;;:::i;:::-;22911:8;;:12;;:40;;;;:::i;:::-;22889:62;;22972:26;23001:58;23057:1;23001:51;23040:11;23001:34;23015:19;23001:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;22972:87;;23070:27;23100:45;23133:11;23100:28;23114:13;;23100:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;23070:75;;23156:26;23185:44;23217:11;23185:27;23199:12;;23185:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;23156:73;;23246:11;;;;;;;;;;;:19;;;23273;23246:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23242:65;;;;;;23318:15;23346:20;;;;;;;;;;;23338:34;;23380:18;23405:5;23338:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23317:98;;;23489:5;23476:18;;23528:1;23510:15;:19;23507:362;;;23545:6;;;;;;;;;;;:22;;;23575:18;23621:4;23645:15;23679:1;23699::::0;23719:21:::1;;;;;;;;;;;23759:15;23545:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23809:48;23821:18;23841:15;23809:48;;;;;;;;;;;;;;;;;;;;;;;;23507:362;14911:1;;;;;;;;;;;14923:5:::0;14914:6;;:14;;;;;;;;;;;;;;;;;;22110:1766::o;20883:161::-;20964:4;20990:11;:19;21002:6;20990:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;21013:11;:22;21025:9;21013:22;;;;;;;;;;;;;;;;;;;;;;;;;20990:45;20988:48;20981:55;;20883:161;;;;:::o;21052:409::-;21119:7;21139:17;21170:4;;;;;;;;;;;21160:14;;:6;:14;;;;:114;;21234:40;21259:14;;21234:20;21245:8;;21234:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;21160:114;;;21177:54;21216:14;;21177:34;21188:22;21201:8;;21188;;:12;;:22;;;;:::i;:::-;21177:6;:10;;:34;;;;:::i;:::-;:38;;:54;;;;:::i;:::-;21160:114;21139:136;;21315:39;21344:9;21315;:24;21333:4;21315:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;21288:9;:24;21306:4;21288:24;;;;;;;;;;;;;;;:66;;;;21395:4;21370:42;;21379:6;21370:42;;;21402:9;21370:42;;;;;;;;;;;;;;;;;;21432:21;21443:9;21432:6;:10;;:21;;;;:::i;:::-;21425:28;;;21052:409;;;;:::o;1726:345::-;1812:7;1911:1;1907;:5;1914:12;1899:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1938:9;1954:1;1950;:5;;;;;;1938:17;;2062:1;2055:8;;;1726:345;;;;;:::o
Swarm Source
ipfs://0c91d2eb4262ee9bec2e8952e19537685bfcc88f5f494c0f2988901ca23a2df6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.