Token Arbi Boom
Overview ERC20
Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
1,000,000,000 ArbiBoom
Holders:
44 addresses
Transfers:
-
Contract:
Decimals:
6
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ArbiBoom
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2023-01-25 */ /** First token with ARBINU reflections! Telegram: https://t.me/Arbi_Boom Twitter: https://twitter.com/ArbiBoom Website: https://www.arbiboom.com/ */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } 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; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } /** * Authorize address. Owner only */ function authorize(address adr) public onlyOwner { authorizations[adr] = true; } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address' authorization status */ function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded;// excluded dividend uint256 totalRealised; } IBEP20 EP = IBEP20(0xDd8e557C8804D326c72074e987de02A23ae6Ef84); address WETH = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed;// to be shown in UI uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 1 hours; uint256 public minDistribution = 10 * (10 ** 18); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); _token = msg.sender; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 balanceBefore = EP.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WETH; path[1] = address(EP); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = EP.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); EP.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } /* returns the unpaid earnings */ function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract ArbiBoom is IBEP20, Auth { using SafeMath for uint256; uint256 public constant MASK = type(uint128).max; address EP = 0xDd8e557C8804D326c72074e987de02A23ae6Ef84; // EP address public WETH = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address DEAD_NON_CHECKSUM = 0x000000000000000000000000000000000000dEaD; string constant _name = "Arbi Boom"; string constant _symbol = "ArbiBoom"; uint8 constant _decimals = 6; uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals); uint256 public _maxTxAmount = _totalSupply.div(40); // 2,5% uint256 public _maxWallet = _totalSupply.div(40); // 2,5% mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isDividendExempt; mapping (address => bool) public _isFree; uint256 liquidityFee = 100; uint256 buybackFee = 0; uint256 reflectionFee = 300; uint256 marketingFee = 200; uint256 totalFee = 600; uint256 feeDenominator = 10000; address public autoLiquidityReceiver=0x0fB4B2F764c347aB03a4D6E8CfBF6A81f6f32C14; address public marketingFeeReceiver=0xD7497114b19430acB8a5b799c8884e766D49D01b; uint256 targetLiquidity = 10; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; uint256 public launchedAt; uint256 public launchedAtTimestamp; uint256 buybackMultiplierNumerator = 200; uint256 buybackMultiplierDenominator = 100; uint256 buybackMultiplierTriggeredAt; uint256 buybackMultiplierLength = 30 minutes; bool public autoBuybackEnabled = false; mapping (address => bool) buyBacker; uint256 autoBuybackCap; uint256 autoBuybackAccumulator; uint256 autoBuybackAmount; uint256 autoBuybackBlockPeriod; uint256 autoBuybackBlockLast; DividendDistributor distributor; address public distributorAddress; uint256 distributorGas = 500000; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 5000; // 0.0025% bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { address _router = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506; router = IDEXRouter(_router); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = _totalSupply; WETH = router.WETH(); distributor = new DividendDistributor(_router); distributorAddress = address(distributor); isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; buyBacker[msg.sender] = true; autoLiquidityReceiver = msg.sender; approve(_router, _totalSupply); approve(address(pair), _totalSupply); _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; } modifier onlyBuybacker() { require(buyBacker[msg.sender] == true, ""); _; } 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, _totalSupply); } 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] != _totalSupply){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } // Max tx check address routerAddress = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506; bool isBuy=sender== pair|| sender == routerAddress; bool isSell=recipient== pair|| recipient == routerAddress; checkTxLimit(sender, amount); // Max wallet check excluding pair and router if (!isSell && !_isFree[recipient]){ require((_balances[recipient] + amount) < _maxWallet, "Max wallet has been triggered"); } // No swapping on buy and tx if (isSell) { if(shouldSwapBack()){ swapBack(); } if(shouldAutoBuyback()){ triggerAutoBuyback(); } } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); if(!isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function getTotalFee(bool selling) public view returns (uint256) { if(launchedAt + 1 >= block.number){ return totalFee; } if(selling){ return totalFee; } return totalFee; } function getMultipliedFee() public view returns (uint256) { return totalFee; } function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2); uint256 amountETHReflection = amountETH.mul(reflectionFee).div(totalETHFee); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); try distributor.deposit{value: amountETHReflection}() {} catch {} payable(marketingFeeReceiver).transfer(amountETHMarketing); if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } function shouldAutoBuyback() internal view returns (bool) { return msg.sender != pair && !inSwap && autoBuybackEnabled && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number // After N blocks from last buyback && address(this).balance >= autoBuybackAmount; } function triggerZeusBuyback(uint256 amount, bool triggerBuybackMultiplier) external authorized { buyTokens(amount, DEAD); if(triggerBuybackMultiplier){ buybackMultiplierTriggeredAt = block.timestamp; emit BuybackMultiplierActive(buybackMultiplierLength); } } function clearBuybackMultiplier() external authorized { buybackMultiplierTriggeredAt = 0; } function triggerAutoBuyback() internal { buyTokens(autoBuybackAmount, DEAD); autoBuybackBlockLast = block.number; autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount); if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; } } function buyTokens(uint256 amount, address to) internal swapping { address[] memory path = new address[](2); path[0] = WETH; path[1] = address(this); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, path, to, block.timestamp ); } function Sweep() external authorized { uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); } function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external authorized { autoBuybackEnabled = _enabled; autoBuybackCap = _cap; autoBuybackAccumulator = 0; autoBuybackAmount = _amount; autoBuybackBlockPeriod = _period; autoBuybackBlockLast = block.number; } function setBuybackMultiplierSettings(uint256 numerator, uint256 denominator, uint256 length) external authorized { require(numerator / denominator <= 2 && numerator > denominator); buybackMultiplierNumerator = numerator; buybackMultiplierDenominator = denominator; buybackMultiplierLength = length; } function launched() internal view returns (bool) { return launchedAt != 0; } function launch() public authorized { require(launchedAt == 0, "Already launched boi"); launchedAt = block.number; launchedAtTimestamp = block.timestamp; } function setMaxWallet(uint256 amount) external authorized { require(amount >= _totalSupply / 1000); _maxWallet = amount; } function setTxLimit(uint256 amount) external authorized { require(amount >= _totalSupply / 1000); _maxTxAmount = amount; } function setIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function setFree(address holder) public onlyOwner { _isFree[holder] = true; } function unSetFree(address holder) public onlyOwner { _isFree[holder] = false; } function checkFree(address holder) public view onlyOwner returns(bool){ return _isFree[holder]; } function setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized { liquidityFee = _liquidityFee; buybackFee = _buybackFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee).add(_marketingFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator/4); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } event AutoLiquify(uint256 amountETH, uint256 amountBOG); event BuybackMultiplierActive(uint256 duration); }
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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","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":"MASK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"holder","type":"address"}],"name":"checkFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultipliedFee","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":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"setBuybackMultiplierSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"setFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"triggerZeusBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unSetFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405273dd8e557c8804d326c72074e987de02a23ae6ef84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507382af49447d8a07e3bd95bd0d56f35241523fbab1600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600a62000186919062000e20565b633b9aca0062000197919062000f5d565b600755620001b7602860075462000ba760201b620025421790919060201c565b600855620001d7602860075462000ba760201b620025421790919060201c565b6009556064601055600060115561012c60125560c8601355610258601455612710601555730fb4b2f764c347ab03a4d6e8cfbf6a81f6f32c14601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d7497114b19430acb8a5b799c8884e766d49d01b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a601855606460195560c8601e556064601f556107086021556000602260006101000a81548160ff0219169083151502179055506207a120602b556001602c60006101000a81548160ff0219169083151502179055506113886007546200030e919062000d8d565b602d553480156200031e57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550506000731b02da8cb0d097eb8d57a175b88c7d8b47997506905080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200047b57600080fd5b505afa15801562000490573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b6919062000cd8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200051492919062000d43565b602060405180830381600087803b1580156200052f57600080fd5b505af115801562000544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056a919062000cd8565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620006b857600080fd5b505afa158015620006cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f3919062000cd8565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080604051620007429062000cb3565b6200074e919062000d26565b604051809103906000f0801580156200076b573d6000803e3d6000fd5b50602960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000ab88160075462000bbf60201b60201c565b5062000aef601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660075462000bbf60201b60201c565b50600754600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075460405162000b98919062000d70565b60405180910390a3506200108e565b6000818362000bb7919062000d8d565b905092915050565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000ca1919062000d70565b60405180910390a36001905092915050565b611d4680620058e883390190565b60008151905062000cd28162001074565b92915050565b60006020828403121562000ceb57600080fd5b600062000cfb8482850162000cc1565b91505092915050565b62000d0f8162000fbe565b82525050565b62000d208162000ff2565b82525050565b600060208201905062000d3d600083018462000d04565b92915050565b600060408201905062000d5a600083018562000d04565b62000d69602083018462000d04565b9392505050565b600060208201905062000d87600083018462000d15565b92915050565b600062000d9a8262000ff2565b915062000da78362000ff2565b92508262000dba5762000db962001038565b5b828204905092915050565b6000808291508390505b600185111562000e175780860481111562000def5762000dee62001009565b5b600185161562000dff5780820291505b808102905062000e0f8562001067565b945062000dcf565b94509492505050565b600062000e2d8262000ff2565b915062000e3a8362000ffc565b925062000e697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e71565b905092915050565b60008262000e83576001905062000f56565b8162000e93576000905062000f56565b816001811462000eac576002811462000eb75762000eed565b600191505062000f56565b60ff84111562000ecc5762000ecb62001009565b5b8360020a91508482111562000ee65762000ee562001009565b5b5062000f56565b5060208310610133831016604e8410600b841016171562000f275782820a90508381111562000f215762000f2062001009565b5b62000f56565b62000f36848484600162000dc5565b9250905081840481111562000f505762000f4f62001009565b5b81810290505b9392505050565b600062000f6a8262000ff2565b915062000f778362000ff2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000fb35762000fb262001009565b5b828202905092915050565b600062000fcb8262000fd2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160011c9050919050565b6200107f8162000fbe565b81146200108b57600080fd5b50565b61484a806200109e6000396000f3fe60806040526004361061036f5760003560e01c8063893d20e8116101c6578063d51ed1c8116100f7578063f1f3bca311610095578063f708a64f1161006f578063f708a64f14610cb1578063f84ba65d14610cda578063f887ea4014610d03578063fe9fbb8014610d2e57610376565b8063f1f3bca314610c22578063f2fde38b14610c5f578063f5cfec0a14610c8857610376565b8063df20fd49116100d1578063df20fd4914610b7a578063e91f214e14610ba3578063e96fada214610bce578063f0b37c0414610bf957610376565b8063d51ed1c814610ad5578063d806d12f14610b12578063dd62ed3e14610b3d57610376565b8063a9059cbb11610164578063b6a5d7de1161013e578063b6a5d7de14610a2b578063bf56b37114610a54578063c6d2577d14610a7f578063ca33e64c14610aaa57610376565b8063a9059cbb146109ac578063ad5c4648146109e9578063b210b06d14610a1457610376565b80639d1944f5116101a05780639d1944f514610904578063a4b45c001461092d578063a51af4c514610956578063a8aa1b311461098157610376565b8063893d20e81461088557806389ef69f6146108b057806395d89b41146108d957610376565b80632d48e896116102a05780635d0044ca1161023e5780637088fb7f116102185780637088fb7f146107db57806370a08231146107f25780637d1db4a51461082f57806382247ec01461085a57610376565b80635d0044ca1461075e578063658d4b7f146107875780636ddd1713146107b057610376565b80633425c0011161027a5780633425c001146106a45780633bb8a8d4146106cd578063571ac8b0146106f85780635c85974f1461073557610376565b80632d48e896146106135780632f54bf6e1461063c578063313ce5671461067957610376565b80631161ae391161030d5780632375ce40116102e75780632375ce401461054557806323b872dd1461056e578063296020e7146105ab5780632b112e49146105e857610376565b80631161ae39146104b457806318160ddd146104f1578063201e79911461051c57610376565b806304a66b481161034957806304a66b48146103e657806306fdde031461040f57806307c89fe81461043a578063095ea7b31461047757610376565b806301339c211461037b5780630445b66714610392578063048c7baf146103bd57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d6b565b005b34801561039e57600080fd5b506103a7610e08565b6040516103b49190614420565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190613d73565b610e0e565b005b3480156103f257600080fd5b5061040d60048036038101906104089190613f15565b610e9a565b005b34801561041b57600080fd5b50610424610f65565b604051610431919061435e565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190613bb9565b610fa2565b60405161046e91906142dc565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190613cd2565b611040565b6040516104ab91906142dc565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190613e3b565b611132565b6040516104e891906142dc565b60405180910390f35b3480156104fd57600080fd5b50610506611147565b6040516105139190614420565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190613e3b565b611151565b005b34801561055157600080fd5b5061056c60048036038101906105679190613e77565b6111ab565b005b34801561057a57600080fd5b5061059560048036038101906105909190613c47565b611231565b6040516105a291906142dc565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613bb9565b611413565b6040516105df91906142dc565b60405180910390f35b3480156105f457600080fd5b506105fd611433565b60405161060a9190614420565b60405180910390f35b34801561061f57600080fd5b5061063a60048036038101906106359190613e3b565b6114b5565b005b34801561064857600080fd5b50610663600480360381019061065e9190613bb9565b611590565b60405161067091906142dc565b60405180910390f35b34801561068557600080fd5b5061068e6115e9565b60405161069b91906144be565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190613bb9565b6115f2565b005b3480156106d957600080fd5b506106e2611695565b6040516106ef91906142dc565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a9190613bb9565b6116a8565b60405161072c91906142dc565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190613dd6565b6116bd565b005b34801561076a57600080fd5b5061078560048036038101906107809190613dd6565b61172b565b005b34801561079357600080fd5b506107ae60048036038101906107a99190613c96565b611799565b005b3480156107bc57600080fd5b506107c561183c565b6040516107d291906142dc565b60405180910390f35b3480156107e757600080fd5b506107f061184f565b005b3480156107fe57600080fd5b5061081960048036038101906108149190613bb9565b6118e6565b6040516108269190614420565b60405180910390f35b34801561083b57600080fd5b5061084461192f565b6040516108519190614420565b60405180910390f35b34801561086657600080fd5b5061086f611935565b60405161087c9190614420565b60405180910390f35b34801561089157600080fd5b5061089a61193b565b6040516108a791906141f3565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d29190613bb9565b611964565b005b3480156108e557600080fd5b506108ee611a07565b6040516108fb919061435e565b60405180910390f35b34801561091057600080fd5b5061092b60048036038101906109269190613dd6565b611a44565b005b34801561093957600080fd5b50610954600480360381019061094f9190613c0b565b611aa5565b005b34801561096257600080fd5b5061096b611b73565b60405161097891906141f3565b60405180910390f35b34801561098d57600080fd5b50610996611b99565b6040516109a391906141f3565b60405180910390f35b3480156109b857600080fd5b506109d360048036038101906109ce9190613cd2565b611bbf565b6040516109e091906142dc565b60405180910390f35b3480156109f557600080fd5b506109fe611bd4565b604051610a0b91906141f3565b60405180910390f35b348015610a2057600080fd5b50610a29611bfa565b005b348015610a3757600080fd5b50610a526004803603810190610a4d9190613bb9565b611c4c565b005b348015610a6057600080fd5b50610a69611cee565b604051610a769190614420565b60405180910390f35b348015610a8b57600080fd5b50610a94611cf4565b604051610aa19190614420565b60405180910390f35b348015610ab657600080fd5b50610abf611cfa565b604051610acc91906141f3565b60405180910390f35b348015610ae157600080fd5b50610afc6004803603810190610af79190613dd6565b611d20565b604051610b099190614420565b60405180910390f35b348015610b1e57600080fd5b50610b27611d92565b604051610b349190614420565b60405180910390f35b348015610b4957600080fd5b50610b646004803603810190610b5f9190613c0b565b611d9c565b604051610b719190614420565b60405180910390f35b348015610b8657600080fd5b50610ba16004803603810190610b9c9190613d37565b611e23565b005b348015610baf57600080fd5b50610bb8611e90565b604051610bc59190614420565b60405180910390f35b348015610bda57600080fd5b50610be3611ea6565b604051610bf091906141f3565b60405180910390f35b348015610c0557600080fd5b50610c206004803603810190610c1b9190613bb9565b611ecc565b005b348015610c2e57600080fd5b50610c496004803603810190610c449190613d0e565b611f6f565b604051610c569190614420565b60405180910390f35b348015610c6b57600080fd5b50610c866004803603810190610c819190613be2565b611fab565b005b348015610c9457600080fd5b50610caf6004803603810190610caa9190613dff565b6120c4565b005b348015610cbd57600080fd5b50610cd86004803603810190610cd39190613c96565b612183565b005b348015610ce657600080fd5b50610d016004803603810190610cfc9190613c96565b612423565b005b348015610d0f57600080fd5b50610d186124c6565b604051610d2591906142f7565b60405180910390f35b348015610d3a57600080fd5b50610d556004803603810190610d509190613bb9565b6124ec565b604051610d6291906142dc565b60405180910390f35b610d74336124ec565b610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90614400565b60405180910390fd5b6000601c5414610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def906143c0565b60405180910390fd5b43601c8190555042601d81905550565b602d5481565b610e17336124ec565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90614400565b60405180910390fd5b83602260006101000a81548160ff02191690831515021790555082602481905550600060258190555081602681905550806027819055504360288190555050505050565b610ea3336124ec565b610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990614400565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550610f3582610f2785610f19888a61255890919063ffffffff16565b61255890919063ffffffff16565b61255890919063ffffffff16565b601481905550806015819055506004601554610f519190614584565b60145410610f5e57600080fd5b5050505050565b60606040518060400160405280600981526020017f4172626920426f6f6d0000000000000000000000000000000000000000000000815250905090565b6000610fad33611590565b610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe3906143e0565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111209190614420565b60405180910390a36001905092915050565b60008261113e83611d20565b11905092915050565b6000600754905090565b61115a336124ec565b611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090614400565b60405180910390fd5b81601881905550806019819055505050565b6111b4336124ec565b6111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90614400565b60405180910390fd5b600282846112019190614584565b1115801561120e57508183115b61121757600080fd5b82601e8190555081601f8190555080602181905550505050565b6000600754600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113ff5761137e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256e9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61140a8484846125c3565b90509392505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60006114b0611463600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118e6565b6114a2611491600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118e6565b600754612d1590919063ffffffff16565b612d1590919063ffffffff16565b905090565b6114be336124ec565b6114fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f490614400565b60405180910390fd5b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161155a929190614495565b600060405180830381600087803b15801561157457600080fd5b505af1158015611588573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006006905090565b6115fb33611590565b61163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906143e0565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602260009054906101000a900460ff1681565b60006116b682600754611040565b9050919050565b6116c6336124ec565b611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90614400565b60405180910390fd5b6103e86007546117159190614584565b81101561172157600080fd5b8060088190555050565b611734336124ec565b611773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176a90614400565b60405180910390fd5b6103e86007546117839190614584565b81101561178f57600080fd5b8060098190555050565b6117a2336124ec565b6117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614400565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602c60009054906101000a900460ff1681565b611858336124ec565b611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90614400565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156118e2573d6000803e3d6000fd5b5050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61196d33611590565b6119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a3906143e0565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600881526020017f41726269426f6f6d000000000000000000000000000000000000000000000000815250905090565b611a4d336124ec565b611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614400565b60405180910390fd5b620b71b08110611a9b57600080fd5b80602b8190555050565b611aae336124ec565b611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490614400565b60405180910390fd5b81601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bcc3384846125c3565b905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c03336124ec565b611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990614400565b60405180910390fd5b6000602081905550565b611c5533611590565b611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b906143e0565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601c5481565b601d5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d8b611d2d611433565b611d7d611d6e6002611d60601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118e6565b612d2b90919063ffffffff16565b85612d2b90919063ffffffff16565b61254290919063ffffffff16565b9050919050565b6000601454905090565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e2c336124ec565b611e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6290614400565b60405180910390fd5b81602c60006101000a81548160ff02191690831515021790555080602d819055505050565b6fffffffffffffffffffffffffffffffff801681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ed533611590565b611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b906143e0565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000436001601c54611f81919061452e565b10611f90576014549050611fa6565b8115611fa0576014549050611fa6565b60145490505b919050565b611fb433611590565b611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea906143e0565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516120b9919061420e565b60405180910390a150565b6120cd336124ec565b61210c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210390614400565b60405180910390fd5b61213882600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612d41565b801561217f57426020819055507f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a6021546040516121769190614420565b60405180910390a15b5050565b61218c336124ec565b6121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290614400565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122555750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61225e57600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561235057602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612319929190614229565b600060405180830381600087803b15801561233357600080fd5b505af1158015612347573d6000803e3d6000fd5b5050505061241f565b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016123ec929190614252565b600060405180830381600087803b15801561240657600080fd5b505af115801561241a573d6000803e3d6000fd5b505050505b5050565b61242c336124ec565b61246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290614400565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081836125509190614584565b905092915050565b60008183612566919061452e565b905092915050565b60008383111582906125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad919061435e565b60405180910390fd5b5082840390509392505050565b6000602e60009054906101000a900460ff16156125ec576125e5848484612f91565b9050612d0e565b6000731b02da8cb0d097eb8d57a175b88c7d8b4799750690506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061268e57508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b90506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061271957508273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b905061272587866130ff565b8015801561277d5750600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128115760095485600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d0919061452e565b10612810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612807906143a0565b60405180910390fd5b5b80156128445761281f61319c565b1561282d5761282c613273565b5b61283561382f565b15612843576128426138e2565b5b5b6128cd856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256e9092919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061291b8861395e565b6129255785612931565b6129308888886139b5565b5b905061298581600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255890919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612aeb57602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9689600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ab5929190614252565b600060405180830381600087803b158015612acf57600080fd5b505af1925050508015612ae0575060015b612ae957612aea565b5b5b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c0e57602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612bd8929190614252565b600060405180830381600087803b158015612bf257600080fd5b505af1925050508015612c03575060015b612c0c57612c0d565b5b5b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479602b546040518263ffffffff1660e01b8152600401612c6b9190614420565b600060405180830381600087803b158015612c8557600080fd5b505af1925050508015612c96575060015b612c9f57612ca0565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cfd9190614420565b60405180910390a360019450505050505b9392505050565b60008183612d23919061460f565b905092915050565b60008183612d3991906145b5565b905092915050565b6001602e60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612d9f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612dcd5781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110612e2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110612ea2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008486426040518663ffffffff1660e01b8152600401612f3f9493929190614312565b6000604051808303818588803b158015612f5857600080fd5b505af1158015612f6c573d6000803e3d6000fd5b5050505050506000602e60006101000a81548160ff0219169083151502179055505050565b600061301c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256e9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130b182600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255890919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600854811115806131595750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318f90614380565b60405180910390fd5b5050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156132095750602e60009054906101000a900460ff16155b80156132215750602c60009054906101000a900460ff165b801561326e5750602d54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602e60006101000a81548160ff021916908315150217905550600061329e601854601954611132565b6132aa576010546132ad565b60005b905060006132ed60026132df6014546132d186602d54612d2b90919063ffffffff16565b61254290919063ffffffff16565b61254290919063ffffffff16565b9050600061330682602d54612d1590919063ffffffff16565b90506000600267ffffffffffffffff81111561334b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156133795781602001602082028036833780820191505090505b50905030816000815181106133b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061344e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016134f195949392919061443b565b600060405180830381600087803b15801561350b57600080fd5b505af115801561351f573d6000803e3d6000fd5b5050505060006135388247612d1590919063ffffffff16565b9050600061356461355360028961254290919063ffffffff16565b601454612d1590919063ffffffff16565b905060006135a06002613592846135848c88612d2b90919063ffffffff16565b61254290919063ffffffff16565b61254290919063ffffffff16565b905060006135cb836135bd60125487612d2b90919063ffffffff16565b61254290919063ffffffff16565b905060006135f6846135e860135488612d2b90919063ffffffff16565b61254290919063ffffffff16565b9050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561366257600080fd5b505af193505050508015613674575060015b61367d5761367e565b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156136e6573d6000803e3d6000fd5b50600089111561380857601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016137799695949392919061427b565b6060604051808303818588803b15801561379257600080fd5b505af11580156137a6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137cb9190613ec6565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516137ff929190614495565b60405180910390a15b505050505050505050506000602e60006101000a81548160ff021916908315150217905550565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561389c5750602e60009054906101000a900460ff16155b80156138b45750602260009054906101000a900460ff165b80156138cf5750436027546028546138cc919061452e565b11155b80156138dd57506026544710155b905090565b613910602654600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612d41565b4360288190555061392e60265460255461255890919063ffffffff16565b602581905550602454602554111561395c576000602260006101000a81548160ff0219169083151502179055505b565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080613a37601554613a29613a1a601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611f6f565b86612d2b90919063ffffffff16565b61254290919063ffffffff16565b9050613a8b81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255890919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b2b9190614420565b60405180910390a3613b468184612d1590919063ffffffff16565b9150509392505050565b600081359050613b5f816147b8565b92915050565b600081359050613b74816147cf565b92915050565b600081359050613b89816147e6565b92915050565b600081359050613b9e816147fd565b92915050565b600081519050613bb3816147fd565b92915050565b600060208284031215613bcb57600080fd5b6000613bd984828501613b50565b91505092915050565b600060208284031215613bf457600080fd5b6000613c0284828501613b65565b91505092915050565b60008060408385031215613c1e57600080fd5b6000613c2c85828601613b50565b9250506020613c3d85828601613b50565b9150509250929050565b600080600060608486031215613c5c57600080fd5b6000613c6a86828701613b50565b9350506020613c7b86828701613b50565b9250506040613c8c86828701613b8f565b9150509250925092565b60008060408385031215613ca957600080fd5b6000613cb785828601613b50565b9250506020613cc885828601613b7a565b9150509250929050565b60008060408385031215613ce557600080fd5b6000613cf385828601613b50565b9250506020613d0485828601613b8f565b9150509250929050565b600060208284031215613d2057600080fd5b6000613d2e84828501613b7a565b91505092915050565b60008060408385031215613d4a57600080fd5b6000613d5885828601613b7a565b9250506020613d6985828601613b8f565b9150509250929050565b60008060008060808587031215613d8957600080fd5b6000613d9787828801613b7a565b9450506020613da887828801613b8f565b9350506040613db987828801613b8f565b9250506060613dca87828801613b8f565b91505092959194509250565b600060208284031215613de857600080fd5b6000613df684828501613b8f565b91505092915050565b60008060408385031215613e1257600080fd5b6000613e2085828601613b8f565b9250506020613e3185828601613b7a565b9150509250929050565b60008060408385031215613e4e57600080fd5b6000613e5c85828601613b8f565b9250506020613e6d85828601613b8f565b9150509250929050565b600080600060608486031215613e8c57600080fd5b6000613e9a86828701613b8f565b9350506020613eab86828701613b8f565b9250506040613ebc86828701613b8f565b9150509250925092565b600080600060608486031215613edb57600080fd5b6000613ee986828701613ba4565b9350506020613efa86828701613ba4565b9250506040613f0b86828701613ba4565b9150509250925092565b600080600080600060a08688031215613f2d57600080fd5b6000613f3b88828901613b8f565b9550506020613f4c88828901613b8f565b9450506040613f5d88828901613b8f565b9350506060613f6e88828901613b8f565b9250506080613f7f88828901613b8f565b9150509295509295909350565b6000613f988383613fb3565b60208301905092915050565b613fad816146aa565b82525050565b613fbc81614643565b82525050565b613fcb81614643565b82525050565b6000613fdc826144e9565b613fe6818561450c565b9350613ff1836144d9565b8060005b838110156140225781516140098882613f8c565b9750614014836144ff565b925050600181019050613ff5565b5085935050505092915050565b61403881614667565b82525050565b614047816146bc565b82525050565b614056816146e0565b82525050565b6000614067826144f4565b614071818561451d565b9350614081818560208601614716565b61408a816147a7565b840191505092915050565b60006140a260118361451d565b91507f5458204c696d69742045786365656465640000000000000000000000000000006000830152602082019050919050565b60006140e2601d8361451d565b91507f4d61782077616c6c657420686173206265656e207472696767657265640000006000830152602082019050919050565b600061412260148361451d565b91507f416c7265616479206c61756e6368656420626f690000000000000000000000006000830152602082019050919050565b600061416260068361451d565b91507f214f574e455200000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006141a2600b8361451d565b91507f21415554484f52495a45440000000000000000000000000000000000000000006000830152602082019050919050565b6141de81614693565b82525050565b6141ed8161469d565b82525050565b60006020820190506142086000830184613fc2565b92915050565b60006020820190506142236000830184613fa4565b92915050565b600060408201905061423e6000830185613fc2565b61424b602083018461404d565b9392505050565b60006040820190506142676000830185613fc2565b61427460208301846141d5565b9392505050565b600060c0820190506142906000830189613fc2565b61429d60208301886141d5565b6142aa604083018761404d565b6142b7606083018661404d565b6142c46080830185613fc2565b6142d160a08301846141d5565b979650505050505050565b60006020820190506142f1600083018461402f565b92915050565b600060208201905061430c600083018461403e565b92915050565b6000608082019050614327600083018761404d565b81810360208301526143398186613fd1565b90506143486040830185613fc2565b61435560608301846141d5565b95945050505050565b60006020820190508181036000830152614378818461405c565b905092915050565b6000602082019050818103600083015261439981614095565b9050919050565b600060208201905081810360008301526143b9816140d5565b9050919050565b600060208201905081810360008301526143d981614115565b9050919050565b600060208201905081810360008301526143f981614155565b9050919050565b6000602082019050818103600083015261441981614195565b9050919050565b600060208201905061443560008301846141d5565b92915050565b600060a08201905061445060008301886141d5565b61445d602083018761404d565b818103604083015261446f8186613fd1565b905061447e6060830185613fc2565b61448b60808301846141d5565b9695505050505050565b60006040820190506144aa60008301856141d5565b6144b760208301846141d5565b9392505050565b60006020820190506144d360008301846141e4565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061453982614693565b915061454483614693565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561457957614578614749565b5b828201905092915050565b600061458f82614693565b915061459a83614693565b9250826145aa576145a9614778565b5b828204905092915050565b60006145c082614693565b91506145cb83614693565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561460457614603614749565b5b828202905092915050565b600061461a82614693565b915061462583614693565b92508282101561463857614637614749565b5b828203905092915050565b600061464e82614673565b9050919050565b600061466082614673565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006146b5826146f2565b9050919050565b60006146c7826146ce565b9050919050565b60006146d982614673565b9050919050565b60006146eb82614693565b9050919050565b60006146fd82614704565b9050919050565b600061470f82614673565b9050919050565b60005b83811015614734578082015181840152602081019050614719565b83811115614743576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b6147c181614643565b81146147cc57600080fd5b50565b6147d881614655565b81146147e357600080fd5b50565b6147ef81614667565b81146147fa57600080fd5b50565b61480681614693565b811461481157600080fd5b5056fea264697066735822122046a4fa6ac703683501657d3714b9d842671afcdbafbe63d6152962ed7ec53b9764736f6c63430008000033608060405273dd8e557c8804d326c72074e987de02a23ae6ef84600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507382af49447d8a07e3bd95bd0d56f35241523fbab1600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55678ac7230489e80000600e55348015620000e057600080fd5b5060405162001d4638038062001d468339818101604052810190620001069190620001f7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200015757731b02da8cb0d097eb8d57a175b88c7d8b4799750662000159565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000271565b600081519050620001f18162000257565b92915050565b6000602082840312156200020a57600080fd5b60006200021a84828501620001e0565b91505092915050565b6000620002308262000237565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620002628162000223565b81146200026e57600080fd5b50565b611ac580620002816000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610291578063f0fc6bca146102bc578063ffb2c479146102d3578063ffd49c84146102fc576100dd565b8063ce7c2ac21461021d578063d0e30db01461025c578063e2d2e21914610266576100dd565b80632d48e896116100bb5780632d48e896146101735780633a98ef391461019c5780634fab0ae8146101c7578063997664d7146101f2576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610136575b600080fd5b3480156100ee57600080fd5b506100f7610327565b60405161010491906117a9565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190611574565b61032d565b005b34801561014257600080fd5b5061015d6004803603810190610158919061154b565b6105ec565b60405161016a91906117a9565b60405180910390f35b34801561017f57600080fd5b5061019a6004803603810190610195919061162b565b610706565b005b3480156101a857600080fd5b506101b1610770565b6040516101be91906117a9565b60405180910390f35b3480156101d357600080fd5b506101dc610776565b6040516101e991906117a9565b60405180910390f35b3480156101fe57600080fd5b5061020761077c565b60405161021491906117a9565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f919061154b565b610782565b604051610253939291906117c4565b60405180910390f35b6102646107ac565b005b34801561027257600080fd5b5061027b610c0e565b60405161028891906117a9565b60405180910390f35b34801561029d57600080fd5b506102a6610c14565b6040516102b391906117a9565b60405180910390f35b3480156102c857600080fd5b506102d1610c1a565b005b3480156102df57600080fd5b506102fa60048036038101906102f591906115d9565b610c25565b005b34801561030857600080fd5b50610311610e05565b60405161031e91906117a9565b60405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038557600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103da576103d982610e0b565b5b60008111801561042c57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561043f5761043a826110b2565b6104a1565b60008114801561049157506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104a05761049f82611161565b5b5b61050a816104fc600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461140090919063ffffffff16565b61141690919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105a2600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461142c565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106415760009050610701565b600061068e600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461142c565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116106e957600092505050610701565b6106fc818361140090919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075e57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080457600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108619190611719565b60206040518083038186803b15801561087957600080fd5b505afa15801561088d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b19190611602565b90506000600267ffffffffffffffff8111156108f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156109245781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610984577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610ab8949392919061175d565b6000604051808303818588803b158015610ad157600080fd5b505af1158015610ae5573d6000803e3d6000fd5b50505050506000610ba983600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b4b9190611719565b60206040518083038186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190611602565b61140090919063ffffffff16565b9050610bc08160095461141690919063ffffffff16565b600981905550610c03610bf2600854610be484600c5461145e90919063ffffffff16565b61147490919063ffffffff16565b600b5461141690919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610c2333610e0b565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7d57600080fd5b600060048054905090506000811415610c965750610e02565b6000805a905060005b8483108015610cad57508381105b15610dfd5783600f5410610cc4576000600f819055505b610d336004600f5481548110610d03577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661148a565b15610da857610da76004600f5481548110610d77577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e0b565b5b610dcd610dbe5a8461140090919063ffffffff16565b8461141690919063ffffffff16565b92505a9150600f6000815480929190610de5906119a3565b91905055508080610df5906119a3565b915050610c9f565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610e5b576110af565b6000610e66826105ec565b905060008111156110ad57610e8681600a5461141690919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610ee9929190611734565b602060405180830381600087803b158015610f0357600080fd5b505af1158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b91906115b0565b5042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd581600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461141690919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611066600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461142c565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460016004805490506111759190611915565b815481106111ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611250577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000600460016004805490506112f09190611915565b81548110611327577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060048054806113c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000818361140e9190611915565b905092915050565b600081836114249190611834565b905092915050565b6000611457600c54611449600b548561145e90919063ffffffff16565b61147490919063ffffffff16565b9050919050565b6000818361146c91906118bb565b905092915050565b60008183611482919061188a565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114da9190611834565b1080156114f05750600e546114ee836105ec565b115b9050919050565b60008135905061150681611a4a565b92915050565b60008151905061151b81611a61565b92915050565b60008135905061153081611a78565b92915050565b60008151905061154581611a78565b92915050565b60006020828403121561155d57600080fd5b600061156b848285016114f7565b91505092915050565b6000806040838503121561158757600080fd5b6000611595858286016114f7565b92505060206115a685828601611521565b9150509250929050565b6000602082840312156115c257600080fd5b60006115d08482850161150c565b91505092915050565b6000602082840312156115eb57600080fd5b60006115f984828501611521565b91505092915050565b60006020828403121561161457600080fd5b600061162284828501611536565b91505092915050565b6000806040838503121561163e57600080fd5b600061164c85828601611521565b925050602061165d85828601611521565b9150509250929050565b6000611673838361167f565b60208301905092915050565b61168881611949565b82525050565b61169781611949565b82525050565b60006116a88261180b565b6116b28185611823565b93506116bd836117fb565b8060005b838110156116ee5781516116d58882611667565b97506116e083611816565b9250506001810190506116c1565b5085935050505092915050565b61170481611991565b82525050565b61171381611987565b82525050565b600060208201905061172e600083018461168e565b92915050565b6000604082019050611749600083018561168e565b611756602083018461170a565b9392505050565b600060808201905061177260008301876116fb565b8181036020830152611784818661169d565b9050611793604083018561168e565b6117a0606083018461170a565b95945050505050565b60006020820190506117be600083018461170a565b92915050565b60006060820190506117d9600083018661170a565b6117e6602083018561170a565b6117f3604083018461170a565b949350505050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600061183f82611987565b915061184a83611987565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561187f5761187e6119ec565b5b828201905092915050565b600061189582611987565b91506118a083611987565b9250826118b0576118af611a1b565b5b828204905092915050565b60006118c682611987565b91506118d183611987565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561190a576119096119ec565b5b828202905092915050565b600061192082611987565b915061192b83611987565b92508282101561193e5761193d6119ec565b5b828203905092915050565b600061195482611967565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061199c82611987565b9050919050565b60006119ae82611987565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119e1576119e06119ec565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b611a5381611949565b8114611a5e57600080fd5b50565b611a6a8161195b565b8114611a7557600080fd5b50565b611a8181611987565b8114611a8c57600080fd5b5056fea26469706673582212204f7dcfd9ece064903743a0aac22759678602afe29084cacd5f991d39a7beb55264736f6c63430008000033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c8063893d20e8116101c6578063d51ed1c8116100f7578063f1f3bca311610095578063f708a64f1161006f578063f708a64f14610cb1578063f84ba65d14610cda578063f887ea4014610d03578063fe9fbb8014610d2e57610376565b8063f1f3bca314610c22578063f2fde38b14610c5f578063f5cfec0a14610c8857610376565b8063df20fd49116100d1578063df20fd4914610b7a578063e91f214e14610ba3578063e96fada214610bce578063f0b37c0414610bf957610376565b8063d51ed1c814610ad5578063d806d12f14610b12578063dd62ed3e14610b3d57610376565b8063a9059cbb11610164578063b6a5d7de1161013e578063b6a5d7de14610a2b578063bf56b37114610a54578063c6d2577d14610a7f578063ca33e64c14610aaa57610376565b8063a9059cbb146109ac578063ad5c4648146109e9578063b210b06d14610a1457610376565b80639d1944f5116101a05780639d1944f514610904578063a4b45c001461092d578063a51af4c514610956578063a8aa1b311461098157610376565b8063893d20e81461088557806389ef69f6146108b057806395d89b41146108d957610376565b80632d48e896116102a05780635d0044ca1161023e5780637088fb7f116102185780637088fb7f146107db57806370a08231146107f25780637d1db4a51461082f57806382247ec01461085a57610376565b80635d0044ca1461075e578063658d4b7f146107875780636ddd1713146107b057610376565b80633425c0011161027a5780633425c001146106a45780633bb8a8d4146106cd578063571ac8b0146106f85780635c85974f1461073557610376565b80632d48e896146106135780632f54bf6e1461063c578063313ce5671461067957610376565b80631161ae391161030d5780632375ce40116102e75780632375ce401461054557806323b872dd1461056e578063296020e7146105ab5780632b112e49146105e857610376565b80631161ae39146104b457806318160ddd146104f1578063201e79911461051c57610376565b806304a66b481161034957806304a66b48146103e657806306fdde031461040f57806307c89fe81461043a578063095ea7b31461047757610376565b806301339c211461037b5780630445b66714610392578063048c7baf146103bd57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d6b565b005b34801561039e57600080fd5b506103a7610e08565b6040516103b49190614420565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190613d73565b610e0e565b005b3480156103f257600080fd5b5061040d60048036038101906104089190613f15565b610e9a565b005b34801561041b57600080fd5b50610424610f65565b604051610431919061435e565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190613bb9565b610fa2565b60405161046e91906142dc565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190613cd2565b611040565b6040516104ab91906142dc565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190613e3b565b611132565b6040516104e891906142dc565b60405180910390f35b3480156104fd57600080fd5b50610506611147565b6040516105139190614420565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190613e3b565b611151565b005b34801561055157600080fd5b5061056c60048036038101906105679190613e77565b6111ab565b005b34801561057a57600080fd5b5061059560048036038101906105909190613c47565b611231565b6040516105a291906142dc565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613bb9565b611413565b6040516105df91906142dc565b60405180910390f35b3480156105f457600080fd5b506105fd611433565b60405161060a9190614420565b60405180910390f35b34801561061f57600080fd5b5061063a60048036038101906106359190613e3b565b6114b5565b005b34801561064857600080fd5b50610663600480360381019061065e9190613bb9565b611590565b60405161067091906142dc565b60405180910390f35b34801561068557600080fd5b5061068e6115e9565b60405161069b91906144be565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190613bb9565b6115f2565b005b3480156106d957600080fd5b506106e2611695565b6040516106ef91906142dc565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a9190613bb9565b6116a8565b60405161072c91906142dc565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190613dd6565b6116bd565b005b34801561076a57600080fd5b5061078560048036038101906107809190613dd6565b61172b565b005b34801561079357600080fd5b506107ae60048036038101906107a99190613c96565b611799565b005b3480156107bc57600080fd5b506107c561183c565b6040516107d291906142dc565b60405180910390f35b3480156107e757600080fd5b506107f061184f565b005b3480156107fe57600080fd5b5061081960048036038101906108149190613bb9565b6118e6565b6040516108269190614420565b60405180910390f35b34801561083b57600080fd5b5061084461192f565b6040516108519190614420565b60405180910390f35b34801561086657600080fd5b5061086f611935565b60405161087c9190614420565b60405180910390f35b34801561089157600080fd5b5061089a61193b565b6040516108a791906141f3565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d29190613bb9565b611964565b005b3480156108e557600080fd5b506108ee611a07565b6040516108fb919061435e565b60405180910390f35b34801561091057600080fd5b5061092b60048036038101906109269190613dd6565b611a44565b005b34801561093957600080fd5b50610954600480360381019061094f9190613c0b565b611aa5565b005b34801561096257600080fd5b5061096b611b73565b60405161097891906141f3565b60405180910390f35b34801561098d57600080fd5b50610996611b99565b6040516109a391906141f3565b60405180910390f35b3480156109b857600080fd5b506109d360048036038101906109ce9190613cd2565b611bbf565b6040516109e091906142dc565b60405180910390f35b3480156109f557600080fd5b506109fe611bd4565b604051610a0b91906141f3565b60405180910390f35b348015610a2057600080fd5b50610a29611bfa565b005b348015610a3757600080fd5b50610a526004803603810190610a4d9190613bb9565b611c4c565b005b348015610a6057600080fd5b50610a69611cee565b604051610a769190614420565b60405180910390f35b348015610a8b57600080fd5b50610a94611cf4565b604051610aa19190614420565b60405180910390f35b348015610ab657600080fd5b50610abf611cfa565b604051610acc91906141f3565b60405180910390f35b348015610ae157600080fd5b50610afc6004803603810190610af79190613dd6565b611d20565b604051610b099190614420565b60405180910390f35b348015610b1e57600080fd5b50610b27611d92565b604051610b349190614420565b60405180910390f35b348015610b4957600080fd5b50610b646004803603810190610b5f9190613c0b565b611d9c565b604051610b719190614420565b60405180910390f35b348015610b8657600080fd5b50610ba16004803603810190610b9c9190613d37565b611e23565b005b348015610baf57600080fd5b50610bb8611e90565b604051610bc59190614420565b60405180910390f35b348015610bda57600080fd5b50610be3611ea6565b604051610bf091906141f3565b60405180910390f35b348015610c0557600080fd5b50610c206004803603810190610c1b9190613bb9565b611ecc565b005b348015610c2e57600080fd5b50610c496004803603810190610c449190613d0e565b611f6f565b604051610c569190614420565b60405180910390f35b348015610c6b57600080fd5b50610c866004803603810190610c819190613be2565b611fab565b005b348015610c9457600080fd5b50610caf6004803603810190610caa9190613dff565b6120c4565b005b348015610cbd57600080fd5b50610cd86004803603810190610cd39190613c96565b612183565b005b348015610ce657600080fd5b50610d016004803603810190610cfc9190613c96565b612423565b005b348015610d0f57600080fd5b50610d186124c6565b604051610d2591906142f7565b60405180910390f35b348015610d3a57600080fd5b50610d556004803603810190610d509190613bb9565b6124ec565b604051610d6291906142dc565b60405180910390f35b610d74336124ec565b610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90614400565b60405180910390fd5b6000601c5414610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def906143c0565b60405180910390fd5b43601c8190555042601d81905550565b602d5481565b610e17336124ec565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90614400565b60405180910390fd5b83602260006101000a81548160ff02191690831515021790555082602481905550600060258190555081602681905550806027819055504360288190555050505050565b610ea3336124ec565b610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990614400565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550610f3582610f2785610f19888a61255890919063ffffffff16565b61255890919063ffffffff16565b61255890919063ffffffff16565b601481905550806015819055506004601554610f519190614584565b60145410610f5e57600080fd5b5050505050565b60606040518060400160405280600981526020017f4172626920426f6f6d0000000000000000000000000000000000000000000000815250905090565b6000610fad33611590565b610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe3906143e0565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111209190614420565b60405180910390a36001905092915050565b60008261113e83611d20565b11905092915050565b6000600754905090565b61115a336124ec565b611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090614400565b60405180910390fd5b81601881905550806019819055505050565b6111b4336124ec565b6111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90614400565b60405180910390fd5b600282846112019190614584565b1115801561120e57508183115b61121757600080fd5b82601e8190555081601f8190555080602181905550505050565b6000600754600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113ff5761137e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256e9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61140a8484846125c3565b90509392505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60006114b0611463600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118e6565b6114a2611491600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118e6565b600754612d1590919063ffffffff16565b612d1590919063ffffffff16565b905090565b6114be336124ec565b6114fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f490614400565b60405180910390fd5b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161155a929190614495565b600060405180830381600087803b15801561157457600080fd5b505af1158015611588573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006006905090565b6115fb33611590565b61163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906143e0565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602260009054906101000a900460ff1681565b60006116b682600754611040565b9050919050565b6116c6336124ec565b611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90614400565b60405180910390fd5b6103e86007546117159190614584565b81101561172157600080fd5b8060088190555050565b611734336124ec565b611773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176a90614400565b60405180910390fd5b6103e86007546117839190614584565b81101561178f57600080fd5b8060098190555050565b6117a2336124ec565b6117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614400565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602c60009054906101000a900460ff1681565b611858336124ec565b611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90614400565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156118e2573d6000803e3d6000fd5b5050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61196d33611590565b6119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a3906143e0565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600881526020017f41726269426f6f6d000000000000000000000000000000000000000000000000815250905090565b611a4d336124ec565b611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614400565b60405180910390fd5b620b71b08110611a9b57600080fd5b80602b8190555050565b611aae336124ec565b611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490614400565b60405180910390fd5b81601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bcc3384846125c3565b905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c03336124ec565b611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990614400565b60405180910390fd5b6000602081905550565b611c5533611590565b611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b906143e0565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601c5481565b601d5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d8b611d2d611433565b611d7d611d6e6002611d60601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118e6565b612d2b90919063ffffffff16565b85612d2b90919063ffffffff16565b61254290919063ffffffff16565b9050919050565b6000601454905090565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e2c336124ec565b611e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6290614400565b60405180910390fd5b81602c60006101000a81548160ff02191690831515021790555080602d819055505050565b6fffffffffffffffffffffffffffffffff801681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ed533611590565b611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b906143e0565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000436001601c54611f81919061452e565b10611f90576014549050611fa6565b8115611fa0576014549050611fa6565b60145490505b919050565b611fb433611590565b611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea906143e0565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516120b9919061420e565b60405180910390a150565b6120cd336124ec565b61210c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210390614400565b60405180910390fd5b61213882600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612d41565b801561217f57426020819055507f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a6021546040516121769190614420565b60405180910390a15b5050565b61218c336124ec565b6121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290614400565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122555750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61225e57600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561235057602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612319929190614229565b600060405180830381600087803b15801561233357600080fd5b505af1158015612347573d6000803e3d6000fd5b5050505061241f565b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016123ec929190614252565b600060405180830381600087803b15801561240657600080fd5b505af115801561241a573d6000803e3d6000fd5b505050505b5050565b61242c336124ec565b61246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290614400565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081836125509190614584565b905092915050565b60008183612566919061452e565b905092915050565b60008383111582906125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad919061435e565b60405180910390fd5b5082840390509392505050565b6000602e60009054906101000a900460ff16156125ec576125e5848484612f91565b9050612d0e565b6000731b02da8cb0d097eb8d57a175b88c7d8b4799750690506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061268e57508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b90506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061271957508273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b905061272587866130ff565b8015801561277d5750600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128115760095485600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d0919061452e565b10612810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612807906143a0565b60405180910390fd5b5b80156128445761281f61319c565b1561282d5761282c613273565b5b61283561382f565b15612843576128426138e2565b5b5b6128cd856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256e9092919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061291b8861395e565b6129255785612931565b6129308888886139b5565b5b905061298581600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255890919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612aeb57602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9689600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ab5929190614252565b600060405180830381600087803b158015612acf57600080fd5b505af1925050508015612ae0575060015b612ae957612aea565b5b5b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c0e57602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612bd8929190614252565b600060405180830381600087803b158015612bf257600080fd5b505af1925050508015612c03575060015b612c0c57612c0d565b5b5b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479602b546040518263ffffffff1660e01b8152600401612c6b9190614420565b600060405180830381600087803b158015612c8557600080fd5b505af1925050508015612c96575060015b612c9f57612ca0565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cfd9190614420565b60405180910390a360019450505050505b9392505050565b60008183612d23919061460f565b905092915050565b60008183612d3991906145b5565b905092915050565b6001602e60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612d9f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612dcd5781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110612e2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110612ea2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008486426040518663ffffffff1660e01b8152600401612f3f9493929190614312565b6000604051808303818588803b158015612f5857600080fd5b505af1158015612f6c573d6000803e3d6000fd5b5050505050506000602e60006101000a81548160ff0219169083151502179055505050565b600061301c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256e9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130b182600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255890919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600854811115806131595750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318f90614380565b60405180910390fd5b5050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156132095750602e60009054906101000a900460ff16155b80156132215750602c60009054906101000a900460ff165b801561326e5750602d54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602e60006101000a81548160ff021916908315150217905550600061329e601854601954611132565b6132aa576010546132ad565b60005b905060006132ed60026132df6014546132d186602d54612d2b90919063ffffffff16565b61254290919063ffffffff16565b61254290919063ffffffff16565b9050600061330682602d54612d1590919063ffffffff16565b90506000600267ffffffffffffffff81111561334b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156133795781602001602082028036833780820191505090505b50905030816000815181106133b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061344e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016134f195949392919061443b565b600060405180830381600087803b15801561350b57600080fd5b505af115801561351f573d6000803e3d6000fd5b5050505060006135388247612d1590919063ffffffff16565b9050600061356461355360028961254290919063ffffffff16565b601454612d1590919063ffffffff16565b905060006135a06002613592846135848c88612d2b90919063ffffffff16565b61254290919063ffffffff16565b61254290919063ffffffff16565b905060006135cb836135bd60125487612d2b90919063ffffffff16565b61254290919063ffffffff16565b905060006135f6846135e860135488612d2b90919063ffffffff16565b61254290919063ffffffff16565b9050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561366257600080fd5b505af193505050508015613674575060015b61367d5761367e565b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156136e6573d6000803e3d6000fd5b50600089111561380857601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016137799695949392919061427b565b6060604051808303818588803b15801561379257600080fd5b505af11580156137a6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137cb9190613ec6565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516137ff929190614495565b60405180910390a15b505050505050505050506000602e60006101000a81548160ff021916908315150217905550565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561389c5750602e60009054906101000a900460ff16155b80156138b45750602260009054906101000a900460ff165b80156138cf5750436027546028546138cc919061452e565b11155b80156138dd57506026544710155b905090565b613910602654600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612d41565b4360288190555061392e60265460255461255890919063ffffffff16565b602581905550602454602554111561395c576000602260006101000a81548160ff0219169083151502179055505b565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080613a37601554613a29613a1a601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611f6f565b86612d2b90919063ffffffff16565b61254290919063ffffffff16565b9050613a8b81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255890919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b2b9190614420565b60405180910390a3613b468184612d1590919063ffffffff16565b9150509392505050565b600081359050613b5f816147b8565b92915050565b600081359050613b74816147cf565b92915050565b600081359050613b89816147e6565b92915050565b600081359050613b9e816147fd565b92915050565b600081519050613bb3816147fd565b92915050565b600060208284031215613bcb57600080fd5b6000613bd984828501613b50565b91505092915050565b600060208284031215613bf457600080fd5b6000613c0284828501613b65565b91505092915050565b60008060408385031215613c1e57600080fd5b6000613c2c85828601613b50565b9250506020613c3d85828601613b50565b9150509250929050565b600080600060608486031215613c5c57600080fd5b6000613c6a86828701613b50565b9350506020613c7b86828701613b50565b9250506040613c8c86828701613b8f565b9150509250925092565b60008060408385031215613ca957600080fd5b6000613cb785828601613b50565b9250506020613cc885828601613b7a565b9150509250929050565b60008060408385031215613ce557600080fd5b6000613cf385828601613b50565b9250506020613d0485828601613b8f565b9150509250929050565b600060208284031215613d2057600080fd5b6000613d2e84828501613b7a565b91505092915050565b60008060408385031215613d4a57600080fd5b6000613d5885828601613b7a565b9250506020613d6985828601613b8f565b9150509250929050565b60008060008060808587031215613d8957600080fd5b6000613d9787828801613b7a565b9450506020613da887828801613b8f565b9350506040613db987828801613b8f565b9250506060613dca87828801613b8f565b91505092959194509250565b600060208284031215613de857600080fd5b6000613df684828501613b8f565b91505092915050565b60008060408385031215613e1257600080fd5b6000613e2085828601613b8f565b9250506020613e3185828601613b7a565b9150509250929050565b60008060408385031215613e4e57600080fd5b6000613e5c85828601613b8f565b9250506020613e6d85828601613b8f565b9150509250929050565b600080600060608486031215613e8c57600080fd5b6000613e9a86828701613b8f565b9350506020613eab86828701613b8f565b9250506040613ebc86828701613b8f565b9150509250925092565b600080600060608486031215613edb57600080fd5b6000613ee986828701613ba4565b9350506020613efa86828701613ba4565b9250506040613f0b86828701613ba4565b9150509250925092565b600080600080600060a08688031215613f2d57600080fd5b6000613f3b88828901613b8f565b9550506020613f4c88828901613b8f565b9450506040613f5d88828901613b8f565b9350506060613f6e88828901613b8f565b9250506080613f7f88828901613b8f565b9150509295509295909350565b6000613f988383613fb3565b60208301905092915050565b613fad816146aa565b82525050565b613fbc81614643565b82525050565b613fcb81614643565b82525050565b6000613fdc826144e9565b613fe6818561450c565b9350613ff1836144d9565b8060005b838110156140225781516140098882613f8c565b9750614014836144ff565b925050600181019050613ff5565b5085935050505092915050565b61403881614667565b82525050565b614047816146bc565b82525050565b614056816146e0565b82525050565b6000614067826144f4565b614071818561451d565b9350614081818560208601614716565b61408a816147a7565b840191505092915050565b60006140a260118361451d565b91507f5458204c696d69742045786365656465640000000000000000000000000000006000830152602082019050919050565b60006140e2601d8361451d565b91507f4d61782077616c6c657420686173206265656e207472696767657265640000006000830152602082019050919050565b600061412260148361451d565b91507f416c7265616479206c61756e6368656420626f690000000000000000000000006000830152602082019050919050565b600061416260068361451d565b91507f214f574e455200000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006141a2600b8361451d565b91507f21415554484f52495a45440000000000000000000000000000000000000000006000830152602082019050919050565b6141de81614693565b82525050565b6141ed8161469d565b82525050565b60006020820190506142086000830184613fc2565b92915050565b60006020820190506142236000830184613fa4565b92915050565b600060408201905061423e6000830185613fc2565b61424b602083018461404d565b9392505050565b60006040820190506142676000830185613fc2565b61427460208301846141d5565b9392505050565b600060c0820190506142906000830189613fc2565b61429d60208301886141d5565b6142aa604083018761404d565b6142b7606083018661404d565b6142c46080830185613fc2565b6142d160a08301846141d5565b979650505050505050565b60006020820190506142f1600083018461402f565b92915050565b600060208201905061430c600083018461403e565b92915050565b6000608082019050614327600083018761404d565b81810360208301526143398186613fd1565b90506143486040830185613fc2565b61435560608301846141d5565b95945050505050565b60006020820190508181036000830152614378818461405c565b905092915050565b6000602082019050818103600083015261439981614095565b9050919050565b600060208201905081810360008301526143b9816140d5565b9050919050565b600060208201905081810360008301526143d981614115565b9050919050565b600060208201905081810360008301526143f981614155565b9050919050565b6000602082019050818103600083015261441981614195565b9050919050565b600060208201905061443560008301846141d5565b92915050565b600060a08201905061445060008301886141d5565b61445d602083018761404d565b818103604083015261446f8186613fd1565b905061447e6060830185613fc2565b61448b60808301846141d5565b9695505050505050565b60006040820190506144aa60008301856141d5565b6144b760208301846141d5565b9392505050565b60006020820190506144d360008301846141e4565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061453982614693565b915061454483614693565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561457957614578614749565b5b828201905092915050565b600061458f82614693565b915061459a83614693565b9250826145aa576145a9614778565b5b828204905092915050565b60006145c082614693565b91506145cb83614693565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561460457614603614749565b5b828202905092915050565b600061461a82614693565b915061462583614693565b92508282101561463857614637614749565b5b828203905092915050565b600061464e82614673565b9050919050565b600061466082614673565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006146b5826146f2565b9050919050565b60006146c7826146ce565b9050919050565b60006146d982614673565b9050919050565b60006146eb82614693565b9050919050565b60006146fd82614704565b9050919050565b600061470f82614673565b9050919050565b60005b83811015614734578082015181840152602081019050614719565b83811115614743576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b6147c181614643565b81146147cc57600080fd5b50565b6147d881614655565b81146147e357600080fd5b50565b6147ef81614667565b81146147fa57600080fd5b50565b61480681614693565b811461481157600080fd5b5056fea264697066735822122046a4fa6ac703683501657d3714b9d842671afcdbafbe63d6152962ed7ec53b9764736f6c63430008000033
Deployed ByteCode Sourcemap
12822:15658:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24998:187;;;;;;;;;;;;;:::i;:::-;;15115:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24183:359;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26454:496;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16528:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26335:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17031:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28209:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16258:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27358:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24550:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17544:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13870:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27884:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27549:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4651:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16352:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26229:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14699:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17255:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25350:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25858:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15078:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24032:143;;;;;;;;;;;;;:::i;:::-;;16779:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13484:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13549:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16614:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26126:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16438:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27740:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26958:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14996:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14404:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17380:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13021:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23235:105;;;;;;;;;;;;;:::i;:::-;;4324:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14432:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14464:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14116:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28034:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20243:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16890:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27194:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12898:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14202:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4494:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20031:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5051:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22911:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25503:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25986:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14373:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4825:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24998:187;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25067:1:::1;25053:10;;:15;25045:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25117:12;25104:10;:25;;;;25162:15;25140:19;:37;;;;24998:187::o:0;15115:50::-;;;;:::o;24183:359::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24330:8:::1;24309:18;;:29;;;;;;;;;;;;;;;;;;24366:4;24349:14;:21;;;;24406:1;24381:22;:26;;;;24438:7;24418:17;:27;;;;24481:7;24456:22;:32;;;;24522:12;24499:20;:35;;;;24183:359:::0;;;;:::o;26454:496::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26633:13:::1;26618:12;:28;;;;26670:11;26657:10;:24;;;;26708:14;26692:13;:30;;;;26748:13;26733:12;:28;;;;26783:69;26838:13;26783:50;26818:14;26783:30;26801:11;26783:13;:17;;:30;;;;:::i;:::-;:34;;:50;;;;:::i;:::-;:54;;:69;;;;:::i;:::-;26772:8;:80;;;;26880:15;26863:14;:32;;;;26940:1;26925:14;;:16;;;;:::i;:::-;26914:8;;:27;26906:36;;;::::0;::::1;;26454:496:::0;;;;;:::o;16528:80::-;16576:13;16600:5;;;;;;;;;;;;;;;;;16593:12;;16528:80;:::o;26335:111::-;26400:4;4040:19;4048:10;4040:7;:19::i;:::-;4032:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;26423:7:::1;:15;26431:6;26423:15;;;;;;;;;;;;;;;;;;;;;;;;;26416:22;;26335:111:::0;;;:::o;17031:216::-;17106:4;17158:6;17123:11;:23;17135:10;17123:23;;;;;;;;;;;;;;;:32;17147:7;17123:32;;;;;;;;;;;;;;;:41;;;;17201:7;17180:37;;17189:10;17180:37;;;17210:6;17180:37;;;;;;:::i;:::-;;;;;;;;17235:4;17228:11;;17031:216;;;;:::o;28209:150::-;28289:4;28345:6;28313:29;28333:8;28313:19;:29::i;:::-;:38;28306:45;;28209:150;;;;:::o;16258:88::-;16313:7;16331:12;;16324:19;;16258:88;:::o;27358:183::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27474:7:::1;27456:15;:25;;;;27521:12;27492:26;:41;;;;27358:183:::0;;:::o;24550:342::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24710:1:::1;24695:11;24683:9;:23;;;;:::i;:::-;:28;;:55;;;;;24727:11;24715:9;:23;24683:55;24675:64;;;::::0;::::1;;24779:9;24750:26;:38;;;;24830:11;24799:28;:42;;;;24878:6;24852:23;:32;;;;24550:342:::0;;;:::o;17544:365::-;17644:4;17699:12;;17664:11;:19;17676:6;17664:19;;;;;;;;;;;;;;;:31;17684:10;17664:31;;;;;;;;;;;;;;;;:47;17661:181;;17761:69;17797:6;17761:69;;;;;;;;;;;;;;;;;:11;:19;17773:6;17761:19;;;;;;;;;;;;;;;:31;17781:10;17761:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;17727:11;:19;17739:6;17727:19;;;;;;;;;;;;;;;:31;17747:10;17727:31;;;;;;;;;;;;;;;:103;;;;17661:181;17861:40;17875:6;17883:9;17894:6;17861:13;:40::i;:::-;17854:47;;17544:365;;;;;:::o;13870:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;27884:142::-;27937:7;27964:54;28002:15;28012:4;;;;;;;;;;;28002:9;:15::i;:::-;27964:33;27981:15;27991:4;;;;;;;;;;;27981:9;:15::i;:::-;27964:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;27957:61;;27884:142;:::o;27549:183::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27659:11:::1;;;;;;;;;;;:35;;;27695:10;27707:16;27659:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27549:183:::0;;:::o;4651:103::-;4706:4;4741:5;;;;;;;;;;;4730:16;;:7;:16;;;4723:23;;4651:103;;;:::o;16352:80::-;16404:5;13411:1;16413:16;;16352:80;:::o;26229:94::-;4040:19;4048:10;4040:7;:19::i;:::-;4032:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;26310:5:::1;26292:7;:15;26300:6;26292:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;26229:94:::0;:::o;14699:38::-;;;;;;;;;;;;;:::o;17255:117::-;17310:4;17334:30;17342:7;17351:12;;17334:7;:30::i;:::-;17327:37;;17255:117;;;:::o;25350:145::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25450:4:::1;25435:12;;:19;;;;:::i;:::-;25425:6;:29;;25417:38;;;::::0;::::1;;25481:6;25466:12;:21;;;;25350:145:::0;:::o;25197:::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25299:4:::1;25284:12;;:19;;;;:::i;:::-;25274:6;:29;;25266:38;;;::::0;::::1;;25328:6;25315:10;:19;;;;25197:145:::0;:::o;25858:120::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25964:6:::1;25942:11;:19;25954:6;25942:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25858:120:::0;;:::o;15078:30::-;;;;;;;;;;;;;:::o;24032:143::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24080:15:::1;24098:21;24080:39;;24138:10;24130:28;;:37;24159:7;24130:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;4251:1;24032:143::o:0;16779:105::-;16845:7;16863:9;:18;16873:7;16863:18;;;;;;;;;;;;;;;;16856:25;;16779:105;;;:::o;13484:50::-;;;;:::o;13549:48::-;;;;:::o;16614:78::-;16666:7;16684:5;;;;;;;;;;;16677:12;;16614:78;:::o;26126:91::-;4040:19;4048:10;4040:7;:19::i;:::-;4032:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;26205:4:::1;26187:7;:15;26195:6;26187:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;26126:91:::0;:::o;16438:84::-;16488:13;16512:7;;;;;;;;;;;;;;;;;16505:14;;16438:84;:::o;27740:136::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27830:6:::1;27824:3;:12;27816:21;;;::::0;::::1;;27865:3;27848:14;:20;;;;27740:136:::0;:::o;26958:228::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27101:22:::1;27077:21;;:46;;;;;;;;;;;;;;;;;;27157:21;27134:20;;:44;;;;;;;;;;;;;;;;;;26958:228:::0;;:::o;14996:33::-;;;;;;;;;;;;;:::o;14404:19::-;;;;;;;;;;;;;:::o;17380:156::-;17460:4;17484:44;17498:10;17510:9;17521:6;17484:13;:44::i;:::-;17477:51;;17380:156;;;;:::o;13021:64::-;;;;;;;;;;;;;:::o;23235:105::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;23331:1:::1;23300:28;:32;;;;23235:105::o:0;4324:94::-;4040:19;4048:10;4040:7;:19::i;:::-;4032:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4406:4:::1;4384:14:::0;:19:::1;4399:3;4384:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4324:94:::0;:::o;14432:25::-;;;;:::o;14464:34::-;;;;:::o;14116:79::-;;;;;;;;;;;;;:::o;28034:167::-;28102:7;28129:64;28170:22;:20;:22::i;:::-;28129:36;28142:22;28162:1;28142:15;28152:4;;;;;;;;;;;28142:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;28129:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;28122:71;;28034:167;;;:::o;20243:92::-;20292:7;20319:8;;20312:15;;20243:92;:::o;16890:133::-;16974:7;16992:11;:19;17004:6;16992:19;;;;;;;;;;;;;;;:28;17012:7;16992:28;;;;;;;;;;;;;;;;16985:35;;16890:133;;;;:::o;27194:156::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27300:8:::1;27286:11;;:22;;;;;;;;;;;;;;;;;;27335:7;27319:13;:23;;;;27194:156:::0;;:::o;12898:48::-;12929:17;12898:48;;;:::o;14202:78::-;;;;;;;;;;;;;:::o;4494:97::-;4040:19;4048:10;4040:7;:19::i;:::-;4032:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4578:5:::1;4556:14;:19;4571:3;4556:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;4494:97:::0;:::o;20031:204::-;20087:7;20128:12;20123:1;20110:10;;:14;;;;:::i;:::-;:30;20107:54;;20150:8;;20143:15;;;;20107:54;20174:7;20171:31;;;20191:8;;20184:15;;;;20171:31;20219:8;;20212:15;;20031:204;;;;:::o;5051:173::-;4040:19;4048:10;4040:7;:19::i;:::-;4032:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5135:3:::1;5127:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;5171:4;5149:14:::0;:19:::1;5164:3;5149:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;5191:25;5212:3;5191:25;;;;;;:::i;:::-;;;;;;;;5051:173:::0;:::o;22911:316::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;23017:23:::1;23027:6;23035:4;;;;;;;;;;;23017:9;:23::i;:::-;23054:24;23051:169;;;23125:15;23094:28;:46;;;;23160:48;23184:23;;23160:48;;;;;;:::i;:::-;;;;;;;;23051:169;22911:316:::0;;:::o;25503:347::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25618:4:::1;25600:23;;:6;:23;;;;:41;;;;;25637:4;;;;;;;;;;;25627:14;;:6;:14;;;;25600:41;25592:50;;;::::0;::::1;;25680:6;25653:16;:24;25670:6;25653:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;25700:6;25697:146;;;25722:11;;;;;;;;;;;:20;;;25743:6;25751:1;25722:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25697:146;;;25784:11;;;;;;;;;;;:20;;;25805:6;25813:9;:17;25823:6;25813:17;;;;;;;;;;;;;;;;25784:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25697:146;25503:347:::0;;:::o;25986:128::-;4209:24;4222:10;4209:12;:24::i;:::-;4201:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26100:6:::1;26074:15;:23;26090:6;26074:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;25986:128:::0;;:::o;14373:24::-;;;;;;;;;;;;;:::o;4825:107::-;4881:4;4905:14;:19;4920:3;4905:19;;;;;;;;;;;;;;;;;;;;;;;;;4898:26;;4825:107;;;:::o;1926:98::-;1984:7;2015:1;2011;:5;;;;:::i;:::-;2004:12;;1926:98;;;;:::o;1608:::-;1666:7;1697:1;1693;:5;;;;:::i;:::-;1686:12;;1608:98;;;;:::o;2138:206::-;2224:7;2282:1;2277;:6;;2285:12;2269:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2324:1;2320;:5;2313:12;;2138:206;;;;;:::o;17917:1523::-;18009:4;18029:6;;;;;;;;;;;18026:63;;;18045:41;18060:6;18068:9;18079:6;18045:14;:41::i;:::-;18038:48;;;;18026:63;18136:21;18160:42;18136:66;;18213:10;18233:4;;;;;;;;;;;18224:13;;:6;:13;;;:39;;;;18250:13;18240:23;;:6;:23;;;18224:39;18213:50;;18274:11;18298:4;;;;;;;;;;;18286:16;;:9;:16;;;:45;;;;18318:13;18305:26;;:9;:26;;;18286:45;18274:57;;18352:28;18365:6;18373;18352:12;:28::i;:::-;18461:6;18460:7;:30;;;;;18472:7;:18;18480:9;18472:18;;;;;;;;;;;;;;;;;;;;;;;;;18471:19;18460:30;18456:148;;;18548:10;;18538:6;18515:9;:20;18525:9;18515:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;18514:44;18506:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;18456:148;18666:6;18662:135;;;18692:16;:14;:16::i;:::-;18689:35;;;18711:10;:8;:10::i;:::-;18689:35;18741:19;:17;:19::i;:::-;18738:48;;;18763:20;:18;:20::i;:::-;18738:48;18662:135;18829:53;18851:6;18829:53;;;;;;;;;;;;;;;;;:9;:17;18839:6;18829:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18809:9;:17;18819:6;18809:17;;;;;;;;;;;;;;;:73;;;;18895:22;18920:21;18934:6;18920:13;:21::i;:::-;:67;;18981:6;18920:67;;;18944:34;18952:6;18960:9;18971:6;18944:7;:34::i;:::-;18920:67;18895:92;;19023:40;19048:14;19023:9;:20;19033:9;19023:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;19000:9;:20;19010:9;19000:20;;;;;;;;;;;;;;;:63;;;;19080:16;:24;19097:6;19080:24;;;;;;;;;;;;;;;;;;;;;;;;;19076:96;;19111:11;;;;;;;;;;;:20;;;19132:6;19140:9;:17;19150:6;19140:17;;;;;;;;;;;;;;;;19111:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19107:63;;;;;;19076:96;19186:16;:27;19203:9;19186:27;;;;;;;;;;;;;;;;;;;;;;;;;19182:105;;19220:11;;;;;;;;;;;:20;;;19241:9;19252;:20;19262:9;19252:20;;;;;;;;;;;;;;;;19220:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19216:69;;;;;;19182:105;19303:11;;;;;;;;;;;:19;;;19323:14;;19303:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19299:51;;;;;;19384:9;19367:43;;19376:6;19367:43;;;19395:14;19367:43;;;;;;:::i;:::-;;;;;;;;19428:4;19421:11;;;;;;17917:1523;;;;;;:::o;1714:98::-;1772:7;1803:1;1799;:5;;;;:::i;:::-;1792:12;;1714:98;;;;:::o;1820:::-;1878:7;1909:1;1905;:5;;;;:::i;:::-;1898:12;;1820:98;;;;:::o;23659:361::-;15232:4;15223:6;;:13;;;;;;;;;;;;;;;;;;23735:21:::1;23773:1;23759:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23735:40;;23796:4;;;;;;;;;;;23786;23791:1;23786:7;;;;;;;;;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;23829:4;23811;23816:1;23811:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;23847:6;;;;;;;;;;;:57;;;23912:6;23934:1;23950:4;23969:2;23986:15;23847:165;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;15238:1;15250:5:::0;15241:6;;:14;;;;;;;;;;;;;;;;;;23659:361;;:::o;19448:279::-;19541:4;19578:53;19600:6;19578:53;;;;;;;;;;;;;;;;;:9;:17;19588:6;19578:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19558:9;:17;19568:6;19558:17;;;;;;;;;;;;;;;:73;;;;19665:32;19690:6;19665:9;:20;19675:9;19665:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19642:9;:20;19652:9;19642:20;;;;;;;;;;;;;;;:55;;;;19715:4;19708:11;;19448:279;;;;;:::o;19735:166::-;19832:12;;19822:6;:22;;:49;;;;19848:15;:23;19864:6;19848:23;;;;;;;;;;;;;;;;;;;;;;;;;19822:49;19814:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;19735:166;;:::o;20723:197::-;20772:4;20810;;;;;;;;;;;20796:18;;:10;:18;;;;:38;;;;;20828:6;;;;;;;;;;;20827:7;20796:38;:62;;;;;20847:11;;;;;;;;;;;20796:62;:116;;;;;20899:13;;20871:9;:24;20889:4;20871:24;;;;;;;;;;;;;;;;:41;;20796:116;20789:123;;20723:197;:::o;20928:1649::-;15232:4;15223:6;;:13;;;;;;;;;;;;;;;;;;20977:27:::1;21007:60;21023:15;;21040:26;;21007:15;:60::i;:::-;:79;;21074:12;;21007:79;;;21070:1;21007:79;20977:109;;21097:23;21123:59;21180:1;21123:52;21166:8;;21123:38;21141:19;21123:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;21097:85;;21193:20;21216:34;21234:15;21216:13;;:17;;:34;;;;:::i;:::-;21193:57;;21263:21;21301:1;21287:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21263:40;;21332:4;21314;21319:1;21314:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21358:4;;;;;;;;;;;21348;21353:1;21348:7;;;;;;;;;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;21373:21;21397;21373:45;;21431:6;;;;;;;;;;;:57;;;21503:12;21530:1;21546:4;21573;21593:15;21431:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21632:17;21652:40;21678:13;21652:21;:25;;:40;;;;:::i;:::-;21632:60;;21705:19;21727:40;21740:26;21764:1;21740:19;:23;;:26;;;;:::i;:::-;21727:8;;:12;;:40;;;;:::i;:::-;21705:62;;21780:26;21809:58;21865:1;21809:51;21848:11;21809:34;21823:19;21809:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;21780:87;;21878:27;21908:45;21941:11;21908:28;21922:13;;21908:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;21878:75;;21964:26;21993:44;22025:11;21993:27;22007:12;;21993:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;21964:73;;22054:11;;;;;;;;;;;:19;;;22081;22054:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22050:65;;;;;;22133:20;;;;;;;;;;;22125:38;;:58;22164:18;22125:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22229:1;22211:15;:19;22208:362;;;22246:6;;;;;;;;;;;:22;;;22276:18;22322:4;22346:15;22380:1;22400::::0;22420:21:::1;;;;;;;;;;;22460:15;22246:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22510:48;22522:18;22542:15;22510:48;;;;;;;:::i;:::-;;;;;;;;22208:362;15238:1;;;;;;;;;;15250:5:::0;15241:6;;:14;;;;;;;;;;;;;;;;;;20928:1649::o;22585:318::-;22637:4;22675;;;;;;;;;;;22661:18;;:10;:18;;;;:38;;;;;22693:6;;;;;;;;;;;22692:7;22661:38;:69;;;;;22712:18;;;;;;;;;;;22661:69;:143;;;;;22792:12;22766:22;;22743:20;;:45;;;;:::i;:::-;:61;;22661:143;:234;;;;;22878:17;;22853:21;:42;;22661:234;22654:241;;22585:318;:::o;23348:303::-;23398:34;23408:17;;23427:4;;;;;;;;;;;23398:9;:34::i;:::-;23466:12;23443:20;:35;;;;23514:45;23541:17;;23514:22;;:26;;:45;;;;:::i;:::-;23489:22;:70;;;;23598:14;;23573:22;;:39;23570:74;;;23636:5;23615:18;;:26;;;;;;;;;;;;;;;;;;23570:74;23348:303::o;19909:114::-;19971:4;19996:11;:19;20008:6;19996:19;;;;;;;;;;;;;;;;;;;;;;;;;19995:20;19988:27;;19909:114;;;:::o;20343:372::-;20428:7;20448:17;20468:61;20514:14;;20468:41;20479:29;20503:4;;;;;;;;;;;20491:16;;:8;:16;;;20479:11;:29::i;:::-;20468:6;:10;;:41;;;;:::i;:::-;:45;;:61;;;;:::i;:::-;20448:81;;20569:39;20598:9;20569;:24;20587:4;20569:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20542:9;:24;20560:4;20542:24;;;;;;;;;;;;;;;:66;;;;20649:4;20624:42;;20633:6;20624:42;;;20656:9;20624:42;;;;;;:::i;:::-;;;;;;;;20686:21;20697:9;20686:6;:10;;:21;;;;:::i;:::-;20679:28;;;20343:372;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:155::-;;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;212:95;;;;:::o;313:133::-;;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;362:84;;;;:::o;452:139::-;;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;504:87;;;;:::o;597:143::-;;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;660:80;;;;:::o;746:262::-;;854:2;842:9;833:7;829:23;825:32;822:2;;;870:1;867;860:12;822:2;913:1;938:53;983:7;974:6;963:9;959:22;938:53;:::i;:::-;928:63;;884:117;812:196;;;;:::o;1014:278::-;;1130:2;1118:9;1109:7;1105:23;1101:32;1098:2;;;1146:1;1143;1136:12;1098:2;1189:1;1214:61;1267:7;1258:6;1247:9;1243:22;1214:61;:::i;:::-;1204:71;;1160:125;1088:204;;;;:::o;1298:407::-;;;1423:2;1411:9;1402:7;1398:23;1394:32;1391:2;;;1439:1;1436;1429:12;1391:2;1482:1;1507:53;1552:7;1543:6;1532:9;1528:22;1507:53;:::i;:::-;1497:63;;1453:117;1609:2;1635:53;1680:7;1671:6;1660:9;1656:22;1635:53;:::i;:::-;1625:63;;1580:118;1381:324;;;;;:::o;1711:552::-;;;;1853:2;1841:9;1832:7;1828:23;1824:32;1821:2;;;1869:1;1866;1859:12;1821:2;1912:1;1937:53;1982:7;1973:6;1962:9;1958:22;1937:53;:::i;:::-;1927:63;;1883:117;2039:2;2065:53;2110:7;2101:6;2090:9;2086:22;2065:53;:::i;:::-;2055:63;;2010:118;2167:2;2193:53;2238:7;2229:6;2218:9;2214:22;2193:53;:::i;:::-;2183:63;;2138:118;1811:452;;;;;:::o;2269:401::-;;;2391:2;2379:9;2370:7;2366:23;2362:32;2359:2;;;2407:1;2404;2397:12;2359:2;2450:1;2475:53;2520:7;2511:6;2500:9;2496:22;2475:53;:::i;:::-;2465:63;;2421:117;2577:2;2603:50;2645:7;2636:6;2625:9;2621:22;2603:50;:::i;:::-;2593:60;;2548:115;2349:321;;;;;:::o;2676:407::-;;;2801:2;2789:9;2780:7;2776:23;2772:32;2769:2;;;2817:1;2814;2807:12;2769:2;2860:1;2885:53;2930:7;2921:6;2910:9;2906:22;2885:53;:::i;:::-;2875:63;;2831:117;2987:2;3013:53;3058:7;3049:6;3038:9;3034:22;3013:53;:::i;:::-;3003:63;;2958:118;2759:324;;;;;:::o;3089:256::-;;3194:2;3182:9;3173:7;3169:23;3165:32;3162:2;;;3210:1;3207;3200:12;3162:2;3253:1;3278:50;3320:7;3311:6;3300:9;3296:22;3278:50;:::i;:::-;3268:60;;3224:114;3152:193;;;;:::o;3351:401::-;;;3473:2;3461:9;3452:7;3448:23;3444:32;3441:2;;;3489:1;3486;3479:12;3441:2;3532:1;3557:50;3599:7;3590:6;3579:9;3575:22;3557:50;:::i;:::-;3547:60;;3503:114;3656:2;3682:53;3727:7;3718:6;3707:9;3703:22;3682:53;:::i;:::-;3672:63;;3627:118;3431:321;;;;;:::o;3758:692::-;;;;;3914:3;3902:9;3893:7;3889:23;3885:33;3882:2;;;3931:1;3928;3921:12;3882:2;3974:1;3999:50;4041:7;4032:6;4021:9;4017:22;3999:50;:::i;:::-;3989:60;;3945:114;4098:2;4124:53;4169:7;4160:6;4149:9;4145:22;4124:53;:::i;:::-;4114:63;;4069:118;4226:2;4252:53;4297:7;4288:6;4277:9;4273:22;4252:53;:::i;:::-;4242:63;;4197:118;4354:2;4380:53;4425:7;4416:6;4405:9;4401:22;4380:53;:::i;:::-;4370:63;;4325:118;3872:578;;;;;;;:::o;4456:262::-;;4564:2;4552:9;4543:7;4539:23;4535:32;4532:2;;;4580:1;4577;4570:12;4532:2;4623:1;4648:53;4693:7;4684:6;4673:9;4669:22;4648:53;:::i;:::-;4638:63;;4594:117;4522:196;;;;:::o;4724:401::-;;;4846:2;4834:9;4825:7;4821:23;4817:32;4814:2;;;4862:1;4859;4852:12;4814:2;4905:1;4930:53;4975:7;4966:6;4955:9;4951:22;4930:53;:::i;:::-;4920:63;;4876:117;5032:2;5058:50;5100:7;5091:6;5080:9;5076:22;5058:50;:::i;:::-;5048:60;;5003:115;4804:321;;;;;:::o;5131:407::-;;;5256:2;5244:9;5235:7;5231:23;5227:32;5224:2;;;5272:1;5269;5262:12;5224:2;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5442:2;5468:53;5513:7;5504:6;5493:9;5489:22;5468:53;:::i;:::-;5458:63;;5413:118;5214:324;;;;;:::o;5544:552::-;;;;5686:2;5674:9;5665:7;5661:23;5657:32;5654:2;;;5702:1;5699;5692:12;5654:2;5745:1;5770:53;5815:7;5806:6;5795:9;5791:22;5770:53;:::i;:::-;5760:63;;5716:117;5872:2;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5843:118;6000:2;6026:53;6071:7;6062:6;6051:9;6047:22;6026:53;:::i;:::-;6016:63;;5971:118;5644:452;;;;;:::o;6102:596::-;;;;6255:2;6243:9;6234:7;6230:23;6226:32;6223:2;;;6271:1;6268;6261:12;6223:2;6314:1;6339:64;6395:7;6386:6;6375:9;6371:22;6339:64;:::i;:::-;6329:74;;6285:128;6452:2;6478:64;6534:7;6525:6;6514:9;6510:22;6478:64;:::i;:::-;6468:74;;6423:129;6591:2;6617:64;6673:7;6664:6;6653:9;6649:22;6617:64;:::i;:::-;6607:74;;6562:129;6213:485;;;;;:::o;6704:844::-;;;;;;6880:3;6868:9;6859:7;6855:23;6851:33;6848:2;;;6897:1;6894;6887:12;6848:2;6940:1;6965:53;7010:7;7001:6;6990:9;6986:22;6965:53;:::i;:::-;6955:63;;6911:117;7067:2;7093:53;7138:7;7129:6;7118:9;7114:22;7093:53;:::i;:::-;7083:63;;7038:118;7195:2;7221:53;7266:7;7257:6;7246:9;7242:22;7221:53;:::i;:::-;7211:63;;7166:118;7323:2;7349:53;7394:7;7385:6;7374:9;7370:22;7349:53;:::i;:::-;7339:63;;7294:118;7451:3;7478:53;7523:7;7514:6;7503:9;7499:22;7478:53;:::i;:::-;7468:63;;7422:119;6838:710;;;;;;;;:::o;7554:179::-;;7644:46;7686:3;7678:6;7644:46;:::i;:::-;7722:4;7717:3;7713:14;7699:28;;7634:99;;;;:::o;7739:147::-;7834:45;7873:5;7834:45;:::i;:::-;7829:3;7822:58;7812:74;;:::o;7892:108::-;7969:24;7987:5;7969:24;:::i;:::-;7964:3;7957:37;7947:53;;:::o;8006:118::-;8093:24;8111:5;8093:24;:::i;:::-;8088:3;8081:37;8071:53;;:::o;8160:732::-;;8308:54;8356:5;8308:54;:::i;:::-;8378:86;8457:6;8452:3;8378:86;:::i;:::-;8371:93;;8488:56;8538:5;8488:56;:::i;:::-;8567:7;8598:1;8583:284;8608:6;8605:1;8602:13;8583:284;;;8684:6;8678:13;8711:63;8770:3;8755:13;8711:63;:::i;:::-;8704:70;;8797:60;8850:6;8797:60;:::i;:::-;8787:70;;8643:224;8630:1;8627;8623:9;8618:14;;8583:284;;;8587:14;8883:3;8876:10;;8284:608;;;;;;;:::o;8898:109::-;8979:21;8994:5;8979:21;:::i;:::-;8974:3;8967:34;8957:50;;:::o;9013:167::-;9118:55;9167:5;9118:55;:::i;:::-;9113:3;9106:68;9096:84;;:::o;9186:147::-;9281:45;9320:5;9281:45;:::i;:::-;9276:3;9269:58;9259:74;;:::o;9339:364::-;;9455:39;9488:5;9455:39;:::i;:::-;9510:71;9574:6;9569:3;9510:71;:::i;:::-;9503:78;;9590:52;9635:6;9630:3;9623:4;9616:5;9612:16;9590:52;:::i;:::-;9667:29;9689:6;9667:29;:::i;:::-;9662:3;9658:39;9651:46;;9431:272;;;;;:::o;9709:315::-;;9872:67;9936:2;9931:3;9872:67;:::i;:::-;9865:74;;9969:19;9965:1;9960:3;9956:11;9949:40;10015:2;10010:3;10006:12;9999:19;;9855:169;;;:::o;10030:327::-;;10193:67;10257:2;10252:3;10193:67;:::i;:::-;10186:74;;10290:31;10286:1;10281:3;10277:11;10270:52;10348:2;10343:3;10339:12;10332:19;;10176:181;;;:::o;10363:318::-;;10526:67;10590:2;10585:3;10526:67;:::i;:::-;10519:74;;10623:22;10619:1;10614:3;10610:11;10603:43;10672:2;10667:3;10663:12;10656:19;;10509:172;;;:::o;10687:303::-;;10850:66;10914:1;10909:3;10850:66;:::i;:::-;10843:73;;10946:8;10942:1;10937:3;10933:11;10926:29;10981:2;10976:3;10972:12;10965:19;;10833:157;;;:::o;10996:309::-;;11159:67;11223:2;11218:3;11159:67;:::i;:::-;11152:74;;11256:13;11252:1;11247:3;11243:11;11236:34;11296:2;11291:3;11287:12;11280:19;;11142:163;;;:::o;11311:118::-;11398:24;11416:5;11398:24;:::i;:::-;11393:3;11386:37;11376:53;;:::o;11435:112::-;11518:22;11534:5;11518:22;:::i;:::-;11513:3;11506:35;11496:51;;:::o;11553:222::-;;11684:2;11673:9;11669:18;11661:26;;11697:71;11765:1;11754:9;11750:17;11741:6;11697:71;:::i;:::-;11651:124;;;;:::o;11781:238::-;;11920:2;11909:9;11905:18;11897:26;;11933:79;12009:1;11998:9;11994:17;11985:6;11933:79;:::i;:::-;11887:132;;;;:::o;12025:348::-;;12192:2;12181:9;12177:18;12169:26;;12205:71;12273:1;12262:9;12258:17;12249:6;12205:71;:::i;:::-;12286:80;12362:2;12351:9;12347:18;12338:6;12286:80;:::i;:::-;12159:214;;;;;:::o;12379:332::-;;12538:2;12527:9;12523:18;12515:26;;12551:71;12619:1;12608:9;12604:17;12595:6;12551:71;:::i;:::-;12632:72;12700:2;12689:9;12685:18;12676:6;12632:72;:::i;:::-;12505:206;;;;;:::o;12717:807::-;;13004:3;12993:9;12989:19;12981:27;;13018:71;13086:1;13075:9;13071:17;13062:6;13018:71;:::i;:::-;13099:72;13167:2;13156:9;13152:18;13143:6;13099:72;:::i;:::-;13181:80;13257:2;13246:9;13242:18;13233:6;13181:80;:::i;:::-;13271;13347:2;13336:9;13332:18;13323:6;13271:80;:::i;:::-;13361:73;13429:3;13418:9;13414:19;13405:6;13361:73;:::i;:::-;13444;13512:3;13501:9;13497:19;13488:6;13444:73;:::i;:::-;12971:553;;;;;;;;;:::o;13530:210::-;;13655:2;13644:9;13640:18;13632:26;;13668:65;13730:1;13719:9;13715:17;13706:6;13668:65;:::i;:::-;13622:118;;;;:::o;13746:258::-;;13895:2;13884:9;13880:18;13872:26;;13908:89;13994:1;13983:9;13979:17;13970:6;13908:89;:::i;:::-;13862:142;;;;:::o;14010:720::-;;14283:3;14272:9;14268:19;14260:27;;14297:79;14373:1;14362:9;14358:17;14349:6;14297:79;:::i;:::-;14423:9;14417:4;14413:20;14408:2;14397:9;14393:18;14386:48;14451:108;14554:4;14545:6;14451:108;:::i;:::-;14443:116;;14569:72;14637:2;14626:9;14622:18;14613:6;14569:72;:::i;:::-;14651;14719:2;14708:9;14704:18;14695:6;14651:72;:::i;:::-;14250:480;;;;;;;:::o;14736:313::-;;14887:2;14876:9;14872:18;14864:26;;14936:9;14930:4;14926:20;14922:1;14911:9;14907:17;14900:47;14964:78;15037:4;15028:6;14964:78;:::i;:::-;14956:86;;14854:195;;;;:::o;15055:419::-;;15259:2;15248:9;15244:18;15236:26;;15308:9;15302:4;15298:20;15294:1;15283:9;15279:17;15272:47;15336:131;15462:4;15336:131;:::i;:::-;15328:139;;15226:248;;;:::o;15480:419::-;;15684:2;15673:9;15669:18;15661:26;;15733:9;15727:4;15723:20;15719:1;15708:9;15704:17;15697:47;15761:131;15887:4;15761:131;:::i;:::-;15753:139;;15651:248;;;:::o;15905:419::-;;16109:2;16098:9;16094:18;16086:26;;16158:9;16152:4;16148:20;16144:1;16133:9;16129:17;16122:47;16186:131;16312:4;16186:131;:::i;:::-;16178:139;;16076:248;;;:::o;16330:419::-;;16534:2;16523:9;16519:18;16511:26;;16583:9;16577:4;16573:20;16569:1;16558:9;16554:17;16547:47;16611:131;16737:4;16611:131;:::i;:::-;16603:139;;16501:248;;;:::o;16755:419::-;;16959:2;16948:9;16944:18;16936:26;;17008:9;17002:4;16998:20;16994:1;16983:9;16979:17;16972:47;17036:131;17162:4;17036:131;:::i;:::-;17028:139;;16926:248;;;:::o;17180:222::-;;17311:2;17300:9;17296:18;17288:26;;17324:71;17392:1;17381:9;17377:17;17368:6;17324:71;:::i;:::-;17278:124;;;;:::o;17408:831::-;;17709:3;17698:9;17694:19;17686:27;;17723:71;17791:1;17780:9;17776:17;17767:6;17723:71;:::i;:::-;17804:80;17880:2;17869:9;17865:18;17856:6;17804:80;:::i;:::-;17931:9;17925:4;17921:20;17916:2;17905:9;17901:18;17894:48;17959:108;18062:4;18053:6;17959:108;:::i;:::-;17951:116;;18077:72;18145:2;18134:9;18130:18;18121:6;18077:72;:::i;:::-;18159:73;18227:3;18216:9;18212:19;18203:6;18159:73;:::i;:::-;17676:563;;;;;;;;:::o;18245:332::-;;18404:2;18393:9;18389:18;18381:26;;18417:71;18485:1;18474:9;18470:17;18461:6;18417:71;:::i;:::-;18498:72;18566:2;18555:9;18551:18;18542:6;18498:72;:::i;:::-;18371:206;;;;;:::o;18583:214::-;;18710:2;18699:9;18695:18;18687:26;;18723:67;18787:1;18776:9;18772:17;18763:6;18723:67;:::i;:::-;18677:120;;;;:::o;18803:132::-;;18893:3;18885:11;;18923:4;18918:3;18914:14;18906:22;;18875:60;;;:::o;18941:114::-;;19042:5;19036:12;19026:22;;19015:40;;;:::o;19061:99::-;;19147:5;19141:12;19131:22;;19120:40;;;:::o;19166:113::-;;19268:4;19263:3;19259:14;19251:22;;19241:38;;;:::o;19285:184::-;;19418:6;19413:3;19406:19;19458:4;19453:3;19449:14;19434:29;;19396:73;;;;:::o;19475:169::-;;19593:6;19588:3;19581:19;19633:4;19628:3;19624:14;19609:29;;19571:73;;;;:::o;19650:305::-;;19709:20;19727:1;19709:20;:::i;:::-;19704:25;;19743:20;19761:1;19743:20;:::i;:::-;19738:25;;19897:1;19829:66;19825:74;19822:1;19819:81;19816:2;;;19903:18;;:::i;:::-;19816:2;19947:1;19944;19940:9;19933:16;;19694:261;;;;:::o;19961:185::-;;20018:20;20036:1;20018:20;:::i;:::-;20013:25;;20052:20;20070:1;20052:20;:::i;:::-;20047:25;;20091:1;20081:2;;20096:18;;:::i;:::-;20081:2;20138:1;20135;20131:9;20126:14;;20003:143;;;;:::o;20152:348::-;;20215:20;20233:1;20215:20;:::i;:::-;20210:25;;20249:20;20267:1;20249:20;:::i;:::-;20244:25;;20437:1;20369:66;20365:74;20362:1;20359:81;20354:1;20347:9;20340:17;20336:105;20333:2;;;20444:18;;:::i;:::-;20333:2;20492:1;20489;20485:9;20474:20;;20200:300;;;;:::o;20506:191::-;;20566:20;20584:1;20566:20;:::i;:::-;20561:25;;20600:20;20618:1;20600:20;:::i;:::-;20595:25;;20639:1;20636;20633:8;20630:2;;;20644:18;;:::i;:::-;20630:2;20689:1;20686;20682:9;20674:17;;20551:146;;;;:::o;20703:96::-;;20769:24;20787:5;20769:24;:::i;:::-;20758:35;;20748:51;;;:::o;20805:104::-;;20879:24;20897:5;20879:24;:::i;:::-;20868:35;;20858:51;;;:::o;20915:90::-;;20992:5;20985:13;20978:21;20967:32;;20957:48;;;:::o;21011:126::-;;21088:42;21081:5;21077:54;21066:65;;21056:81;;;:::o;21143:77::-;;21209:5;21198:16;;21188:32;;;:::o;21226:86::-;;21301:4;21294:5;21290:16;21279:27;;21269:43;;;:::o;21318:134::-;;21409:37;21440:5;21409:37;:::i;:::-;21396:50;;21386:66;;;:::o;21458:162::-;;21559:55;21608:5;21559:55;:::i;:::-;21546:68;;21536:84;;;:::o;21626:131::-;;21727:24;21745:5;21727:24;:::i;:::-;21714:37;;21704:53;;;:::o;21763:121::-;;21854:24;21872:5;21854:24;:::i;:::-;21841:37;;21831:53;;;:::o;21890:126::-;;21973:37;22004:5;21973:37;:::i;:::-;21960:50;;21950:66;;;:::o;22022:113::-;;22105:24;22123:5;22105:24;:::i;:::-;22092:37;;22082:53;;;:::o;22141:307::-;22209:1;22219:113;22233:6;22230:1;22227:13;22219:113;;;22318:1;22313:3;22309:11;22303:18;22299:1;22294:3;22290:11;22283:39;22255:2;22252:1;22248:10;22243:15;;22219:113;;;22350:6;22347:1;22344:13;22341:2;;;22430:1;22421:6;22416:3;22412:16;22405:27;22341:2;22190:258;;;;:::o;22454:180::-;22502:77;22499:1;22492:88;22599:4;22596:1;22589:15;22623:4;22620:1;22613:15;22640:180;22688:77;22685:1;22678:88;22785:4;22782:1;22775:15;22809:4;22806:1;22799:15;22826:102;;22918:2;22914:7;22909:2;22902:5;22898:14;22894:28;22884:38;;22874:54;;;:::o;22934:122::-;23007:24;23025:5;23007:24;:::i;:::-;23000:5;22997:35;22987:2;;23046:1;23043;23036:12;22987:2;22977:79;:::o;23062:138::-;23143:32;23169:5;23143:32;:::i;:::-;23136:5;23133:43;23123:2;;23190:1;23187;23180:12;23123:2;23113:87;:::o;23206:116::-;23276:21;23291:5;23276:21;:::i;:::-;23269:5;23266:32;23256:2;;23312:1;23309;23302:12;23256:2;23246:76;:::o;23328:122::-;23401:24;23419:5;23401:24;:::i;:::-;23394:5;23391:35;23381:2;;23440:1;23437;23430:12;23381:2;23371:79;:::o
Metadata Hash
ipfs://4f7dcfd9ece064903743a0aac22759678602afe29084cacd5f991d39a7beb552