Token CROGEBONK
Overview CRC20
Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
100,000,000 CROBO
Holders:
68 addresses
Contract:
Decimals:
9
Balance
150,883.145069248 CROBOValue
$0.00
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CRO20
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-02-23 */ pragma solidity ^0.8.4; //SPDX-License-Identifier: MIT 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); } abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } 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; } abstract contract SecureLaunch is IBEP20 { mapping (address => bool) marked; uint256 launchBlock; uint8 unsafeBlocks = 2; function setUpMarks() internal { marked[0xdead7Cb55A785023a37d998c6EB2d9D576fd2073] = true; marked[0xf621660201C5D3EF2344815fD8DA40b8C4A0a936] = true; marked[0x5fE41aCDE175Cf3D3D41FC99107582680a9412b1] = true; marked[0x0d5b7059eb3ebFA496769639e2dDC7Cb0C553B04] = true; marked[0xF041617E8db156526C59D9a96733cEe62aA9457C] = true; marked[0x708EE986A70fFCa5A0e8DFB612fF5D1584EF42a4] = true; marked[0x1912a2157041Ac1c2412c6f28d6c45742E655C8A] = true; marked[0x09279bc071Efa81b898eFb951A1838d3cBDAD64a] = true; marked[0xEa1ede773837e317d37CEefCe31Dc4C9A3957Af8] = true; marked[0x39E467b0a5e6B63A329D217F7EA0DE3BD0158c5a] = true; marked[0xe093fee0721004bef41a9493c49F822Ecc346663] = true; } function launch() internal { launchBlock = block.number; } function launched() internal view returns (bool) { return launchBlock > 0; } function goodToGo() internal view returns (bool) { return launched() && block.number - launchBlock > unsafeBlocks; } function isBadActor(address add) internal view returns (bool) { return marked[add]; } function mark(address add, bool st) internal { marked[add] = st; } } 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 { address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IDEXRouter router; IBEP20 token = IBEP20(0xc21223249CA28397B4B6541dfFaEcC539BfF0c59); // Token to be distributed 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; // Auto-reward timer uint256 public minPeriod = 5 minutes; uint256 public minDistribution = 15 ether; uint256 public sendGas = 33420; 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) // Default is MMF router if token constructor sets it no need too update. : IDEXRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30); _token = msg.sender; } function setSendGas(uint256 gas) external onlyToken { sendGas = gas; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function _setShare(address shareholder, uint256 amount) internal { 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 + amount - shares[shareholder].amount; shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function setShare(address shareholder, uint256 amount) external override onlyToken { _setShare(shareholder, amount); } function deposit() external override payable { uint256 balanceBefore = token.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(token); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value} ( 0, path, address(this), block.timestamp ); uint256 amount = token.balanceOf(address(this)) - balanceBefore; totalDividends += amount; dividendsPerShare += dividendsPerShareAccuracyFactor * amount / 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 += gasLeft - 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 += amount; token.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised += amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } function claimDividendFor(address a) external { distributeDividend(a); } 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 - shareholderTotalExcluded; } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share * dividendsPerShare / 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 CRO20 is SecureLaunch, Auth { address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "CROGEBONK"; string constant _symbol = "CROBO"; uint8 constant _decimals = 9; //Total CrogeBonk supply: 100,000,000 uint256 _totalSupply = 100_000_000 * (10 ** _decimals); uint256 public _maxWalletToken = _totalSupply / 100; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isDividendExempt; uint256 liquidityFee = 4; uint256 reflectionFee = 8; uint256 marketingFee = 4; uint256 public totalFee = 14; uint256 feeDenominator = 100; address public autoLiquidityReceiver; address public marketingFeeReceiver; uint256 targetLiquidity = 25; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; DividendDistributor distributor; uint256 distributorGas = 350000; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 1 / 25000; // 0.025% of supply bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { setUpMarks(); router = IDEXRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30); // mmf router pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this)); _allowances[address(this)][address(router)] = type(uint256).max; distributor = new DividendDistributor(address(router)); //No fees for these wallets isFeeExempt[msg.sender] = true; isFeeExempt[marketingFeeReceiver] = true; // No dividends for these wallets isDividendExempt[pair] = true; isDividendExempt[DEAD] = true; autoLiquidityReceiver = 0x3cE7E8068177cE51f3Be2e567Cc4ba83D12D394F; marketingFeeReceiver = 0x7C23e75275Cad3B6C9bE9f16c3d8861D72CB9aA2; _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, type(uint256).max); } 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] != type(uint256).max) { _allowances[sender][msg.sender] -= amount; } return _transferFrom(sender, recipient, amount); } 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); } if (isBadActor(sender)) { revert("TransferHelper: TRANSFER_FROM_FAILED"); } if (!launched() && recipient == pair) { require(_balances[sender] > 0); require(sender == owner, "Only the owner can be the first to add liquidity."); launch(); } // Max wallet code if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver && recipient != owner ) { uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken, "Total Holding is currently limited, you can not buy that amount."); } if (shouldSwapBack()) { swapBack(); } _balances[sender] -= amount; uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount; _balances[recipient] += amountReceived; if (!goodToGo() && sender == pair && recipient != owner) { mark(recipient, true); } 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] -= amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount * totalFee / feeDenominator; _balances[address(this)] += feeAmount; emit Transfer(sender, address(this), feeAmount); return amount - feeAmount; } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function rescue(uint256 percentage) external onlyOwner { payable(owner).transfer(address(this).balance * percentage / 100); } function swapBack() internal swapping { uint256 tokensToSwap = balanceOf(address(this)); if (tokensToSwap > _totalSupply / 200) { tokensToSwap = _totalSupply / 200; } uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = tokensToSwap * dynamicLiquidityFee / totalFee / 2; uint256 amountToSwap = tokensToSwap - amountToLiquify; address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amount = address(this).balance - balanceBefore; uint256 tFee = totalFee - dynamicLiquidityFee / 2; uint256 amountLiquidity = amount * dynamicLiquidityFee / tFee / 2; uint256 amountReflection = amount * reflectionFee / tFee; uint256 amountMarketing = amount * marketingFee / tFee; try distributor.deposit{value: amountReflection}() {} catch {} if (amountToLiquify > 0) { router.addLiquidityETH{value: amountLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountLiquidity, amountToLiquify); } else { amountMarketing += amountLiquidity; } payable(marketingFeeReceiver).call{value: amountMarketing, gas: 34000}(""); } 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 setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized { liquidityFee = _liquidityFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; totalFee = _liquidityFee + _reflectionFee + _marketingFee; feeDenominator = _feeDenominator; } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; } 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 setDistributionCriteria(uint256 gas) external authorized { distributor.setSendGas(gas); } function claimMyDividends() external { distributor.claimDividendFor(msg.sender); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy * balanceOf(pair) / getCirculatingSupply(); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } function deposit() external payable { distributor.deposit{value: msg.value}(); } function guessIwasWrong(address add) external authorized { mark(add, false); } event AutoLiquify(uint256 amount, uint256 amountTo); }
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":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTo","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":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"claimMyDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","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":"add","type":"address"}],"name":"guessIwasWrong","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","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":"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":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"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":"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"}],"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":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","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":[],"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526002805460ff191681179055600480546001600160a01b031990811661dead179091556005805490911690556200003e6009600a620006ea565b6200004e906305f5e100620007ab565b600655606460065462000062919062000680565b6007556004600d556008600e556004600f55600e601055606460115560196014556064601555620557306019556001601a60006101000a81548160ff0219169083151502179055506161a86006546001620000be9190620007ab565b620000ca919062000680565b601b55348015620000da57600080fd5b5060028054610100600160a81b031916336101008102919091179091556000908152600360205260409020805460ff19166001179055620002ff600060208190527f913537bea4c33e65a5dac425902033590d9c77eb5e6764bebc0fe4ed052698318054600160ff1991821681179092557fa680d8e95b5fc4eaca140b603163bb47be7baafc1b8f19a759d88a9d1b86262e80548216831790557fae78eee5aa59a976a0a69f691358f149ffbc7d8f8d75b32501f8aae394e5aa9e80548216831790557f0e34b48769e6ed8a1058ad30537610e51d64bb4f66fe1add473cbdcfd0b973bd80548216831790557fea0141fb335cb29317aa069a8615f1bc7e848f9fae46208d90f9195c7ca07f6580548216831790557f8f8946989cff8ef569ac02c921fb968fe637383294727f53d5bb15b66774c44280548216831790557fcd0fd3fd98cbaff09aaa9329c564203e45f33eee891919355a853a8576a3621880548216831790557fa8ee87ae470a104aef49ef6656e5767296ade0a8a550c15729e235dd5ea115c880548216831790557f112640194c1f3407c0e76fa4d1fd781bc3c88ee712bfac201c555e0a37ee65d980548216831790557f1f472aa6a3bd101a0728229ff6d670978aaa516fda45fb2143d8467aa7b03bc0805482168317905573e093fee0721004bef41a9493c49f822ecc3466639092527f4fac159cc2c3da1b62f768111576e8e783df462477f34c406fe43438d3d9a1128054909216179055565b601680546001600160a01b03191673145677fc4d9b8f19b5d56d1820c48e0443049a309081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200035f57600080fd5b505afa15801562000374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039a919062000650565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f757600080fd5b505afa1580156200040c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000432919062000650565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200047a57600080fd5b505af11580156200048f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b5919062000650565b601780546001600160a01b0319166001600160a01b0392831617905530600090815260096020908152604080832060168054861685529252918290206000199055549051911690620005079062000642565b6001600160a01b039091168152602001604051809103906000f08015801562000534573d6000803e3d6000fd5b50601880546001600160a01b039283166001600160a01b031991821617909155336000818152600a60209081526040808320805460ff1990811660019081179092556013805489168652838620805483168417905560175489168652600c85528386208054831684179055600454909816855282852080549091169091179055601280548616733ce7e8068177ce51f3be2e567cc4ba83d12d394f1790558554909416737c23e75275cad3b6c9be9f16c3d8861d72cb9aa2179094556006548282526008909452828120849055915190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200063491815260200190565b60405180910390a3620007e3565b610f7580620027db83390190565b60006020828403121562000662578081fd5b81516001600160a01b038116811462000679578182fd5b9392505050565b6000826200069c57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620006e2578160001904821115620006c657620006c6620007cd565b80851615620006d457918102915b93841c9390800290620006a6565b509250929050565b60006200067960ff8416836000826200070657506001620007a5565b816200071557506000620007a5565b81600181146200072e5760028114620007395762000759565b6001915050620007a5565b60ff8411156200074d576200074d620007cd565b50506001821b620007a5565b5060208310610133831016604e8410600b84101617156200077e575081810a620007a5565b6200078a8383620006a1565b8060001904821115620007a157620007a1620007cd565b0290505b92915050565b6000816000190483118215151615620007c857620007c8620007cd565b500290565b634e487b7160e01b600052601160045260246000fd5b611fe880620007f36000396000f3fe60806040526004361061024a5760003560e01c806382bf293c11610139578063d0e30db0116100b6578063ee02ff911161007a578063ee02ff911461070a578063f0b37c041461072a578063f2fde38b1461074a578063f708a64f1461076a578063f887ea401461078a578063fe9fbb80146107aa57600080fd5b8063d0e30db01461065c578063d51ed1c814610664578063dd62ed3e14610684578063df20fd49146106ca578063e96fada2146106ea57600080fd5b8063a4b45c00116100fd578063a4b45c00146105bc578063a8aa1b31146105dc578063a9059cbb146105fc578063b6a5d7de1461061c578063ca33e64c1461063c57600080fd5b806382bf293c146104f7578063893d20e81461051757806395d89b411461054e57806398e5bfee1461057c5780639d1944f51461059c57600080fd5b80632f54bf6e116101c75780636ac053ad1161018b5780636ac053ad146104515780636ddd1713146104715780636fcba3771461048b57806370a08231146104ab57806378109e54146104e157600080fd5b80632f54bf6e146103ac578063313ce567146103e057806345ba992d146103fc578063571ac8b014610411578063658d4b7f1461043157600080fd5b80631df4ccfc1161020e5780631df4ccfc1461031f578063201e79911461033557806323b872dd146103575780632b112e49146103775780632d48e8961461038c57600080fd5b80630445b6671461025657806306fdde031461027f578063095ea7b3146102ba5780631161ae39146102ea57806318160ddd1461030a57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c601b5481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b5060408051808201909152600981526843524f4745424f4e4b60b81b60208201525b6040516102769190611e11565b3480156102c657600080fd5b506102da6102d5366004611d34565b6107ca565b6040519015158152602001610276565b3480156102f657600080fd5b506102da610305366004611d92565b610836565b34801561031657600080fd5b5060065461026c565b34801561032b57600080fd5b5061026c60105481565b34801561034157600080fd5b50610355610350366004611d92565b61084a565b005b34801561036357600080fd5b506102da610372366004611cc0565b610883565b34801561038357600080fd5b5061026c6108fd565b34801561039857600080fd5b506103556103a7366004611d92565b61094f565b3480156103b857600080fd5b506102da6103c7366004611c50565b60025461010090046001600160a01b0390811691161490565b3480156103ec57600080fd5b5060405160098152602001610276565b34801561040857600080fd5b506103556109de565b34801561041d57600080fd5b506102da61042c366004611c50565b610a3d565b34801561043d57600080fd5b5061035561044c366004611d00565b610a51565b34801561045d57600080fd5b5061035561046c366004611d7a565b610aa1565b34801561047d57600080fd5b50601a546102da9060ff1681565b34801561049757600080fd5b506103556104a6366004611de0565b610b27565b3480156104b757600080fd5b5061026c6104c6366004611c50565b6001600160a01b031660009081526008602052604090205490565b3480156104ed57600080fd5b5061026c60075481565b34801561050357600080fd5b50610355610512366004611d7a565b610b7b565b34801561052357600080fd5b5060025461010090046001600160a01b03165b6040516001600160a01b039091168152602001610276565b34801561055a57600080fd5b5060408051808201909152600581526443524f424f60d81b60208201526102ad565b34801561058857600080fd5b50610355610597366004611d7a565b610bcb565b3480156105a857600080fd5b506103556105b7366004611d7a565b610c51565b3480156105c857600080fd5b506103556105d7366004611c88565b610c8a565b3480156105e857600080fd5b50601754610536906001600160a01b031681565b34801561060857600080fd5b506102da610617366004611d34565b610cdd565b34801561062857600080fd5b50610355610637366004611c50565b610cea565b34801561064857600080fd5b50601254610536906001600160a01b031681565b610355610d3e565b34801561067057600080fd5b5061026c61067f366004611d7a565b610d8e565b34801561069057600080fd5b5061026c61069f366004611c88565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106d657600080fd5b506103556106e5366004611d5f565b610dc7565b3480156106f657600080fd5b50601354610536906001600160a01b031681565b34801561071657600080fd5b50610355610725366004611c50565b610e03565b34801561073657600080fd5b50610355610745366004611c50565b610e36565b34801561075657600080fd5b50610355610765366004611c50565b610e87565b34801561077657600080fd5b50610355610785366004611d00565b610f2d565b34801561079657600080fd5b50601654610536906001600160a01b031681565b3480156107b657600080fd5b506102da6107c5366004611c50565b611031565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108259086815260200190565b60405180910390a350600192915050565b60008261084283610d8e565b119392505050565b61085333611031565b6108785760405162461bcd60e51b815260040161086f90611e84565b60405180910390fd5b601491909155601555565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146108e8576001600160a01b0384166000908152600960209081526040808320338452909152812080548492906108e2908490611f70565b90915550505b6108f384848461104f565b90505b9392505050565b6005546001600160a01b03166000908152600860205260408120546004546001600160a01b03166000908152600860205260409020546006546109409190611f70565b61094a9190611f70565b905090565b61095833611031565b6109745760405162461bcd60e51b815260040161086f90611e84565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b505050505050565b60185460405163edf3525360e01b81523360048201526001600160a01b039091169063edf3525390602401600060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b50505050565b6000610a4b826000196107ca565b92915050565b610a5a33611031565b610a765760405162461bcd60e51b815260040161086f90611e84565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6002546001600160a01b03610100909104163314610ad15760405162461bcd60e51b815260040161086f90611e64565b60025461010090046001600160a01b03166108fc6064610af18447611f51565b610afb9190611f31565b6040518115909202916000818181858888f19350505050158015610b23573d6000803e3d6000fd5b5050565b610b3033611031565b610b4c5760405162461bcd60e51b815260040161086f90611e84565b600d849055600e839055600f82905581610b668486611f19565b610b709190611f19565b601055601155505050565b6002546001600160a01b03610100909104163314610bab5760405162461bcd60e51b815260040161086f90611e64565b606481600654610bbb9190611f51565b610bc59190611f31565b60075550565b610bd433611031565b610bf05760405162461bcd60e51b815260040161086f90611e84565b601854604051634bd4c97560e11b8152600481018390526001600160a01b03909116906397a992ea90602401600060405180830381600087803b158015610c3657600080fd5b505af1158015610c4a573d6000803e3d6000fd5b5050505050565b610c5a33611031565b610c765760405162461bcd60e51b815260040161086f90611e84565b620b71b08110610c8557600080fd5b601955565b610c9333611031565b610caf5760405162461bcd60e51b815260040161086f90611e84565b601280546001600160a01b039384166001600160a01b03199182161790915560138054929093169116179055565b60006108f633848461104f565b6002546001600160a01b03610100909104163314610d1a5760405162461bcd60e51b815260040161086f90611e64565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c3657600080fd5b6000610d986108fd565b6017546001600160a01b0316600090815260086020526040902054610dbd9084611f51565b610a4b9190611f31565b610dd033611031565b610dec5760405162461bcd60e51b815260040161086f90611e84565b601a805460ff191692151592909217909155601b55565b610e0c33611031565b610e285760405162461bcd60e51b815260040161086f90611e84565b610e338160006115de565b50565b6002546001600160a01b03610100909104163314610e665760405162461bcd60e51b815260040161086f90611e64565b6001600160a01b03166000908152600360205260409020805460ff19169055565b6002546001600160a01b03610100909104163314610eb75760405162461bcd60e51b815260040161086f90611e64565b60028054610100600160a81b0319166101006001600160a01b03841690810291909117909155600081815260036020908152604091829020805460ff1916600117905590519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610f3633611031565b610f525760405162461bcd60e51b815260040161086f90611e84565b6001600160a01b0382163014801590610f7957506017546001600160a01b03838116911614155b610f8257600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff19168215801591909117909155610fe857601854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044016109a8565b6018546001600160a01b0383811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016109a8565b6001600160a01b031660009081526003602052604090205460ff1690565b601c5460009060ff161561106f57611068848484611609565b90506108f6565b6001600160a01b03841660009081526020819052604090205460ff16156110e45760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b606482015260840161086f565b60015415801561110157506017546001600160a01b038481169116145b156111ad576001600160a01b03841660009081526008602052604090205461112857600080fd5b6002546001600160a01b0385811661010090920416146111a45760405162461bcd60e51b815260206004820152603160248201527f4f6e6c7920746865206f776e65722063616e20626520746865206669727374206044820152703a379030b232103634b8bab4b234ba3c9760791b606482015260840161086f565b6111ad43600155565b6001600160a01b03841660009081526003602052604090205460ff161580156111df57506001600160a01b0383163014155b80156111f957506004546001600160a01b03848116911614155b801561121357506017546001600160a01b03848116911614155b801561122d57506013546001600160a01b03848116911614155b801561124757506012546001600160a01b03848116911614155b801561126657506002546001600160a01b038481166101009092041614155b15611309576001600160a01b0383166000908152600860205260409020546007546112918483611f19565b1115611307576040805162461bcd60e51b81526020600482015260248101919091527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f7420627579207468617420616d6f756e742e606482015260840161086f565b505b6113116116be565b1561131e5761131e61170d565b6001600160a01b03841660009081526008602052604081208054849290611346908490611f70565b90915550506001600160a01b0384166000908152600a602052604081205460ff1615611372578261137c565b61137c8584611b72565b6001600160a01b0385166000908152600860205260408120805492935083929091906113a9908490611f19565b909155506113b79050611c0b565b1580156113d157506017546001600160a01b038681169116145b80156113f057506002546001600160a01b038581166101009092041614155b15611400576114008460016115de565b6001600160a01b0385166000908152600c602052604090205460ff16611491576018546001600160a01b0386811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561147e57600080fd5b505af192505050801561148f575060015b505b6001600160a01b0384166000908152600c602052604090205460ff16611522576018546001600160a01b0385811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561150f57600080fd5b505af1925050508015611520575060015b505b6018546019546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799161155a9160040190815260200190565b600060405180830381600087803b15801561157457600080fd5b505af1925050508015611585575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115cb91815260200190565b60405180910390a3506001949350505050565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b6001600160a01b038316600090815260086020526040812080548391908390611633908490611f70565b90915550506001600160a01b03831660009081526008602052604081208054849290611660908490611f19565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ac91815260200190565b60405180910390a35060019392505050565b6017546000906001600160a01b031633148015906116df5750601c5460ff16155b80156116ed5750601a5460ff165b801561094a575050601b5430600090815260086020526040902054101590565b601c805460ff1916600117905530600090815260086020526040812054905060c860065461173b9190611f31565b8111156117545760c86006546117519190611f31565b90505b6000611764601454601554610836565b61177057600d54611773565b60005b90506000600260105483856117889190611f51565b6117929190611f31565b61179c9190611f31565b905060006117aa8285611f70565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106117f257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561184657600080fd5b505afa15801561185a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187e9190611c6c565b8160018151811061189f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b81524792919091169063791ac947906118e9908690600090879030904290600401611ea9565b600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b50505050600081476119299190611f70565b90506000611938600288611f31565b6010546119459190611f70565b905060006002826119568a86611f51565b6119609190611f31565b61196a9190611f31565b9050600082600e548561197d9190611f51565b6119879190611f31565b9050600083600f548661199a9190611f51565b6119a49190611f31565b9050601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119f657600080fd5b505af193505050508015611a08575060015b508815611af45760165460125460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b158015611a7a57600080fd5b505af1158015611a8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ab39190611db3565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a1611b01565b611afe8382611f19565b90505b6013546040516001600160a01b03909116906184d09083906000818181858888f193505050503d8060008114611b53576040519150601f19603f3d011682016040523d82523d6000602084013e611b58565b606091505b5050601c805460ff19169055505050505050505050505050565b60008060115460105484611b869190611f51565b611b909190611f31565b30600090815260086020526040812080549293508392909190611bb4908490611f19565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611c038184611f70565b949350505050565b6000611c18600154151590565b801561094a575060025460015460ff90911690611c359043611f70565b11905090565b80358015158114611c4b57600080fd5b919050565b600060208284031215611c61578081fd5b81356108f681611f9d565b600060208284031215611c7d578081fd5b81516108f681611f9d565b60008060408385031215611c9a578081fd5b8235611ca581611f9d565b91506020830135611cb581611f9d565b809150509250929050565b600080600060608486031215611cd4578081fd5b8335611cdf81611f9d565b92506020840135611cef81611f9d565b929592945050506040919091013590565b60008060408385031215611d12578182fd5b8235611d1d81611f9d565b9150611d2b60208401611c3b565b90509250929050565b60008060408385031215611d46578182fd5b8235611d5181611f9d565b946020939093013593505050565b60008060408385031215611d71578182fd5b611d5183611c3b565b600060208284031215611d8b578081fd5b5035919050565b60008060408385031215611da4578182fd5b50508035926020909101359150565b600080600060608486031215611dc7578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215611df5578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b81811015611e3d57858101830151858201604001528201611e21565b81811115611e4e5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611ef85784516001600160a01b031683529383019391830191600101611ed3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f2c57611f2c611f87565b500190565b600082611f4c57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611f6b57611f6b611f87565b500290565b600082821015611f8257611f82611f87565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610e3357600080fdfea26469706673582212205a5bcc0329eaf839002872d3970763b32a8f9c173d9a5fcd400d6e282e1935db64736f6c634300080400336080604052600280546001600160a01b03191673c21223249ca28397b4b6541dffaecc539bff0c591790556ec097ce7bc90715b34b9f1000000000600b5561012c600c5567d02ab486cedc0000600d5561828c600e5534801561006157600080fd5b50604051610f75380380610f75833981016040819052610080916100da565b6001600160a01b0381166100a85773145677fc4d9b8f19b5d56d1820c48e0443049a306100aa565b805b600180546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610108565b6000602082840312156100eb578081fd5b81516001600160a01b0381168114610101578182fd5b9392505050565b610e5e806101176000396000f3fe6080604052600436106100fe5760003560e01c8063ce7c2ac211610095578063edf3525311610064578063edf352531461027b578063efca2eed1461029b578063f0fc6bca146102b1578063ffb2c479146102c6578063ffd49c84146102e657600080fd5b8063ce7c2ac2146101f0578063d0e30db014610247578063e2d2e2191461024f578063ed38f6b01461026557600080fd5b80633a98ef39116100d15780633a98ef391461018e5780634fab0ae8146101a457806397a992ea146101ba578063997664d7146101da57600080fd5b806311ce023d1461010357806314b6ca961461012c57806328fd31981461014e5780632d48e8961461016e575b600080fd5b34801561010f57600080fd5b50610119600b5481565b6040519081526020015b60405180910390f35b34801561013857600080fd5b5061014c610147366004610c6f565b6102fc565b005b34801561015a57600080fd5b50610119610169366004610c30565b610321565b34801561017a57600080fd5b5061014c610189366004610cea565b6103aa565b34801561019a57600080fd5b5061011960075481565b3480156101b057600080fd5b50610119600d5481565b3480156101c657600080fd5b5061014c6101d5366004610cba565b6103cc565b3480156101e657600080fd5b5061011960085481565b3480156101fc57600080fd5b5061022c61020b366004610c30565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610123565b61014c6103e8565b34801561025b57600080fd5b50610119600a5481565b34801561027157600080fd5b50610119600e5481565b34801561028757600080fd5b5061014c610296366004610c30565b6106b7565b3480156102a757600080fd5b5061011960095481565b3480156102bd57600080fd5b5061014c6106c3565b3480156102d257600080fd5b5061014c6102e1366004610cba565b6106ce565b3480156102f257600080fd5b50610119600c5481565b6000546001600160a01b0316331461031357600080fd5b61031d82826107ea565b5050565b6001600160a01b03811660009081526006602052604081205461034657506000919050565b6001600160a01b0382166000908152600660205260408120546103689061094b565b6001600160a01b038416600090815260066020526040902060010154909150808211610398575060009392505050565b6103a28183610dcb565b949350505050565b6000546001600160a01b031633146103c157600080fd5b600c91909155600d55565b6000546001600160a01b031633146103e357600080fd5b600e55565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561042c57600080fd5b505afa158015610440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104649190610cd2565b60408051600280825260608201835292935060009290916020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156104ce57600080fd5b505afa1580156104e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105069190610c53565b8160008151811061052757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260025482519116908290600190811061056657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de959034906105ac90600090869030904290600401610d0b565b6000604051808303818588803b1580156105c557600080fd5b505af11580156105d9573d6000803e3d6000fd5b50506002546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a082319060240160206040518083038186803b15801561062657600080fd5b505afa15801561063a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065e9190610cd2565b6106689190610dcb565b9050806008600082825461067c9190610d74565b9091555050600754600b54610692908390610dac565b61069c9190610d8c565b600a60008282546106ad9190610d74565b9091555050505050565b6106c08161096e565b50565b6106cc3361096e565b565b6000546001600160a01b031633146106e557600080fd5b600354806106f1575050565b6000805a905060005b848310801561070857508381105b156107e35783600f541061071c576000600f555b61075c6003600f548154811061074257634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316610a9e565b156107a1576107a16003600f548154811061078757634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031661096e565b5a6107ac9083610dcb565b6107b69084610d74565b92505a600f805491935060006107cb83610de2565b919050555080806107db90610de2565b9150506106fa565b5050505050565b6001600160a01b03821660009081526006602052604090205415610811576108118261096e565b60008111801561083757506001600160a01b038216600090815260066020526040902054155b1561089d57600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556108d0565b801580156108c257506001600160a01b03821660009081526006602052604090205415155b156108d0576108d082610ae3565b6001600160a01b0382166000908152600660205260409020546007546108f7908390610d74565b6109019190610dcb565b6007556001600160a01b03821660009081526006602052604090208190556109288161094b565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6000600b54600a548361095e9190610dac565b6109689190610d8c565b92915050565b6001600160a01b03811660009081526006602052604090205461098e5750565b600061099982610321565b9050801561031d5780600960008282546109b39190610d74565b909155505060025460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3e9190610c9a565b506001600160a01b0382166000908152600560209081526040808320429055600690915281206002018054839290610a77908490610d74565b90915550506001600160a01b0382166000908152600660205260409020546109289061094b565b600c546001600160a01b03821660009081526005602052604081205490914291610ac89190610d74565b1080156109685750600d54610adc83610321565b1192915050565b60038054610af390600190610dcb565b81548110610b1157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610b5d57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610ba990600190610dcb565b81548110610bc757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610c0b57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905550565b600060208284031215610c41578081fd5b8135610c4c81610e13565b9392505050565b600060208284031215610c64578081fd5b8151610c4c81610e13565b60008060408385031215610c81578081fd5b8235610c8c81610e13565b946020939093013593505050565b600060208284031215610cab578081fd5b81518015158114610c4c578182fd5b600060208284031215610ccb578081fd5b5035919050565b600060208284031215610ce3578081fd5b5051919050565b60008060408385031215610cfc578182fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015610d545784516001600160a01b031683529383019391830191600101610d2f565b50506001600160a01b039690961660408501525050506060015292915050565b60008219821115610d8757610d87610dfd565b500190565b600082610da757634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610dc657610dc6610dfd565b500290565b600082821015610ddd57610ddd610dfd565b500390565b6000600019821415610df657610df6610dfd565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146106c057600080fdfea2646970667358221220ab582a65464e93d8056b628dd0f1724ebca27db821deb5d3e31df67a6b1f8bcb64736f6c63430008040033
Deployed Bytecode
0x60806040526004361061024a5760003560e01c806382bf293c11610139578063d0e30db0116100b6578063ee02ff911161007a578063ee02ff911461070a578063f0b37c041461072a578063f2fde38b1461074a578063f708a64f1461076a578063f887ea401461078a578063fe9fbb80146107aa57600080fd5b8063d0e30db01461065c578063d51ed1c814610664578063dd62ed3e14610684578063df20fd49146106ca578063e96fada2146106ea57600080fd5b8063a4b45c00116100fd578063a4b45c00146105bc578063a8aa1b31146105dc578063a9059cbb146105fc578063b6a5d7de1461061c578063ca33e64c1461063c57600080fd5b806382bf293c146104f7578063893d20e81461051757806395d89b411461054e57806398e5bfee1461057c5780639d1944f51461059c57600080fd5b80632f54bf6e116101c75780636ac053ad1161018b5780636ac053ad146104515780636ddd1713146104715780636fcba3771461048b57806370a08231146104ab57806378109e54146104e157600080fd5b80632f54bf6e146103ac578063313ce567146103e057806345ba992d146103fc578063571ac8b014610411578063658d4b7f1461043157600080fd5b80631df4ccfc1161020e5780631df4ccfc1461031f578063201e79911461033557806323b872dd146103575780632b112e49146103775780632d48e8961461038c57600080fd5b80630445b6671461025657806306fdde031461027f578063095ea7b3146102ba5780631161ae39146102ea57806318160ddd1461030a57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c601b5481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b5060408051808201909152600981526843524f4745424f4e4b60b81b60208201525b6040516102769190611e11565b3480156102c657600080fd5b506102da6102d5366004611d34565b6107ca565b6040519015158152602001610276565b3480156102f657600080fd5b506102da610305366004611d92565b610836565b34801561031657600080fd5b5060065461026c565b34801561032b57600080fd5b5061026c60105481565b34801561034157600080fd5b50610355610350366004611d92565b61084a565b005b34801561036357600080fd5b506102da610372366004611cc0565b610883565b34801561038357600080fd5b5061026c6108fd565b34801561039857600080fd5b506103556103a7366004611d92565b61094f565b3480156103b857600080fd5b506102da6103c7366004611c50565b60025461010090046001600160a01b0390811691161490565b3480156103ec57600080fd5b5060405160098152602001610276565b34801561040857600080fd5b506103556109de565b34801561041d57600080fd5b506102da61042c366004611c50565b610a3d565b34801561043d57600080fd5b5061035561044c366004611d00565b610a51565b34801561045d57600080fd5b5061035561046c366004611d7a565b610aa1565b34801561047d57600080fd5b50601a546102da9060ff1681565b34801561049757600080fd5b506103556104a6366004611de0565b610b27565b3480156104b757600080fd5b5061026c6104c6366004611c50565b6001600160a01b031660009081526008602052604090205490565b3480156104ed57600080fd5b5061026c60075481565b34801561050357600080fd5b50610355610512366004611d7a565b610b7b565b34801561052357600080fd5b5060025461010090046001600160a01b03165b6040516001600160a01b039091168152602001610276565b34801561055a57600080fd5b5060408051808201909152600581526443524f424f60d81b60208201526102ad565b34801561058857600080fd5b50610355610597366004611d7a565b610bcb565b3480156105a857600080fd5b506103556105b7366004611d7a565b610c51565b3480156105c857600080fd5b506103556105d7366004611c88565b610c8a565b3480156105e857600080fd5b50601754610536906001600160a01b031681565b34801561060857600080fd5b506102da610617366004611d34565b610cdd565b34801561062857600080fd5b50610355610637366004611c50565b610cea565b34801561064857600080fd5b50601254610536906001600160a01b031681565b610355610d3e565b34801561067057600080fd5b5061026c61067f366004611d7a565b610d8e565b34801561069057600080fd5b5061026c61069f366004611c88565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106d657600080fd5b506103556106e5366004611d5f565b610dc7565b3480156106f657600080fd5b50601354610536906001600160a01b031681565b34801561071657600080fd5b50610355610725366004611c50565b610e03565b34801561073657600080fd5b50610355610745366004611c50565b610e36565b34801561075657600080fd5b50610355610765366004611c50565b610e87565b34801561077657600080fd5b50610355610785366004611d00565b610f2d565b34801561079657600080fd5b50601654610536906001600160a01b031681565b3480156107b657600080fd5b506102da6107c5366004611c50565b611031565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108259086815260200190565b60405180910390a350600192915050565b60008261084283610d8e565b119392505050565b61085333611031565b6108785760405162461bcd60e51b815260040161086f90611e84565b60405180910390fd5b601491909155601555565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146108e8576001600160a01b0384166000908152600960209081526040808320338452909152812080548492906108e2908490611f70565b90915550505b6108f384848461104f565b90505b9392505050565b6005546001600160a01b03166000908152600860205260408120546004546001600160a01b03166000908152600860205260409020546006546109409190611f70565b61094a9190611f70565b905090565b61095833611031565b6109745760405162461bcd60e51b815260040161086f90611e84565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b505050505050565b60185460405163edf3525360e01b81523360048201526001600160a01b039091169063edf3525390602401600060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b50505050565b6000610a4b826000196107ca565b92915050565b610a5a33611031565b610a765760405162461bcd60e51b815260040161086f90611e84565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6002546001600160a01b03610100909104163314610ad15760405162461bcd60e51b815260040161086f90611e64565b60025461010090046001600160a01b03166108fc6064610af18447611f51565b610afb9190611f31565b6040518115909202916000818181858888f19350505050158015610b23573d6000803e3d6000fd5b5050565b610b3033611031565b610b4c5760405162461bcd60e51b815260040161086f90611e84565b600d849055600e839055600f82905581610b668486611f19565b610b709190611f19565b601055601155505050565b6002546001600160a01b03610100909104163314610bab5760405162461bcd60e51b815260040161086f90611e64565b606481600654610bbb9190611f51565b610bc59190611f31565b60075550565b610bd433611031565b610bf05760405162461bcd60e51b815260040161086f90611e84565b601854604051634bd4c97560e11b8152600481018390526001600160a01b03909116906397a992ea90602401600060405180830381600087803b158015610c3657600080fd5b505af1158015610c4a573d6000803e3d6000fd5b5050505050565b610c5a33611031565b610c765760405162461bcd60e51b815260040161086f90611e84565b620b71b08110610c8557600080fd5b601955565b610c9333611031565b610caf5760405162461bcd60e51b815260040161086f90611e84565b601280546001600160a01b039384166001600160a01b03199182161790915560138054929093169116179055565b60006108f633848461104f565b6002546001600160a01b03610100909104163314610d1a5760405162461bcd60e51b815260040161086f90611e64565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c3657600080fd5b6000610d986108fd565b6017546001600160a01b0316600090815260086020526040902054610dbd9084611f51565b610a4b9190611f31565b610dd033611031565b610dec5760405162461bcd60e51b815260040161086f90611e84565b601a805460ff191692151592909217909155601b55565b610e0c33611031565b610e285760405162461bcd60e51b815260040161086f90611e84565b610e338160006115de565b50565b6002546001600160a01b03610100909104163314610e665760405162461bcd60e51b815260040161086f90611e64565b6001600160a01b03166000908152600360205260409020805460ff19169055565b6002546001600160a01b03610100909104163314610eb75760405162461bcd60e51b815260040161086f90611e64565b60028054610100600160a81b0319166101006001600160a01b03841690810291909117909155600081815260036020908152604091829020805460ff1916600117905590519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610f3633611031565b610f525760405162461bcd60e51b815260040161086f90611e84565b6001600160a01b0382163014801590610f7957506017546001600160a01b03838116911614155b610f8257600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff19168215801591909117909155610fe857601854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044016109a8565b6018546001600160a01b0383811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016109a8565b6001600160a01b031660009081526003602052604090205460ff1690565b601c5460009060ff161561106f57611068848484611609565b90506108f6565b6001600160a01b03841660009081526020819052604090205460ff16156110e45760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b606482015260840161086f565b60015415801561110157506017546001600160a01b038481169116145b156111ad576001600160a01b03841660009081526008602052604090205461112857600080fd5b6002546001600160a01b0385811661010090920416146111a45760405162461bcd60e51b815260206004820152603160248201527f4f6e6c7920746865206f776e65722063616e20626520746865206669727374206044820152703a379030b232103634b8bab4b234ba3c9760791b606482015260840161086f565b6111ad43600155565b6001600160a01b03841660009081526003602052604090205460ff161580156111df57506001600160a01b0383163014155b80156111f957506004546001600160a01b03848116911614155b801561121357506017546001600160a01b03848116911614155b801561122d57506013546001600160a01b03848116911614155b801561124757506012546001600160a01b03848116911614155b801561126657506002546001600160a01b038481166101009092041614155b15611309576001600160a01b0383166000908152600860205260409020546007546112918483611f19565b1115611307576040805162461bcd60e51b81526020600482015260248101919091527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f7420627579207468617420616d6f756e742e606482015260840161086f565b505b6113116116be565b1561131e5761131e61170d565b6001600160a01b03841660009081526008602052604081208054849290611346908490611f70565b90915550506001600160a01b0384166000908152600a602052604081205460ff1615611372578261137c565b61137c8584611b72565b6001600160a01b0385166000908152600860205260408120805492935083929091906113a9908490611f19565b909155506113b79050611c0b565b1580156113d157506017546001600160a01b038681169116145b80156113f057506002546001600160a01b038581166101009092041614155b15611400576114008460016115de565b6001600160a01b0385166000908152600c602052604090205460ff16611491576018546001600160a01b0386811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561147e57600080fd5b505af192505050801561148f575060015b505b6001600160a01b0384166000908152600c602052604090205460ff16611522576018546001600160a01b0385811660008181526008602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561150f57600080fd5b505af1925050508015611520575060015b505b6018546019546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799161155a9160040190815260200190565b600060405180830381600087803b15801561157457600080fd5b505af1925050508015611585575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115cb91815260200190565b60405180910390a3506001949350505050565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b6001600160a01b038316600090815260086020526040812080548391908390611633908490611f70565b90915550506001600160a01b03831660009081526008602052604081208054849290611660908490611f19565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ac91815260200190565b60405180910390a35060019392505050565b6017546000906001600160a01b031633148015906116df5750601c5460ff16155b80156116ed5750601a5460ff165b801561094a575050601b5430600090815260086020526040902054101590565b601c805460ff1916600117905530600090815260086020526040812054905060c860065461173b9190611f31565b8111156117545760c86006546117519190611f31565b90505b6000611764601454601554610836565b61177057600d54611773565b60005b90506000600260105483856117889190611f51565b6117929190611f31565b61179c9190611f31565b905060006117aa8285611f70565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106117f257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561184657600080fd5b505afa15801561185a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187e9190611c6c565b8160018151811061189f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b81524792919091169063791ac947906118e9908690600090879030904290600401611ea9565b600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b50505050600081476119299190611f70565b90506000611938600288611f31565b6010546119459190611f70565b905060006002826119568a86611f51565b6119609190611f31565b61196a9190611f31565b9050600082600e548561197d9190611f51565b6119879190611f31565b9050600083600f548661199a9190611f51565b6119a49190611f31565b9050601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119f657600080fd5b505af193505050508015611a08575060015b508815611af45760165460125460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b158015611a7a57600080fd5b505af1158015611a8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ab39190611db3565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a1611b01565b611afe8382611f19565b90505b6013546040516001600160a01b03909116906184d09083906000818181858888f193505050503d8060008114611b53576040519150601f19603f3d011682016040523d82523d6000602084013e611b58565b606091505b5050601c805460ff19169055505050505050505050505050565b60008060115460105484611b869190611f51565b611b909190611f31565b30600090815260086020526040812080549293508392909190611bb4908490611f19565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611c038184611f70565b949350505050565b6000611c18600154151590565b801561094a575060025460015460ff90911690611c359043611f70565b11905090565b80358015158114611c4b57600080fd5b919050565b600060208284031215611c61578081fd5b81356108f681611f9d565b600060208284031215611c7d578081fd5b81516108f681611f9d565b60008060408385031215611c9a578081fd5b8235611ca581611f9d565b91506020830135611cb581611f9d565b809150509250929050565b600080600060608486031215611cd4578081fd5b8335611cdf81611f9d565b92506020840135611cef81611f9d565b929592945050506040919091013590565b60008060408385031215611d12578182fd5b8235611d1d81611f9d565b9150611d2b60208401611c3b565b90509250929050565b60008060408385031215611d46578182fd5b8235611d5181611f9d565b946020939093013593505050565b60008060408385031215611d71578182fd5b611d5183611c3b565b600060208284031215611d8b578081fd5b5035919050565b60008060408385031215611da4578182fd5b50508035926020909101359150565b600080600060608486031215611dc7578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215611df5578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b81811015611e3d57858101830151858201604001528201611e21565b81811115611e4e5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611ef85784516001600160a01b031683529383019391830191600101611ed3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f2c57611f2c611f87565b500190565b600082611f4c57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611f6b57611f6b611f87565b500290565b600082821015611f8257611f82611f87565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610e3357600080fdfea26469706673582212205a5bcc0329eaf839002872d3970763b32a8f9c173d9a5fcd400d6e282e1935db64736f6c63430008040033
Deployed ByteCode Sourcemap
11092:11343:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12337:55;;;;;;;;;;;;;;;;;;;8867:25:1;;;8855:2;8840:18;12337:55:0;;;;;;;;13717:80;;;;;;;;;;-1:-1:-1;13789:5:0;;;;;;;;;;;;-1:-1:-1;;;13789:5:0;;;;13717:80;;;;;;;:::i;14140:216::-;;;;;;;;;;-1:-1:-1;14140:216:0;;;;;:::i;:::-;;:::i;:::-;;;5930:14:1;;5923:22;5905:41;;5893:2;5878:18;14140:216:0;5860:92:1;22043:150:0;;;;;;;;;;-1:-1:-1;22043:150:0;;;;;:::i;:::-;;:::i;13447:88::-;;;;;;;;;;-1:-1:-1;13520:12:0;;13447:88;;11914:28;;;;;;;;;;;;;;;;20990:183;;;;;;;;;;-1:-1:-1;20990:183:0;;;;;:::i;:::-;;:::i;:::-;;14661:311;;;;;;;;;;-1:-1:-1;14661:311:0;;;;;:::i;:::-;;:::i;21735:136::-;;;;;;;;;;;;;:::i;21182:183::-;;;;;;;;;;-1:-1:-1;21182:183:0;;;;;:::i;:::-;;:::i;1601:103::-;;;;;;;;;;-1:-1:-1;1601:103:0;;;;;:::i;:::-;1691:5;;;;;-1:-1:-1;;;;;1691:5:0;;;1680:16;;;;1601:103;13541:80;;;;;;;;;;-1:-1:-1;13541:80:0;;11376:1;10286:36:1;;10274:2;10259:18;13541:80:0;10241:87:1;21487:96:0;;;;;;;;;;;;;:::i;14365:122::-;;;;;;;;;;-1:-1:-1;14365:122:0;;;;;:::i;:::-;;:::i;20080:120::-;;;;;;;;;;-1:-1:-1;20080:120:0;;;;;:::i;:::-;;:::i;17815:139::-;;;;;;;;;;-1:-1:-1;17815:139:0;;;;;:::i;:::-;;:::i;12300:30::-;;;;;;;;;;-1:-1:-1;12300:30:0;;;;;;;;20209:370;;;;;;;;;;-1:-1:-1;20209:370:0;;;;;:::i;:::-;;:::i;13887:105::-;;;;;;;;;;-1:-1:-1;13887:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;13971:18:0;13953:7;13971:18;;;:9;:18;;;;;;;13887:105;11491:51;;;;;;;;;;;;;;;;14980:149;;;;;;;;;;-1:-1:-1;14980:149:0;;;;;:::i;:::-;;:::i;13803:78::-;;;;;;;;;;-1:-1:-1;13873:5:0;;;;;-1:-1:-1;;;;;13873:5:0;13803:78;;;-1:-1:-1;;;;;4327:32:1;;;4309:51;;4297:2;4282:18;13803:78:0;4264:102:1;13627:84:0;;;;;;;;;;-1:-1:-1;13701:7:0;;;;;;;;;;;;-1:-1:-1;;;13701:7:0;;;;13627:84;;21370:112;;;;;;;;;;-1:-1:-1;21370:112:0;;;;;:::i;:::-;;:::i;21591:136::-;;;;;;;;;;-1:-1:-1;21591:136:0;;;;;:::i;:::-;;:::i;20588:228::-;;;;;;;;;;-1:-1:-1;20588:228:0;;;;;:::i;:::-;;:::i;12192:19::-;;;;;;;;;;-1:-1:-1;12192:19:0;;;;-1:-1:-1;;;;;12192:19:0;;;14496:156;;;;;;;;;;-1:-1:-1;14496:156:0;;;;;:::i;:::-;;:::i;1392:94::-;;;;;;;;;;-1:-1:-1;1392:94:0;;;;;:::i;:::-;;:::i;11988:36::-;;;;;;;;;;-1:-1:-1;11988:36:0;;;;-1:-1:-1;;;;;11988:36:0;;;22198:85;;;:::i;21880:154::-;;;;;;;;;;-1:-1:-1;21880:154:0;;;;;:::i;:::-;;:::i;13998:133::-;;;;;;;;;;-1:-1:-1;13998:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;14100:19:0;;;14082:7;14100:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13998:133;20825:156;;;;;;;;;;-1:-1:-1;20825:156:0;;;;;:::i;:::-;;:::i;12031:35::-;;;;;;;;;;-1:-1:-1;12031:35:0;;;;-1:-1:-1;;;;;12031:35:0;;;22288:83;;;;;;;;;;-1:-1:-1;22288:83:0;;;;;:::i;:::-;;:::i;1495:97::-;;;;;;;;;;-1:-1:-1;1495:97:0;;;;;:::i;:::-;;:::i;1829:173::-;;;;;;;;;;-1:-1:-1;1829:173:0;;;;;:::i;:::-;;:::i;19724:347::-;;;;;;;;;;-1:-1:-1;19724:347:0;;;;;:::i;:::-;;:::i;12161:24::-;;;;;;;;;;-1:-1:-1;12161:24:0;;;;-1:-1:-1;;;;;12161:24:0;;;1713:107;;;;;;;;;;-1:-1:-1;1713:107:0;;;;;:::i;:::-;;:::i;14140:216::-;14244:10;14215:4;14232:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14232:32:0;;;;;;;;;;:41;;;14289:37;14215:4;;14232:32;;14289:37;;;;14267:6;8867:25:1;;8855:2;8840:18;;8822:76;14289:37:0;;;;;;;;-1:-1:-1;14344:4:0;14140:216;;;;:::o;22043:150::-;22123:4;22179:6;22147:29;22167:8;22147:19;:29::i;:::-;:38;;22043:150;-1:-1:-1;;;22043:150:0:o;20990:183::-;1332:24;1345:10;1332:12;:24::i;:::-;1324:48;;;;-1:-1:-1;;;1324:48:0;;;;;;;:::i;:::-;;;;;;;;;21088:15:::1;:25:::0;;;;21124:26:::1;:41:::0;20990:183::o;14661:311::-;-1:-1:-1;;;;;14782:19:0;;14761:4;14782:19;;;:11;:19;;;;;;;;14802:10;14782:31;;;;;;;;-1:-1:-1;;14782:52:0;14778:126;;-1:-1:-1;;;;;14851:19:0;;;;;;:11;:19;;;;;;;;14871:10;14851:31;;;;;;;:41;;14886:6;;14851:19;:41;;14886:6;;14851:41;:::i;:::-;;;;-1:-1:-1;;14778:126:0;14924:40;14938:6;14946:9;14957:6;14924:13;:40::i;:::-;14917:47;;14661:311;;;;;;:::o;21735:136::-;21858:4;;-1:-1:-1;;;;;21858:4:0;21788:7;13971:18;;;:9;:18;;;;;;21840:4;;-1:-1:-1;;;;;21840:4:0;13953:7;13971:18;;;:9;:18;;;;;;21815:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;21808:55;;21735:136;:::o;21182:183::-;1332:24;1345:10;1332:12;:24::i;:::-;1324:48;;;;-1:-1:-1;;;1324:48:0;;;;;;;:::i;:::-;21292:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;21292:65:0;;::::1;::::0;::::1;10065:25:1::0;;;10106:18;;;10099:34;;;-1:-1:-1;;;;;21292:11:0;;::::1;::::0;:35:::1;::::0;10038:18:1;;21292:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21182:183:::0;;:::o;21487:96::-;21535:11;;:40;;-1:-1:-1;;;21535:40:0;;21564:10;21535:40;;;4309:51:1;-1:-1:-1;;;;;21535:11:0;;;;:28;;4282:18:1;;21535:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21487:96::o;14365:122::-;14420:4;14444:35;14452:7;-1:-1:-1;;14444:7:0;:35::i;:::-;14437:42;14365:122;-1:-1:-1;;14365:122:0:o;20080:120::-;1332:24;1345:10;1332:12;:24::i;:::-;1324:48;;;;-1:-1:-1;;;1324:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20164:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;20164:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20080:120::o;17815:139::-;1691:5;;-1:-1:-1;;;;;1691:5:0;;;;;1249:10;1680:16;1233:38;;;;-1:-1:-1;;;1233:38:0;;;;;;;:::i;:::-;17889:5:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;17889:5:0::1;17881:65;17942:3;17905:34;17929:10:::0;17905:21:::1;:34;:::i;:::-;:40;;;;:::i;:::-;17881:65;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17815:139:::0;:::o;20209:370::-;1332:24;1345:10;1332:12;:24::i;:::-;1324:48;;;;-1:-1:-1;;;1324:48:0;;;;;;;:::i;:::-;20352:12:::1;:28:::0;;;20391:13:::1;:30:::0;;;20432:12:::1;:28:::0;;;20447:13;20482:30:::1;20407:14:::0;20367:13;20482:30:::1;:::i;:::-;:46;;;;:::i;:::-;20471:8;:57:::0;20539:14:::1;:32:::0;-1:-1:-1;;;20209:370:0:o;14980:149::-;1691:5;;-1:-1:-1;;;;;1691:5:0;;;;;1249:10;1680:16;1233:38;;;;-1:-1:-1;;;1233:38:0;;;;;;;:::i;:::-;15118:3:::1;15099:14;15084:12;;:29;;;;:::i;:::-;15083:38;;;;:::i;:::-;15065:15;:56:::0;-1:-1:-1;14980:149:0:o;21370:112::-;1332:24;1345:10;1332:12;:24::i;:::-;1324:48;;;;-1:-1:-1;;;1324:48:0;;;;;;;:::i;:::-;21447:11:::1;::::0;:27:::1;::::0;-1:-1:-1;;;21447:27:0;;::::1;::::0;::::1;8867:25:1::0;;;-1:-1:-1;;;;;21447:11:0;;::::1;::::0;:22:::1;::::0;8840:18:1;;21447:27:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21370:112:::0;:::o;21591:136::-;1332:24;1345:10;1332:12;:24::i;:::-;1324:48;;;;-1:-1:-1;;;1324:48:0;;;;;;;:::i;:::-;21681:6:::1;21675:3;:12;21667:21;;;::::0;::::1;;21699:14;:20:::0;21591:136::o;20588:228::-;1332:24;1345:10;1332:12;:24::i;:::-;1324:48;;;;-1:-1:-1;;;1324:48:0;;;;;;;:::i;:::-;20707:21:::1;:46:::0;;-1:-1:-1;;;;;20707:46:0;;::::1;-1:-1:-1::0;;;;;;20707:46:0;;::::1;;::::0;;;20764:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;20588:228::o;14496:156::-;14576:4;14600:44;14614:10;14626:9;14637:6;14600:13;:44::i;1392:94::-;1691:5;;-1:-1:-1;;;;;1691:5:0;;;;;1249:10;1680:16;1233:38;;;;-1:-1:-1;;;1233:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1452:19:0::1;;::::0;;;:14:::1;:19;::::0;;;;:26;;-1:-1:-1;;1452:26:0::1;1474:4;1452:26;::::0;;1392:94::o;22198:85::-;22239:11;;;;;;;;;-1:-1:-1;;;;;22239:11:0;-1:-1:-1;;;;;22239:19:0;;22266:9;22239:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21880:154;21948:7;22004:22;:20;:22::i;:::-;21996:4;;-1:-1:-1;;;;;21996:4:0;13953:7;13971:18;;;:9;:18;;;;;;21975:26;;:8;:26;:::i;:::-;:51;;;;:::i;20825:156::-;1332:24;1345:10;1332:12;:24::i;:::-;1324:48;;;;-1:-1:-1;;;1324:48:0;;;;;;;:::i;:::-;20917:11:::1;:22:::0;;-1:-1:-1;;20917:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;20950:13:::1;:23:::0;20825:156::o;22288:83::-;1332:24;1345:10;1332:12;:24::i;:::-;1324:48;;;;-1:-1:-1;;;1324:48:0;;;;;;;:::i;:::-;22350:16:::1;22355:3;22360:5;22350:4;:16::i;:::-;22288:83:::0;:::o;1495:97::-;1691:5;;-1:-1:-1;;;;;1691:5:0;;;;;1249:10;1680:16;1233:38;;;;-1:-1:-1;;;1233:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1557:19:0::1;1579:5;1557:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;1557:27:0::1;::::0;;1495:97::o;1829:173::-;1691:5;;-1:-1:-1;;;;;1691:5:0;;;;;1249:10;1680:16;1233:38;;;;-1:-1:-1;;;1233:38:0;;;;;;;:::i;:::-;1905:5:::1;:11:::0;;-1:-1:-1;;;;;;1905:11:0::1;;-1:-1:-1::0;;;;;1905:11:0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;1927:19:0;;;:14:::1;:19;::::0;;;;;;;;:26;;-1:-1:-1;;1927:26:0::1;-1:-1:-1::0;1927:26:0::1;::::0;;1969:25;;4309:51:1;;;1969:25:0::1;::::0;4282:18:1;1969:25:0::1;;;;;;;1829:173:::0;:::o;19724:347::-;1332:24;1345:10;1332:12;:24::i;:::-;1324:48;;;;-1:-1:-1;;;1324:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19821:23:0;::::1;19839:4;19821:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;19858:4:0::1;::::0;-1:-1:-1;;;;;19848:14:0;;::::1;19858:4:::0;::::1;19848:14;;19821:41;19813:50;;;::::0;::::1;;-1:-1:-1::0;;;;;19874:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;19874:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;19918:146:::1;;19943:11;::::0;:31:::1;::::0;-1:-1:-1;;;19943:31:0;;-1:-1:-1;;;;;4787:32:1;;;19943:31:0::1;::::0;::::1;4769:51:1::0;19943:11:0::1;4836:18:1::0;;;4829:34;19943:11:0;;::::1;::::0;:20:::1;::::0;4742:18:1;;19943:31:0::1;4724:145:1::0;19918:146:0::1;20005:11;::::0;-1:-1:-1;;;;;20034:17:0;;::::1;20005:11;20034:17:::0;;;:9:::1;:17;::::0;;;;;;;20005:47;;-1:-1:-1;;;20005:47:0;;::::1;::::0;::::1;4769:51:1::0;;;;4836:18;;;4829:34;20005:11:0;::::1;::::0;:20:::1;::::0;4742:18:1;;20005:47:0::1;4724:145:1::0;1713:107:0;-1:-1:-1;;;;;1793:19:0;1769:4;1793:19;;;:14;:19;;;;;;;;;1713:107::o;15138:1780::-;15251:6;;15230:4;;15251:6;;15247:72;;;15272:41;15287:6;15295:9;15306:6;15272:14;:41::i;:::-;15265:48;;;;15247:72;-1:-1:-1;;;;;4751:11:0;;4733:4;4751:11;;;;;;;;;;;;;15325:82;;;15355:46;;-1:-1:-1;;;15355:46:0;;8178:2:1;15355:46:0;;;8160:21:1;8217:2;8197:18;;;8190:30;8256:34;8236:18;;;8229:62;-1:-1:-1;;;8307:18:1;;;8300:34;8351:19;;15355:46:0;8150:226:1;15325:82:0;4526:11;;:15;;;15417:32;;-1:-1:-1;15445:4:0;;-1:-1:-1;;;;;15432:17:0;;;15445:4;;15432:17;15417:32;15413:210;;;-1:-1:-1;;;;;15474:17:0;;15494:1;15474:17;;;:9;:17;;;;;;15466:30;;;;;;15529:5;;-1:-1:-1;;;;;15519:15:0;;;15529:5;;;;;15519:15;15511:77;;;;-1:-1:-1;;;15511:77:0;;7426:2:1;15511:77:0;;;7408:21:1;7465:2;7445:18;;;7438:30;7504:34;7484:18;;;7477:62;-1:-1:-1;;;7555:18:1;;;7548:47;7612:19;;15511:77:0;7398:239:1;15511:77:0;15603:8;4443:12;4429:11;:26;4397:63;15603:8;-1:-1:-1;;;;;15669:22:0;;;;;;:14;:22;;;;;;;;15668:23;:67;;;;-1:-1:-1;;;;;;15709:26:0;;15730:4;15709:26;;15668:67;:112;;;;-1:-1:-1;15775:4:0;;-1:-1:-1;;;;;15754:26:0;;;15775:4;;15754:26;;15668:112;:147;;;;-1:-1:-1;15811:4:0;;-1:-1:-1;;;;;15798:17:0;;;15811:4;;15798:17;;15668:147;:198;;;;-1:-1:-1;15846:20:0;;-1:-1:-1;;;;;15833:33:0;;;15846:20;;15833:33;;15668:198;:250;;;;-1:-1:-1;15897:21:0;;-1:-1:-1;;;;;15884:34:0;;;15897:21;;15884:34;;15668:250;:287;;;;-1:-1:-1;15950:5:0;;-1:-1:-1;;;;;15937:18:0;;;15950:5;;;;;15937:18;;15668:287;15664:491;;;-1:-1:-1;;;;;13971:18:0;;15976;13971;;;:9;:18;;;;;;16065:15;;16041:19;16054:6;13971:18;16041:19;:::i;:::-;16040:40;;16032:117;;;;;-1:-1:-1;;;16032:117:0;;6993:2:1;16032:117:0;;;6975:21:1;7012:18;;;7005:30;;;;7071:34;7051:18;;;7044:62;7142:34;7122:18;;;7115:62;7194:19;;16032:117:0;6965:254:1;16032:117:0;15664:491;;16173:16;:14;:16::i;:::-;16169:44;;;16197:10;:8;:10::i;:::-;-1:-1:-1;;;;;16225:17:0;;;;;;:9;:17;;;;;:27;;16246:6;;16225:17;:27;;16246:6;;16225:27;:::i;:::-;;;;-1:-1:-1;;;;;;;17282:19:0;;16263:22;17282:19;;;:11;:19;;;;;;;;17281:20;16288:56;;16338:6;16288:56;;;16312:23;16320:6;16328;16312:7;:23::i;:::-;-1:-1:-1;;;;;16355:20:0;;;;;;:9;:20;;;;;:38;;16263:81;;-1:-1:-1;16263:81:0;;16355:20;;;:38;;16263:81;;16355:38;:::i;:::-;;;;-1:-1:-1;16405:10:0;;-1:-1:-1;16405:8:0;:10::i;:::-;16404:11;:29;;;;-1:-1:-1;16429:4:0;;-1:-1:-1;;;;;16419:14:0;;;16429:4;;16419:14;16404:29;:51;;;;-1:-1:-1;16450:5:0;;-1:-1:-1;;;;;16437:18:0;;;16450:5;;;;;16437:18;;16404:51;16400:90;;;16463:21;16468:9;16479:4;16463;:21::i;:::-;-1:-1:-1;;;;;16507:24:0;;;;;;:16;:24;;;;;;;;16502:120;;16552:11;;-1:-1:-1;;;;;16581:17:0;;;16552:11;16581:17;;;:9;:17;;;;;;;;16552:47;;-1:-1:-1;;;16552:47:0;;;;;4769:51:1;;;;4836:18;;;4829:34;16552:11:0;;;:20;;4742:18:1;;16552:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16548:63;;-1:-1:-1;;;;;16640:27:0;;;;;;:16;:27;;;;;;;;16635:129;;16688:11;;-1:-1:-1;;;;;16720:20:0;;;16688:11;16720:20;;;:9;:20;;;;;;;;16688:53;;-1:-1:-1;;;16688:53:0;;;;;4769:51:1;;;;4836:18;;;4829:34;16688:11:0;;;:20;;4742:18:1;;16688:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16684:69;;16780:11;;16800:14;;16780:35;;-1:-1:-1;;;;;;16780:35:0;;-1:-1:-1;;;;;16780:11:0;;;;:19;;:35;;;;8867:25:1;;;8855:2;8840:18;;8822:76;16780:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16776:51;16862:9;-1:-1:-1;;;;;16845:43:0;16854:6;-1:-1:-1;;;;;16845:43:0;;16873:14;16845:43;;;;8867:25:1;;8855:2;8840:18;;8822:76;16845:43:0;;;;;;;;-1:-1:-1;16906:4:0;;15138:1780;-1:-1:-1;;;;15138:1780:0:o;4772:71::-;-1:-1:-1;;;;;4822:11:0;;;;:6;:11;;;;;;;;;;:16;;-1:-1:-1;;4822:16:0;;;;;;;;;;4772:71::o;16927:259::-;-1:-1:-1;;;;;17037:17:0;;17020:4;17037:17;;;:9;:17;;;;;:27;;17058:6;;17037:17;17020:4;;17037:27;;17058:6;;17037:27;:::i;:::-;;;;-1:-1:-1;;;;;;;17075:20:0;;;;;;:9;:20;;;;;:30;;17099:6;;17075:20;:30;;17099:6;;17075:30;:::i;:::-;;;;;;;;17138:9;-1:-1:-1;;;;;17121:35:0;17130:6;-1:-1:-1;;;;;17121:35:0;;17149:6;17121:35;;;;8867:25:1;;8855:2;8840:18;;8822:76;17121:35:0;;;;;;;;-1:-1:-1;17174:4:0;16927:259;;;;;:::o;17624:182::-;17711:4;;17673;;-1:-1:-1;;;;;17711:4:0;17697:10;:18;;;;:33;;-1:-1:-1;17724:6:0;;;;17723:7;17697:33;:52;;;;-1:-1:-1;17738:11:0;;;;17697:52;:101;;;;-1:-1:-1;;17785:13:0;;17775:4;17757:24;;;;:9;:24;;;;;;:41;;;17624:182::o;17962:1754::-;12459:6;:13;;-1:-1:-1;;12459:13:0;12468:4;12459:13;;;18046:4:::1;-1:-1:-1::0;13971:18:0;;;:9;:18;;;;;;18005:47:::1;;18091:3;18076:12;;:18;;;;:::i;:::-;18061:12;:33;18057:84;;;18132:3;18117:12;;:18;;;;:::i;:::-;18102:33;;18057:84;18151:27;18181:60;18197:15;;18214:26;;18181:15;:60::i;:::-;:79;;18248:12;;18181:79;;;18244:1;18181:79;18151:109;;18271:23;18345:1;18334:8;;18312:19;18297:12;:34;;;;:::i;:::-;:45;;;;:::i;:::-;:49;;;;:::i;:::-;18271:75:::0;-1:-1:-1;18357:20:0::1;18380:30;18271:75:::0;18380:12;:30:::1;:::i;:::-;18448:16;::::0;;18462:1:::1;18448:16:::0;;;;;::::1;::::0;;18357:53;;-1:-1:-1;18424:21:0::1;::::0;18448:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18448:16:0::1;18424:40;;18493:4;18475;18480:1;18475:7;;;;;;-1:-1:-1::0;;;18475:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;18475:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18519:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;18519:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;18475:7;;18519:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18509:4;18514:1;18509:7;;;;;;-1:-1:-1::0;;;18509:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;18509:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18605:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;18605:188:0;;18570:21:::1;::::0;18605:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;18677:12;;18546:21:::1;::::0;18720:4;;18747::::1;::::0;18767:15:::1;::::0;18605:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18807:14;18848:13;18824:21;:37;;;;:::i;:::-;18807:54:::0;-1:-1:-1;18872:12:0::1;18898:23;18920:1;18898:19:::0;:23:::1;:::i;:::-;18887:8;;:34;;;;:::i;:::-;18872:49:::0;-1:-1:-1;18932:23:0::1;18996:1;18872:49:::0;18958:28:::1;18967:19:::0;18958:6;:28:::1;:::i;:::-;:35;;;;:::i;:::-;:39;;;;:::i;:::-;18932:65;;19008:24;19060:4;19044:13;;19035:6;:22;;;;:::i;:::-;:29;;;;:::i;:::-;19008:56;;19075:23;19125:4;19110:12;;19101:6;:21;;;;:::i;:::-;:28;;;;:::i;:::-;19075:54;;19147:11;;;;;;;;;-1:-1:-1::0;;;;;19147:11:0::1;-1:-1:-1::0;;;;;19147:19:0::1;;19174:16;19147:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;19143:62:::0;19222:19;;19218:410:::1;;19258:6;::::0;19429:21:::1;::::0;19258:241:::1;::::0;-1:-1:-1;;;19258:241:0;;19331:4:::1;19258:241;::::0;::::1;5494:34:1::0;5544:18;;;5537:34;;;19258:6:0::1;5587:18:1::0;;;5580:34;;;5630:18;;;5623:34;-1:-1:-1;;;;;19429:21:0;;::::1;5673:19:1::0;;;5666:44;19469:15:0::1;5726:19:1::0;;;5719:35;19258:6:0;::::1;::::0;:22:::1;::::0;19288:15;;5428:19:1;;19258:241:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19519:45:0::1;::::0;;10065:25:1;;;10121:2;10106:18;;10099:34;;;19519:45:0::1;::::0;-1:-1:-1;10038:18:1;19519:45:0::1;;;;;;;19218:410;;;19588:34;19607:15:::0;19588:34;::::1;:::i;:::-;;;19218:410;19642:20;::::0;19634:74:::1;::::0;-1:-1:-1;;;;;19642:20:0;;::::1;::::0;19698:5:::1;::::0;19676:15;;19634:74:::1;::::0;;;19676:15;19642:20;19698:5;19634:74:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;12477:6:0;:14;;-1:-1:-1;;12477:14:0;;;-1:-1:-1;;;;;;;;;;;;17962:1754:0:o;17318:297::-;17385:7;17405:17;17445:14;;17434:8;;17425:6;:17;;;;:::i;:::-;:34;;;;:::i;:::-;17491:4;17473:24;;;;:9;:24;;;;;:37;;17405:54;;-1:-1:-1;17405:54:0;;17473:24;;;:37;;17405:54;;17473:37;:::i;:::-;;;;-1:-1:-1;;17526:42:0;;8867:25:1;;;17551:4:0;;-1:-1:-1;;;;;17526:42:0;;;;;8855:2:1;8840:18;17526:42:0;;;;;;;17589:18;17598:9;17589:6;:18;:::i;:::-;17582:25;17318:297;-1:-1:-1;;;;17318:297:0:o;4551:121::-;4594:4;4612:10;4526:11;;:15;;;4465:81;4612:10;:55;;;;-1:-1:-1;4655:12:0;;;4641:11;4655:12;;;;;4626:26;;:12;:26;:::i;:::-;:41;4605:62;;4551:121;:::o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;977:398::-;1045:6;1053;1106:2;1094:9;1085:7;1081:23;1077:32;1074:2;;;1127:6;1119;1112:22;1074:2;1171:9;1158:23;1190:31;1215:5;1190:31;:::i;:::-;1240:5;-1:-1:-1;1297:2:1;1282:18;;1269:32;1310:33;1269:32;1310:33;:::i;:::-;1362:7;1352:17;;;1064:311;;;;;:::o;1380:466::-;1457:6;1465;1473;1526:2;1514:9;1505:7;1501:23;1497:32;1494:2;;;1547:6;1539;1532:22;1494:2;1591:9;1578:23;1610:31;1635:5;1610:31;:::i;:::-;1660:5;-1:-1:-1;1717:2:1;1702:18;;1689:32;1730:33;1689:32;1730:33;:::i;:::-;1484:362;;1782:7;;-1:-1:-1;;;1836:2:1;1821:18;;;;1808:32;;1484:362::o;1851:325::-;1916:6;1924;1977:2;1965:9;1956:7;1952:23;1948:32;1945:2;;;1998:6;1990;1983:22;1945:2;2042:9;2029:23;2061:31;2086:5;2061:31;:::i;:::-;2111:5;-1:-1:-1;2135:35:1;2166:2;2151:18;;2135:35;:::i;:::-;2125:45;;1935:241;;;;;:::o;2181:325::-;2249:6;2257;2310:2;2298:9;2289:7;2285:23;2281:32;2278:2;;;2331:6;2323;2316:22;2278:2;2375:9;2362:23;2394:31;2419:5;2394:31;:::i;:::-;2444:5;2496:2;2481:18;;;;2468:32;;-1:-1:-1;;;2268:238:1:o;2511:258::-;2576:6;2584;2637:2;2625:9;2616:7;2612:23;2608:32;2605:2;;;2658:6;2650;2643:22;2605:2;2686:26;2702:9;2686:26;:::i;2774:190::-;2833:6;2886:2;2874:9;2865:7;2861:23;2857:32;2854:2;;;2907:6;2899;2892:22;2854:2;-1:-1:-1;2935:23:1;;2844:120;-1:-1:-1;2844:120:1:o;2969:258::-;3037:6;3045;3098:2;3086:9;3077:7;3073:23;3069:32;3066:2;;;3119:6;3111;3104:22;3066:2;-1:-1:-1;;3147:23:1;;;3217:2;3202:18;;;3189:32;;-1:-1:-1;3056:171:1:o;3232:316::-;3320:6;3328;3336;3389:2;3377:9;3368:7;3364:23;3360:32;3357:2;;;3410:6;3402;3395:22;3357:2;3444:9;3438:16;3428:26;;3494:2;3483:9;3479:18;3473:25;3463:35;;3538:2;3527:9;3523:18;3517:25;3507:35;;3347:201;;;;;:::o;3553:395::-;3639:6;3647;3655;3663;3716:3;3704:9;3695:7;3691:23;3687:33;3684:2;;;3738:6;3730;3723:22;3684:2;-1:-1:-1;;3766:23:1;;;3836:2;3821:18;;3808:32;;-1:-1:-1;3887:2:1;3872:18;;3859:32;;3938:2;3923:18;3910:32;;-1:-1:-1;3674:274:1;-1:-1:-1;3674:274:1:o;6183:603::-;6295:4;6324:2;6353;6342:9;6335:21;6385:6;6379:13;6428:6;6423:2;6412:9;6408:18;6401:34;6453:4;6466:140;6480:6;6477:1;6474:13;6466:140;;;6575:14;;;6571:23;;6565:30;6541:17;;;6560:2;6537:26;6530:66;6495:10;;6466:140;;;6624:6;6621:1;6618:13;6615:2;;;6694:4;6689:2;6680:6;6669:9;6665:22;6661:31;6654:45;6615:2;-1:-1:-1;6770:2:1;6749:15;-1:-1:-1;;6745:29:1;6730:45;;;;6777:2;6726:54;;6304:482;-1:-1:-1;;;6304:482:1:o;7642:329::-;7844:2;7826:21;;;7883:1;7863:18;;;7856:29;-1:-1:-1;;;7916:2:1;7901:18;;7894:36;7962:2;7947:18;;7816:155::o;8381:335::-;8583:2;8565:21;;;8622:2;8602:18;;;8595:30;-1:-1:-1;;;8656:2:1;8641:18;;8634:41;8707:2;8692:18;;8555:161::o;8903:983::-;9165:4;9213:3;9202:9;9198:19;9244:6;9233:9;9226:25;9270:2;9308:6;9303:2;9292:9;9288:18;9281:34;9351:3;9346:2;9335:9;9331:18;9324:31;9375:6;9410;9404:13;9441:6;9433;9426:22;9479:3;9468:9;9464:19;9457:26;;9518:2;9510:6;9506:15;9492:29;;9539:4;9552:195;9566:6;9563:1;9560:13;9552:195;;;9631:13;;-1:-1:-1;;;;;9627:39:1;9615:52;;9722:15;;;;9687:12;;;;9663:1;9581:9;9552:195;;;-1:-1:-1;;;;;;;9803:32:1;;;;9798:2;9783:18;;9776:60;-1:-1:-1;;;9867:3:1;9852:19;9845:35;9764:3;9174:712;-1:-1:-1;;;9174:712:1:o;10333:128::-;10373:3;10404:1;10400:6;10397:1;10394:13;10391:2;;;10410:18;;:::i;:::-;-1:-1:-1;10446:9:1;;10381:80::o;10466:217::-;10506:1;10532;10522:2;;-1:-1:-1;;;10557:31:1;;10611:4;10608:1;10601:15;10639:4;10564:1;10629:15;10522:2;-1:-1:-1;10668:9:1;;10512:171::o;10688:168::-;10728:7;10794:1;10790;10786:6;10782:14;10779:1;10776:21;10771:1;10764:9;10757:17;10753:45;10750:2;;;10801:18;;:::i;:::-;-1:-1:-1;10841:9:1;;10740:116::o;10861:125::-;10901:4;10929:1;10926;10923:8;10920:2;;;10934:18;;:::i;:::-;-1:-1:-1;10971:9:1;;10910:76::o;10991:127::-;11052:10;11047:3;11043:20;11040:1;11033:31;11083:4;11080:1;11073:15;11107:4;11104:1;11097:15;11123:131;-1:-1:-1;;;;;11198:31:1;;11188:42;;11178:2;;11244:1;11241;11234:12
Swarm Source
ipfs://ab582a65464e93d8056b628dd0f1724ebca27db821deb5d3e31df67a6b1f8bcb